9router 0.4.58 → 0.4.59

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 (429) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +8 -8
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  46. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  47. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  48. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  49. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  50. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  51. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  52. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  53. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  54. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  55. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  56. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  58. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  59. package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  60. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  61. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  62. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  63. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  64. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  65. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  66. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  67. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  76. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  79. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  82. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  91. package/app/.next-cli-build/server/app/api/health/route.js +1 -1
  92. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  93. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  109. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  111. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  113. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  115. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  132. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  134. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  137. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  152. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  154. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  196. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  198. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  199. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  200. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  203. package/app/.next-cli-build/server/app/callback.html +1 -1
  204. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  205. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  206. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  207. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  208. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  209. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  210. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  211. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  212. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  213. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  214. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  215. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  216. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  217. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  218. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  219. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  220. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  221. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  222. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  223. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  224. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  225. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  226. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  227. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  228. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  229. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  230. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  231. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  232. package/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  233. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  234. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  235. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  236. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  237. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  238. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  239. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  240. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  241. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  242. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  243. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  244. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  245. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  246. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  247. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  248. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  249. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  250. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  251. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  252. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  253. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  254. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  255. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  256. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  257. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  258. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  259. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  260. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  261. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  262. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  263. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  264. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  265. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  266. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  267. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  268. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  269. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  270. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  271. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  272. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  273. package/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  274. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  275. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  276. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  277. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  278. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  279. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  280. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  281. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  282. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  283. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  284. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  285. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  286. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  287. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  288. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  289. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  290. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  291. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  292. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  293. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  294. package/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  295. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  296. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  297. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  298. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  299. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  300. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  301. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  302. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  303. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  304. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  305. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  306. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  307. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  308. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  309. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  310. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  311. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  312. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  313. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  314. package/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  315. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  316. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  317. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  318. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  319. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  320. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  321. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  322. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  323. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  324. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  325. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  326. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  327. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  328. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  329. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  330. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  331. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  332. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  333. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  334. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  335. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  336. package/app/.next-cli-build/server/app/dashboard/skills.rsc +5 -5
  337. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  338. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  339. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  340. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  341. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
  342. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  343. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +3 -3
  344. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  345. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  346. package/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  347. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  348. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  349. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  350. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  351. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  352. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  353. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  354. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  355. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  356. package/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  357. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  358. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  359. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  360. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  361. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  362. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  363. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  364. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  365. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  366. package/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  367. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  368. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  369. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  370. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  371. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  372. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  373. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  374. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  375. package/app/.next-cli-build/server/app/index.html +1 -1
  376. package/app/.next-cli-build/server/app/index.rsc +3 -3
  377. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  378. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  379. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  380. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  381. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  382. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  383. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  384. package/app/.next-cli-build/server/app/landing.html +1 -1
  385. package/app/.next-cli-build/server/app/landing.rsc +3 -3
  386. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  387. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  388. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  389. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  390. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  391. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  392. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  393. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  394. package/app/.next-cli-build/server/app/login.html +1 -1
  395. package/app/.next-cli-build/server/app/login.rsc +4 -4
  396. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  397. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  398. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  399. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  400. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  401. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  402. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  403. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  404. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  405. package/app/.next-cli-build/server/app-paths-manifest.json +8 -8
  406. package/app/.next-cli-build/server/chunks/1229.js +1 -1
  407. package/app/.next-cli-build/server/chunks/14.js +8 -0
  408. package/app/.next-cli-build/server/chunks/1578.js +1 -1
  409. package/app/.next-cli-build/server/chunks/1795.js +1 -1
  410. package/app/.next-cli-build/server/chunks/1909.js +1 -1
  411. package/app/.next-cli-build/server/chunks/6263.js +1 -1
  412. package/app/.next-cli-build/server/chunks/6283.js +1 -1
  413. package/app/.next-cli-build/server/chunks/6634.js +1 -1
  414. package/app/.next-cli-build/server/chunks/{8793.js → 800.js} +2 -7
  415. package/app/.next-cli-build/server/chunks/9129.js +1 -1
  416. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  417. package/app/.next-cli-build/server/pages/404.html +1 -1
  418. package/app/.next-cli-build/server/pages/500.html +1 -1
  419. package/app/.next-cli-build/static/chunks/{505-3dc1f814882be7c2.js → 505-cd3b84480ae77abf.js} +1 -1
  420. package/app/.next-cli-build/static/chunks/8035-29d2887f5dbccda4.js +3 -0
  421. package/app/cli/.build-home/.9router/db/backups/{upgrade-0.4.46-to-0.4.49-0.4.49-20260516-123949 → upgrade-0.4.58-to-0.4.59-0.4.59-20260521-133932}/data.sqlite +0 -0
  422. package/app/cli/.build-home/.9router/db/data.sqlite +0 -0
  423. package/app/package.json +1 -1
  424. package/app/src/lib/oauth/services/xai.js +238 -0
  425. package/package.json +1 -1
  426. package/app/.next-cli-build/server/chunks/4742.js +0 -3
  427. package/app/.next-cli-build/static/chunks/8035-6eb29d9690ba6a8a.js +0 -3
  428. /package/app/.next-cli-build/static/{q-e4DSbBHpYr1tj3pINYT → y2eEe1Y5KAz1b1viRdGY_}/_buildManifest.js +0 -0
  429. /package/app/.next-cli-build/static/{q-e4DSbBHpYr1tj3pINYT → y2eEe1Y5KAz1b1viRdGY_}/_ssgManifest.js +0 -0
@@ -0,0 +1,3 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8035],{64795:(e,t,s)=>{"use strict";s.d(t,{default:()=>x});var a=s(73365),l=s(1521),n=s(86447),r=s.n(n),i=s(74156),o=s(96459);let c=[{icon:"public",title:"Access Anywhere",desc:"Use your API from any network"},{icon:"group",title:"Share Endpoint",desc:"Share URL with team members"},{icon:"code",title:"Use in Cursor/Cline",desc:"Connect AI tools remotely"},{icon:"lock",title:"Encrypted",desc:"End-to-end TLS via Cloudflare"}];async function d(e){if(!e)return!1;try{return(await fetch(`${e}/api/health`,{mode:"cors",cache:"no-store",signal:AbortSignal.timeout(5e3)})).ok}catch{return!1}}async function m(...e){let t=e.filter(Boolean).map(d);return!!t.length&&new Promise(e=>{let s=t.length;t.forEach(t=>t.then(t=>{t?e(!0):0==--s&&e(!1)}))})}let u=[{id:"lite",label:"Lite",desc:"Drop filler, keep grammar"},{id:"full",label:"Full",desc:"Drop articles, fragments OK"},{id:"ultra",label:"Ultra",desc:"Telegraphic, max compression"}];function x({machineId:e}){let[t,s]=(0,l.useState)([]),[n,r]=(0,l.useState)(!0),[y,f]=(0,l.useState)(!1),[j,k]=(0,l.useState)(""),[v,w]=(0,l.useState)(null),[N,C]=(0,l.useState)(null),[S,T]=(0,l.useState)(!1),[_,P]=(0,l.useState)(!0),[E,$]=(0,l.useState)(!0),[A,O]=(0,l.useState)(!1),[U,D]=(0,l.useState)(!0),[I,F]=(0,l.useState)(!1),[R,L]=(0,l.useState)("full"),[q,W]=(0,l.useState)(!0),[K,J]=(0,l.useState)(!1),[z,H]=(0,l.useState)(!1),[M,B]=(0,l.useState)(""),[Z,Q]=(0,l.useState)(""),[V,G]=(0,l.useState)(!1),[X,Y]=(0,l.useState)(""),[ee,et]=(0,l.useState)(null),[es,ea]=(0,l.useState)(!1),[el,en]=(0,l.useState)(!1),[er,ei]=(0,l.useState)(!1),[eo,ec]=(0,l.useState)(!1),[ed,em]=(0,l.useState)(""),[eu,ex]=(0,l.useState)(!1),[eh,ep]=(0,l.useState)(""),[eb,eg]=(0,l.useState)(null),[ey,ef]=(0,l.useState)(""),[ej,ek]=(0,l.useState)(""),[ev,ew]=(0,l.useState)(null),[eN,eC]=(0,l.useState)(!1),[eS,eT]=(0,l.useState)([]),[e_,eP]=(0,l.useState)(""),[eE,e$]=(0,l.useState)(!1),[eA,eO]=(0,l.useState)(!1),[eU,eD]=(0,l.useState)(!1),eI=(0,l.useRef)(null),eF=(0,l.useRef)(0),eR=(0,l.useRef)(0),eL=(0,l.useRef)(!1),eq=(0,l.useRef)(!1),eW=(0,l.useRef)(!1),eK=(0,l.useRef)(!1),[eJ,ez]=(0,l.useState)(!1),[eH,eM]=(0,l.useState)(!1),[eB,eZ]=(0,l.useState)(new Set),{copied:eQ,copy:eV}=(0,o.C)(),eG=!_||!E,eX=_?"Change the default dashboard password before activating the tunnel.":'Enable "Require login" and set a custom password before activating the tunnel.';(0,l.useEffect)(()=>{eI.current&&(eI.current.scrollTop=eI.current.scrollHeight)},[eS]),(0,l.useEffect)(()=>{e8(),e1()},[]),(0,l.useEffect)(()=>{if(!(K||er))return;let e=!K||z,t=!er||eo,s=()=>{document.hidden||e0()};if(document.addEventListener("visibilitychange",s),e&&t)return()=>document.removeEventListener("visibilitychange",s);let a=setInterval(()=>{document.hidden||e0()},5e3);return()=>{clearInterval(a),document.removeEventListener("visibilitychange",s)}},[K,er,z,eo]),(0,l.useEffect)(()=>{let e=async()=>{if(!document.hidden){if(K&&(M||Z)){let e=await m(Z,M);eL.current=e,e?(eF.current=0,H(!0),eW.current||(eW.current=!0,ez(!0))):(eF.current+=1,eF.current>=5&&H(!1))}else eL.current=!1;if(er&&ed){let e=await d(ed);eq.current=e,e?(eR.current=0,ec(!0),eK.current||(eK.current=!0,eM(!0))):(eR.current+=1,eR.current>=5&&ec(!1))}else eq.current=!1}};if(!(K&&(M||Z)||er&&ed))return;e();let t=!er||eo;if((!K||z)&&t)return;let s=setInterval(e,1e4);return()=>clearInterval(s)},[K,M,Z,er,ed,z,eo]);let eY=(0,l.useCallback)((e,t,s,a,l,n)=>{t.current?(s.current=0,a(!0),l.current||(l.current=!0,n(!0))):(s.current+=1,s.current>=5&&a(!1))},[]),e0=async()=>{try{let e=await fetch("/api/tunnel/status",{cache:"no-store"});if(!e.ok)return;let t=await e.json(),s=t.tunnel?.settingsEnabled??t.tunnel?.enabled??!1,a=t.tunnel?.tunnelUrl||"";B(a),Q(t.tunnel?.publicUrl||""),J(s),eY(null,eL,eF,H,eW,ez);let l=t.tailscale?.settingsEnabled??t.tailscale?.enabled??!1,n=t.tailscale?.tunnelUrl||"";em(n),ei(l),eY(null,eq,eR,ec,eK,eM)}catch{}},e1=async()=>{W(!0);try{let[e,t]=await Promise.all([fetch("/api/settings"),fetch("/api/tunnel/status",{cache:"no-store"})]);if(e.ok){let t=await e.json();T(t.requireApiKey||!1),P(!1!==t.requireLogin),$(t.hasPassword||!1),O(t.tunnelDashboardAccess||!1),D(!1!==t.rtkEnabled),F(!!t.cavemanEnabled),L(t.cavemanLevel||"full")}if(t.ok){let e=await t.json(),s=e.tunnel?.settingsEnabled??e.tunnel?.enabled??!1,a=e.tunnel?.tunnelUrl||"";B(a),Q(e.tunnel?.publicUrl||""),J(s),eY(null,eL,eF,H,eW,ez);let l=e.tailscale?.settingsEnabled??e.tailscale?.enabled??!1,n=e.tailscale?.tunnelUrl||"";em(n),ei(l),eY(null,eq,eR,ec,eK,eM)}}catch(e){console.log("Error loading settings:",e)}finally{W(!1)}},e5=async e=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tunnelDashboardAccess:e})})).ok&&O(e)}catch(e){console.log("Error updating tunnelDashboardAccess:",e)}},e2=async e=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireApiKey:e})})).ok&&T(e)}catch(e){console.log("Error updating requireApiKey:",e)}},e4=async e=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({rtkEnabled:e})})).ok&&D(e)}catch(e){console.log("Error updating rtkEnabled:",e)}},e3=async e=>{try{await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}catch(e){console.log("Error updating setting:",e)}},e8=async()=>{try{let e=await fetch("/api/keys"),t=await e.json();e.ok&&s(t.keys||[])}catch(e){console.log("Error fetching data:",e)}finally{r(!1)}},e6=async(...e)=>{G(!0),Y("Waiting for tunnel ready...");let t=e.filter(Boolean).map(e=>`${e}/api/health`),s=Date.now();for(;Date.now()-s<3e5;){if(await new Promise(e=>setTimeout(e,2e3)),await Promise.any(t.map(async e=>{if((await fetch(e,{mode:"cors",cache:"no-store"})).ok)return!0;throw Error("not ready")})).catch(()=>!1))return J(!0),G(!1),Y(""),!0;if((Date.now()-s)%1e4<2e3)try{let e=await fetch("/api/tunnel/status");if(e.ok){let t=await e.json();if(!t.tunnel?.enabled)return et({type:"error",message:"Tunnel process stopped unexpectedly."}),G(!1),Y(""),!1}}catch{}}return et({type:"error",message:"Tunnel created but not reachable. Please try again."}),G(!1),Y(""),!1},e7=async()=>{ea(!1),G(!0),et(null),Y("Creating tunnel...");let e=!0;(async()=>{for(;e;){try{let t=await fetch("/api/tunnel/status");if(t.ok){let s=await t.json();s.download?.downloading?Y(`Downloading cloudflared... ${s.download.progress}%`):e&&Y("Creating tunnel...")}}catch{}await new Promise(e=>setTimeout(e,1e3))}})();try{let t=await fetch("/api/tunnel/enable",{method:"POST"});e=!1;let s=await t.json();if(!t.ok)return void et({type:"error",message:s.error||"Failed to enable tunnel"});let a=s.tunnelUrl;if(!a)return void et({type:"error",message:"No tunnel URL returned"});B(a),Q(s.publicUrl||""),await e6(s.publicUrl,a)}catch(e){et({type:"error",message:e.message})}finally{e=!1,G(!1),Y("")}},e9=async()=>{G(!0),et(null);try{let e=await fetch("/api/tunnel/disable",{method:"POST"}),t=await e.json();e.ok?(J(!1),B(""),en(!1),et({type:"success",message:"Tunnel disabled"})):et({type:"error",message:t.error||"Failed to disable tunnel"})}catch(e){et({type:"error",message:e.message})}finally{G(!1)}},te=async()=>{ew(null);try{let e=await fetch("/api/tunnel/tailscale-check");if(e.ok){let t=await e.json();return ew(t.installed),t}}catch{}return ew(!1),{installed:!1}},tt=async()=>{eC(!0),eg(null),eT([]);try{let e=await fetch("/api/tunnel/tailscale-install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sudoPassword:e_})});eP("");let t=e.body.getReader(),s=new TextDecoder,a="";for(;;){let{done:e,value:l}=await t.read();if(e)break;let n=(a+=s.decode(l,{stream:!0})).split("\n\n");for(let e of(a=n.pop()||"",n)){let t=e.split("\n"),s="progress",a=null;for(let e of t)if(e.startsWith("event: ")&&(s=e.slice(7).trim()),e.startsWith("data: "))try{a=JSON.parse(e.slice(6))}catch{}if(a)if("progress"===s)eT(e=>[...e.slice(-50),a.message]);else if("done"===s){ew(!0),eC(!1),eO(!1),tn();return}else"error"===s&&eg({type:"error",message:a.error||"Install failed"})}}}catch(e){eg({type:"error",message:e.message})}finally{eC(!1)}},ts=async e=>{ep("Waiting for Tailscale ready...");let t=`${e}/api/health`,s=Date.now();for(;Date.now()-s<3e5;){await new Promise(e=>setTimeout(e,2e3));try{let e=await fetch(t,{mode:"no-cors",cache:"no-store"});if(e.ok||"opaque"===e.type)return!0}catch{}}return!1},ta=(e,t)=>{ef(e),ek(t)},tl=()=>{ef(""),ek("")},tn=async()=>{eO(!1),e$(!0),ex(!0),eg(null),ep("Connecting..."),tl();try{let e=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),t=await e.json();if(e.ok&&t.success){em(t.tunnelUrl||"");let e=await ts(t.tunnelUrl);ei(!0),eg(e?null:{type:"warning",message:"Connected but not reachable yet."});return}if(t.needsLogin&&t.authUrl){ta(t.authUrl,"Open Login Page"),ep('Login required — click "Open Login Page" to continue');for(let e=0;e<40;e++){await new Promise(e=>setTimeout(e,3e3));try{let e=await fetch("/api/tunnel/tailscale-check");if(e.ok&&(await e.json()).loggedIn){tl(),ep("Starting funnel...");let e=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),t=await e.json();if(e.ok&&t.success){em(t.tunnelUrl||"");let e=await ts(t.tunnelUrl);ei(!0),eg(e?null:{type:"warning",message:"Connected but not reachable yet."})}else t.funnelNotEnabled&&t.enableUrl?await tr(t.enableUrl):eg({type:"error",message:t.error||"Failed to start funnel"});return}}catch{}}tl(),eg({type:"error",message:"Login timed out. Please try again."});return}if(t.funnelNotEnabled&&t.enableUrl)return void await tr(t.enableUrl);eg({type:"error",message:t.error||"Failed to connect"})}catch(e){eg({type:"error",message:e.message})}finally{ex(!1),e$(!1),ep(""),tl()}},tr=async e=>{ta(e,"Open Funnel Settings"),ep('Click "Open Funnel Settings" to enable Funnel...');for(let e=0;e<40;e++){await new Promise(e=>setTimeout(e,3e3));try{let e=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),t=await e.json();if(e.ok&&t.success){tl(),em(t.tunnelUrl||"");let e=await ts(t.tunnelUrl);ei(!0),eg(e?null:{type:"warning",message:"Connected but not reachable yet."});return}if(t.funnelNotEnabled)continue;if(t.error){tl(),eg({type:"error",message:t.error});return}}catch{}}tl(),eg({type:"error",message:"Timed out waiting for Funnel to be enabled."})},ti=async()=>{ex(!0),eg(null);try{let e=await fetch("/api/tunnel/tailscale-disable",{method:"POST"}),t=await e.json();e.ok?(ei(!1),em(""),eD(!1),eg({type:"success",message:"Tailscale disabled"})):eg({type:"error",message:t.error||"Failed to disable Tailscale"})}catch(e){eg({type:"error",message:e.message})}finally{ex(!1)}},to=async()=>{eg(null),eT([]);let e=await te();e?.installed&&e?.hasCachedPassword?tn():eO(!0)},tc=async()=>{if(j.trim())try{let e=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:j})}),t=await e.json();e.ok&&(w(t.key),await e8(),k(""),f(!1))}catch(e){console.log("Error creating key:",e)}},td=async e=>{C({title:"Delete API Key",message:"Delete this API key?",onConfirm:async()=>{C(null);try{(await fetch(`/api/keys/${e}`,{method:"DELETE"})).ok&&(s(t.filter(t=>t.id!==e)),eZ(t=>{let s=new Set(t);return s.delete(e),s}))}catch(e){console.log("Error deleting key:",e)}}})},tm=async(e,t)=>{try{(await fetch(`/api/keys/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})})).ok&&s(s=>s.map(s=>s.id===e?{...s,isActive:t}:s))}catch(e){console.log("Error toggling key:",e)}},[tu,tx]=(0,l.useState)("/v1");return((0,l.useEffect)(()=>{tx(`${window.location.origin}/v1`)},[]),n)?(0,a.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,a.jsx)(i.Qv,{}),(0,a.jsx)(i.Qv,{})]}):(0,a.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,a.jsxs)(i.Zp,{children:[(0,a.jsxs)("h2",{className:"text-lg font-semibold mb-4 flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary",children:"api"}),"API Endpoint"]}),(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)(h,{label:"Local",url:tu,copyId:"local_url",copied:eQ,onCopy:eV}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:`text-xs font-mono px-1.5 py-0.5 rounded shrink-0 min-w-[88px] text-center ${K?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tunnel"}),K&&!V&&z?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.pd,{value:`${Z||M}/v1`,readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,a.jsx)("button",{onClick:()=>eV(`${Z||M}/v1`,"tunnel_url"),className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-colors shrink-0",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tunnel_url"===eQ?"check":"content_copy"})}),(0,a.jsx)("button",{onClick:()=>en(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Disable Tunnel",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!K||V||z?V?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),X||"Creating tunnel..."]}),(0,a.jsx)("button",{onClick:()=>{G(!1),Y("")},className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Stop",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):ee?.type==="error"?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),ee.message]}),(0,a.jsx)(i.$n,{size:"sm",icon:"cloud_upload",onClick:()=>ea(!0),children:"Enable"})]}):q?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),(0,a.jsx)("button",{onClick:()=>W(!1),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Stop",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):(0,a.jsx)(i.$n,{size:"sm",icon:"cloud_upload",onClick:()=>{eG?et({type:"error",message:`Security required: ${eX}`}):S?ea(!0):et({type:"error",message:'Security required: Enable "Require API key" before activating the tunnel.'})},children:"Enable"}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),eJ?"Tunnel reconnecting...":"Tunnel checking..."]}),(0,a.jsx)("button",{onClick:()=>en(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Disable Tunnel",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:`text-xs font-mono px-1.5 py-0.5 rounded shrink-0 min-w-[88px] text-center ${er?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tailscale"}),er&&!eu&&eo?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.pd,{value:`${ed}/v1`,readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,a.jsx)("button",{onClick:()=>eV(`${ed}/v1`,"ts_url"),className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-colors shrink-0",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"ts_url"===eQ?"check":"content_copy"})}),(0,a.jsx)("button",{onClick:()=>eD(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Disable Tailscale",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!er||eu||eo?eu||eE?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),eh||"Connecting..."]}),ey&&(0,a.jsx)(i.$n,{size:"sm",icon:"open_in_new",onClick:()=>window.open(ey,"tailscale_auth","width=600,height=700,noopener,noreferrer"),children:ej||"Open"}),(0,a.jsx)("button",{onClick:()=>{ex(!1),e$(!1),ep(""),tl()},className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Stop",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):eb?.type==="error"?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),eb.message]}),(0,a.jsx)(i.$n,{size:"sm",icon:"vpn_lock",onClick:to,children:"Enable"})]}):(0,a.jsx)(i.$n,{size:"sm",icon:"vpn_lock",onClick:()=>{eG?eg({type:"error",message:`Security required: ${eX}`}):to()},className:"bg-linear-to-r from-indigo-500 to-purple-500 hover:from-indigo-600 hover:to-purple-600 text-white!",children:"Enable"}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),eH?"Tailscale reconnecting...":"Tailscale checking..."]}),(0,a.jsx)("button",{onClick:()=>eD(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Disable Tailscale",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]})]}),eG&&!K&&!er&&(0,a.jsx)("div",{className:"mt-4",children:(0,a.jsx)(g,{message:eX,action:{label:"Open settings",href:"/dashboard/profile"}})}),(K||er)&&(0,a.jsxs)("div",{className:"mt-4 flex flex-col gap-2",children:[!S&&(0,a.jsx)(g,{message:"Require API key is disabled — your endpoint is publicly accessible without authentication.",action:{label:"Enable",href:"#require-api-key"}}),(!_||!E)&&(0,a.jsx)(g,{message:_?"Dashboard uses the default password — change it in Profile settings.":"Require login is disabled — anyone can access your dashboard via tunnel.",action:{label:_?"Change password":"Enable",href:"/dashboard/profile"}})]}),(K||er)&&(0,a.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex items-center gap-3",children:[(0,a.jsx)(i.lM,{checked:A,onChange:()=>e5(!A)}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("p",{className:"font-medium text-sm",children:"Allow dashboard access via tunnel"}),(0,a.jsx)(b,{text:"When enabled, the dashboard can be accessed through your tunnel or Tailscale URL (login still required). When disabled, dashboard access via tunnel/Tailscale is completely blocked."})]})]})]}),(0,a.jsxs)(i.Zp,{id:"rtk",children:[(0,a.jsx)("div",{className:"flex items-center justify-between mb-2",children:(0,a.jsxs)("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary",children:"bolt"}),"Token Saver"]})}),(0,a.jsxs)("div",{className:"flex items-center justify-between pt-2 pb-4 border-b border-border gap-4",children:[(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("p",{className:"font-medium",children:["Compress tool output"," ",(0,a.jsx)("a",{href:"https://github.com/rtk-ai/rtk",target:"_blank",rel:"noreferrer",className:"text-xs font-normal text-primary underline hover:opacity-80",children:"(RTK)"})]}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"git/grep/ls/tree/logs → 60-90% fewer input tokens"})]}),(0,a.jsx)(i.lM,{checked:U,onChange:()=>e4(!U)})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between pt-4 gap-4 flex-wrap",children:[(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("p",{className:"font-medium",children:["Compress LLM output"," ",(0,a.jsx)("a",{href:"https://github.com/JuliusBrussee/caveman",target:"_blank",rel:"noreferrer",className:"text-xs font-normal text-primary underline hover:opacity-80",children:"(Caveman)"})]}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Terse-style system prompt → ~65% fewer output tokens (up to 87%)"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-3 shrink-0",children:[I&&(0,a.jsx)("div",{className:"flex items-center gap-1.5",children:u.map(e=>(0,a.jsx)("button",{onClick:()=>{var t;L(t=e.id),e3({cavemanLevel:t})},className:`px-3 py-1.5 rounded text-xs font-medium border transition-colors ${R===e.id?"bg-primary text-white border-primary":"bg-transparent border-border text-text-muted hover:bg-surface-2"}`,title:e.desc,children:e.label},e.id))}),(0,a.jsx)(i.lM,{checked:I,onChange:()=>{var e;F(e=!I),e3({cavemanEnabled:e})}})]})]})]}),(0,a.jsxs)(i.Zp,{id:"require-api-key",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,a.jsxs)("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary",children:"vpn_key"}),"API Keys"]}),(0,a.jsx)(i.$n,{icon:"add",onClick:()=>f(!0),children:"Create Key"})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between pb-4 mb-4 border-b border-border",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"font-medium",children:"Require API key"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Requests without a valid key will be rejected"})]}),(0,a.jsx)(i.lM,{checked:S,onChange:()=>e2(!S)})]}),0===t.length?(0,a.jsxs)("div",{className:"text-center py-12",children:[(0,a.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"vpn_key"})}),(0,a.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No API keys yet"}),(0,a.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create your first API key to get started"}),(0,a.jsx)(i.$n,{icon:"add",onClick:()=>f(!0),children:"Create Key"})]}):(0,a.jsx)("div",{className:"flex flex-col",children:t.map(e=>{var t;return(0,a.jsxs)("div",{className:`group flex items-center justify-between py-3 border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0 ${!1===e.isActive?"opacity-60":""}`,children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"text-sm font-medium",children:e.name}),(0,a.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,a.jsx)("code",{className:"text-xs text-text-muted font-mono",children:eB.has(e.id)?e.key:(t=e.key)?t.length>8?t.slice(0,8)+"...":t:""}),(0,a.jsx)("button",{onClick:()=>{var t;return t=e.id,void eZ(e=>{let s=new Set(e);return s.has(t)?s.delete(t):s.add(t),s})},className:"p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary opacity-100 sm:opacity-0 sm:group-hover:opacity-100 transition-all",title:eB.has(e.id)?"Hide key":"Show key",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:eB.has(e.id)?"visibility_off":"visibility"})}),(0,a.jsx)("button",{onClick:()=>eV(e.key,e.id),className:"p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary opacity-100 sm:opacity-0 sm:group-hover:opacity-100 transition-all",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:eQ===e.id?"check":"content_copy"})})]}),(0,a.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Created ",new Date(e.createdAt).toLocaleDateString()]}),!1===e.isActive&&(0,a.jsx)("p",{className:"text-xs text-orange-500 mt-1",children:"Paused"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(i.lM,{size:"sm",checked:e.isActive??!0,onChange:t=>{e.isActive&&!t?C({title:"Pause API Key",message:`Pause API key "${e.name}"?
2
+
3
+ This key will stop working immediately but can be resumed later.`,onConfirm:async()=>{C(null),tm(e.id,t)}}):tm(e.id,t)},title:e.isActive?"Pause key":"Resume key"}),(0,a.jsx)("button",{onClick:()=>td(e.id),className:"p-2 hover:bg-red-500/10 rounded text-red-500 opacity-100 sm:opacity-0 sm:group-hover:opacity-100 transition-all",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},e.id)})})]}),(0,a.jsx)(i.aF,{isOpen:y,title:"Create API Key",onClose:()=>{f(!1),k("")},children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsx)(i.pd,{label:"Key Name",value:j,onChange:e=>k(e.target.value),placeholder:"Production Key"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(i.$n,{onClick:tc,fullWidth:!0,disabled:!j.trim(),children:"Create"}),(0,a.jsx)(i.$n,{onClick:()=>{f(!1),k("")},variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,a.jsx)(i.aF,{isOpen:!!v,title:"API Key Created",onClose:()=>w(null),children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,a.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 mb-2 font-medium",children:"Save this key now!"}),(0,a.jsx)("p",{className:"text-sm text-yellow-700 dark:text-yellow-300",children:"This is the only time you will see this key. Store it securely."})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(i.pd,{value:v||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,a.jsx)(i.$n,{variant:"secondary",icon:"created_key"===eQ?"check":"content_copy",onClick:()=>eV(v,"created_key"),children:"created_key"===eQ?"Copied!":"Copy"})]}),(0,a.jsx)(i.$n,{onClick:()=>w(null),fullWidth:!0,children:"Done"})]})}),(0,a.jsx)(i.aF,{isOpen:es,title:"Enable Tunnel",onClose:()=>ea(!1),children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsx)("div",{className:"bg-surface-2 border border-border-subtle rounded-lg p-4",children:(0,a.jsxs)("div",{className:"flex items-start gap-3",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary",children:"cloud_upload"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-sm text-text-main font-medium mb-1",children:"Cloudflare Tunnel"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Expose your local 9Router to the internet. No port forwarding, no static IP needed. Share endpoint URL with your team or use it in Cursor, Cline, and other AI tools from anywhere."})]})]})}),(0,a.jsx)("div",{className:"grid grid-cols-2 gap-3",children:c.map(e=>(0,a.jsxs)("div",{className:"flex flex-col items-center text-center p-3 rounded-lg bg-sidebar/50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-xl text-primary mb-1",children:e.icon}),(0,a.jsx)("p",{className:"text-xs font-semibold",children:e.title}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:e.desc})]},e.title))}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Requires outbound port 7844 (TCP/UDP). Connection may take 10-30s."}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(i.$n,{onClick:e7,fullWidth:!0,children:"Start Tunnel"}),(0,a.jsx)(i.$n,{onClick:()=>ea(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,a.jsx)(i.aF,{isOpen:el,title:"Disable Tunnel",onClose:()=>!V&&en(!1),children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"The Cloudflare tunnel will be disconnected. Remote access via tunnel URL will stop working."}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(i.$n,{onClick:e9,fullWidth:!0,disabled:V,variant:"danger",children:V?"Disabling...":"Disable"}),(0,a.jsx)(i.$n,{onClick:()=>en(!1),variant:"ghost",fullWidth:!0,disabled:V,children:"Cancel"})]})]})}),(0,a.jsx)(i.aF,{isOpen:eA,title:"Tailscale Funnel",onClose:()=>{eN||(eO(!1),eP(""),eg(null))},children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[null===ev&&(0,a.jsxs)("p",{className:"text-sm text-text-muted flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),!1===ev&&!eN&&(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale is not installed. Install it to enable Funnel."}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(i.$n,{onClick:tt,fullWidth:!0,children:"Install Tailscale"}),(0,a.jsx)(i.$n,{onClick:()=>eO(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),eN&&(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Installing Tailscale..."]}),eS.length>0&&(0,a.jsx)("div",{ref:eI,className:"bg-black/5 dark:bg-white/5 rounded p-2 max-h-40 overflow-y-auto font-mono text-xs text-text-muted",children:eS.map((e,t)=>(0,a.jsx)("div",{children:e},t))})]}),!0===ev&&!eN&&(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"check_circle"}),"Tailscale installed"]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(i.$n,{onClick:()=>tn(),fullWidth:!0,children:"Connect"}),(0,a.jsx)(i.$n,{onClick:()=>eO(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),eb&&(0,a.jsx)(p,{status:eb})]})}),(0,a.jsx)(i.aF,{isOpen:eU,title:"Disable Tailscale",onClose:()=>!eu&&eD(!1),children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale Funnel will be stopped. Remote access via Tailscale URL will stop working."}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(i.$n,{onClick:ti,fullWidth:!0,disabled:eu,variant:"danger",children:eu?"Disabling...":"Disable"}),(0,a.jsx)(i.$n,{onClick:()=>eD(!1),variant:"ghost",fullWidth:!0,disabled:eu,children:"Cancel"})]})]})}),(0,a.jsx)(i.uo,{isOpen:!!N,onClose:()=>C(null),onConfirm:N?.onConfirm,title:N?.title||"Confirm",message:N?.message,variant:"danger"})]})}function h({label:e,url:t,copyId:s,copied:l,onCopy:n,badge:r,actions:o}){return(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:`text-xs font-mono px-1.5 py-0.5 rounded shrink-0 min-w-[88px] text-center ${"CF"===r||"TS"===r?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:e}),(0,a.jsx)(i.pd,{value:t,readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,a.jsx)("button",{onClick:()=>n(t,s),className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-colors shrink-0",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:l===s?"check":"content_copy"})}),o]})}function p({status:e,className:t=""}){return(0,a.jsx)("div",{className:`p-2 rounded text-sm ${t} ${"success"===e.type?"bg-green-500/10 text-green-600 dark:text-green-400":"warning"===e.type?"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400":"info"===e.type?"bg-blue-500/10 text-blue-600 dark:text-blue-400":"bg-red-500/10 text-red-600 dark:text-red-400"}`,children:e.message.split(/(https?:\/\/[^\s]+)/g).map((e,t)=>/^https?:\/\//.test(e)?(0,a.jsx)("a",{href:e,target:"_blank",rel:"noreferrer",className:"underline font-medium",children:e},t):e)})}function b({text:e}){return(0,a.jsxs)("span",{className:"relative group inline-flex items-center",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted cursor-help",children:"help"}),(0,a.jsx)("span",{className:"pointer-events-none absolute left-5 top-1/2 -translate-y-1/2 z-50 w-64 rounded bg-gray-900 dark:bg-gray-800 text-white text-xs px-2.5 py-1.5 opacity-0 group-hover:opacity-100 transition-opacity shadow-lg",children:e})]})}function g({message:e,action:t}){return(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/20 text-amber-700 dark:text-amber-400",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] shrink-0 mt-0.5",children:"warning"}),(0,a.jsx)("p",{className:"text-xs flex-1",children:e}),t&&(0,a.jsx)("a",{href:t.href,className:"text-xs font-medium underline shrink-0 hover:opacity-80",onClick:t.href.startsWith("#")?e=>{e.preventDefault(),document.getElementById(t.href.slice(1))?.scrollIntoView({behavior:"smooth"})}:void 0,children:t.label})]})}x.propTypes={machineId:r().string.isRequired}},78035:(e,t,s)=>{Promise.resolve().then(s.bind(s,64795))}}]);
package/app/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "9router-app",
3
- "version": "0.4.58",
3
+ "version": "0.4.59",
4
4
  "description": "9Router web dashboard",
5
5
  "private": true,
6
6
  "scripts": {
@@ -0,0 +1,238 @@
1
+ import open from "open";
2
+ import { OAuthService } from "./oauth.js";
3
+ import crypto from "crypto";
4
+ import { XAI_CONFIG, XAI_PKCE_VERIFIER_BYTES } from "../constants/xai.js";
5
+ import { startLocalServer } from "../utils/server.js";
6
+ import { generateCodeVerifier, generateCodeChallenge, generateState } from "../utils/pkce.js";
7
+ import { spinner as createSpinner } from "../utils/ui.js";
8
+
9
+ /**
10
+ * xAI (Grok) OAuth Service
11
+ *
12
+ * Source of truth: router-for-me/CLIProxyAPI internal/auth/xai/xai.go
13
+ *
14
+ * Flow:
15
+ * 1. Discover endpoints from `${XAI_ISSUER}/.well-known/openid-configuration`
16
+ * 2. Bind loopback server on 127.0.0.1:56121, path /callback
17
+ * 3. PKCE S256 with 96-byte verifier
18
+ * 4. Exchange code with form-urlencoded body
19
+ * 5. id_token email decode (no signature verify, mirrors Go)
20
+ */
21
+
22
+ const BASE64_BLOCK_SIZE = 4;
23
+
24
+ let cachedDiscovery = null;
25
+
26
+ export function validateOAuthEndpoint(rawUrl, field) {
27
+ const value = String(rawUrl || "").trim();
28
+ if (!value) throw new Error(`xai discovery ${field} is empty`);
29
+
30
+ let parsed;
31
+ try {
32
+ parsed = new URL(value);
33
+ } catch (err) {
34
+ throw new Error(`xai discovery ${field} is invalid: ${err.message}`);
35
+ }
36
+
37
+ if (parsed.protocol !== "https:") {
38
+ throw new Error(`xai discovery ${field} must use https: ${value}`);
39
+ }
40
+
41
+ const host = parsed.hostname.toLowerCase().trim();
42
+ if (host !== "x.ai" && !host.endsWith(".x.ai")) {
43
+ throw new Error(`xai discovery ${field} host ${host} is not on x.ai`);
44
+ }
45
+
46
+ return value;
47
+ }
48
+
49
+ /**
50
+ * Discover authorization + token endpoints. Cached process-wide.
51
+ */
52
+ export async function discoverEndpoints() {
53
+ if (cachedDiscovery) return cachedDiscovery;
54
+
55
+ try {
56
+ const res = await fetch(XAI_CONFIG.discoveryUrl, {
57
+ headers: { Accept: "application/json" },
58
+ });
59
+ if (res.ok) {
60
+ const data = await res.json();
61
+ cachedDiscovery = {
62
+ authorizeUrl: validateOAuthEndpoint(data.authorization_endpoint, "authorization_endpoint"),
63
+ tokenUrl: validateOAuthEndpoint(data.token_endpoint, "token_endpoint"),
64
+ };
65
+ return cachedDiscovery;
66
+ }
67
+ } catch {
68
+ // fall through to static fallback
69
+ }
70
+
71
+ cachedDiscovery = {
72
+ authorizeUrl: XAI_CONFIG.authorizeUrl,
73
+ tokenUrl: XAI_CONFIG.tokenUrl,
74
+ };
75
+ return cachedDiscovery;
76
+ }
77
+
78
+ /**
79
+ * Decode the `email` claim from an id_token JWT. No signature verification —
80
+ * mirrors CLIProxyAPI Go behavior. Returns undefined if not parseable.
81
+ */
82
+ export function decodeIdTokenEmail(idToken) {
83
+ if (!idToken || typeof idToken !== "string") return undefined;
84
+ const parts = idToken.split(".");
85
+ if (parts.length !== 3) return undefined;
86
+ try {
87
+ const base64 = parts[1].replace(/-/g, "+").replace(/_/g, "/");
88
+ const padding = (BASE64_BLOCK_SIZE - (base64.length % BASE64_BLOCK_SIZE)) % BASE64_BLOCK_SIZE;
89
+ const json = Buffer.from(base64 + "=".repeat(padding), "base64").toString("utf8");
90
+ const payload = JSON.parse(json);
91
+ return payload.email || payload.preferred_username || payload.sub || undefined;
92
+ } catch {
93
+ return undefined;
94
+ }
95
+ }
96
+
97
+ export class XaiService extends OAuthService {
98
+ constructor() {
99
+ super(XAI_CONFIG);
100
+ }
101
+
102
+ /**
103
+ * Build xAI authorization URL. Spaces in scope are encoded as %20.
104
+ */
105
+ buildXaiAuthUrl(redirectUri, state, codeChallenge, authorizeUrl) {
106
+ const nonce = crypto.randomBytes(16).toString("hex");
107
+ const params = {
108
+ response_type: "code",
109
+ client_id: XAI_CONFIG.clientId,
110
+ redirect_uri: redirectUri,
111
+ scope: XAI_CONFIG.scope,
112
+ code_challenge: codeChallenge,
113
+ code_challenge_method: XAI_CONFIG.codeChallengeMethod,
114
+ state,
115
+ nonce,
116
+ plan: "generic",
117
+ referrer: "cli-proxy-api",
118
+ };
119
+ const qs = Object.entries(params)
120
+ .map(([k, v]) => `${k}=${encodeURIComponent(v)}`)
121
+ .join("&");
122
+ return `${authorizeUrl}?${qs}`;
123
+ }
124
+
125
+ /**
126
+ * Exchange authorization code for tokens.
127
+ * xAI is a public PKCE client — no client_secret.
128
+ */
129
+ async exchangeXaiCode({ tokenUrl, code, redirectUri, codeVerifier }) {
130
+ const res = await fetch(tokenUrl, {
131
+ method: "POST",
132
+ headers: {
133
+ "Content-Type": "application/x-www-form-urlencoded",
134
+ Accept: "application/json",
135
+ },
136
+ body: new URLSearchParams({
137
+ grant_type: "authorization_code",
138
+ client_id: XAI_CONFIG.clientId,
139
+ code,
140
+ redirect_uri: redirectUri,
141
+ code_verifier: codeVerifier,
142
+ }),
143
+ });
144
+
145
+ if (!res.ok) {
146
+ const err = await res.text();
147
+ throw new Error(`xAI token exchange failed: ${err}`);
148
+ }
149
+ return await res.json();
150
+ }
151
+
152
+ /**
153
+ * Refresh an access token using a refresh_token.
154
+ */
155
+ async refreshAccessToken(refreshToken) {
156
+ const { tokenUrl } = await discoverEndpoints();
157
+ const res = await fetch(tokenUrl, {
158
+ method: "POST",
159
+ headers: {
160
+ "Content-Type": "application/x-www-form-urlencoded",
161
+ Accept: "application/json",
162
+ },
163
+ body: new URLSearchParams({
164
+ grant_type: "refresh_token",
165
+ client_id: XAI_CONFIG.clientId,
166
+ refresh_token: refreshToken,
167
+ }),
168
+ });
169
+ if (!res.ok) {
170
+ const err = await res.text();
171
+ throw new Error(`xAI token refresh failed: ${err}`);
172
+ }
173
+ return await res.json();
174
+ }
175
+
176
+ /**
177
+ * Complete xAI OAuth flow end-to-end (CLI entrypoint).
178
+ * Returns the raw token response plus extracted email.
179
+ */
180
+ async connect() {
181
+ const spinner = createSpinner("Starting xAI OAuth...").start();
182
+ try {
183
+ spinner.text = "Discovering xAI endpoints...";
184
+ const { authorizeUrl, tokenUrl } = await discoverEndpoints();
185
+
186
+ spinner.text = `Starting local server on port ${XAI_CONFIG.loopbackPort}...`;
187
+ let callbackParams = null;
188
+ const { port, close } = await startLocalServer((params) => {
189
+ callbackParams = params;
190
+ }, XAI_CONFIG.loopbackPort);
191
+ const redirectUri = `http://127.0.0.1:${port}${XAI_CONFIG.callbackPath}`;
192
+ spinner.succeed(`Local server started on port ${port}`);
193
+
194
+ const codeVerifier = generateCodeVerifier(XAI_PKCE_VERIFIER_BYTES);
195
+ const codeChallenge = generateCodeChallenge(codeVerifier);
196
+ const state = generateState();
197
+ const authUrl = this.buildXaiAuthUrl(redirectUri, state, codeChallenge, authorizeUrl);
198
+
199
+ console.log("\nOpening browser for xAI authentication...");
200
+ console.log(`If browser doesn't open, visit:\n${authUrl}\n`);
201
+ await open(authUrl);
202
+
203
+ spinner.start("Waiting for xAI authorization...");
204
+ await new Promise((resolve, reject) => {
205
+ const timeout = setTimeout(() => reject(new Error("Authentication timeout (5 minutes)")), 300000);
206
+ const iv = setInterval(() => {
207
+ if (callbackParams) {
208
+ clearInterval(iv);
209
+ clearTimeout(timeout);
210
+ resolve();
211
+ }
212
+ }, 100);
213
+ });
214
+ close();
215
+
216
+ if (callbackParams.error) {
217
+ throw new Error(callbackParams.error_description || callbackParams.error);
218
+ }
219
+ if (!callbackParams.code) throw new Error("No authorization code received");
220
+ if (callbackParams.state !== state) throw new Error("Invalid state parameter");
221
+
222
+ spinner.start("Exchanging code for tokens...");
223
+ const tokens = await this.exchangeXaiCode({
224
+ tokenUrl,
225
+ code: callbackParams.code,
226
+ redirectUri,
227
+ codeVerifier,
228
+ });
229
+
230
+ const email = decodeIdTokenEmail(tokens.id_token);
231
+ spinner.succeed("xAI connected successfully!");
232
+ return { tokens, email };
233
+ } catch (error) {
234
+ spinner.fail(`Failed: ${error.message}`);
235
+ throw error;
236
+ }
237
+ }
238
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "9router",
3
- "version": "0.4.58",
3
+ "version": "0.4.59",
4
4
  "description": "9Router CLI - Start and manage 9Router server",
5
5
  "bin": {
6
6
  "9router": "./cli.js"
@@ -1,3 +0,0 @@
1
- exports.id=4742,exports.ids=[4742],exports.modules={366:(a,b,c)=>{"use strict";let d,e=c(21820),f=c(83997),g=c(23973),{env:h}=process;function i(a){return 0!==a&&{level:a,hasBasic:!0,has256:a>=2,has16m:a>=3}}function j(a,b){if(0===d)return 0;if(g("color=16m")||g("color=full")||g("color=truecolor"))return 3;if(g("color=256"))return 2;if(a&&!b&&void 0===d)return 0;let c=d||0;if("dumb"===h.TERM)return c;if("win32"===process.platform){let a=e.release().split(".");return Number(a[0])>=10&&Number(a[2])>=10586?Number(a[2])>=14931?3:2:1}if("CI"in h)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(a=>a in h)||"codeship"===h.CI_NAME?1:c;if("TEAMCITY_VERSION"in h)return+!!/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(h.TEAMCITY_VERSION);if("truecolor"===h.COLORTERM)return 3;if("TERM_PROGRAM"in h){let a=parseInt((h.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(h.TERM_PROGRAM){case"iTerm.app":return a>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(h.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(h.TERM)||"COLORTERM"in h?1:c}g("no-color")||g("no-colors")||g("color=false")||g("color=never")?d=0:(g("color")||g("colors")||g("color=true")||g("color=always"))&&(d=1),"FORCE_COLOR"in h&&(d="true"===h.FORCE_COLOR?1:"false"===h.FORCE_COLOR?0:0===h.FORCE_COLOR.length?1:Math.min(parseInt(h.FORCE_COLOR,10),3)),a.exports={supportsColor:function(a){return i(j(a,a&&a.isTTY))},stdout:i(j(!0,f.isatty(1))),stderr:i(j(!0,f.isatty(2)))}},3033:(a,b,c)=>{"use strict";let d,e=c(28340),{stdout:f,stderr:g}=c(366),{stringReplaceAll:h,stringEncaseCRLFWithFirstIndex:i}=c(50897),{isArray:j}=Array,k=["ansi","ansi","ansi256","ansi16m"],l=Object.create(null);class m{constructor(a){return n(a)}}let n=a=>{let b={};return((a,b={})=>{if(b.level&&!(Number.isInteger(b.level)&&b.level>=0&&b.level<=3))throw Error("The `level` option should be an integer from 0 to 3");let c=f?f.level:0;a.level=void 0===b.level?c:b.level})(b,a),b.template=(...a)=>u(b.template,...a),Object.setPrototypeOf(b,o.prototype),Object.setPrototypeOf(b.template,b),b.template.constructor=()=>{throw Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},b.template.Instance=m,b.template};function o(a){return n(a)}for(let[a,b]of Object.entries(e))l[a]={get(){let c=s(this,r(b.open,b.close,this._styler),this._isEmpty);return Object.defineProperty(this,a,{value:c}),c}};l.visible={get(){let a=s(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:a}),a}};let p=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let a of p)l[a]={get(){let{level:b}=this;return function(...c){return s(this,r(e.color[k[b]][a](...c),e.color.close,this._styler),this._isEmpty)}}};for(let a of p)l["bg"+a[0].toUpperCase()+a.slice(1)]={get(){let{level:b}=this;return function(...c){return s(this,r(e.bgColor[k[b]][a](...c),e.bgColor.close,this._styler),this._isEmpty)}}};let q=Object.defineProperties(()=>{},{...l,level:{enumerable:!0,get(){return this._generator.level},set(a){this._generator.level=a}}}),r=(a,b,c)=>{let d,e;return void 0===c?(d=a,e=b):(d=c.openAll+a,e=b+c.closeAll),{open:a,close:b,openAll:d,closeAll:e,parent:c}},s=(a,b,c)=>{let d=(...a)=>j(a[0])&&j(a[0].raw)?t(d,u(d,...a)):t(d,1===a.length?""+a[0]:a.join(" "));return Object.setPrototypeOf(d,q),d._generator=a,d._styler=b,d._isEmpty=c,d},t=(a,b)=>{if(a.level<=0||!b)return a._isEmpty?"":b;let c=a._styler;if(void 0===c)return b;let{openAll:d,closeAll:e}=c;if(-1!==b.indexOf("\x1b"))for(;void 0!==c;)b=h(b,c.close,c.open),c=c.parent;let f=b.indexOf("\n");return -1!==f&&(b=i(b,e,d,f)),d+b+e},u=(a,...b)=>{let[e]=b;if(!j(e)||!j(e.raw))return b.join(" ");let f=b.slice(1),g=[e.raw[0]];for(let a=1;a<e.length;a++)g.push(String(f[a-1]).replace(/[{}\\]/g,"\\$&"),String(e.raw[a]));return void 0===d&&(d=c(61498)),d(a,g.join(""))};Object.defineProperties(o.prototype,l);let v=n(void 0);v.supportsColor=f,v.stderr=n({level:g?g.level:0}),v.stderr.supportsColor=g,a.exports=v},11768:(a,b,c)=>{let d=c(65617),e={};for(let a of Object.keys(d))e[d[a]]=a;let f={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(let b of(a.exports=f,Object.keys(f))){if(!("channels"in f[b]))throw Error("missing channels property: "+b);if(!("labels"in f[b]))throw Error("missing channel labels property: "+b);if(f[b].labels.length!==f[b].channels)throw Error("channel and label counts mismatch: "+b);let{channels:a,labels:c}=f[b];delete f[b].channels,delete f[b].labels,Object.defineProperty(f[b],"channels",{value:a}),Object.defineProperty(f[b],"labels",{value:c})}f.rgb.hsl=function(a){let b,c=a[0]/255,d=a[1]/255,e=a[2]/255,f=Math.min(c,d,e),g=Math.max(c,d,e),h=g-f;g===f?b=0:c===g?b=(d-e)/h:d===g?b=2+(e-c)/h:e===g&&(b=4+(c-d)/h),(b=Math.min(60*b,360))<0&&(b+=360);let i=(f+g)/2;return[b,100*(g===f?0:i<=.5?h/(g+f):h/(2-g-f)),100*i]},f.rgb.hsv=function(a){let b,c,d,e,f,g=a[0]/255,h=a[1]/255,i=a[2]/255,j=Math.max(g,h,i),k=j-Math.min(g,h,i),l=function(a){return(j-a)/6/k+.5};return 0===k?(e=0,f=0):(f=k/j,b=l(g),c=l(h),d=l(i),g===j?e=d-c:h===j?e=1/3+b-d:i===j&&(e=2/3+c-b),e<0?e+=1:e>1&&(e-=1)),[360*e,100*f,100*j]},f.rgb.hwb=function(a){let b=a[0],c=a[1],d=a[2];return[f.rgb.hsl(a)[0],1/255*Math.min(b,Math.min(c,d))*100,100*(d=1-1/255*Math.max(b,Math.max(c,d)))]},f.rgb.cmyk=function(a){let b=a[0]/255,c=a[1]/255,d=a[2]/255,e=Math.min(1-b,1-c,1-d);return[100*((1-b-e)/(1-e)||0),100*((1-c-e)/(1-e)||0),100*((1-d-e)/(1-e)||0),100*e]},f.rgb.keyword=function(a){let b,c=e[a];if(c)return c;let f=1/0;for(let c of Object.keys(d)){let e=d[c],g=(a[0]-e[0])**2+(a[1]-e[1])**2+(a[2]-e[2])**2;g<f&&(f=g,b=c)}return b},f.keyword.rgb=function(a){return d[a]},f.rgb.xyz=function(a){let b=a[0]/255,c=a[1]/255,d=a[2]/255;return[100*(.4124*(b=b>.04045?((b+.055)/1.055)**2.4:b/12.92)+.3576*(c=c>.04045?((c+.055)/1.055)**2.4:c/12.92)+.1805*(d=d>.04045?((d+.055)/1.055)**2.4:d/12.92)),100*(.2126*b+.7152*c+.0722*d),100*(.0193*b+.1192*c+.9505*d)]},f.rgb.lab=function(a){let b=f.rgb.xyz(a),c=b[0],d=b[1],e=b[2];return c/=95.047,d/=100,e/=108.883,[116*(d=d>.008856?d**(1/3):7.787*d+16/116)-16,500*((c=c>.008856?c**(1/3):7.787*c+16/116)-d),200*(d-(e=e>.008856?e**(1/3):7.787*e+16/116))]},f.hsl.rgb=function(a){let b,c,d,e=a[0]/360,f=a[1]/100,g=a[2]/100;if(0===f)return[d=255*g,d,d];b=g<.5?g*(1+f):g+f-g*f;let h=2*g-b,i=[0,0,0];for(let a=0;a<3;a++)(c=e+-(1/3*(a-1)))<0&&c++,c>1&&c--,d=6*c<1?h+(b-h)*6*c:2*c<1?b:3*c<2?h+(b-h)*(2/3-c)*6:h,i[a]=255*d;return i},f.hsl.hsv=function(a){let b=a[0],c=a[1]/100,d=a[2]/100,e=c,f=Math.max(d,.01);d*=2,c*=d<=1?d:2-d,e*=f<=1?f:2-f;let g=(d+c)/2;return[b,100*(0===d?2*e/(f+e):2*c/(d+c)),100*g]},f.hsv.rgb=function(a){let b=a[0]/60,c=a[1]/100,d=a[2]/100,e=Math.floor(b)%6,f=b-Math.floor(b),g=255*d*(1-c),h=255*d*(1-c*f),i=255*d*(1-c*(1-f));switch(d*=255,e){case 0:return[d,i,g];case 1:return[h,d,g];case 2:return[g,d,i];case 3:return[g,h,d];case 4:return[i,g,d];case 5:return[d,g,h]}},f.hsv.hsl=function(a){let b,c,d=a[0],e=a[1]/100,f=a[2]/100,g=Math.max(f,.01);c=(2-e)*f;let h=(2-e)*g;return[d,100*(b=(b=e*g/(h<=1?h:2-h))||0),100*(c/=2)]},f.hwb.rgb=function(a){let b,c,d,e,f=a[0]/360,g=a[1]/100,h=a[2]/100,i=g+h;i>1&&(g/=i,h/=i);let j=Math.floor(6*f),k=1-h;b=6*f-j,(1&j)!=0&&(b=1-b);let l=g+b*(k-g);switch(j){default:case 6:case 0:c=k,d=l,e=g;break;case 1:c=l,d=k,e=g;break;case 2:c=g,d=k,e=l;break;case 3:c=g,d=l,e=k;break;case 4:c=l,d=g,e=k;break;case 5:c=k,d=g,e=l}return[255*c,255*d,255*e]},f.cmyk.rgb=function(a){let b=a[0]/100,c=a[1]/100,d=a[2]/100,e=a[3]/100;return[255*(1-Math.min(1,b*(1-e)+e)),255*(1-Math.min(1,c*(1-e)+e)),255*(1-Math.min(1,d*(1-e)+e))]},f.xyz.rgb=function(a){let b,c,d,e=a[0]/100,f=a[1]/100,g=a[2]/100;return b=(b=3.2406*e+-1.5372*f+-.4986*g)>.0031308?1.055*b**(1/2.4)-.055:12.92*b,c=(c=-.9689*e+1.8758*f+.0415*g)>.0031308?1.055*c**(1/2.4)-.055:12.92*c,d=(d=.0557*e+-.204*f+1.057*g)>.0031308?1.055*d**(1/2.4)-.055:12.92*d,[255*(b=Math.min(Math.max(0,b),1)),255*(c=Math.min(Math.max(0,c),1)),255*(d=Math.min(Math.max(0,d),1))]},f.xyz.lab=function(a){let b=a[0],c=a[1],d=a[2];return b/=95.047,c/=100,d/=108.883,[116*(c=c>.008856?c**(1/3):7.787*c+16/116)-16,500*((b=b>.008856?b**(1/3):7.787*b+16/116)-c),200*(c-(d=d>.008856?d**(1/3):7.787*d+16/116))]},f.lab.xyz=function(a){let b,c,d,e=a[0],f=a[1],g=a[2];b=f/500+(c=(e+16)/116),d=c-g/200;let h=c**3,i=b**3,j=d**3;return c=(h>.008856?h:(c-16/116)/7.787)*100,[b=(i>.008856?i:(b-16/116)/7.787)*95.047,c,d=(j>.008856?j:(d-16/116)/7.787)*108.883]},f.lab.lch=function(a){let b,c=a[0],d=a[1],e=a[2];return(b=360*Math.atan2(e,d)/2/Math.PI)<0&&(b+=360),[c,Math.sqrt(d*d+e*e),b]},f.lch.lab=function(a){let b=a[0],c=a[1],d=a[2]/360*2*Math.PI;return[b,c*Math.cos(d),c*Math.sin(d)]},f.rgb.ansi16=function(a,b=null){let[c,d,e]=a,g=null===b?f.rgb.hsv(a)[2]:b;if(0===(g=Math.round(g/50)))return 30;let h=30+(Math.round(e/255)<<2|Math.round(d/255)<<1|Math.round(c/255));return 2===g&&(h+=60),h},f.hsv.ansi16=function(a){return f.rgb.ansi16(f.hsv.rgb(a),a[2])},f.rgb.ansi256=function(a){let b=a[0],c=a[1],d=a[2];return b===c&&c===d?b<8?16:b>248?231:Math.round((b-8)/247*24)+232:16+36*Math.round(b/255*5)+6*Math.round(c/255*5)+Math.round(d/255*5)},f.ansi16.rgb=function(a){let b=a%10;if(0===b||7===b)return a>50&&(b+=3.5),[b=b/10.5*255,b,b];let c=(~~(a>50)+1)*.5;return[(1&b)*c*255,(b>>1&1)*c*255,(b>>2&1)*c*255]},f.ansi256.rgb=function(a){let b;if(a>=232){let b=(a-232)*10+8;return[b,b,b]}return[Math.floor((a-=16)/36)/5*255,Math.floor((b=a%36)/6)/5*255,b%6/5*255]},f.rgb.hex=function(a){let b=(((255&Math.round(a[0]))<<16)+((255&Math.round(a[1]))<<8)+(255&Math.round(a[2]))).toString(16).toUpperCase();return"000000".substring(b.length)+b},f.hex.rgb=function(a){let b=a.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!b)return[0,0,0];let c=b[0];3===b[0].length&&(c=c.split("").map(a=>a+a).join(""));let d=parseInt(c,16);return[d>>16&255,d>>8&255,255&d]},f.rgb.hcg=function(a){let b,c=a[0]/255,d=a[1]/255,e=a[2]/255,f=Math.max(Math.max(c,d),e),g=Math.min(Math.min(c,d),e),h=f-g;return b=h<1?g/(1-h):0,[360*((h<=0?0:f===c?(d-e)/h%6:f===d?2+(e-c)/h:4+(c-d)/h)/6%1),100*h,100*b]},f.hsl.hcg=function(a){let b=a[1]/100,c=a[2]/100,d=c<.5?2*b*c:2*b*(1-c),e=0;return d<1&&(e=(c-.5*d)/(1-d)),[a[0],100*d,100*e]},f.hsv.hcg=function(a){let b=a[1]/100,c=a[2]/100,d=b*c,e=0;return d<1&&(e=(c-d)/(1-d)),[a[0],100*d,100*e]},f.hcg.rgb=function(a){let b=a[0]/360,c=a[1]/100,d=a[2]/100;if(0===c)return[255*d,255*d,255*d];let e=[0,0,0],f=b%1*6,g=f%1,h=1-g,i=0;switch(Math.floor(f)){case 0:e[0]=1,e[1]=g,e[2]=0;break;case 1:e[0]=h,e[1]=1,e[2]=0;break;case 2:e[0]=0,e[1]=1,e[2]=g;break;case 3:e[0]=0,e[1]=h,e[2]=1;break;case 4:e[0]=g,e[1]=0,e[2]=1;break;default:e[0]=1,e[1]=0,e[2]=h}return i=(1-c)*d,[(c*e[0]+i)*255,(c*e[1]+i)*255,(c*e[2]+i)*255]},f.hcg.hsv=function(a){let b=a[1]/100,c=b+a[2]/100*(1-b),d=0;return c>0&&(d=b/c),[a[0],100*d,100*c]},f.hcg.hsl=function(a){let b=a[1]/100,c=a[2]/100*(1-b)+.5*b,d=0;return c>0&&c<.5?d=b/(2*c):c>=.5&&c<1&&(d=b/(2*(1-c))),[a[0],100*d,100*c]},f.hcg.hwb=function(a){let b=a[1]/100,c=b+a[2]/100*(1-b);return[a[0],(c-b)*100,(1-c)*100]},f.hwb.hcg=function(a){let b=a[1]/100,c=1-a[2]/100,d=c-b,e=0;return d<1&&(e=(c-d)/(1-d)),[a[0],100*d,100*e]},f.apple.rgb=function(a){return[a[0]/65535*255,a[1]/65535*255,a[2]/65535*255]},f.rgb.apple=function(a){return[a[0]/255*65535,a[1]/255*65535,a[2]/255*65535]},f.gray.rgb=function(a){return[a[0]/100*255,a[0]/100*255,a[0]/100*255]},f.gray.hsl=function(a){return[0,0,a[0]]},f.gray.hsv=f.gray.hsl,f.gray.hwb=function(a){return[0,100,a[0]]},f.gray.cmyk=function(a){return[0,0,0,a[0]]},f.gray.lab=function(a){return[a[0],0,0]},f.gray.hex=function(a){let b=255&Math.round(a[0]/100*255),c=((b<<16)+(b<<8)+b).toString(16).toUpperCase();return"000000".substring(c.length)+c},f.rgb.gray=function(a){return[(a[0]+a[1]+a[2])/3/255*100]}},23973:a=>{"use strict";a.exports=(a,b=process.argv)=>{let c=a.startsWith("-")?"":1===a.length?"-":"--",d=b.indexOf(c+a),e=b.indexOf("--");return -1!==d&&(-1===e||d<e)}},28340:(a,b,c)=>{"use strict";let d;a=c.nmd(a);let e=(a,b)=>(...c)=>{let d=a(...c);return`\u001B[${d+b}m`},f=(a,b)=>(...c)=>{let d=a(...c);return`\u001B[${38+b};5;${d}m`},g=(a,b)=>(...c)=>{let d=a(...c);return`\u001B[${38+b};2;${d[0]};${d[1]};${d[2]}m`},h=a=>a,i=(a,b,c)=>[a,b,c],j=(a,b,c)=>{Object.defineProperty(a,b,{get:()=>{let d=c();return Object.defineProperty(a,b,{value:d,enumerable:!0,configurable:!0}),d},enumerable:!0,configurable:!0})},k=(a,b,e,f)=>{void 0===d&&(d=c(31809));let g=10*!!f,h={};for(let[c,f]of Object.entries(d)){let d="ansi16"===c?"ansi":c;c===b?h[d]=a(e,g):"object"==typeof f&&(h[d]=a(f[b],g))}return h};Object.defineProperty(a,"exports",{enumerable:!0,get:function(){let a=new Map,b={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};for(let[c,d]of(b.color.gray=b.color.blackBright,b.bgColor.bgGray=b.bgColor.bgBlackBright,b.color.grey=b.color.blackBright,b.bgColor.bgGrey=b.bgColor.bgBlackBright,Object.entries(b))){for(let[c,e]of Object.entries(d))b[c]={open:`\u001B[${e[0]}m`,close:`\u001B[${e[1]}m`},d[c]=b[c],a.set(e[0],e[1]);Object.defineProperty(b,c,{value:d,enumerable:!1})}return Object.defineProperty(b,"codes",{value:a,enumerable:!1}),b.color.close="\x1b[39m",b.bgColor.close="\x1b[49m",j(b.color,"ansi",()=>k(e,"ansi16",h,!1)),j(b.color,"ansi256",()=>k(f,"ansi256",h,!1)),j(b.color,"ansi16m",()=>k(g,"rgb",i,!1)),j(b.bgColor,"ansi",()=>k(e,"ansi16",h,!0)),j(b.bgColor,"ansi256",()=>k(f,"ansi256",h,!0)),j(b.bgColor,"ansi16m",()=>k(g,"rgb",i,!0)),b}})},31809:(a,b,c)=>{let d=c(11768),e=c(63848),f={};Object.keys(d).forEach(a=>{f[a]={},Object.defineProperty(f[a],"channels",{value:d[a].channels}),Object.defineProperty(f[a],"labels",{value:d[a].labels});let b=e(a);Object.keys(b).forEach(c=>{let d,e,g=b[c];f[a][c]=(d=function(...a){let b=a[0];if(null==b)return b;b.length>1&&(a=b);let c=g(a);if("object"==typeof c)for(let a=c.length,b=0;b<a;b++)c[b]=Math.round(c[b]);return c},"conversion"in g&&(d.conversion=g.conversion),d),f[a][c].raw=(e=function(...a){let b=a[0];return null==b?b:(b.length>1&&(a=b),g(a))},"conversion"in g&&(e.conversion=g.conversion),e)})}),a.exports=f},50897:a=>{"use strict";a.exports={stringReplaceAll:(a,b,c)=>{let d=a.indexOf(b);if(-1===d)return a;let e=b.length,f=0,g="";do g+=a.substr(f,d-f)+b+c,f=d+e,d=a.indexOf(b,f);while(-1!==d);return g+a.substr(f)},stringEncaseCRLFWithFirstIndex:(a,b,c,d)=>{let e=0,f="";do{let g="\r"===a[d-1];f+=a.substr(e,(g?d-1:d)-e)+b+(g?"\r\n":"\n")+c,e=d+1,d=a.indexOf("\n",e)}while(-1!==d);return f+a.substr(e)}}},61498:a=>{"use strict";let b=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,c=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,d=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,e=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,f=new Map([["n","\n"],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1b"],["a","\x07"]]);function g(a){let b="u"===a[0],c="{"===a[1];return b&&!c&&5===a.length||"x"===a[0]&&3===a.length?String.fromCharCode(parseInt(a.slice(1),16)):b&&c?String.fromCodePoint(parseInt(a.slice(2,-1),16)):f.get(a)||a}function h(a,b){let c={};for(let a of b)for(let b of a.styles)c[b[0]]=a.inverse?null:b.slice(1);let d=a;for(let[a,b]of Object.entries(c))if(Array.isArray(b)){if(!(a in d))throw Error(`Unknown Chalk style: ${a}`);d=b.length>0?d[a](...b):d[a]}return d}a.exports=(a,f)=>{let i=[],j=[],k=[];if(f.replace(b,(b,f,l,m,n,o)=>{if(f)k.push(g(f));else if(m){let b=k.join("");k=[],j.push(0===i.length?b:h(a,i)(b)),i.push({inverse:l,styles:function(a){let b;c.lastIndex=0;let f=[];for(;null!==(b=c.exec(a));){let a=b[1];if(b[2]){let c=function(a,b){let c,f=[];for(let h of b.trim().split(/\s*,\s*/g)){let b=Number(h);if(Number.isNaN(b))if(c=h.match(d))f.push(c[2].replace(e,(a,b,c)=>b?g(b):c));else throw Error(`Invalid Chalk template style argument: ${h} (in style '${a}')`);else f.push(b)}return f}(a,b[2]);f.push([a].concat(c))}else f.push([a])}return f}(m)})}else if(n){if(0===i.length)throw Error("Found extraneous } in Chalk template literal");j.push(h(a,i)(k.join(""))),k=[],i.pop()}else k.push(o)}),j.push(k.join("")),i.length>0)throw Error(`Chalk template literal is missing ${i.length} closing bracket${1===i.length?"":"s"} (\`}\`)`);return j.join("")}},63848:(a,b,c)=>{let d=c(11768);a.exports=function(a){let b=function(a){let b=function(){let a={},b=Object.keys(d);for(let c=b.length,d=0;d<c;d++)a[b[d]]={distance:-1,parent:null};return a}(),c=[a];for(b[a].distance=0;c.length;){let a=c.pop(),e=Object.keys(d[a]);for(let d=e.length,f=0;f<d;f++){let d=e[f],g=b[d];-1===g.distance&&(g.distance=b[a].distance+1,g.parent=a,c.unshift(d))}}return b}(a),c={},e=Object.keys(b);for(let a=e.length,f=0;f<a;f++){let a=e[f];null!==b[a].parent&&(c[a]=function(a,b){let c=[b[a].parent,a],e=d[b[a].parent][a],f=b[a].parent;for(;b[f].parent;)c.unshift(b[f].parent),e=function(a,b){return function(c){return b(a(c))}}(d[b[f].parent][f],e),f=b[f].parent;return e.conversion=c,e}(a,b))}return c}},65617:a=>{"use strict";a.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},69147:(a,b,c)=>{"use strict";let d,e,f,g,h;c.d(b,{Ay:()=>aa});var i=c(1708),j=c(76760),k=c(73136),l=c(31421),m=c(51455),n=c(48161),o=c(73024);function p(){return void 0===e&&(e=(()=>{try{return o.statSync("/run/.containerenv"),!0}catch{return!1}})()||(void 0===d&&(d=function(){try{return o.statSync("/.dockerenv"),!0}catch{return!1}}()||function(){try{return o.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}()),d)),e}let q=()=>{if("linux"!==i.platform)return!1;if(n.release().toLowerCase().includes("microsoft"))return!p();try{if(o.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft"))return!p()}catch{}return!!(o.existsSync("/proc/sys/fs/binfmt_misc/WSLInterop")||o.existsSync("/run/WSL"))&&!p()},r=i.env.__IS_WSL_TEST__?q:q();var s=c(57975),t=c(4573);let u=(0,s.promisify)(l.execFile),v=()=>`${i.env.SYSTEMROOT||i.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`,w=async(a,b={})=>{let{powerShellPath:c,...d}=b,e=w.encodeCommand(a);return u(c??v(),[...w.argumentsPrefix,e],{encoding:"utf8",...d})};w.argumentsPrefix=["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"],w.encodeCommand=a=>t.Buffer.from(a,"utf16le").toString("base64"),w.escapeArgument=a=>`'${String(a).replaceAll("'","''")}'`;let x=(0,s.promisify)(l.execFile),y=(h="/mnt/",async function(){if(g)return g;let a="/etc/wsl.conf",b=!1;try{await m.access(a,m.constants.F_OK),b=!0}catch{}if(!b)return h;let c=function(a){for(let b of a.split("\n")){if(/^\s*#/.test(b))continue;let a=/^\s*root\s*=\s*(?<mountPoint>"[^"]*"|'[^']*'|[^#]*)/.exec(b);if(a)return a.groups.mountPoint.trim().replaceAll(/^["']|["']$/g,"")}}(await m.readFile(a,{encoding:"utf8"}));return void 0===c?h:g=(g=c).endsWith("/")?g:`${g}/`}),z=async()=>{let a=await y();return`${a}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`},A=r?z:v,B=async()=>f??=(async()=>{try{let a=await A();return await m.access(a,m.constants.X_OK),!0}catch{return!1}})(),C=async()=>{let a=await A(),b=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,{stdout:c}=await w(b,{powerShellPath:a});return c.trim()},D=async a=>{if(/^[a-z]+:\/\//i.test(a))return a;try{let{stdout:b}=await x("wslpath",["-aw",a],{encoding:"utf8"});return b.trim()}catch{return a}};function E(a,b,c){let d=c=>Object.defineProperty(a,b,{value:c,enumerable:!0,writable:!0});return Object.defineProperty(a,b,{configurable:!0,enumerable:!0,get(){let a=c();return d(a),a},set(a){d(a)}}),a}let F=(0,s.promisify)(l.execFile),G={MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},MSEdgeBHTML:{name:"Edge Beta",id:"com.microsoft.edge.beta"},MSEdgeDHTML:{name:"Edge Dev",id:"com.microsoft.edge.dev"},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},ChromeBHTML:{name:"Chrome Beta",id:"com.google.chrome.beta"},ChromeDHTML:{name:"Chrome Dev",id:"com.google.chrome.dev"},ChromiumHTM:{name:"Chromium",id:"org.chromium.Chromium"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveDHTML:{name:"Brave Dev",id:"com.brave.Browser.dev"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},OperaStable:{name:"Opera",id:"com.operasoftware.Opera"},VivaldiHTM:{name:"Vivaldi",id:"com.vivaldi.Vivaldi"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"}},H=new Map(Object.entries(G));class I extends Error{}async function J(a=F){let{stdout:b}=await a("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),c=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(b);if(!c)throw new I(`Cannot find Windows browser in stdout: ${JSON.stringify(b)}`);let{id:d}=c.groups,e=d.lastIndexOf("."),f=d.lastIndexOf("-"),g=-1===e?void 0:d.slice(0,e),h=-1===f?void 0:d.slice(0,f);return G[d]??G[g]??G[h]??{name:d,id:d}}let K=(0,s.promisify)(l.execFile);async function L(){if("darwin"!==i.platform)throw Error("macOS only");let{stdout:a}=await K("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]),b=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(a),c=b?.groups.id??"com.apple.Safari";return"com.apple.safari"===c?"com.apple.Safari":c}let M=(0,s.promisify)(l.execFile);async function N(a,{humanReadableOutput:b=!0,signal:c}={}){if("darwin"!==i.platform)throw Error("macOS only");let d={};c&&(d.signal=c);let{stdout:e}=await M("osascript",["-e",a,b?[]:["-ss"]],d);return e.trim()}async function O(a){return N(`tell application "Finder" to set app_path to application file id "${a}" as string
2
- tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}let P=(0,s.promisify)(l.execFile);async function Q(){if("darwin"===i.platform){let a=await L();return{name:await O(a),id:a}}if("linux"===i.platform){let{stdout:a}=await P("xdg-mime",["query","default","x-scheme-handler/http"]),b=a.trim();return{name:b.replace(/.desktop$/,"").replace("-"," ").toLowerCase().replaceAll(/(?:^|\s|-)\S/g,a=>a.toUpperCase()),id:b}}if("win32"===i.platform)return J();throw Error("Only macOS, Linux, and Windows are supported")}let R=!!(i.env.SSH_CONNECTION||i.env.SSH_CLIENT||i.env.SSH_TTY),S=Symbol("fallbackAttempt"),T=j.dirname((0,k.fileURLToPath)("file:///Users/Working/router4/node_modules/open/index.js")),U=j.join(T,"xdg-open"),{platform:V,arch:W}=i,X=async(a,b)=>{if(0===a.length)return;let c=[];for(let d of a)try{return await b(d)}catch(a){c.push(a)}throw AggregateError(c,"Failed to open in all supported apps")},Y=async a=>{let b,c=!0===(a={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...a})[S];if(delete a[S],Array.isArray(a.app))return X(a.app,b=>Y({...a,app:b,[S]:!0}));let{name:d,arguments:e=[]}=a.app??{};if(e=[...e],Array.isArray(d))return X(d,b=>Y({...a,app:{name:b,arguments:e},[S]:!0}));if("browser"===d||"browserPrivate"===d){let b,c={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","com.brave.browser":"brave","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","com.microsoft.edgemac":"edge","microsoft-edge.desktop":"edge","com.apple.safari":"safari"};if(r){let a=await C();b=H.get(a)??{}}else b=await Q();if(b.id in c){let f=c[b.id.toLowerCase()];if("browserPrivate"===d){if("safari"===f)throw Error("Safari doesn't support opening in private mode via command line");e.push({chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"}[f])}return Y({...a,app:{name:_[f],arguments:e}})}throw Error(`${b.name} is not supported as a default browser`)}let f=[],g={},h=!1;if(!r||p()||R||d||(h=await B()),"darwin"===V)b="open",a.wait&&f.push("--wait-apps"),a.background&&f.push("--background"),a.newInstance&&f.push("--new"),d&&f.push("-a",d);else if("win32"===V||h){b=await A(),f.push(...w.argumentsPrefix),r||(g.windowsVerbatimArguments=!0),r&&a.target&&(a.target=await D(a.target));let c=["$ProgressPreference = 'SilentlyContinue';","Start"];a.wait&&c.push("-Wait"),d?(c.push(w.escapeArgument(d)),a.target&&e.push(a.target)):a.target&&c.push(w.escapeArgument(a.target)),e.length>0&&c.push("-ArgumentList",(e=e.map(a=>w.escapeArgument(a))).join(",")),a.target=w.encodeCommand(c.join(" ")),a.wait||(g.stdio="ignore")}else{if(d)b=d;else{let a=!1;try{await m.access(U,m.constants.X_OK),a=!0}catch{}b=i.versions.electron??("android"===V||!T||"/"===T||!a)?"xdg-open":U}e.length>0&&f.push(...e),a.wait||(g.stdio="ignore",g.detached=!0)}"darwin"===V&&e.length>0&&f.push("--args",...e),a.target&&f.push(a.target);let j=l.spawn(b,f,g);return a.wait?new Promise((b,c)=>{j.once("error",c),j.once("close",d=>{a.allowNonzeroExitCode||0===d?b(j):c(Error(`Exited with code ${d}`))})}):c?new Promise((a,b)=>{j.once("error",b),j.once("spawn",()=>{j.once("close",c=>{(j.off("error",b),0!==c)?b(Error(`Exited with code ${c}`)):(j.unref(),a(j))})})}):(j.unref(),new Promise((a,b)=>{j.once("error",b),j.once("spawn",()=>{j.off("error",b),a(j)})}))};function Z(a){if("string"==typeof a||Array.isArray(a))return a;let{[W]:b}=a;if(!b)throw Error(`${W} is not supported`);return b}function $({[V]:a},{wsl:b}={}){if(b&&r)return Z(b);if(!a)throw Error(`${V} is not supported`);return Z(a)}let _={browser:"browser",browserPrivate:"browserPrivate"};E(_,"chrome",()=>$({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium","chromium-browser"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}})),E(_,"brave",()=>$({darwin:"brave browser",win32:"brave",linux:["brave-browser","brave"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe",x64:["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe","/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"]}})),E(_,"firefox",()=>$({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"})),E(_,"edge",()=>$({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"})),E(_,"safari",()=>$({darwin:"Safari"}));let aa=(a,b)=>{if("string"!=typeof a)throw TypeError("Expected a `target`");return Y({...b,target:a})}},75004:(a,b,c)=>{"use strict";let d,e;c.d(b,{Ay:()=>aO});var f=c(1708),g=c(57975);let h=(a=0)=>b=>`\u001B[${b+a}m`,i=(a=0)=>b=>`\u001B[${38+a};5;${b}m`,j=(a=0)=>(b,c,d)=>`\u001B[${38+a};2;${b};${c};${d}m`,k={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(k.modifier),[...Object.keys(k.color),...Object.keys(k.bgColor)];let l=function(){let a=new Map;for(let[b,c]of Object.entries(k)){for(let[b,d]of Object.entries(c))k[b]={open:`\u001B[${d[0]}m`,close:`\u001B[${d[1]}m`},c[b]=k[b],a.set(d[0],d[1]);Object.defineProperty(k,b,{value:c,enumerable:!1})}return Object.defineProperty(k,"codes",{value:a,enumerable:!1}),k.color.close="\x1b[39m",k.bgColor.close="\x1b[49m",k.color.ansi=h(),k.color.ansi256=i(),k.color.ansi16m=j(),k.bgColor.ansi=h(10),k.bgColor.ansi256=i(10),k.bgColor.ansi16m=j(10),Object.defineProperties(k,{rgbToAnsi256:{value:(a,b,c)=>a===b&&b===c?a<8?16:a>248?231:Math.round((a-8)/247*24)+232:16+36*Math.round(a/255*5)+6*Math.round(b/255*5)+Math.round(c/255*5),enumerable:!1},hexToRgb:{value(a){let b=/[a-f\d]{6}|[a-f\d]{3}/i.exec(a.toString(16));if(!b)return[0,0,0];let[c]=b;3===c.length&&(c=[...c].map(a=>a+a).join(""));let d=Number.parseInt(c,16);return[d>>16&255,d>>8&255,255&d]},enumerable:!1},hexToAnsi256:{value:a=>k.rgbToAnsi256(...k.hexToRgb(a)),enumerable:!1},ansi256ToAnsi:{value(a){let b,c,d;if(a<8)return 30+a;if(a<16)return 90+(a-8);if(a>=232)c=b=((a-232)*10+8)/255,d=b;else{let e=(a-=16)%36;b=Math.floor(a/36)/5,c=Math.floor(e/6)/5,d=e%6/5}let e=2*Math.max(b,c,d);if(0===e)return 30;let f=30+(Math.round(d)<<2|Math.round(c)<<1|Math.round(b));return 2===e&&(f+=60),f},enumerable:!1},rgbToAnsi:{value:(a,b,c)=>k.ansi256ToAnsi(k.rgbToAnsi256(a,b,c)),enumerable:!1},hexToAnsi:{value:a=>k.ansi256ToAnsi(k.hexToAnsi256(a)),enumerable:!1}}),k}();var m=c(48161),n=c(7066);function o(a,b=globalThis.Deno?globalThis.Deno.args:f.argv){let c=a.startsWith("-")?"":1===a.length?"-":"--",d=b.indexOf(c+a),e=b.indexOf("--");return -1!==d&&(-1===e||d<e)}let{env:p}=f;function q(a,b={}){var c;return 0!==(c=function(a,{streamIsTTY:b,sniffFlags:c=!0}={}){let e=function(){if("FORCE_COLOR"in p)return"true"===p.FORCE_COLOR?1:"false"===p.FORCE_COLOR?0:0===p.FORCE_COLOR.length?1:Math.min(Number.parseInt(p.FORCE_COLOR,10),3)}();void 0!==e&&(d=e);let g=c?d:e;if(0===g)return 0;if(c){if(o("color=16m")||o("color=full")||o("color=truecolor"))return 3;if(o("color=256"))return 2}if("TF_BUILD"in p&&"AGENT_NAME"in p)return 1;if(a&&!b&&void 0===g)return 0;let h=g||0;if("dumb"===p.TERM)return h;if("win32"===f.platform){let a=m.release().split(".");return Number(a[0])>=10&&Number(a[2])>=10586?Number(a[2])>=14931?3:2:1}if("CI"in p)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(a=>a in p)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(a=>a in p)||"codeship"===p.CI_NAME?1:h;if("TEAMCITY_VERSION"in p)return+!!/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(p.TEAMCITY_VERSION);if("truecolor"===p.COLORTERM||"xterm-kitty"===p.TERM||"xterm-ghostty"===p.TERM||"wezterm"===p.TERM)return 3;if("TERM_PROGRAM"in p){let a=Number.parseInt((p.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(p.TERM_PROGRAM){case"iTerm.app":return a>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(p.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(p.TERM)||"COLORTERM"in p?1:h}(a,{streamIsTTY:a&&a.isTTY,...b}))&&{level:c,hasBasic:!0,has256:c>=2,has16m:c>=3}}o("no-color")||o("no-colors")||o("color=false")||o("color=never")?d=0:(o("color")||o("colors")||o("color=true")||o("color=always"))&&(d=1);let{stdout:r,stderr:s}={stdout:q({isTTY:n.isatty(1)}),stderr:q({isTTY:n.isatty(2)})},t=Symbol("GENERATOR"),u=Symbol("STYLER"),v=Symbol("IS_EMPTY"),w=["ansi","ansi","ansi256","ansi16m"],x=Object.create(null);function y(a){let b;return((a,b={})=>{if(b.level&&!(Number.isInteger(b.level)&&b.level>=0&&b.level<=3))throw Error("The `level` option should be an integer from 0 to 3");let c=r?r.level:0;a.level=void 0===b.level?c:b.level})(b=(...a)=>a.join(" "),a),Object.setPrototypeOf(b,y.prototype),b}for(let[a,b]of(Object.setPrototypeOf(y.prototype,Function.prototype),Object.entries(l)))x[a]={get(){let c=C(this,B(b.open,b.close,this[u]),this[v]);return Object.defineProperty(this,a,{value:c}),c}};x.visible={get(){let a=C(this,this[u],!0);return Object.defineProperty(this,"visible",{value:a}),a}};let z=(a,b,c,...d)=>"rgb"===a?"ansi16m"===b?l[c].ansi16m(...d):"ansi256"===b?l[c].ansi256(l.rgbToAnsi256(...d)):l[c].ansi(l.rgbToAnsi(...d)):"hex"===a?z("rgb",b,c,...l.hexToRgb(...d)):l[c][a](...d);for(let a of["rgb","hex","ansi256"])x[a]={get(){let{level:b}=this;return function(...c){return C(this,B(z(a,w[b],"color",...c),l.color.close,this[u]),this[v])}}},x["bg"+a[0].toUpperCase()+a.slice(1)]={get(){let{level:b}=this;return function(...c){return C(this,B(z(a,w[b],"bgColor",...c),l.bgColor.close,this[u]),this[v])}}};let A=Object.defineProperties(()=>{},{...x,level:{enumerable:!0,get(){return this[t].level},set(a){this[t].level=a}}}),B=(a,b,c)=>{let d,e;return void 0===c?(d=a,e=b):(d=c.openAll+a,e=b+c.closeAll),{open:a,close:b,openAll:d,closeAll:e,parent:c}},C=(a,b,c)=>{let d=(...a)=>D(d,1===a.length?""+a[0]:a.join(" "));return Object.setPrototypeOf(d,A),d[t]=a,d[u]=b,d[v]=c,d},D=(a,b)=>{if(a.level<=0||!b)return a[v]?"":b;let c=a[u];if(void 0===c)return b;let{openAll:d,closeAll:e}=c;if(b.includes("\x1b"))for(;void 0!==c;)b=function(a,b,c){let d=a.indexOf(b);if(-1===d)return a;let e=b.length,f=0,g="";do g+=a.slice(f,d)+b+c,f=d+e,d=a.indexOf(b,f);while(-1!==d);return g+a.slice(f)}(b,c.close,c.open),c=c.parent;let f=b.indexOf("\n");return -1!==f&&(b=function(a,b,c,d){let e=0,f="";do{let g="\r"===a[d-1];f+=a.slice(e,g?d-1:d)+b+(g?"\r\n":"\n")+c,e=d+1,d=a.indexOf("\n",e)}while(-1!==d);return f+a.slice(e)}(b,e,d,f)),d+b+e};Object.defineProperties(y.prototype,x);let E=y();y({level:s?s.level:0});let F=(a,b,c,d)=>{if("length"===c||"prototype"===c||"arguments"===c||"caller"===c)return;let e=Object.getOwnPropertyDescriptor(a,c),f=Object.getOwnPropertyDescriptor(b,c);(G(e,f)||!d)&&Object.defineProperty(a,c,f)},G=function(a,b){return void 0===a||a.configurable||a.writable===b.writable&&a.enumerable===b.enumerable&&a.configurable===b.configurable&&(a.writable||a.value===b.value)},H=(a,b)=>`/* Wrapped ${a}*/
3
- ${b}`,I=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),J=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),K=new WeakMap,L=(a,b={})=>{let c;if("function"!=typeof a)throw TypeError("Expected a function");let d=0,e=a.displayName||a.name||"<anonymous>",f=function(...g){if(K.set(f,++d),1===d)c=a.apply(this,g),a=void 0;else if(!0===b.throw)throw Error(`Function \`${e}\` can only be called once`);return c};return!function(a,b,{ignoreNonConfigurable:c=!1}={}){let d,{name:e}=a;for(let d of Reflect.ownKeys(b))F(a,b,d,c);(d=Object.getPrototypeOf(b))!==Object.getPrototypeOf(a)&&Object.setPrototypeOf(a,d),((a,b,c)=>{let d=""===c?"":`with ${c.trim()}() `,e=H.bind(null,d,b.toString());Object.defineProperty(e,"name",J);let{writable:f,enumerable:g,configurable:h}=I;Object.defineProperty(a,"toString",{value:e,writable:f,enumerable:g,configurable:h})})(a,b,e)}(f,a),K.set(f,d),f};L.callCount=a=>{if(!K.has(a))throw Error(`The given function \`${a.name}\` is not wrapped by the \`onetime\` package`);return K.get(a)};let M=[];M.push("SIGHUP","SIGINT","SIGTERM"),"win32"!==process.platform&&M.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT"),"linux"===process.platform&&M.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");let N=a=>!!a&&"object"==typeof a&&"function"==typeof a.removeListener&&"function"==typeof a.emit&&"function"==typeof a.reallyExit&&"function"==typeof a.listeners&&"function"==typeof a.kill&&"number"==typeof a.pid&&"function"==typeof a.on,O=Symbol.for("signal-exit emitter"),P=globalThis,Q=Object.defineProperty.bind(Object);class R{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(P[O])return P[O];Q(P,O,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(a,b){this.listeners[a].push(b)}removeListener(a,b){let c=this.listeners[a],d=c.indexOf(b);-1!==d&&(0===d&&1===c.length?c.length=0:c.splice(d,1))}emit(a,b,c){if(this.emitted[a])return!1;this.emitted[a]=!0;let d=!1;for(let e of this.listeners[a])d=!0===e(b,c)||d;return"exit"===a&&(d=this.emit("afterExit",b,c)||d),d}}class S{}class T extends S{onExit(){return()=>{}}load(){}unload(){}}class U extends S{#a="win32"===V.platform?"SIGINT":"SIGHUP";#b=new R;#c;#d;#e;#f={};#g=!1;constructor(a){for(const b of(super(),this.#c=a,this.#f={},M))this.#f[b]=()=>{let c=this.#c.listeners(b),{count:d}=this.#b;if("object"==typeof a.__signal_exit_emitter__&&"number"==typeof a.__signal_exit_emitter__.count&&(d+=a.__signal_exit_emitter__.count),c.length===d){this.unload();let c=this.#b.emit("exit",null,b),d="SIGHUP"===b?this.#a:b;c||a.kill(a.pid,d)}};this.#e=a.reallyExit,this.#d=a.emit}onExit(a,b){if(!N(this.#c))return()=>{};!1===this.#g&&this.load();let c=b?.alwaysLast?"afterExit":"exit";return this.#b.on(c,a),()=>{this.#b.removeListener(c,a),0===this.#b.listeners.exit.length&&0===this.#b.listeners.afterExit.length&&this.unload()}}load(){if(!this.#g){for(let a of(this.#g=!0,this.#b.count+=1,M))try{let b=this.#f[a];b&&this.#c.on(a,b)}catch(a){}this.#c.emit=(a,...b)=>this.#h(a,...b),this.#c.reallyExit=a=>this.#i(a)}}unload(){this.#g&&(this.#g=!1,M.forEach(a=>{let b=this.#f[a];if(!b)throw Error("Listener not defined for signal: "+a);try{this.#c.removeListener(a,b)}catch(a){}}),this.#c.emit=this.#d,this.#c.reallyExit=this.#e,this.#b.count-=1)}#i(a){return N(this.#c)?(this.#c.exitCode=a||0,this.#b.emit("exit",this.#c.exitCode,null),this.#e.call(this.#c,this.#c.exitCode)):0}#h(a,...b){let c=this.#d;if(!("exit"===a&&N(this.#c)))return c.call(this.#c,a,...b);{"number"==typeof b[0]&&(this.#c.exitCode=b[0]);let d=c.call(this.#c,a,...b);return this.#b.emit("exit",this.#c.exitCode,null),d}}}let V=globalThis.process,{onExit:W,load:X,unload:Y}=(e=N(V)?new U(V):new T,{onExit:(a,b)=>e.onExit(a,b),load:()=>e.load(),unload:()=>e.unload()}),Z=f.stderr.isTTY?f.stderr:f.stdout.isTTY?f.stdout:void 0,$=Z?L(()=>{W(()=>{Z.write("\x1b[?25h")},{alwaysLast:!0})}):()=>{},_=!1,aa={};aa.show=(a=f.stderr)=>{a.isTTY&&(_=!1,a.write("\x1b[?25h"))},aa.hide=(a=f.stderr)=>{a.isTTY&&($(),_=!0,a.write("\x1b[?25l"))},aa.toggle=(a,b)=>{void 0!==a&&(_=a),_?aa.show(b):aa.hide(b)};let ab=JSON.parse('{"dots":{"interval":80,"frames":["⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"]},"dots2":{"interval":80,"frames":["⣾","⣽","⣻","⢿","⡿","⣟","⣯","⣷"]},"dots3":{"interval":80,"frames":["⠋","⠙","⠚","⠞","⠖","⠦","⠴","⠲","⠳","⠓"]},"dots4":{"interval":80,"frames":["⠄","⠆","⠇","⠋","⠙","⠸","⠰","⠠","⠰","⠸","⠙","⠋","⠇","⠆"]},"dots5":{"interval":80,"frames":["⠋","⠙","⠚","⠒","⠂","⠂","⠒","⠲","⠴","⠦","⠖","⠒","⠐","⠐","⠒","⠓","⠋"]},"dots6":{"interval":80,"frames":["⠁","⠉","⠙","⠚","⠒","⠂","⠂","⠒","⠲","⠴","⠤","⠄","⠄","⠤","⠴","⠲","⠒","⠂","⠂","⠒","⠚","⠙","⠉","⠁"]},"dots7":{"interval":80,"frames":["⠈","⠉","⠋","⠓","⠒","⠐","⠐","⠒","⠖","⠦","⠤","⠠","⠠","⠤","⠦","⠖","⠒","⠐","⠐","⠒","⠓","⠋","⠉","⠈"]},"dots8":{"interval":80,"frames":["⠁","⠁","⠉","⠙","⠚","⠒","⠂","⠂","⠒","⠲","⠴","⠤","⠄","⠄","⠤","⠠","⠠","⠤","⠦","⠖","⠒","⠐","⠐","⠒","⠓","⠋","⠉","⠈","⠈"]},"dots9":{"interval":80,"frames":["⢹","⢺","⢼","⣸","⣇","⡧","⡗","⡏"]},"dots10":{"interval":80,"frames":["⢄","⢂","⢁","⡁","⡈","⡐","⡠"]},"dots11":{"interval":100,"frames":["⠁","⠂","⠄","⡀","⢀","⠠","⠐","⠈"]},"dots12":{"interval":80,"frames":["⢀⠀","⡀⠀","⠄⠀","⢂⠀","⡂⠀","⠅⠀","⢃⠀","⡃⠀","⠍⠀","⢋⠀","⡋⠀","⠍⠁","⢋⠁","⡋⠁","⠍⠉","⠋⠉","⠋⠉","⠉⠙","⠉⠙","⠉⠩","⠈⢙","⠈⡙","⢈⠩","⡀⢙","⠄⡙","⢂⠩","⡂⢘","⠅⡘","⢃⠨","⡃⢐","⠍⡐","⢋⠠","⡋⢀","⠍⡁","⢋⠁","⡋⠁","⠍⠉","⠋⠉","⠋⠉","⠉⠙","⠉⠙","⠉⠩","⠈⢙","⠈⡙","⠈⠩","⠀⢙","⠀⡙","⠀⠩","⠀⢘","⠀⡘","⠀⠨","⠀⢐","⠀⡐","⠀⠠","⠀⢀","⠀⡀"]},"dots13":{"interval":80,"frames":["⣼","⣹","⢻","⠿","⡟","⣏","⣧","⣶"]},"dots14":{"interval":80,"frames":["⠉⠉","⠈⠙","⠀⠹","⠀⢸","⠀⣰","⢀⣠","⣀⣀","⣄⡀","⣆⠀","⡇⠀","⠏⠀","⠋⠁"]},"dots8Bit":{"interval":80,"frames":["⠀","⠁","⠂","⠃","⠄","⠅","⠆","⠇","⡀","⡁","⡂","⡃","⡄","⡅","⡆","⡇","⠈","⠉","⠊","⠋","⠌","⠍","⠎","⠏","⡈","⡉","⡊","⡋","⡌","⡍","⡎","⡏","⠐","⠑","⠒","⠓","⠔","⠕","⠖","⠗","⡐","⡑","⡒","⡓","⡔","⡕","⡖","⡗","⠘","⠙","⠚","⠛","⠜","⠝","⠞","⠟","⡘","⡙","⡚","⡛","⡜","⡝","⡞","⡟","⠠","⠡","⠢","⠣","⠤","⠥","⠦","⠧","⡠","⡡","⡢","⡣","⡤","⡥","⡦","⡧","⠨","⠩","⠪","⠫","⠬","⠭","⠮","⠯","⡨","⡩","⡪","⡫","⡬","⡭","⡮","⡯","⠰","⠱","⠲","⠳","⠴","⠵","⠶","⠷","⡰","⡱","⡲","⡳","⡴","⡵","⡶","⡷","⠸","⠹","⠺","⠻","⠼","⠽","⠾","⠿","⡸","⡹","⡺","⡻","⡼","⡽","⡾","⡿","⢀","⢁","⢂","⢃","⢄","⢅","⢆","⢇","⣀","⣁","⣂","⣃","⣄","⣅","⣆","⣇","⢈","⢉","⢊","⢋","⢌","⢍","⢎","⢏","⣈","⣉","⣊","⣋","⣌","⣍","⣎","⣏","⢐","⢑","⢒","⢓","⢔","⢕","⢖","⢗","⣐","⣑","⣒","⣓","⣔","⣕","⣖","⣗","⢘","⢙","⢚","⢛","⢜","⢝","⢞","⢟","⣘","⣙","⣚","⣛","⣜","⣝","⣞","⣟","⢠","⢡","⢢","⢣","⢤","⢥","⢦","⢧","⣠","⣡","⣢","⣣","⣤","⣥","⣦","⣧","⢨","⢩","⢪","⢫","⢬","⢭","⢮","⢯","⣨","⣩","⣪","⣫","⣬","⣭","⣮","⣯","⢰","⢱","⢲","⢳","⢴","⢵","⢶","⢷","⣰","⣱","⣲","⣳","⣴","⣵","⣶","⣷","⢸","⢹","⢺","⢻","⢼","⢽","⢾","⢿","⣸","⣹","⣺","⣻","⣼","⣽","⣾","⣿"]},"dotsCircle":{"interval":80,"frames":["⢎ ","⠎⠁","⠊⠑","⠈⠱"," ⡱","⢀⡰","⢄⡠","⢆⡀"]},"sand":{"interval":80,"frames":["⠁","⠂","⠄","⡀","⡈","⡐","⡠","⣀","⣁","⣂","⣄","⣌","⣔","⣤","⣥","⣦","⣮","⣶","⣷","⣿","⡿","⠿","⢟","⠟","⡛","⠛","⠫","⢋","⠋","⠍","⡉","⠉","⠑","⠡","⢁"]},"line":{"interval":130,"frames":["-","\\\\","|","/"]},"line2":{"interval":100,"frames":["⠂","-","–","—","–","-"]},"rollingLine":{"interval":80,"frames":["/ "," - "," \\\\ "," |"," |"," \\\\ "," - ","/ "]},"pipe":{"interval":100,"frames":["┤","┘","┴","└","├","┌","┬","┐"]},"simpleDots":{"interval":400,"frames":[". ",".. ","..."," "]},"simpleDotsScrolling":{"interval":200,"frames":[". ",".. ","..."," .."," ."," "]},"star":{"interval":70,"frames":["✶","✸","✹","✺","✹","✷"]},"star2":{"interval":80,"frames":["+","x","*"]},"flip":{"interval":70,"frames":["_","_","_","-","`","`","\'","\xb4","-","_","_","_"]},"hamburger":{"interval":100,"frames":["☱","☲","☴"]},"growVertical":{"interval":120,"frames":["▁","▃","▄","▅","▆","▇","▆","▅","▄","▃"]},"growHorizontal":{"interval":120,"frames":["▏","▎","▍","▌","▋","▊","▉","▊","▋","▌","▍","▎"]},"balloon":{"interval":140,"frames":[" ",".","o","O","@","*"," "]},"balloon2":{"interval":120,"frames":[".","o","O","\xb0","O","o","."]},"noise":{"interval":100,"frames":["▓","▒","░"]},"bounce":{"interval":120,"frames":["⠁","⠂","⠄","⠂"]},"boxBounce":{"interval":120,"frames":["▖","▘","▝","▗"]},"boxBounce2":{"interval":100,"frames":["▌","▀","▐","▄"]},"triangle":{"interval":50,"frames":["◢","◣","◤","◥"]},"binary":{"interval":80,"frames":["010010","001100","100101","111010","111101","010111","101011","111000","110011","110101"]},"arc":{"interval":100,"frames":["◜","◠","◝","◞","◡","◟"]},"circle":{"interval":120,"frames":["◡","⊙","◠"]},"squareCorners":{"interval":180,"frames":["◰","◳","◲","◱"]},"circleQuarters":{"interval":120,"frames":["◴","◷","◶","◵"]},"circleHalves":{"interval":50,"frames":["◐","◓","◑","◒"]},"squish":{"interval":100,"frames":["╫","╪"]},"toggle":{"interval":250,"frames":["⊶","⊷"]},"toggle2":{"interval":80,"frames":["▫","▪"]},"toggle3":{"interval":120,"frames":["□","■"]},"toggle4":{"interval":100,"frames":["■","□","▪","▫"]},"toggle5":{"interval":100,"frames":["▮","▯"]},"toggle6":{"interval":300,"frames":["ဝ","၀"]},"toggle7":{"interval":80,"frames":["⦾","⦿"]},"toggle8":{"interval":100,"frames":["◍","◌"]},"toggle9":{"interval":100,"frames":["◉","◎"]},"toggle10":{"interval":100,"frames":["㊂","㊀","㊁"]},"toggle11":{"interval":50,"frames":["⧇","⧆"]},"toggle12":{"interval":120,"frames":["☗","☖"]},"toggle13":{"interval":80,"frames":["=","*","-"]},"arrow":{"interval":100,"frames":["←","↖","↑","↗","→","↘","↓","↙"]},"arrow2":{"interval":80,"frames":["⬆️ ","↗️ ","➡️ ","↘️ ","⬇️ ","↙️ ","⬅️ ","↖️ "]},"arrow3":{"interval":120,"frames":["▹▹▹▹▹","▸▹▹▹▹","▹▸▹▹▹","▹▹▸▹▹","▹▹▹▸▹","▹▹▹▹▸"]},"bouncingBar":{"interval":80,"frames":["[ ]","[= ]","[== ]","[=== ]","[====]","[ ===]","[ ==]","[ =]","[ ]","[ =]","[ ==]","[ ===]","[====]","[=== ]","[== ]","[= ]"]},"bouncingBall":{"interval":80,"frames":["( ● )","( ● )","( ● )","( ● )","( ●)","( ● )","( ● )","( ● )","( ● )","(● )"]},"smiley":{"interval":200,"frames":["\uD83D\uDE04 ","\uD83D\uDE1D "]},"monkey":{"interval":300,"frames":["\uD83D\uDE48 ","\uD83D\uDE48 ","\uD83D\uDE49 ","\uD83D\uDE4A "]},"hearts":{"interval":100,"frames":["\uD83D\uDC9B ","\uD83D\uDC99 ","\uD83D\uDC9C ","\uD83D\uDC9A ","\uD83D\uDC97 "]},"clock":{"interval":100,"frames":["\uD83D\uDD5B ","\uD83D\uDD50 ","\uD83D\uDD51 ","\uD83D\uDD52 ","\uD83D\uDD53 ","\uD83D\uDD54 ","\uD83D\uDD55 ","\uD83D\uDD56 ","\uD83D\uDD57 ","\uD83D\uDD58 ","\uD83D\uDD59 ","\uD83D\uDD5A "]},"earth":{"interval":180,"frames":["\uD83C\uDF0D ","\uD83C\uDF0E ","\uD83C\uDF0F "]},"material":{"interval":17,"frames":["█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁","██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁","███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁","████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁","██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁","██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁","███████▁▁▁▁▁▁▁▁▁▁▁▁▁","████████▁▁▁▁▁▁▁▁▁▁▁▁","█████████▁▁▁▁▁▁▁▁▁▁▁","█████████▁▁▁▁▁▁▁▁▁▁▁","██████████▁▁▁▁▁▁▁▁▁▁","███████████▁▁▁▁▁▁▁▁▁","█████████████▁▁▁▁▁▁▁","██████████████▁▁▁▁▁▁","██████████████▁▁▁▁▁▁","▁██████████████▁▁▁▁▁","▁██████████████▁▁▁▁▁","▁██████████████▁▁▁▁▁","▁▁██████████████▁▁▁▁","▁▁▁██████████████▁▁▁","▁▁▁▁█████████████▁▁▁","▁▁▁▁██████████████▁▁","▁▁▁▁██████████████▁▁","▁▁▁▁▁██████████████▁","▁▁▁▁▁██████████████▁","▁▁▁▁▁██████████████▁","▁▁▁▁▁▁██████████████","▁▁▁▁▁▁██████████████","▁▁▁▁▁▁▁█████████████","▁▁▁▁▁▁▁█████████████","▁▁▁▁▁▁▁▁████████████","▁▁▁▁▁▁▁▁████████████","▁▁▁▁▁▁▁▁▁███████████","▁▁▁▁▁▁▁▁▁███████████","▁▁▁▁▁▁▁▁▁▁██████████","▁▁▁▁▁▁▁▁▁▁██████████","▁▁▁▁▁▁▁▁▁▁▁▁████████","▁▁▁▁▁▁▁▁▁▁▁▁▁███████","▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████","█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████","██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███","██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███","███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███","████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██","█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█","█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█","██████▁▁▁▁▁▁▁▁▁▁▁▁▁█","████████▁▁▁▁▁▁▁▁▁▁▁▁","█████████▁▁▁▁▁▁▁▁▁▁▁","█████████▁▁▁▁▁▁▁▁▁▁▁","█████████▁▁▁▁▁▁▁▁▁▁▁","█████████▁▁▁▁▁▁▁▁▁▁▁","███████████▁▁▁▁▁▁▁▁▁","████████████▁▁▁▁▁▁▁▁","████████████▁▁▁▁▁▁▁▁","██████████████▁▁▁▁▁▁","██████████████▁▁▁▁▁▁","▁██████████████▁▁▁▁▁","▁██████████████▁▁▁▁▁","▁▁▁█████████████▁▁▁▁","▁▁▁▁▁████████████▁▁▁","▁▁▁▁▁████████████▁▁▁","▁▁▁▁▁▁███████████▁▁▁","▁▁▁▁▁▁▁▁█████████▁▁▁","▁▁▁▁▁▁▁▁█████████▁▁▁","▁▁▁▁▁▁▁▁▁█████████▁▁","▁▁▁▁▁▁▁▁▁█████████▁▁","▁▁▁▁▁▁▁▁▁▁█████████▁","▁▁▁▁▁▁▁▁▁▁▁████████▁","▁▁▁▁▁▁▁▁▁▁▁████████▁","▁▁▁▁▁▁▁▁▁▁▁▁███████▁","▁▁▁▁▁▁▁▁▁▁▁▁███████▁","▁▁▁▁▁▁▁▁▁▁▁▁▁███████","▁▁▁▁▁▁▁▁▁▁▁▁▁███████","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁","▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁"]},"moon":{"interval":80,"frames":["\uD83C\uDF11 ","\uD83C\uDF12 ","\uD83C\uDF13 ","\uD83C\uDF14 ","\uD83C\uDF15 ","\uD83C\uDF16 ","\uD83C\uDF17 ","\uD83C\uDF18 "]},"runner":{"interval":140,"frames":["\uD83D\uDEB6 ","\uD83C\uDFC3 "]},"pong":{"interval":80,"frames":["▐⠂ ▌","▐⠈ ▌","▐ ⠂ ▌","▐ ⠠ ▌","▐ ⡀ ▌","▐ ⠠ ▌","▐ ⠂ ▌","▐ ⠈ ▌","▐ ⠂ ▌","▐ ⠠ ▌","▐ ⡀ ▌","▐ ⠠ ▌","▐ ⠂ ▌","▐ ⠈ ▌","▐ ⠂▌","▐ ⠠▌","▐ ⡀▌","▐ ⠠ ▌","▐ ⠂ ▌","▐ ⠈ ▌","▐ ⠂ ▌","▐ ⠠ ▌","▐ ⡀ ▌","▐ ⠠ ▌","▐ ⠂ ▌","▐ ⠈ ▌","▐ ⠂ ▌","▐ ⠠ ▌","▐ ⡀ ▌","▐⠠ ▌"]},"shark":{"interval":120,"frames":["▐|\\\\____________▌","▐_|\\\\___________▌","▐__|\\\\__________▌","▐___|\\\\_________▌","▐____|\\\\________▌","▐_____|\\\\_______▌","▐______|\\\\______▌","▐_______|\\\\_____▌","▐________|\\\\____▌","▐_________|\\\\___▌","▐__________|\\\\__▌","▐___________|\\\\_▌","▐____________|\\\\▌","▐____________/|▌","▐___________/|_▌","▐__________/|__▌","▐_________/|___▌","▐________/|____▌","▐_______/|_____▌","▐______/|______▌","▐_____/|_______▌","▐____/|________▌","▐___/|_________▌","▐__/|__________▌","▐_/|___________▌","▐/|____________▌"]},"dqpb":{"interval":100,"frames":["d","q","p","b"]},"weather":{"interval":100,"frames":["☀️ ","☀️ ","☀️ ","\uD83C\uDF24 ","⛅️ ","\uD83C\uDF25 ","☁️ ","\uD83C\uDF27 ","\uD83C\uDF28 ","\uD83C\uDF27 ","\uD83C\uDF28 ","\uD83C\uDF27 ","\uD83C\uDF28 ","⛈ ","\uD83C\uDF28 ","\uD83C\uDF27 ","\uD83C\uDF28 ","☁️ ","\uD83C\uDF25 ","⛅️ ","\uD83C\uDF24 ","☀️ ","☀️ "]},"christmas":{"interval":400,"frames":["\uD83C\uDF32","\uD83C\uDF84"]},"grenade":{"interval":80,"frames":["، ","′ "," \xb4 "," ‾ "," ⸌"," ⸊"," |"," ⁎"," ⁕"," ෴ "," ⁓"," "," "," "]},"point":{"interval":125,"frames":["∙∙∙","●∙∙","∙●∙","∙∙●","∙∙∙"]},"layer":{"interval":150,"frames":["-","=","≡"]},"betaWave":{"interval":80,"frames":["ρββββββ","βρβββββ","ββρββββ","βββρβββ","ββββρββ","βββββρβ","ββββββρ"]},"fingerDance":{"interval":160,"frames":["\uD83E\uDD18 ","\uD83E\uDD1F ","\uD83D\uDD96 ","✋ ","\uD83E\uDD1A ","\uD83D\uDC46 "]},"fistBump":{"interval":80,"frames":["\uD83E\uDD1C    \uD83E\uDD1B ","\uD83E\uDD1C    \uD83E\uDD1B ","\uD83E\uDD1C    \uD83E\uDD1B "," \uD83E\uDD1C  \uD83E\uDD1B  ","  \uD83E\uDD1C\uD83E\uDD1B   "," \uD83E\uDD1C✨\uD83E\uDD1B   ","\uD83E\uDD1C ✨ \uD83E\uDD1B  "]},"soccerHeader":{"interval":80,"frames":[" \uD83E\uDDD1⚽️ \uD83E\uDDD1 ","\uD83E\uDDD1 ⚽️ \uD83E\uDDD1 ","\uD83E\uDDD1 ⚽️ \uD83E\uDDD1 ","\uD83E\uDDD1 ⚽️ \uD83E\uDDD1 ","\uD83E\uDDD1 ⚽️ \uD83E\uDDD1 ","\uD83E\uDDD1 ⚽️ \uD83E\uDDD1 ","\uD83E\uDDD1 ⚽️\uD83E\uDDD1 ","\uD83E\uDDD1 ⚽️ \uD83E\uDDD1 ","\uD83E\uDDD1 ⚽️ \uD83E\uDDD1 ","\uD83E\uDDD1 ⚽️ \uD83E\uDDD1 ","\uD83E\uDDD1 ⚽️ \uD83E\uDDD1 ","\uD83E\uDDD1 ⚽️ \uD83E\uDDD1 "]},"mindblown":{"interval":160,"frames":["\uD83D\uDE10 ","\uD83D\uDE10 ","\uD83D\uDE2E ","\uD83D\uDE2E ","\uD83D\uDE26 ","\uD83D\uDE26 ","\uD83D\uDE27 ","\uD83D\uDE27 ","\uD83E\uDD2F ","\uD83D\uDCA5 ","✨ ","  ","  ","  "]},"speaker":{"interval":160,"frames":["\uD83D\uDD08 ","\uD83D\uDD09 ","\uD83D\uDD0A ","\uD83D\uDD09 "]},"orangePulse":{"interval":100,"frames":["\uD83D\uDD38 ","\uD83D\uDD36 ","\uD83D\uDFE0 ","\uD83D\uDFE0 ","\uD83D\uDD36 "]},"bluePulse":{"interval":100,"frames":["\uD83D\uDD39 ","\uD83D\uDD37 ","\uD83D\uDD35 ","\uD83D\uDD35 ","\uD83D\uDD37 "]},"orangeBluePulse":{"interval":100,"frames":["\uD83D\uDD38 ","\uD83D\uDD36 ","\uD83D\uDFE0 ","\uD83D\uDFE0 ","\uD83D\uDD36 ","\uD83D\uDD39 ","\uD83D\uDD37 ","\uD83D\uDD35 ","\uD83D\uDD35 ","\uD83D\uDD37 "]},"timeTravel":{"interval":100,"frames":["\uD83D\uDD5B ","\uD83D\uDD5A ","\uD83D\uDD59 ","\uD83D\uDD58 ","\uD83D\uDD57 ","\uD83D\uDD56 ","\uD83D\uDD55 ","\uD83D\uDD54 ","\uD83D\uDD53 ","\uD83D\uDD52 ","\uD83D\uDD51 ","\uD83D\uDD50 "]},"aesthetic":{"interval":80,"frames":["▰▱▱▱▱▱▱","▰▰▱▱▱▱▱","▰▰▰▱▱▱▱","▰▰▰▰▱▱▱","▰▰▰▰▰▱▱","▰▰▰▰▰▰▱","▰▰▰▰▰▰▰","▰▱▱▱▱▱▱"]},"dwarfFortress":{"interval":80,"frames":[" ██████\xa3\xa3\xa3 ","☺██████\xa3\xa3\xa3 ","☺██████\xa3\xa3\xa3 ","☺▓█████\xa3\xa3\xa3 ","☺▓█████\xa3\xa3\xa3 ","☺▒█████\xa3\xa3\xa3 ","☺▒█████\xa3\xa3\xa3 ","☺░█████\xa3\xa3\xa3 ","☺░█████\xa3\xa3\xa3 ","☺ █████\xa3\xa3\xa3 "," ☺█████\xa3\xa3\xa3 "," ☺█████\xa3\xa3\xa3 "," ☺▓████\xa3\xa3\xa3 "," ☺▓████\xa3\xa3\xa3 "," ☺▒████\xa3\xa3\xa3 "," ☺▒████\xa3\xa3\xa3 "," ☺░████\xa3\xa3\xa3 "," ☺░████\xa3\xa3\xa3 "," ☺ ████\xa3\xa3\xa3 "," ☺████\xa3\xa3\xa3 "," ☺████\xa3\xa3\xa3 "," ☺▓███\xa3\xa3\xa3 "," ☺▓███\xa3\xa3\xa3 "," ☺▒███\xa3\xa3\xa3 "," ☺▒███\xa3\xa3\xa3 "," ☺░███\xa3\xa3\xa3 "," ☺░███\xa3\xa3\xa3 "," ☺ ███\xa3\xa3\xa3 "," ☺███\xa3\xa3\xa3 "," ☺███\xa3\xa3\xa3 "," ☺▓██\xa3\xa3\xa3 "," ☺▓██\xa3\xa3\xa3 "," ☺▒██\xa3\xa3\xa3 "," ☺▒██\xa3\xa3\xa3 "," ☺░██\xa3\xa3\xa3 "," ☺░██\xa3\xa3\xa3 "," ☺ ██\xa3\xa3\xa3 "," ☺██\xa3\xa3\xa3 "," ☺██\xa3\xa3\xa3 "," ☺▓█\xa3\xa3\xa3 "," ☺▓█\xa3\xa3\xa3 "," ☺▒█\xa3\xa3\xa3 "," ☺▒█\xa3\xa3\xa3 "," ☺░█\xa3\xa3\xa3 "," ☺░█\xa3\xa3\xa3 "," ☺ █\xa3\xa3\xa3 "," ☺█\xa3\xa3\xa3 "," ☺█\xa3\xa3\xa3 "," ☺▓\xa3\xa3\xa3 "," ☺▓\xa3\xa3\xa3 "," ☺▒\xa3\xa3\xa3 "," ☺▒\xa3\xa3\xa3 "," ☺░\xa3\xa3\xa3 "," ☺░\xa3\xa3\xa3 "," ☺ \xa3\xa3\xa3 "," ☺\xa3\xa3\xa3 "," ☺\xa3\xa3\xa3 "," ☺▓\xa3\xa3 "," ☺▓\xa3\xa3 "," ☺▒\xa3\xa3 "," ☺▒\xa3\xa3 "," ☺░\xa3\xa3 "," ☺░\xa3\xa3 "," ☺ \xa3\xa3 "," ☺\xa3\xa3 "," ☺\xa3\xa3 "," ☺▓\xa3 "," ☺▓\xa3 "," ☺▒\xa3 "," ☺▒\xa3 "," ☺░\xa3 "," ☺░\xa3 "," ☺ \xa3 "," ☺\xa3 "," ☺\xa3 "," ☺▓ "," ☺▓ "," ☺▒ "," ☺▒ "," ☺░ "," ☺░ "," ☺ "," ☺ &"," ☺ ☼&"," ☺ ☼ &"," ☺☼ &"," ☺☼ & "," ‼ & "," ☺ & "," ‼ & "," ☺ & "," ‼ & "," ☺ & ","‼ & "," & "," & "," & ░ "," & ▒ "," & ▓ "," & \xa3 "," & ░\xa3 "," & ▒\xa3 "," & ▓\xa3 "," & \xa3\xa3 "," & ░\xa3\xa3 "," & ▒\xa3\xa3 ","& ▓\xa3\xa3 ","& \xa3\xa3\xa3 "," ░\xa3\xa3\xa3 "," ▒\xa3\xa3\xa3 "," ▓\xa3\xa3\xa3 "," █\xa3\xa3\xa3 "," ░█\xa3\xa3\xa3 "," ▒█\xa3\xa3\xa3 "," ▓█\xa3\xa3\xa3 "," ██\xa3\xa3\xa3 "," ░██\xa3\xa3\xa3 "," ▒██\xa3\xa3\xa3 "," ▓██\xa3\xa3\xa3 "," ███\xa3\xa3\xa3 "," ░███\xa3\xa3\xa3 "," ▒███\xa3\xa3\xa3 "," ▓███\xa3\xa3\xa3 "," ████\xa3\xa3\xa3 "," ░████\xa3\xa3\xa3 "," ▒████\xa3\xa3\xa3 "," ▓████\xa3\xa3\xa3 "," █████\xa3\xa3\xa3 "," ░█████\xa3\xa3\xa3 "," ▒█████\xa3\xa3\xa3 "," ▓█████\xa3\xa3\xa3 "," ██████\xa3\xa3\xa3 "," ██████\xa3\xa3\xa3 "]},"fish":{"interval":80,"frames":["~~~~~~~~~~~~~~~~~~~~","> ~~~~~~~~~~~~~~~~~~","\xba> ~~~~~~~~~~~~~~~~~","(\xba> ~~~~~~~~~~~~~~~~","((\xba> ~~~~~~~~~~~~~~~","<((\xba> ~~~~~~~~~~~~~~","><((\xba> ~~~~~~~~~~~~~"," ><((\xba> ~~~~~~~~~~~~","~ ><((\xba> ~~~~~~~~~~~","~~ <>((\xba> ~~~~~~~~~~","~~~ ><((\xba> ~~~~~~~~~","~~~~ <>((\xba> ~~~~~~~~","~~~~~ ><((\xba> ~~~~~~~","~~~~~~ <>((\xba> ~~~~~~","~~~~~~~ ><((\xba> ~~~~~","~~~~~~~~ <>((\xba> ~~~~","~~~~~~~~~ ><((\xba> ~~~","~~~~~~~~~~ <>((\xba> ~~","~~~~~~~~~~~ ><((\xba> ~","~~~~~~~~~~~~ <>((\xba> ","~~~~~~~~~~~~~ ><((\xba>","~~~~~~~~~~~~~~ <>((\xba","~~~~~~~~~~~~~~~ ><((","~~~~~~~~~~~~~~~~ <>(","~~~~~~~~~~~~~~~~~ ><","~~~~~~~~~~~~~~~~~~ <","~~~~~~~~~~~~~~~~~~~~"]}}');Object.keys(ab);let ac=n?.WriteStream?.prototype?.hasColors?.()??!1,ad=(a,b)=>{if(!ac)return a=>a;let c=`\u001B[${a}m`,d=`\u001B[${b}m`;return a=>{let e=a+"",f=e.indexOf(d);if(-1===f)return c+e+d;let g=c,h=0,i=(22===b?d:"")+c;for(;-1!==f;)g+=e.slice(h,f)+i,h=f+d.length,f=e.indexOf(d,h);return g+(e.slice(h)+d)}};ad(0,0),ad(1,22),ad(2,22),ad(3,23),ad(4,24),ad(53,55),ad(7,27),ad(8,28),ad(9,29),ad(30,39);let ae=ad(31,39),af=ad(32,39),ag=ad(33,39),ah=ad(34,39);function ai(){let{env:a}=f,{TERM:b,TERM_PROGRAM:c}=a;return"win32"!==f.platform?"linux"!==b:!!a.WT_SESSION||!!a.TERMINUS_SUBLIME||"{cmd::Cmder}"===a.ConEmuTask||"Terminus-Sublime"===c||"vscode"===c||"xterm-256color"===b||"alacritty"===b||"rxvt-unicode"===b||"rxvt-unicode-256color"===b||"JetBrains-JediTerm"===a.TERMINAL_EMULATOR}ad(35,39),ad(36,39),ad(37,39),ad(90,39),ad(40,49),ad(41,49),ad(42,49),ad(43,49),ad(44,49),ad(45,49),ad(46,49),ad(47,49),ad(100,49),ad(91,39),ad(92,39),ad(93,39),ad(94,39),ad(95,39),ad(96,39),ad(97,39),ad(101,49),ad(102,49),ad(103,49),ad(104,49),ad(105,49),ad(106,49),ad(107,49);let aj=ai(),ak=ah(aj?"ℹ":"i"),al=af(aj?"✔":"√"),am=ag(aj?"⚠":"‼"),an=ae(aj?"✖":"\xd7"),ao=function({onlyFirst:a=!1}={}){return RegExp("(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]",a?void 0:"g")}(),ap=[161,161,164,164,167,168,170,170,173,174,176,180,182,186,188,191,198,198,208,208,215,216,222,225,230,230,232,234,236,237,240,240,242,243,247,250,252,252,254,254,257,257,273,273,275,275,283,283,294,295,299,299,305,307,312,312,319,322,324,324,328,331,333,333,338,339,358,359,363,363,462,462,464,464,466,466,468,468,470,470,472,472,474,474,476,476,593,593,609,609,708,708,711,711,713,715,717,717,720,720,728,731,733,733,735,735,768,879,913,929,931,937,945,961,963,969,1025,1025,1040,1103,1105,1105,8208,8208,8211,8214,8216,8217,8220,8221,8224,8226,8228,8231,8240,8240,8242,8243,8245,8245,8251,8251,8254,8254,8308,8308,8319,8319,8321,8324,8364,8364,8451,8451,8453,8453,8457,8457,8467,8467,8470,8470,8481,8482,8486,8486,8491,8491,8531,8532,8539,8542,8544,8555,8560,8569,8585,8585,8592,8601,8632,8633,8658,8658,8660,8660,8679,8679,8704,8704,8706,8707,8711,8712,8715,8715,8719,8719,8721,8721,8725,8725,8730,8730,8733,8736,8739,8739,8741,8741,8743,8748,8750,8750,8756,8759,8764,8765,8776,8776,8780,8780,8786,8786,8800,8801,8804,8807,8810,8811,8814,8815,8834,8835,8838,8839,8853,8853,8857,8857,8869,8869,8895,8895,8978,8978,9312,9449,9451,9547,9552,9587,9600,9615,9618,9621,9632,9633,9635,9641,9650,9651,9654,9655,9660,9661,9664,9665,9670,9672,9675,9675,9678,9681,9698,9701,9711,9711,9733,9734,9737,9737,9742,9743,9756,9756,9758,9758,9792,9792,9794,9794,9824,9825,9827,9829,9831,9834,9836,9837,9839,9839,9886,9887,9919,9919,9926,9933,9935,9939,9941,9953,9955,9955,9960,9961,9963,9969,9972,9972,9974,9977,9979,9980,9982,9983,10045,10045,10102,10111,11094,11097,12872,12879,57344,63743,65024,65039,65533,65533,127232,127242,127248,127277,127280,127337,127344,127373,127375,127376,127387,127404,917760,917999,983040,1048573,1048576,1114109],aq=[12288,12288,65281,65376,65504,65510],ar=[8361,8361,65377,65470,65474,65479,65482,65487,65490,65495,65498,65500,65512,65518],as=[32,126,162,163,165,166,172,172,175,175,10214,10221,10629,10630],at=[4352,4447,8986,8987,9001,9002,9193,9196,9200,9200,9203,9203,9725,9726,9748,9749,9776,9783,9800,9811,9855,9855,9866,9871,9875,9875,9889,9889,9898,9899,9917,9918,9924,9925,9934,9934,9940,9940,9962,9962,9970,9971,9973,9973,9978,9978,9981,9981,9989,9989,9994,9995,10024,10024,10060,10060,10062,10062,10067,10069,10071,10071,10133,10135,10160,10160,10175,10175,11035,11036,11088,11088,11093,11093,11904,11929,11931,12019,12032,12245,12272,12287,12289,12350,12353,12438,12441,12543,12549,12591,12593,12686,12688,12773,12783,12830,12832,12871,12880,42124,42128,42182,43360,43388,44032,55203,63744,64255,65040,65049,65072,65106,65108,65126,65128,65131,94176,94180,94192,94198,94208,101589,101631,101662,101760,101874,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,119552,119638,119648,119670,126980,126980,127183,127183,127374,127374,127377,127386,127488,127490,127504,127547,127552,127560,127568,127569,127584,127589,127744,127776,127789,127797,127799,127868,127870,127891,127904,127946,127951,127955,127968,127984,127988,127988,127992,128062,128064,128064,128066,128252,128255,128317,128331,128334,128336,128359,128378,128378,128405,128406,128420,128420,128507,128591,128640,128709,128716,128716,128720,128722,128725,128728,128732,128735,128747,128748,128756,128764,128992,129003,129008,129008,129292,129338,129340,129349,129351,129535,129648,129660,129664,129674,129678,129734,129736,129736,129741,129756,129759,129770,129775,129784,131072,196605,196608,262141],au=(a,b)=>{let c=0,d=Math.floor(a.length/2)-1;for(;c<=d;){let e=Math.floor((c+d)/2),f=2*e;if(b<a[f])d=e-1;else{if(!(b>a[f+1]))return!0;c=e+1}}return!1},av=ap[0],aw=ap.at(-1),ax=aq[0],ay=aq.at(-1);ar[0],ar.at(-1),as[0],as.at(-1);let az=at[0],aA=at.at(-1),[aB,aC]=function(a){let b=a[0],c=a[1];for(let d=0;d<a.length;d+=2){let e=a[d],f=a[d+1];if(19968>=e&&19968<=f)return[e,f];f-e>c-b&&(b=e,c=f)}return[b,c]}(at);function aD(a,{ambiguousAsWide:b=!1}={}){if(!Number.isSafeInteger(a))throw TypeError(`Expected a code point, got \`${typeof a}\`.`);return!(a<ax)&&!(a>ay)&&au(aq,a)||a>=aB&&a<=aC||!(a<az)&&!(a>aA)&&au(at,a)||b&&!(a<av)&&!(a>aw)&&au(ap,a)?2:1}let aE=new Intl.Segmenter,aF=/^(?:\p{Default_Ignorable_Code_Point}|\p{Control}|\p{Format}|\p{Mark}|\p{Surrogate})+$/v,aG=/^[\p{Default_Ignorable_Code_Point}\p{Control}\p{Format}\p{Mark}\p{Surrogate}]+/v,aH=/^\p{RGI_Emoji}$/v,aI=/^[\d#*]\u20E3$/,aJ=/\p{Extended_Pictographic}/gu;class aK{#j=0;#k;#l=!1;#m=!1;#n=a=>{a?.length&&("string"==typeof a?a.codePointAt(0):a[0])===3&&(f.listenerCount("SIGINT")>0?f.emit("SIGINT"):f.kill(f.pid,"SIGINT"))};start(){this.#j++,1===this.#j&&this.#o()}stop(){0!==this.#j&&0==--this.#j&&this.#p()}#o(){let{stdin:a}=f;if("win32"===f.platform||!a?.isTTY||"function"!=typeof a.setRawMode){this.#k=void 0;return}this.#k=a,this.#l=a.isPaused(),this.#m=!!a.isRaw,a.setRawMode(!0),a.prependListener("data",this.#n),this.#l&&a.resume()}#p(){if(!this.#k)return;let a=this.#k;a.off("data",this.#n),a.isTTY&&a.setRawMode?.(this.#m),this.#l&&a.pause(),this.#k=void 0,this.#l=!1,this.#m=!1}}let aL=Object.freeze(new aK),aM=new Map;class aN{#q=0;#r=-1;#s=0;#t;#u;#v;#w;#x=new Map;#y=!1;#z;#A;#B=!1;color;#C(a){this.#y=!0;try{return a()}finally{this.#y=!1}}#D(){this.isSpinning&&this.render()}#E(a,b){return null==a?"":"string"==typeof a?a:Buffer.isBuffer(a)||ArrayBuffer.isView(a)?Buffer.from(a).toString("string"==typeof b&&b&&"buffer"!==b?b:"utf8"):String(a)}#F(a){if(!a)return!1;let b=a.at(-1);return"\n"===b||"\r"===b}#G(){this.#A||(this.#A=setTimeout(()=>{this.#A=void 0,this.isSpinning&&this.#D()},200),"function"==typeof this.#A?.unref&&this.#A.unref())}#H(){this.#A&&(clearTimeout(this.#A),this.#A=void 0)}#I(a,b,c,d){return this.#J(c," ")+a+("string"==typeof b?(a?" ":"")+b:"")+this.#K(d," ")}constructor(a){"string"==typeof a&&(a={text:a}),this.#t={color:"cyan",stream:f.stderr,discardStdin:!0,hideCursor:!0,...a},this.color=this.#t.color,this.#v=this.#t.stream,"boolean"!=typeof this.#t.isEnabled&&(this.#t.isEnabled=function({stream:a=process.stdout}={}){return!!(a&&a.isTTY&&"dumb"!==process.env.TERM&&!("CI"in process.env))}({stream:this.#v})),"boolean"!=typeof this.#t.isSilent&&(this.#t.isSilent=!1);const b=this.#t.interval;this.spinner=this.#t.spinner,this.#t.interval=b,this.text=this.#t.text,this.prefixText=this.#t.prefixText,this.suffixText=this.#t.suffixText,this.indent=this.#t.indent}get indent(){return this.#t.indent}set indent(a=0){if(!(a>=0&&Number.isInteger(a)))throw Error("The `indent` option must be an integer from 0 and up");this.#t.indent=a}get interval(){return this.#t.interval??this.#u.interval??100}get spinner(){return this.#u}set spinner(a){if(this.#r=-1,this.#t.interval=void 0,"object"==typeof a){if(!Array.isArray(a.frames)||0===a.frames.length||a.frames.some(a=>"string"!=typeof a))throw Error("The given spinner must have a non-empty `frames` array of strings");if(void 0!==a.interval&&!(Number.isInteger(a.interval)&&a.interval>0))throw Error("`spinner.interval` must be a positive integer if provided");this.#u=a}else if(ai())if(void 0===a)this.#u=ab.dots;else if("default"!==a&&ab[a])this.#u=ab[a];else throw Error(`There is no built-in spinner named '${a}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`);else this.#u=ab.line}get text(){return this.#t.text}set text(a=""){this.#t.text=a}get prefixText(){return this.#t.prefixText}set prefixText(a=""){this.#t.prefixText=a}get suffixText(){return this.#t.suffixText}set suffixText(a=""){this.#t.suffixText=a}get isSpinning(){return void 0!==this.#w}#L(a,b,c=!1){let d="function"==typeof a?a():a;return"string"==typeof d&&""!==d?c?b+d:d+b:""}#J(a=this.#t.prefixText,b=" "){return this.#L(a,b,!1)}#K(a=this.#t.suffixText,b=" "){return this.#L(a,b,!0)}#M(a,b){let c=0;for(let d of(0,g.stripVTControlCharacters)(a).split("\n"))c+=Math.max(1,Math.ceil(function(a,b={}){if("string"!=typeof a||0===a.length)return 0;let{ambiguousIsNarrow:c=!0,countAnsiEscapeCodes:d=!1}=b,e=a;if(!d&&(e.includes("\x1b")||e.includes("\x9b"))&&(e=function(a){if("string"!=typeof a)throw TypeError(`Expected a \`string\`, got \`${typeof a}\``);return a.includes("\x1b")||a.includes("\x9b")?a.replace(ao,""):a}(e)),0===e.length)return 0;if(/^[\u0020-\u007E]*$/.test(e))return e.length;let f=0,g={ambiguousAsWide:!c};for(let{segment:a}of aE.segment(e))if(!aF.test(a)){if(aH.test(a)||function(a){if(a.length>50)return!1;if(aI.test(a))return!0;if(a.includes("‍")){let b=a.match(aJ);return null!==b&&b.length>=2}return!1}(a)){f+=2;continue}f+=aD(a.replace(aG,"").codePointAt(0),g),f+=function(a,b){let c=0;if(a.length>1)for(let d of a.slice(1))d>="＀"&&d<="￯"&&(c+=aD(d.codePointAt(0),b));return c}(a,g)}return f}(d)/b));return c}get isEnabled(){return this.#t.isEnabled&&!this.#t.isSilent}set isEnabled(a){if("boolean"!=typeof a)throw TypeError("The `isEnabled` option must be a boolean");this.#t.isEnabled=a}get isSilent(){return this.#t.isSilent}set isSilent(a){if("boolean"!=typeof a)throw TypeError("The `isSilent` option must be a boolean");this.#t.isSilent=a}frame(){let a=Date.now();(-1===this.#r||a-this.#s>=this.interval)&&(this.#r=(this.#r+1)%this.#u.frames.length,this.#s=a);let{frames:b}=this.#u,c=b[this.#r];return this.color&&(c=E[this.color](c)),this.#J(this.#t.prefixText," ")+c+("string"==typeof this.text?" "+this.text:"")+this.#K(this.#t.suffixText," ")}clear(){return this.isEnabled&&this.#v.isTTY&&(this.#C(()=>{this.#v.cursorTo(0);for(let a=0;a<this.#q;a++)a>0&&this.#v.moveCursor(0,-1),this.#v.clearLine(1);this.#t.indent&&this.#v.cursorTo(this.#t.indent)}),this.#q=0),this}#N(a){if(!a||this.#x.has(a)||!a.isTTY||"function"!=typeof a.write)return;aM.has(a)&&console.warn("[ora] Multiple concurrent spinners detected. This may cause visual corruption. Use one spinner at a time.");let b=a.write;this.#x.set(a,b),aM.set(a,this),a.write=(c,d,e)=>this.#O(a,b,c,d,e)}#P(){if(this.isEnabled&&!(this.#x.size>0))for(let a of new Set([this.#v,f.stdout,f.stderr]))this.#N(a)}#Q(){for(let[a,b]of this.#x)a.write=b,aM.get(a)===this&&aM.delete(a);this.#x.clear()}#O(a,b,c,d,e){if("function"==typeof d&&(e=d,d=void 0),this.#y)return b.call(a,c,d,e);this.clear();let f=this.#E(c,d),g=this.#F(f),h=b.call(a,c,d,e);return g?this.#H():f.length>0&&this.#G(),this.isSpinning&&!this.#A&&this.render(),h}render(){if(!this.isEnabled||this.#z||this.#A)return this;let a=this.#v.isTTY,b=!1;try{a&&(this.#C(()=>this.#v.write("\x1b[?2026h")),b=!0),this.clear();let c=this.frame(),d=this.#v.columns??80,e=this.#M(c,d),f=this.#v.rows;f&&f>1&&e>f&&(c=[...c.split("\n").slice(0,f-1),"... (content truncated to fit terminal)"].join("\n"));let g=this.#C(()=>this.#v.write(c));!1===g&&this.#v.isTTY&&(this.#z=()=>{this.#z=void 0,this.#D()},this.#v.once("drain",this.#z)),this.#q=this.#M(c,d)}finally{b&&this.#C(()=>this.#v.write("\x1b[?2026l"))}return this}start(a){if(a&&(this.text=a),this.isSilent)return this;if(!this.isEnabled){let a=this.text?"-":"",b=" ".repeat(this.#t.indent)+this.#I(a,this.text,this.#t.prefixText,this.#t.suffixText);return""!==b.trim()&&this.#C(()=>this.#v.write(b+"\n")),this}return this.isSpinning||(this.#t.hideCursor&&aa.hide(this.#v),this.#t.discardStdin&&f.stdin.isTTY&&(aL.start(),this.#B=!0),this.#P(),this.render(),this.#w=setInterval(this.render.bind(this),this.interval)),this}stop(){return clearInterval(this.#w),this.#w=void 0,this.#r=-1,this.#s=0,this.#H(),this.#Q(),this.#z&&(this.#v.removeListener("drain",this.#z),this.#z=void 0),this.isEnabled&&(this.clear(),this.#t.hideCursor&&aa.show(this.#v)),this.#B&&(this.#B=!1,aL.stop()),this}succeed(a){return this.stopAndPersist({symbol:al,text:a})}fail(a){return this.stopAndPersist({symbol:an,text:a})}warn(a){return this.stopAndPersist({symbol:am,text:a})}info(a){return this.stopAndPersist({symbol:ak,text:a})}stopAndPersist(a={}){if(this.isSilent)return this;let b=a.symbol??" ",c=a.text??this.text,d=a.prefixText??this.#t.prefixText,e=a.suffixText??this.#t.suffixText,f=this.#I(b,c,d,e)+"\n";return this.stop(),this.#C(()=>this.#v.write(f)),this}}function aO(a){return new aN(a)}}};