@sifxprime/krouter 0.5.94 → 0.5.95

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 (378) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +2 -2
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/environment/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  32. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  33. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  34. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  35. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  36. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  37. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  38. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  39. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  41. package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  42. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  43. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  44. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  45. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  46. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  47. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  48. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  49. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  50. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  51. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  52. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  53. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  55. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  61. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/api/import/route.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  67. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/api/mitm/cert/route.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/api/models/live/route.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/api/models/live-by-connection/route.js.nft.json +1 -1
  76. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  77. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  79. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  82. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  91. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  93. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  95. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  98. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/providers/zenith/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  109. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  112. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  114. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  115. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  148. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  149. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  151. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  153. package/app/.next-cli-build/server/app/callback.html +1 -1
  154. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  155. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  156. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  157. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  158. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  159. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  160. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  161. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  162. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  163. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  164. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  165. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  166. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  167. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  168. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  169. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  170. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  171. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  172. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  173. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  174. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  175. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  176. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  177. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  178. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  179. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  180. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  181. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  182. package/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  183. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  184. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  185. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  186. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  187. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  188. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  189. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  190. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  191. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  192. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  193. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  194. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  195. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  196. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  197. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  198. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  199. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  200. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  201. package/app/.next-cli-build/server/app/dashboard/environment.html +1 -1
  202. package/app/.next-cli-build/server/app/dashboard/environment.rsc +5 -5
  203. package/app/.next-cli-build/server/app/dashboard/environment.segments/!KGRhc2hib2FyZCk/dashboard/environment/__PAGE__.segment.rsc +2 -2
  204. package/app/.next-cli-build/server/app/dashboard/environment.segments/!KGRhc2hib2FyZCk/dashboard/environment.segment.rsc +1 -1
  205. package/app/.next-cli-build/server/app/dashboard/environment.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  206. package/app/.next-cli-build/server/app/dashboard/environment.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  207. package/app/.next-cli-build/server/app/dashboard/environment.segments/_full.segment.rsc +5 -5
  208. package/app/.next-cli-build/server/app/dashboard/environment.segments/_head.segment.rsc +1 -1
  209. package/app/.next-cli-build/server/app/dashboard/environment.segments/_index.segment.rsc +3 -3
  210. package/app/.next-cli-build/server/app/dashboard/environment.segments/_tree.segment.rsc +1 -1
  211. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  212. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  213. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  214. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  215. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  216. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  217. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  218. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  219. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  220. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  221. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  222. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  223. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  224. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  225. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  226. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  227. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  228. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  229. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  230. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  231. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  232. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  233. package/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  234. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  235. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  236. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  237. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  238. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  239. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  240. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  241. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  242. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  243. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  244. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  245. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  246. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  247. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  248. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  249. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  250. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  251. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  252. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  253. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  254. package/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  255. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  256. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  257. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  258. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  259. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  260. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  261. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  262. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  263. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  264. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  265. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  266. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  267. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  268. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  269. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  270. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  271. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  272. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  273. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  274. package/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  275. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  276. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  277. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  278. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  279. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  280. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  281. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  282. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  283. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  284. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  285. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  286. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  287. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  288. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  289. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  290. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  291. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  292. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  293. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  294. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  295. package/app/.next-cli-build/server/app/dashboard/skills.rsc +5 -5
  296. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  297. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  298. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  299. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  300. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
  301. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  302. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +3 -3
  303. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  304. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  305. package/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  306. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  307. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  308. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  309. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  310. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  311. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  312. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  313. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  314. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  315. package/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  316. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  317. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  318. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  319. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  320. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  321. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  322. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  323. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  324. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  325. package/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  326. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  327. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  328. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  329. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  330. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  331. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  332. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  333. package/app/.next-cli-build/server/app/index.html +1 -1
  334. package/app/.next-cli-build/server/app/index.rsc +3 -3
  335. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  336. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  337. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  338. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  339. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  340. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  341. package/app/.next-cli-build/server/app/landing.html +1 -1
  342. package/app/.next-cli-build/server/app/landing.rsc +3 -3
  343. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  344. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  345. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  346. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  347. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  348. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  349. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  350. package/app/.next-cli-build/server/app/login.html +1 -1
  351. package/app/.next-cli-build/server/app/login.rsc +4 -4
  352. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  353. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  354. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  355. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  356. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  357. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  358. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  359. package/app/.next-cli-build/server/app-paths-manifest.json +2 -2
  360. package/app/.next-cli-build/server/chunks/2365.js +1 -1
  361. package/app/.next-cli-build/server/chunks/3104.js +2 -2
  362. package/app/.next-cli-build/server/chunks/4884.js +2 -2
  363. package/app/.next-cli-build/server/chunks/5330.js +1 -1
  364. package/app/.next-cli-build/server/chunks/6182.js +3 -3
  365. package/app/.next-cli-build/server/chunks/706.js +1 -1
  366. package/app/.next-cli-build/server/chunks/7153.js +1 -1
  367. package/app/.next-cli-build/server/chunks/8361.js +1 -1
  368. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  369. package/app/.next-cli-build/server/pages/404.html +1 -1
  370. package/app/.next-cli-build/server/pages/500.html +1 -1
  371. package/app/.next-cli-build/static/chunks/{1321-37a8238f2d1b2792.js → 1321-4f395f5693f2812e.js} +1 -1
  372. package/app/cli/.build-home/.krouter/db/backups/{upgrade-0.5.89-to-0.5.90-0.5.90-20260703-180447 → upgrade-0.5.93-to-0.5.94-0.5.94-20260713-153342}/data.sqlite +0 -0
  373. package/app/cli/.build-home/.krouter/db/data.sqlite +0 -0
  374. package/app/cli/package.json +1 -1
  375. package/app/package.json +1 -1
  376. package/package.json +1 -1
  377. /package/app/.next-cli-build/static/{ksw8swD-YC565VYtUpoQv → HEHnxmMrpPQ2wfAo7B6RW}/_buildManifest.js +0 -0
  378. /package/app/.next-cli-build/static/{ksw8swD-YC565VYtUpoQv → HEHnxmMrpPQ2wfAo7B6RW}/_ssgManifest.js +0 -0
@@ -62,8 +62,8 @@ ${c}
62
62
  `.replace(/'/g,"'\\''");await t(`printf '%s' '${e}' | tee ${q} > /dev/null`,b),await u(b)}i(`🌐 DNS ${a}: ✅ added ${d.join(", ")}`)}catch(a){throw Error(a.message?.includes("incorrect password")?"Wrong sudo password":`Failed to add DNS entry: ${a.message}`)}}async function x(a,b){let c=k[a];if(!c)throw Error(`Unknown tool: ${a}`);let d=c.filter(a=>v(a));if(0===d.length)return void i(`🌐 DNS ${a}: already inactive`);try{if(o){let a=g.readFileSync(q,"utf8"),b=a.split(/\r?\n/).filter(a=>!d.some(b=>a.includes(b))).join("\r\n").replace(/[\r\n\s]+$/g,"")+"\r\n";n(q,a,b),await l("ipconfig /flushdns | Out-Null")}else{let a=(g.readFileSync(q,"utf8").split(/\r?\n/).filter(a=>!d.some(b=>a.includes(b))).join("\n").replace(/[\r\n\s]+$/g,"")+"\n").replace(/'/g,"'\\''");await t(`printf '%s' '${a}' | tee ${q} > /dev/null`,b),await u(b)}i(`🌐 DNS ${a}: ✅ removed ${d.join(", ")}`)}catch(a){throw Error(a.message?.includes("incorrect password")?"Wrong sudo password":`Failed to remove DNS entry: ${a.message}`)}}async function y(a){for(let b of Object.keys(k))try{await x(b,a)}catch(a){j(`DNS ${b}: failed to remove — ${a.message}`)}}a.exports={TOOL_HOSTS:k,addDNSEntry:w,removeDNSEntry:x,removeAllDNSEntries:y,removeAllDNSEntriesSync:function(){try{if(!g.existsSync(q))return;let a=Object.values(k).flat(),b=g.readFileSync(q,"utf8"),c=o?"\r\n":"\n",d=b.split(/\r?\n/).filter(b=>!a.some(a=>b.includes(a))).join(c).replace(/[\r\n\s]+$/g,"")+c;if(d===b)return;if(g.writeFileSync(q,d,"utf8"),o)try{f("ipconfig /flushdns",{windowsHide:!0,stdio:"ignore"})}catch{}else if(p)try{f("dscacheutil -flushcache && killall -HUP mDNSResponder",{stdio:"ignore"})}catch{}else try{f("resolvectl flush-caches 2>/dev/null || true",{stdio:"ignore"})}catch{}}catch{}},execWithPassword:t,isSudoAvailable:r,canRunSudoWithoutPassword:s,isSudoPasswordRequired:function(){return!o&&r()&&!s()},checkDNSEntry:v,checkAllDNSStatus:function(){try{let a=g.readFileSync(q,"utf8"),b={};for(let[c,d]of Object.entries(k))b[c]=d.every(b=>a.includes(b));return b}catch{return Object.fromEntries(Object.keys(k).map(a=>[a,!1]))}}}},82193:(a,b,c)=>{let d=c(29021),e=c(33873),f=c(21820),g="krouter";function h(){return"win32"===process.platform?e.join(process.env.APPDATA||e.join(f.homedir(),"AppData","Roaming"),g):e.join(f.homedir(),`.${g}`)}let i=function(){let a=process.env.DATA_DIR;if(!a)return h();try{return d.mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${g}`),h();throw b}}(),j=e.join(i,"mitm");a.exports={DATA_DIR:i,MITM_DIR:j,APP_NAME:g}},85341:a=>{a.exports={TOOL_HOSTS:{antigravity:["daily-cloudcode-pa.googleapis.com","cloudcode-pa.googleapis.com"],copilot:["api.individual.githubcopilot.com"],kiro:["runtime.us-east-1.kiro.dev","q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com"],cursor:["api2.cursor.sh"],claude:["api.anthropic.com"]}}},87777:(a,b,c)=>{let d=c(29021),e=c(33873),f=c(74075),{DATA_DIR:g}=c(82193),{LOG_BLACKLIST_URL_PARTS:h}=c(17511);function i(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}let j=e.join(g,"logs","mitm");d.existsSync(j)||d.mkdirSync(j,{recursive:!0});let k=/^\s*(\{\s*\}|\[\s*\]|null)?\s*$/;function l(a,b=80){return String(a).replace(/[^a-zA-Z0-9]/g,"_").substring(0,b)}function m(a){return!!a&&h.some(b=>a.includes(b))}a.exports={log:a=>console.log(`[${i()}] [MITM] ${a}`),err:a=>console.error(`[${i()}] ❌ [MITM] ${a}`),dumpRequest:function(a,b,c="raw"){if(m(a.url))return null;try{let f=new Date().toISOString().replace(/[:.]/g,"-"),g=l((a.headers.host||"")+a.url),h=e.join(j,`${f}_${c}_${g}.req.json`),i=null;try{i=JSON.parse(b.toString())}catch{}return d.writeFileSync(h,JSON.stringify({method:a.method,url:a.url,host:a.headers.host,headers:a.headers,body:i??b.toString("utf8")},null,2)),h}catch{return null}},createResponseDumper:function(a,b="raw"){if(m(a.url))return null;let c=new Date().toISOString().replace(/[:.]/g,"-"),g=l((a.headers.host||"")+a.url),h=e.join(j,`${c}_${b}_${g}.res.txt`),i=0,n={},o=[];return{writeHeader:(a,b)=>{i=a,n=b||{}},writeChunk:a=>{null!=a&&o.push(Buffer.isBuffer(a)?a:Buffer.from(a))},end:()=>{try{let a=Buffer.concat(o),b=n["content-encoding"]||n["Content-Encoding"],c=(function(a,b){if(!a||0===a.length)return a;try{let c=(b||"").toLowerCase();if(c.includes("gzip"))return f.gunzipSync(a);if(c.includes("br"))return f.brotliDecompressSync(a);if(c.includes("deflate"))return f.inflateSync(a)}catch{}return a})(a,b).toString("utf8");if(k.test(c))return;let e={...n};delete e["content-encoding"],delete e["Content-Encoding"];let g=`STATUS: ${i}
63
63
  HEADERS: ${JSON.stringify(e,null,2)}
64
64
  ---BODY---
65
- ${c}`;d.writeFileSync(h,g)}catch{}},file:h}},clearDumpDir:function(){try{if(!d.existsSync(j))return;for(let a of d.readdirSync(j))try{d.rmSync(e.join(j,a),{recursive:!0,force:!0})}catch{}}catch{}}}},96182:(a,b,c)=>{let{exec:d,spawn:e,execSync:f}=c(79646),g=c(33873),h=c(29021),i=c(21820),j=c(91645),k=c(55591),l=c(55511),{addDNSEntry:m,removeDNSEntry:n,removeAllDNSEntries:o,removeAllDNSEntriesSync:p,checkAllDNSStatus:q,TOOL_HOSTS:r,isSudoAvailable:s,isSudoPasswordRequired:t}=c(66936),{isAdmin:u}=c(64809),v="win32"===process.platform,w="darwin"===process.platform,{generateCert:x}=c(26033),{installCert:y,uninstallCert:z}=c(9631),{isCertExpired:A}=c(8578),{DATA_DIR:B,MITM_DIR:C}=c(82193),{log:D,err:E}=c(87777),{LSOF_BIN:F}=c(17511),{setLinuxNodeExtraCaCerts:G,unsetLinuxNodeExtraCaCerts:H}=c(26444),I="linux"===process.platform,J="http://localhost:20128";function K(a){return null==a||""===a?"''":`'${String(a).replace(/'/g,"'\\''")}'`}async function L(){if(!ab)return J;try{let a=await ab(),b=a&&null!=a.mitmRouterBaseUrl?String(a.mitmRouterBaseUrl).trim():"";if(!b)return J;let c=new URL(b);if("http:"!==c.protocol&&"https:"!==c.protocol)return J;return b.replace(/\/+$/,"")}catch{return J}}let M=g.join(C,".mitm.pid"),N=[5e3,1e4,2e4,3e4,6e4],O=0,P=0,Q=!1;function R(){if(process.env.MITM_SERVER_PATH)return process.env.MITM_SERVER_PATH;let a=g.join(__dirname,"server.js");if(h.existsSync(a))return a;let b=g.join(process.cwd(),"src","mitm","server.js");if(h.existsSync(b))return b;let c=g.join(process.cwd(),"..","src","mitm","server.js");return h.existsSync(c)?c:b}function S(a){try{if(!a||!h.existsSync(a)||!a.includes(`${g.sep}node_modules${g.sep}`))return a;let b=g.join(B,"runtime","mitm"),c=g.join(b,"server.js");if(h.existsSync(c))try{if(h.statSync(a).size===h.statSync(c).size)return c}catch{}return h.mkdirSync(b,{recursive:!0}),h.copyFileSync(a,c),c}catch(b){try{D(`[MITM] runtime copy failed: ${b.message}`)}catch{}return a}}let T=S(R()),U="aes-256-gcm",V="9router-mitm-pwd",W=null,X=null;function Y(){return globalThis.__mitmSudoPassword||null}function Z(a){globalThis.__mitmSudoPassword=a}function $(a){try{return process.kill(a,0),!0}catch(a){return"EACCES"===a.code}}function _(a,b=!1,e=null){if(v)d(`taskkill ${b?"/F ":""}/PID ${a}`,{windowsHide:!0},()=>{});else{let f=b?"SIGKILL":"SIGTERM",g=`pkill -${f} -P ${a} 2>/dev/null; kill -${f} ${a} 2>/dev/null`;if(e||s()){let{execWithPassword:a}=c(66936);a(g,e||"").catch(()=>d(g,{windowsHide:!0},()=>{}))}else d(g,{windowsHide:!0},()=>{})}}function aa(){try{let{machineIdSync:a}=c(19713),b=a();return l.createHash("sha256").update(b+V).digest()}catch{return l.createHash("sha256").update(V).digest()}}let ab=null,ac=null;async function ad(a,b){if(ac)try{let c,d,e,f,g,h={mitmEnabled:a};b&&(c=aa(),d=l.randomBytes(12),e=l.createCipheriv(U,c,d),f=Buffer.concat([e.update(b,"utf8"),e.final()]),g=e.getAuthTag(),h.mitmSudoEncrypted=`${d.toString("hex")}:${g.toString("hex")}:${f.toString("hex")}`),await ac(h)}catch(a){E(`Failed to save settings: ${a.message}`)}}async function ae(){if(ac)try{await ac({mitmSudoEncrypted:null})}catch(a){E(`Failed to clear encrypted password: ${a.message}`)}}async function af(){if(!ab)return null;try{let a=await ab();if(!a.mitmSudoEncrypted)return null;return function(a){try{let[b,c,d]=a.split(":");if(!b||!c||!d)return null;let e=aa(),f=l.createDecipheriv(U,e,Buffer.from(b,"hex"));return f.setAuthTag(Buffer.from(c,"hex")),f.update(Buffer.from(d,"hex"))+f.final("utf8")}catch{return null}}(a.mitmSudoEncrypted)}catch{return null}}async function ag(a,b){if(ac&&ab)try{let c={...(await ab()).dnsToolEnabled||{},[a]:b};await ac({dnsToolEnabled:c})}catch(a){E(`Failed to save DNS state: ${a.message}`)}}async function ah(){if(!ab)return{};try{return(await ab()).dnsToolEnabled||{}}catch{return{}}}async function ai(a){let b=await ah(),c=a||Y()||await af();for(let[a,d]of Object.entries(b))if(d&&r[a])try{await m(a,c)}catch(b){E(`DNS ${a}: restore failed — ${b.message}`)}}async function aj(){return v?u():!(!u()&&t())||!!(Y()||await af())}function ak(a){return new Promise(a=>{v?d('powershell -NonInteractive -WindowStyle Hidden -Command "$c = Get-NetTCPConnection -LocalPort 443 -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1; if ($c) { $c.OwningProcess } else { 0 }"',{windowsHide:!0},(b,c)=>{if(b)return a(null);let e=parseInt(c.trim(),10);if(!e||e<=4)return a(null);d(`tasklist /FI "PID eq ${e}" /FO CSV /NH`,{windowsHide:!0},(b,c)=>{let d=c?.match(/"([^"]+)"/);a({pid:e,name:d?d[1]:"unknown"})})}):d(`${F} -nP -iTCP:443 -sTCP:LISTEN -t`,{windowsHide:!0},(b,c)=>{if(b||!c?.trim())return a(null);let e=parseInt(c.trim().split("\n")[0],10);if(!e||isNaN(e))return a(null);d(`ps -p ${e} -o comm=`,{windowsHide:!0},(b,c)=>{a({pid:e,name:c?.trim()||"unknown"})})})})}async function al(a){if(W&&!W.killed){try{W.kill("SIGKILL")}catch{}W=null,X=null}try{if(h.existsSync(M)){let b=parseInt(h.readFileSync(M,"utf-8").trim(),10);b&&$(b)&&(_(b,!0,a),await new Promise(a=>setTimeout(a,500))),h.unlinkSync(M)}}catch{}if(!v&&T)try{let b=T.replace(/'/g,"'\\''");if(a||s()){let{execWithPassword:d}=c(66936);await d(`pkill -SIGKILL -f "${b}" 2>/dev/null || true`,a||"").catch(()=>{})}else d(`pkill -SIGKILL -f "${b}" 2>/dev/null || true`,{windowsHide:!0},()=>{});await new Promise(a=>setTimeout(a,500))}catch{}}async function am(){let a=null!==W&&!W.killed,b=X;if(!a)try{if(h.existsSync(M)){let c=parseInt(h.readFileSync(M,"utf-8").trim(),10);c&&$(c)?(a=!0,b=c):h.unlinkSync(M)}}catch{}let d=q(),e=g.join(C,"rootCA.crt"),f=h.existsSync(e),{checkCertInstalled:i}=c(9631),j=!!f&&await i(e);return{running:a,pid:b,certExists:f,certTrusted:j,dnsStatus:d}}async function an(a){if(Q)return;if(W&&!W.killed){O=0,D("MITM server already running, no restart needed");return}if(Date.now()-P>=6e4&&(O=0),O>=5)return void E("Max restart attempts reached. Giving up.");let b=N[Math.min(O,N.length-1)];O++,Q=!0,D(`Restarting in ${b/1e3}s... (${O}/5)`),await new Promise(a=>setTimeout(a,b));try{let b=ab?await ab():null;if(b&&!b.mitmEnabled){D("MITM disabled, skipping restart"),Q=!1;return}let c=Y()||await af();if(!c&&!v){E("No cached password, cannot auto-restart"),Q=!1;return}await ap(a,c),D("\uD83D\uDD04 Restarted successfully"),O=0,Q=!1}catch(b){E(`Restart attempt ${O}/5 failed: ${b.message}`),Q=!1,an(a)}}async function ao(a,b){if(a&&a.pid){if(v)try{f(`powershell -NonInteractive -WindowStyle Hidden -Command "Stop-Process -Id ${a.pid} -Force -ErrorAction SilentlyContinue"`,{windowsHide:!0})}catch{}else try{let{execWithPassword:d}=c(66936);b||s()?await d(`kill -9 ${a.pid}`,b||""):f(`kill -9 ${a.pid}`,{windowsHide:!0})}catch{}await new Promise(a=>setTimeout(a,800))}}async function ap(a,b,l=!1){if(!W||W.killed)try{if(h.existsSync(M)){let a=parseInt(h.readFileSync(M,"utf-8").trim(),10);if(a&&$(a))return X=a,D(`♻️ Reusing existing process (PID: ${a})`),await ad(!0,b),b&&Z(b),{running:!0,pid:a};h.unlinkSync(M)}}catch{}if(W&&!W.killed)throw Error("MITM server is already running");if(await al(b),!v){let a=await new Promise(a=>{let b=j.createServer();b.once("error",b=>{"EADDRINUSE"===b.code?a("in-use"):a("no-permission")}),b.once("listening",()=>{b.close(()=>a("free"))}),b.listen(443,"127.0.0.1")});if("in-use"===a||"no-permission"===a){let a=await ak(b);if(a){let c=a.name.includes("/")?a.name.split("/").filter(Boolean).pop():a.name;if(l)D(`Killing process on port 443 (PID ${a.pid}, name=${c})...`),await ao(a,b);else{let b=Error(`Port 443 is already in use by "${c}" (PID ${a.pid}).`);throw b.code="PORT_443_BUSY",b.portOwner={pid:a.pid,name:c},b}}}}let m=g.join(C,"rootCA.crt"),n=g.join(C,"rootCA.key"),o=h.existsSync(m)&&h.existsSync(n);if(!o||A(m)){if(o){D("\uD83D\uDD10 Cert expired — uninstalling old cert...");let a=b||Y()||await af();try{await z(a,m)}catch{}}D("\uD83D\uDD10 Generating Root CA..."),await x()}let{checkCertInstalled:p}=c(9631),r=await p(m),u=!v&&!w&&!s();if(r)D("\uD83D\uDD10 Cert: already trusted ✅");else{D("\uD83D\uDD10 Cert: not trusted → installing...");let a=b||Y()||await af();if(u)D(`🔐 Cert: skipping system trust (no sudo). Install ${m} as a trusted CA on machines that use this proxy.`);else{if(!a&&t())throw Error("Sudo password required to install Root CA certificate");try{await y(a,m),D("\uD83D\uDD10 Cert: ✅ trusted")}catch(a){throw Error(`Failed to trust certificate: ${a.message}`)}}}let B=T;if((!B||!h.existsSync(B))&&(D(`[MITM] server.js missing at ${B} → recopying`),!(B=S(R()))||!h.existsSync(B)))throw Error(`MITM server.js not found at ${B}. Reinstall kRouter.`);let H=await L();if(D(`🚀 Starting server... (router: ${H})`),v){let c=await ak(b);if(c)if(l)D(`Killing process on port 443 (PID ${c.pid}, name=${c.name})...`),await ao(c,b);else{let a=Error(`Port 443 is already in use by "${c.name}" (PID ${c.pid}).`);throw a.code="PORT_443_BUSY",a.portOwner={pid:c.pid,name:c.name},a}W=e(process.execPath,[B],{detached:!1,windowsHide:!0,cwd:i.tmpdir(),stdio:["ignore","pipe","pipe"],env:{...process.env,ROUTER_API_KEY:a,NODE_ENV:"production",MITM_ROUTER_BASE:H}}),ac&&await ac({mitmCertInstalled:!0}).catch(()=>{})}else s()?((W=e("sudo",["-S","-E","sh","-c",[`HOME=${K(i.homedir())}`,`ROUTER_API_KEY=${K(a)}`,`MITM_ROUTER_BASE=${K(H)}`,"NODE_ENV=production",K(process.execPath),K(B)].join(" ")],{detached:!1,windowsHide:!0,stdio:["pipe","pipe","pipe"]})).stdin.write(`${b}
66
- `),W.stdin.end()):W=e(process.execPath,[B],{detached:!1,windowsHide:!0,cwd:i.tmpdir(),stdio:["ignore","pipe","pipe"],env:{...process.env,ROUTER_API_KEY:a,NODE_ENV:"production",MITM_ROUTER_BASE:H}});if(W&&(X=W.pid,h.writeFileSync(M,String(X)),P=Date.now()),w){let a=g.join(C,"rootCA.crt");h.existsSync(a)&&d(`launchctl setenv NODE_EXTRA_CA_CERTS "${a}"`,{windowsHide:!0},b=>{b?D(`[launchctl] Failed to set NODE_EXTRA_CA_CERTS: ${b.message}`):D(`[launchctl] NODE_EXTRA_CA_CERTS set to ${a}`)})}else if(v){let a=g.join(C,"rootCA.crt");h.existsSync(a)&&d(`setx NODE_EXTRA_CA_CERTS "${a}"`,{windowsHide:!0},a=>{a?D(`[setx] Failed to set NODE_EXTRA_CA_CERTS: ${a.message}`):D("[setx] NODE_EXTRA_CA_CERTS set for current user")})}else if(I){let a=g.join(C,"rootCA.crt");if(h.existsSync(a))try{let b=G(a);b.length>0?(D(`[linux-node-ca] NODE_EXTRA_CA_CERTS written to ${b.length} file(s): ${b.map(a=>a.replace(i.homedir(),"~")).join(", ")}`),D("[linux-node-ca] ⚠ Terminal-launched IDE: open a NEW terminal OR run: source ~/.profile"),D("[linux-node-ca] ⚠ Menu-launched IDE (GNOME / KDE Activities, .desktop): log out + back in OR run: systemctl --user daemon-reload && systemctl --user import-environment")):D("[linux-node-ca] NODE_EXTRA_CA_CERTS already set, no changes needed")}catch(a){D(`[linux-node-ca] Failed to set NODE_EXTRA_CA_CERTS: ${a.message}`)}}let J=null;W&&(W.stdout.on("data",a=>{process.stdout.write(a)}),W.stderr.on("data",a=>{let b=a.toString().trim();b&&(v||!b.includes("Password:")&&!b.includes("password for"))&&(E(b),J=b),!v&&(b.includes("incorrect password")||b.includes("no password was provided"))&&(Z(null),ae(),Q=!0)}),W.on("exit",b=>{D(`Server exited (code: ${b})`),W=null,X=null;try{h.unlinkSync(M)}catch{}0===b||Q||an(a)}));let N=await function(a=443){return new Promise(b=>{let c=Date.now()+8e3,d=()=>{let e=k.request({hostname:"127.0.0.1",port:a,path:"/_mitm_health",method:"GET",rejectUnauthorized:!1},a=>{let c="";a.on("data",a=>{c+=a}),a.on("end",()=>{try{let a=JSON.parse(c);b(!0===a.ok?{ok:!0,pid:a.pid||null}:null)}catch{b(null)}})});e.on("error",()=>{Date.now()<c?setTimeout(d,500):b(null)}),e.end()};d()})}(443);if(!N){if(W&&!W.killed){try{W.kill()}catch{}W=null}let a=function(){try{if(v){let a=f('powershell -NonInteractive -WindowStyle Hidden -Command "$c = Get-NetTCPConnection -LocalPort 443 -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1; if ($c) { $c.OwningProcess } else { 0 }"',{encoding:"utf8",windowsHide:!0}).trim(),b=parseInt(a,10);if(b&&b>4){let a=f(`tasklist /FI "PID eq ${b}" /FO CSV /NH`,{encoding:"utf8",windowsHide:!0}).match(/"([^"]+)"/);if(a)return a[1].replace(".exe","")}}else{let a=f(`${F} -i :443`,{encoding:"utf8",windowsHide:!0}).trim().split("\n");if(a.length>1)return a[1].split(/\s+/)[0]}}catch{}return null}(),b=a?` Port 443 already in use by ${a}.`:"",c=J||`Check sudo password or port 443 access.${b}`;throw Error(`MITM server failed to start. ${c}`)}for(let[a,b]of(ac&&await ac({mitmCertInstalled:!0}).catch(()=>{}),D(`✅ Server healthy (PID: ${X||N.pid})`),Object.entries(q())))D(`🌐 DNS ${a}: ${b?"✅ active":"❌ inactive"}`);return await ad(!0,b),b&&Z(b),{running:!0,pid:X}}async function aq(a){Q=!0,O=0,D("⏹ Stopping server...");let b=W,e=b&&!b.killed?b.pid:(()=>{try{return parseInt(h.readFileSync(M,"utf-8").trim(),10)}catch{return null}})();if(e&&$(e)&&(D(`Killing server (PID: ${e})...`),_(e,!1,a),await new Promise(a=>setTimeout(a,1e3)),$(e)&&_(e,!0,a)),W=null,X=null,v){let a=g.join(process.env.SystemRoot||"C:\\Windows","System32","drivers","etc","hosts"),b=Object.values(r).flat();try{let{isAdmin:d,runElevatedPowerShell:e,quotePs:f}=c(64809);if(d()){let d=h.readFileSync(a,"utf8"),e=d.split(/\r?\n/).filter(a=>!b.some(b=>a.includes(b))).join("\r\n").replace(/[\r\n\s]+$/g,"")+"\r\n";e!==d&&h.writeFileSync(a,e,"utf8");try{c(79646).execSync("ipconfig /flushdns",{windowsHide:!0,stdio:"ignore"})}catch{}D("\uD83C\uDF10 DNS: ✅ all tool hosts removed")}else{let c=b.map(f).join(","),d=`
65
+ ${c}`;d.writeFileSync(h,g)}catch{}},file:h}},clearDumpDir:function(){try{if(!d.existsSync(j))return;for(let a of d.readdirSync(j))try{d.rmSync(e.join(j,a),{recursive:!0,force:!0})}catch{}}catch{}}}},96182:(a,b,c)=>{let{exec:d,spawn:e,execSync:f}=c(79646),g=c(33873),h=c(29021),i=c(21820),j=c(91645),k=c(55591),l=c(55511),{addDNSEntry:m,removeDNSEntry:n,removeAllDNSEntries:o,removeAllDNSEntriesSync:p,checkAllDNSStatus:q,TOOL_HOSTS:r,isSudoAvailable:s,isSudoPasswordRequired:t}=c(66936),{isAdmin:u}=c(64809),v="win32"===process.platform,w="darwin"===process.platform,{generateCert:x}=c(26033),{installCert:y,uninstallCert:z}=c(9631),{isCertExpired:A}=c(8578),{DATA_DIR:B,MITM_DIR:C}=c(82193),{log:D,err:E}=c(87777),{LSOF_BIN:F}=c(17511),{setLinuxNodeExtraCaCerts:G,unsetLinuxNodeExtraCaCerts:H}=c(26444),I="linux"===process.platform,J="http://localhost:20128";function K(a){return null==a||""===a?"''":`'${String(a).replace(/'/g,"'\\''")}'`}async function L(){if(!ac)return J;try{let a=await ac(),b=a&&null!=a.mitmRouterBaseUrl?String(a.mitmRouterBaseUrl).trim():"";if(!b)return J;let c=new URL(b);if("http:"!==c.protocol&&"https:"!==c.protocol)return J;return b.replace(/\/+$/,"")}catch{return J}}let M=g.join(C,".mitm.pid"),N=g.join(C,".mitm.lock"),O=[5e3,1e4,2e4,3e4,6e4],P=0,Q=0,R=!1;function S(){if(process.env.MITM_SERVER_PATH)return process.env.MITM_SERVER_PATH;let a=g.join(__dirname,"server.js");if(h.existsSync(a))return a;let b=g.join(process.cwd(),"src","mitm","server.js");if(h.existsSync(b))return b;let c=g.join(process.cwd(),"..","src","mitm","server.js");return h.existsSync(c)?c:b}function T(a){try{if(!a||!h.existsSync(a)||!a.includes(`${g.sep}node_modules${g.sep}`))return a;let b=g.join(B,"runtime","mitm"),c=g.join(b,"server.js");if(h.existsSync(c))try{if(h.statSync(a).size===h.statSync(c).size)return c}catch{}return h.mkdirSync(b,{recursive:!0}),h.copyFileSync(a,c),c}catch(b){try{D(`[MITM] runtime copy failed: ${b.message}`)}catch{}return a}}let U=T(S()),V="aes-256-gcm",W="9router-mitm-pwd",X=null,Y=null;function Z(){return globalThis.__mitmSudoPassword||null}function $(a){globalThis.__mitmSudoPassword=a}function _(a){try{return process.kill(a,0),!0}catch(a){return"EACCES"===a.code}}function aa(a,b=!1,e=null){if(v)d(`taskkill ${b?"/F ":""}/PID ${a}`,{windowsHide:!0},()=>{});else{let f=b?"SIGKILL":"SIGTERM",g=`pkill -${f} -P ${a} 2>/dev/null; kill -${f} ${a} 2>/dev/null`;if(e||s()){let{execWithPassword:a}=c(66936);a(g,e||"").catch(()=>d(g,{windowsHide:!0},()=>{}))}else d(g,{windowsHide:!0},()=>{})}}function ab(){try{let{machineIdSync:a}=c(19713),b=a();return l.createHash("sha256").update(b+W).digest()}catch{return l.createHash("sha256").update(W).digest()}}let ac=null,ad=null;async function ae(a,b){if(ad)try{let c,d,e,f,g,h={mitmEnabled:a};b&&(c=ab(),d=l.randomBytes(12),e=l.createCipheriv(V,c,d),f=Buffer.concat([e.update(b,"utf8"),e.final()]),g=e.getAuthTag(),h.mitmSudoEncrypted=`${d.toString("hex")}:${g.toString("hex")}:${f.toString("hex")}`),await ad(h)}catch(a){E(`Failed to save settings: ${a.message}`)}}async function af(){if(ad)try{await ad({mitmSudoEncrypted:null})}catch(a){E(`Failed to clear encrypted password: ${a.message}`)}}async function ag(){if(!ac)return null;try{let a=await ac();if(!a.mitmSudoEncrypted)return null;return function(a){try{let[b,c,d]=a.split(":");if(!b||!c||!d)return null;let e=ab(),f=l.createDecipheriv(V,e,Buffer.from(b,"hex"));return f.setAuthTag(Buffer.from(c,"hex")),f.update(Buffer.from(d,"hex"))+f.final("utf8")}catch{return null}}(a.mitmSudoEncrypted)}catch{return null}}async function ah(a,b){if(ad&&ac)try{let c={...(await ac()).dnsToolEnabled||{},[a]:b};await ad({dnsToolEnabled:c})}catch(a){E(`Failed to save DNS state: ${a.message}`)}}async function ai(){if(!ac)return{};try{return(await ac()).dnsToolEnabled||{}}catch{return{}}}async function aj(a){let b=await ai(),c=a||Z()||await ag();for(let[a,d]of Object.entries(b))if(d&&r[a])try{await m(a,c)}catch(b){E(`DNS ${a}: restore failed — ${b.message}`)}}async function ak(){return v?u():!(!u()&&t())||!!(Z()||await ag())}function al(a){return new Promise(a=>{v?d('powershell -NonInteractive -WindowStyle Hidden -Command "$c = Get-NetTCPConnection -LocalPort 443 -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1; if ($c) { $c.OwningProcess } else { 0 }"',{windowsHide:!0},(b,c)=>{if(b)return a(null);let e=parseInt(c.trim(),10);if(!e||e<=4)return a(null);d(`tasklist /FI "PID eq ${e}" /FO CSV /NH`,{windowsHide:!0},(b,c)=>{let d=c?.match(/"([^"]+)"/);a({pid:e,name:d?d[1]:"unknown"})})}):d(`${F} -nP -iTCP:443 -sTCP:LISTEN -t`,{windowsHide:!0},(b,c)=>{if(b||!c?.trim())return a(null);let e=parseInt(c.trim().split("\n")[0],10);if(!e||isNaN(e))return a(null);d(`ps -p ${e} -o comm=`,{windowsHide:!0},(b,c)=>{a({pid:e,name:c?.trim()||"unknown"})})})})}async function am(a){if(X&&!X.killed){try{X.kill("SIGKILL")}catch{}X=null,Y=null}try{if(h.existsSync(M)){let b=parseInt(h.readFileSync(M,"utf-8").trim(),10);b&&_(b)&&(aa(b,!0,a),await new Promise(a=>setTimeout(a,500))),h.unlinkSync(M)}}catch{}if(!v&&U)try{let b=U.replace(/'/g,"'\\''");if(a||s()){let{execWithPassword:d}=c(66936);await d(`pkill -SIGKILL -f "${b}" 2>/dev/null || true`,a||"").catch(()=>{})}else d(`pkill -SIGKILL -f "${b}" 2>/dev/null || true`,{windowsHide:!0},()=>{});await new Promise(a=>setTimeout(a,500))}catch{}}async function an(){let a=null!==X&&!X.killed,b=Y;if(!a)try{if(h.existsSync(M)){let c=parseInt(h.readFileSync(M,"utf-8").trim(),10);c&&_(c)?(a=!0,b=c):h.unlinkSync(M)}}catch{}let d=q(),e=g.join(C,"rootCA.crt"),f=h.existsSync(e),{checkCertInstalled:i}=c(9631),j=!!f&&await i(e);return{running:a,pid:b,certExists:f,certTrusted:j,dnsStatus:d}}async function ao(a){if(R)return;if(R=!0,X&&!X.killed){P=0,D("MITM server already running, no restart needed");return}if(Date.now()-Q>=6e4&&(P=0),P>=5){E("Max restart attempts reached. Giving up."),R=!1;return}let b=O[Math.min(P,O.length-1)];P++,D(`Restarting in ${b/1e3}s... (${P}/5)`),await new Promise(a=>setTimeout(a,b));try{let b=ac?await ac():null;if(b&&!b.mitmEnabled){D("MITM disabled, skipping restart"),R=!1;return}let c=Z()||await ag();if(!c&&!v){E("No cached password, cannot auto-restart"),R=!1;return}await aq(a,c),D("\uD83D\uDD04 Restarted successfully"),P=0,R=!1}catch(b){E(`Restart attempt ${P}/5 failed: ${b.message}`),R=!1,ao(a)}}async function ap(a,b){if(a&&a.pid){if(v)try{f(`powershell -NonInteractive -WindowStyle Hidden -Command "Stop-Process -Id ${a.pid} -Force -ErrorAction SilentlyContinue"`,{windowsHide:!0})}catch{}else try{let{execWithPassword:d}=c(66936);b||s()?await d(`kill -9 ${a.pid}`,b||""):f(`kill -9 ${a.pid}`,{windowsHide:!0})}catch{}await new Promise(a=>setTimeout(a,800))}}async function aq(a,b,l=!1){if(!X||X.killed)try{if(h.existsSync(M)){let a=parseInt(h.readFileSync(M,"utf-8").trim(),10);if(a&&_(a))return Y=a,D(`♻️ Reusing existing process (PID: ${a})`),await ae(!0,b),b&&$(b),{running:!0,pid:a};h.unlinkSync(M)}}catch{}if(X&&!X.killed)throw Error("MITM server is already running");try{h.writeFileSync(N,String(process.pid),{flag:"wx"})}catch(a){if("EEXIST"===a.code)throw Error("MITM server is already starting (lock contention)");throw a}try{if(await am(b),!v){let a=await new Promise(a=>{let b=j.createServer();b.once("error",b=>{"EADDRINUSE"===b.code?a("in-use"):a("no-permission")}),b.once("listening",()=>{b.close(()=>a("free"))}),b.listen(443,"127.0.0.1")});if("in-use"===a||"no-permission"===a){let a=await al(b);if(a){let c=a.name.includes("/")?a.name.split("/").filter(Boolean).pop():a.name;if(l)D(`Killing process on port 443 (PID ${a.pid}, name=${c})...`),await ap(a,b);else{let b=Error(`Port 443 is already in use by "${c}" (PID ${a.pid}).`);throw b.code="PORT_443_BUSY",b.portOwner={pid:a.pid,name:c},b}}}}let m=g.join(C,"rootCA.crt"),n=g.join(C,"rootCA.key"),o=h.existsSync(m)&&h.existsSync(n);if(!o||A(m)){if(o){D("\uD83D\uDD10 Cert expired — uninstalling old cert...");let a=b||Z()||await ag();try{await z(a,m)}catch{}}D("\uD83D\uDD10 Generating Root CA..."),await x()}let{checkCertInstalled:p}=c(9631),r=await p(m),u=!v&&!w&&!s();if(r)D("\uD83D\uDD10 Cert: already trusted ✅");else{D("\uD83D\uDD10 Cert: not trusted → installing...");let a=b||Z()||await ag();if(u)D(`🔐 Cert: skipping system trust (no sudo). Install ${m} as a trusted CA on machines that use this proxy.`);else{if(!a&&t())throw Error("Sudo password required to install Root CA certificate");try{await y(a,m),D("\uD83D\uDD10 Cert: ✅ trusted")}catch(a){throw Error(`Failed to trust certificate: ${a.message}`)}}}let B=U;if((!B||!h.existsSync(B))&&(D(`[MITM] server.js missing at ${B} → recopying`),!(B=T(S()))||!h.existsSync(B)))throw Error(`MITM server.js not found at ${B}. Reinstall kRouter.`);let H=await L();if(D(`🚀 Starting server... (router: ${H})`),v){let c=await al(b);if(c)if(l)D(`Killing process on port 443 (PID ${c.pid}, name=${c.name})...`),await ap(c,b);else{let a=Error(`Port 443 is already in use by "${c.name}" (PID ${c.pid}).`);throw a.code="PORT_443_BUSY",a.portOwner={pid:c.pid,name:c.name},a}X=e(process.execPath,[B],{detached:!1,windowsHide:!0,cwd:i.tmpdir(),stdio:["ignore","pipe","pipe"],env:{...process.env,ROUTER_API_KEY:a,NODE_ENV:"production",MITM_ROUTER_BASE:H}}),ad&&await ad({mitmCertInstalled:!0}).catch(()=>{})}else if(s()){let c=[`HOME=${K(i.homedir())}`,`ROUTER_API_KEY=${K(a)}`,`MITM_ROUTER_BASE=${K(H)}`,"NODE_ENV=production",K(process.execPath),K(B)].join(" ");(X=e("sudo",["-S","-E","sh","-c",c],{detached:!1,windowsHide:!0,stdio:["pipe","pipe","pipe"]})).stdin.write(`${b}
66
+ `),X.stdin.end()}else X=e(process.execPath,[B],{detached:!1,windowsHide:!0,cwd:i.tmpdir(),stdio:["ignore","pipe","pipe"],env:{...process.env,ROUTER_API_KEY:a,NODE_ENV:"production",MITM_ROUTER_BASE:H}});if(X&&(Y=X.pid,h.writeFileSync(M,String(Y)),Q=Date.now()),w){let a=g.join(C,"rootCA.crt");h.existsSync(a)&&d(`launchctl setenv NODE_EXTRA_CA_CERTS "${a}"`,{windowsHide:!0},b=>{b?D(`[launchctl] Failed to set NODE_EXTRA_CA_CERTS: ${b.message}`):D(`[launchctl] NODE_EXTRA_CA_CERTS set to ${a}`)})}else if(v){let a=g.join(C,"rootCA.crt");h.existsSync(a)&&d(`setx NODE_EXTRA_CA_CERTS "${a}"`,{windowsHide:!0},a=>{a?D(`[setx] Failed to set NODE_EXTRA_CA_CERTS: ${a.message}`):D("[setx] NODE_EXTRA_CA_CERTS set for current user")})}else if(I){let a=g.join(C,"rootCA.crt");if(h.existsSync(a))try{let b=G(a);b.length>0?(D(`[linux-node-ca] NODE_EXTRA_CA_CERTS written to ${b.length} file(s): ${b.map(a=>a.replace(i.homedir(),"~")).join(", ")}`),D("[linux-node-ca] ⚠ Terminal-launched IDE: open a NEW terminal OR run: source ~/.profile"),D("[linux-node-ca] ⚠ Menu-launched IDE (GNOME / KDE Activities, .desktop): log out + back in OR run: systemctl --user daemon-reload && systemctl --user import-environment")):D("[linux-node-ca] NODE_EXTRA_CA_CERTS already set, no changes needed")}catch(a){D(`[linux-node-ca] Failed to set NODE_EXTRA_CA_CERTS: ${a.message}`)}}let J=null;X&&(X.stdout.on("data",a=>{process.stdout.write(a)}),X.stderr.on("data",a=>{let b=a.toString().trim();b&&(v||!b.includes("Password:")&&!b.includes("password for"))&&(E(b),J=b),!v&&(b.includes("incorrect password")||b.includes("no password was provided"))&&($(null),af(),R=!0)}),X.on("exit",b=>{D(`Server exited (code: ${b})`),X=null,Y=null;try{h.unlinkSync(M)}catch{}try{h.unlinkSync(N)}catch{}0===b||R||ao(a)}));let O=await function(a=443){return new Promise(b=>{let c=Date.now()+8e3,d=()=>{let e=k.request({hostname:"127.0.0.1",port:a,path:"/_mitm_health",method:"GET",rejectUnauthorized:!1},a=>{let c="";a.on("data",a=>{c+=a}),a.on("end",()=>{try{let a=JSON.parse(c);b(!0===a.ok?{ok:!0,pid:a.pid||null}:null)}catch{b(null)}})});e.on("error",()=>{Date.now()<c?setTimeout(d,500):b(null)}),e.end()};d()})}(443);if(!O){if(X&&!X.killed){try{X.kill()}catch{}X=null}let a=function(){try{if(v){let a=f('powershell -NonInteractive -WindowStyle Hidden -Command "$c = Get-NetTCPConnection -LocalPort 443 -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1; if ($c) { $c.OwningProcess } else { 0 }"',{encoding:"utf8",windowsHide:!0}).trim(),b=parseInt(a,10);if(b&&b>4){let a=f(`tasklist /FI "PID eq ${b}" /FO CSV /NH`,{encoding:"utf8",windowsHide:!0}).match(/"([^"]+)"/);if(a)return a[1].replace(".exe","")}}else{let a=f(`${F} -i :443`,{encoding:"utf8",windowsHide:!0}).trim().split("\n");if(a.length>1)return a[1].split(/\s+/)[0]}}catch{}return null}(),b=a?` Port 443 already in use by ${a}.`:"",c=J||`Check sudo password or port 443 access.${b}`;throw Error(`MITM server failed to start. ${c}`)}ad&&await ad({mitmCertInstalled:!0}).catch(()=>{}),D(`✅ Server healthy (PID: ${Y||O.pid})`);let P=q();for(let[a,b]of Object.entries(P))D(`🌐 DNS ${a}: ${b?"✅ active":"❌ inactive"}`);await ae(!0,b),b&&$(b);try{h.unlinkSync(N)}catch{}return{running:!0,pid:Y}}catch(a){try{h.unlinkSync(N)}catch{}throw a}}async function ar(a){R=!0,P=0,D("⏹ Stopping server...");let b=X,e=b&&!b.killed?b.pid:(()=>{try{return parseInt(h.readFileSync(M,"utf-8").trim(),10)}catch{return null}})();if(e&&_(e)&&(D(`Killing server (PID: ${e})...`),aa(e,!1,a),await new Promise(a=>setTimeout(a,1e3)),_(e)&&aa(e,!0,a)),X=null,Y=null,v){let a=g.join(process.env.SystemRoot||"C:\\Windows","System32","drivers","etc","hosts"),b=Object.values(r).flat();try{let{isAdmin:d,runElevatedPowerShell:e,quotePs:f}=c(64809);if(d()){let d=h.readFileSync(a,"utf8"),e=d.split(/\r?\n/).filter(a=>!b.some(b=>a.includes(b))).join("\r\n").replace(/[\r\n\s]+$/g,"")+"\r\n";e!==d&&h.writeFileSync(a,e,"utf8");try{c(79646).execSync("ipconfig /flushdns",{windowsHide:!0,stdio:"ignore"})}catch{}D("\uD83C\uDF10 DNS: ✅ all tool hosts removed")}else{let c=b.map(f).join(","),d=`
67
67
  $hosts = @(${c})
68
68
  $lines = Get-Content -LiteralPath ${f(a)}
69
69
  $filtered = $lines | Where-Object {
@@ -72,4 +72,4 @@ ${c}`;d.writeFileSync(h,g)}catch{}},file:h}},clearDumpDir:function(){try{if(!d.e
72
72
  }
73
73
  Set-Content -LiteralPath ${f(a)} -Value $filtered
74
74
  ipconfig /flushdns | Out-Null
75
- `;await e(d)}}catch(a){E(`Failed to clean hosts: ${a.message}`)}}else await o(a);if(w)d("launchctl unsetenv NODE_EXTRA_CA_CERTS",{windowsHide:!0},a=>{a?D(`[launchctl] Failed to unset NODE_EXTRA_CA_CERTS: ${a.message}`):D("[launchctl] NODE_EXTRA_CA_CERTS unset")});else if(v)d("reg delete HKCU\\Environment /F /V NODE_EXTRA_CA_CERTS",{windowsHide:!0},a=>{a?D(`[reg] Failed to unset NODE_EXTRA_CA_CERTS: ${a.message}`):D("[reg] NODE_EXTRA_CA_CERTS unset")});else if(I)try{let a=H();a.length>0&&D(`[linux-node-ca] NODE_EXTRA_CA_CERTS removed from ${a.length} shell rc file(s)`)}catch(a){D(`[linux-node-ca] Failed to unset NODE_EXTRA_CA_CERTS: ${a.message}`)}try{h.unlinkSync(M)}catch{}return await ad(!1,null),Q=!1,{running:!1,pid:null}}async function ar(a,b){if(!(await am()).running)throw Error("MITM server is not running. Start the server first.");let c=b||Y()||await af();return await m(a,c),await ag(a,!0),{success:!0}}a.exports={getMitmStatus:am,startServer:ap,stopServer:aq,enableToolDNS:ar,disableToolDNS:async function a(a,b){let c=b||Y()||await af();return await n(a,c),await ag(a,!1),{success:!0}},trustCert:async function a(a){let b=g.join(C,"rootCA.crt");if(!h.existsSync(b))throw Error("Root CA not found. Start server first to generate it.");let{installCert:d}=c(9631);if(!v&&!w&&!s())return void D(`🔐 Cert: system trust unavailable (no sudo). Use file: ${b}`);let e=a||Y()||await af();if(!e&&t())throw Error("Sudo password required to trust certificate");await d(e,b),e&&Z(e)},startMitm:ap,stopMitm:aq,getCachedPassword:Y,setCachedPassword:Z,loadEncryptedPassword:af,clearEncryptedPassword:ae,isSudoPasswordRequired:t,initDbHooks:function(a,b){ab=a,ac=b},restoreToolDNS:ai,hasDnsPrivilege:aj,removeAllDNSEntriesSync:p}}};
75
+ `;await e(d)}}catch(a){E(`Failed to clean hosts: ${a.message}`)}}else await o(a);if(w)d("launchctl unsetenv NODE_EXTRA_CA_CERTS",{windowsHide:!0},a=>{a?D(`[launchctl] Failed to unset NODE_EXTRA_CA_CERTS: ${a.message}`):D("[launchctl] NODE_EXTRA_CA_CERTS unset")});else if(v)d("reg delete HKCU\\Environment /F /V NODE_EXTRA_CA_CERTS",{windowsHide:!0},a=>{a?D(`[reg] Failed to unset NODE_EXTRA_CA_CERTS: ${a.message}`):D("[reg] NODE_EXTRA_CA_CERTS unset")});else if(I)try{let a=H();a.length>0&&D(`[linux-node-ca] NODE_EXTRA_CA_CERTS removed from ${a.length} shell rc file(s)`)}catch(a){D(`[linux-node-ca] Failed to unset NODE_EXTRA_CA_CERTS: ${a.message}`)}try{h.unlinkSync(M)}catch{}try{h.unlinkSync(N)}catch{}return await ae(!1,null),R=!1,{running:!1,pid:null}}async function as(a,b){if(!(await an()).running)throw Error("MITM server is not running. Start the server first.");let c=b||Z()||await ag();return await m(a,c),await ah(a,!0),{success:!0}}a.exports={getMitmStatus:an,startServer:aq,stopServer:ar,enableToolDNS:as,disableToolDNS:async function a(a,b){let c=b||Z()||await ag();return await n(a,c),await ah(a,!1),{success:!0}},trustCert:async function a(a){let b=g.join(C,"rootCA.crt");if(!h.existsSync(b))throw Error("Root CA not found. Start server first to generate it.");let{installCert:d}=c(9631);if(!v&&!w&&!s())return void D(`🔐 Cert: system trust unavailable (no sudo). Use file: ${b}`);let e=a||Z()||await ag();if(!e&&t())throw Error("Sudo password required to trust certificate");await d(e,b),e&&$(e)},startMitm:aq,stopMitm:ar,getCachedPassword:Z,setCachedPassword:$,loadEncryptedPassword:ag,clearEncryptedPassword:af,isSudoPasswordRequired:t,initDbHooks:function(a,b){ac=a,ad=b},restoreToolDNS:aj,hasDnsPrivilege:ak,removeAllDNSEntriesSync:p}}};