@jheavenknows/bluerouter 5.4.18 → 5.4.20

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 (416) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +32 -32
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page_client-reference-manifest.js +1 -1
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page.js +2 -15
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page.js.nft.json +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/model-profiles/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/console/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personal/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/stt/page_client-reference-manifest.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/tts/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page.js +18 -5
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page_client-reference-manifest.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  51. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  52. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  53. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  54. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  55. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  56. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +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 +5 -5
  60. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +5 -5
  61. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -5
  62. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  63. package/app/.next-cli-build/server/app/api/audit-proxy/ca/route.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/api/audit-proxy/me/route.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/api/audit-proxy/route.js +1 -1
  66. package/app/.next-cli-build/server/app/api/audit-proxy/route.js.nft.json +1 -1
  67. package/app/.next-cli-build/server/app/api/audit-proxy/users/route.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  76. package/app/.next-cli-build/server/app/api/auth/view-mode/route.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/api/branding/[asset]/route.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/api/branding/route.js.nft.json +1 -1
  79. package/app/.next-cli-build/server/app/api/branding/upload/route.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/api/cli-model-profiles/cloud-models/route.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/api/cli-model-profiles/model-catalog/route.js.nft.json +1 -1
  82. package/app/.next-cli-build/server/app/api/cli-model-profiles/route.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  91. package/app/.next-cli-build/server/app/api/cluster/config/route.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/api/cluster/heartbeat/route.js.nft.json +1 -1
  93. package/app/.next-cli-build/server/app/api/cluster/peers/[id]/command/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/cluster/peers/[id]/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/cluster/peers/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/cluster/snapshot/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/cluster/sync/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/cluster/test/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/codex-catalog/download/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/codex-catalog/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/codex-catalog/upload/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/dashboard/ai-power-index/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/dashboard/analytics/ai-models/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/dashboard/analytics/analyze/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/dashboard/combos/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/dashboard/token-saver/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/keys/[id]/caveman-test/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  129. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  131. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/oauth/grok-cli/device-code/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/oauth/grok-cli/poll/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/move/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/usage/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/personal-cloud-providers/client/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/personal-cloud-providers/monitor/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/personal-cloud-providers/routing/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/personal-cloud-providers/shares/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/personal-cloud-providers/visibility/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/pricing/catalog/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/pricing/recalculate/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/provider-health/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/provider-nodes/openai-compatible/manage/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  166. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  169. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/resource-monitor/[id]/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/resource-monitor/ai-models/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/resource-monitor/analyze/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/resource-monitor/history/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/resource-monitor/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/settings/database/export/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  188. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  189. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  199. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  203. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  205. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  219. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  221. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  226. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  227. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  228. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  229. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  230. package/app/.next-cli-build/server/app/callback.html +1 -1
  231. package/app/.next-cli-build/server/app/callback.rsc +5 -5
  232. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +5 -5
  233. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  234. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +5 -5
  235. package/app/.next-cli-build/server/app/dashboard/ai-power-index.html +1 -1
  236. package/app/.next-cli-build/server/app/dashboard/ai-power-index.rsc +6 -6
  237. package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/!KGRhc2hib2FyZCk/dashboard/ai-power-index/__PAGE__.segment.rsc +6 -6
  238. package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_full.segment.rsc +6 -6
  239. package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_tree.segment.rsc +1 -1
  240. package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
  241. package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +9 -9
  242. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +9 -9
  243. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +9 -9
  244. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +1 -1
  245. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  246. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +7 -7
  247. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +7 -7
  248. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +7 -7
  249. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  250. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.html +1 -1
  251. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.rsc +8 -8
  252. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/model-profiles/__PAGE__.segment.rsc +8 -8
  253. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_full.segment.rsc +8 -8
  254. package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_tree.segment.rsc +1 -1
  255. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  256. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +7 -7
  257. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +7 -7
  258. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +7 -7
  259. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  260. package/app/.next-cli-build/server/app/dashboard/cluster.html +1 -1
  261. package/app/.next-cli-build/server/app/dashboard/cluster.rsc +6 -6
  262. package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard/cluster/__PAGE__.segment.rsc +6 -6
  263. package/app/.next-cli-build/server/app/dashboard/cluster.segments/_full.segment.rsc +6 -6
  264. package/app/.next-cli-build/server/app/dashboard/cluster.segments/_tree.segment.rsc +1 -1
  265. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  266. package/app/.next-cli-build/server/app/dashboard/combos.rsc +7 -7
  267. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +7 -7
  268. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +7 -7
  269. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  270. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  271. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +7 -7
  272. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +7 -7
  273. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
  274. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  275. package/app/.next-cli-build/server/app/dashboard/logs.html +1 -1
  276. package/app/.next-cli-build/server/app/dashboard/logs.rsc +6 -6
  277. package/app/.next-cli-build/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard/logs/__PAGE__.segment.rsc +6 -6
  278. package/app/.next-cli-build/server/app/dashboard/logs.segments/_full.segment.rsc +6 -6
  279. package/app/.next-cli-build/server/app/dashboard/logs.segments/_tree.segment.rsc +1 -1
  280. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  281. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +7 -7
  282. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +7 -7
  283. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +7 -7
  284. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  285. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  286. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +7 -7
  287. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +7 -7
  288. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +7 -7
  289. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  290. package/app/.next-cli-build/server/app/dashboard/personal.html +1 -1
  291. package/app/.next-cli-build/server/app/dashboard/personal.rsc +7 -7
  292. package/app/.next-cli-build/server/app/dashboard/personal.segments/!KGRhc2hib2FyZCk/dashboard/personal/__PAGE__.segment.rsc +7 -7
  293. package/app/.next-cli-build/server/app/dashboard/personal.segments/_full.segment.rsc +7 -7
  294. package/app/.next-cli-build/server/app/dashboard/personal.segments/_tree.segment.rsc +1 -1
  295. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  296. package/app/.next-cli-build/server/app/dashboard/profile.rsc +7 -7
  297. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +7 -7
  298. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +7 -7
  299. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  300. package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
  301. package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +6 -6
  302. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +6 -6
  303. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +6 -6
  304. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +1 -1
  305. package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
  306. package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +6 -6
  307. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +6 -6
  308. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +6 -6
  309. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +1 -1
  310. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  311. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +7 -7
  312. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +7 -7
  313. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +7 -7
  314. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  315. package/app/.next-cli-build/server/app/dashboard/providers/stt.html +1 -1
  316. package/app/.next-cli-build/server/app/dashboard/providers/stt.rsc +7 -7
  317. package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/!KGRhc2hib2FyZCk/dashboard/providers/stt/__PAGE__.segment.rsc +7 -7
  318. package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/_full.segment.rsc +7 -7
  319. package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/_tree.segment.rsc +1 -1
  320. package/app/.next-cli-build/server/app/dashboard/providers/tts.html +1 -1
  321. package/app/.next-cli-build/server/app/dashboard/providers/tts.rsc +7 -7
  322. package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/!KGRhc2hib2FyZCk/dashboard/providers/tts/__PAGE__.segment.rsc +7 -7
  323. package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/_full.segment.rsc +7 -7
  324. package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/_tree.segment.rsc +1 -1
  325. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  326. package/app/.next-cli-build/server/app/dashboard/providers.rsc +7 -7
  327. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +7 -7
  328. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +7 -7
  329. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  330. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  331. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +7 -7
  332. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +7 -7
  333. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +7 -7
  334. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  335. package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
  336. package/app/.next-cli-build/server/app/dashboard/quota.rsc +8 -8
  337. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +8 -8
  338. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +8 -8
  339. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  340. package/app/.next-cli-build/server/app/dashboard/resource-monitor.html +1 -1
  341. package/app/.next-cli-build/server/app/dashboard/resource-monitor.rsc +7 -7
  342. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard/resource-monitor/__PAGE__.segment.rsc +7 -7
  343. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_full.segment.rsc +7 -7
  344. package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_tree.segment.rsc +1 -1
  345. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  346. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +6 -6
  347. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +6 -6
  348. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +6 -6
  349. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  350. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  351. package/app/.next-cli-build/server/app/dashboard/skills.rsc +7 -7
  352. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +7 -7
  353. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +7 -7
  354. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  355. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  356. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
  357. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +6 -6
  358. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  359. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  360. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  361. package/app/.next-cli-build/server/app/dashboard/translator.rsc +7 -7
  362. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +7 -7
  363. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +7 -7
  364. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  365. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  366. package/app/.next-cli-build/server/app/dashboard/usage.rsc +7 -7
  367. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +7 -7
  368. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +7 -7
  369. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  370. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  371. package/app/.next-cli-build/server/app/dashboard.rsc +7 -7
  372. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +7 -7
  373. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +7 -7
  374. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  375. package/app/.next-cli-build/server/app/index.html +1 -1
  376. package/app/.next-cli-build/server/app/index.rsc +5 -5
  377. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +5 -5
  378. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +5 -5
  379. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  380. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  381. package/app/.next-cli-build/server/app/landing.html +1 -1
  382. package/app/.next-cli-build/server/app/landing.rsc +5 -5
  383. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
  384. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  385. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +5 -5
  386. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  387. package/app/.next-cli-build/server/app/login.html +1 -1
  388. package/app/.next-cli-build/server/app/login.rsc +6 -6
  389. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +6 -6
  390. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  391. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +6 -6
  392. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  393. package/app/.next-cli-build/server/app-paths-manifest.json +32 -32
  394. package/app/.next-cli-build/server/chunks/3096.js +2 -2
  395. package/app/.next-cli-build/server/chunks/3399.js +1 -1
  396. package/app/.next-cli-build/server/chunks/3958.js +6 -6
  397. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  398. package/app/.next-cli-build/server/chunks/6328.js +1 -1
  399. package/app/.next-cli-build/server/chunks/6811.js +1 -1
  400. package/app/.next-cli-build/server/chunks/6992.js +1 -1
  401. package/app/.next-cli-build/server/chunks/9083.js +5 -5
  402. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  403. package/app/.next-cli-build/server/pages/404.html +1 -1
  404. package/app/.next-cli-build/server/pages/500.html +1 -1
  405. package/app/.next-cli-build/static/chunks/{5263-f8cf64b245ee548b.js → 5263-cb8cc0ec36f08fec.js} +1 -1
  406. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/audit-proxy/page-f6b35e9db17b4607.js +8 -0
  407. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/resource-monitor/{template-43f3766d0c7651d5.js → template-b54c2caef58cbf3f.js} +22 -6
  408. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm +0 -0
  409. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal +0 -0
  410. package/app/package.json +1 -1
  411. package/package.json +1 -1
  412. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/audit-proxy/page-7e36c7d76547e65b.js +0 -21
  413. /package/app/.next-cli-build/static/{yBG-AbaEIixE6unidS0XM → z1Eao96Iq3r_h1r2CiZ6D}/_buildManifest.js +0 -0
  414. /package/app/.next-cli-build/static/{yBG-AbaEIixE6unidS0XM → z1Eao96Iq3r_h1r2CiZ6D}/_ssgManifest.js +0 -0
  415. /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-5.4.12-to-5.4.13-5.4.13-20260824-200839 → upgrade-5.4.16-to-5.4.17-5.4.17-20260824-221014}/data.sqlite +0 -0
  416. /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-5.4.13-to-5.4.14-5.4.14-20260824-210858 → upgrade-5.4.17-to-5.4.18-5.4.18-20260824-221830}/data.sqlite +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";exports.id=3096,exports.ids=[3096],exports.modules={5565:(a,b,c)=>{let d=c(91645);function e(a){let b=String(a||"").trim().toLowerCase();b.startsWith("[")&&b.endsWith("]")&&(b=b.slice(1,-1));let c=b.indexOf("%");return c>=0&&(b=b.slice(0,c)),b.startsWith("::ffff:")&&4===d.isIP(b.slice(7))&&(b=b.slice(7)),b}function f(a){return Buffer.from(a.split(".").map(a=>Number(a)))}function g(a,b){return 4===b?f(a):function(a){let b=e(a),c=b.lastIndexOf(":");if(c>=0){let a=b.slice(c+1);if(4===d.isIP(a)){let d=f(a),e=(d[0]<<8|d[1]).toString(16),g=(d[2]<<8|d[3]).toString(16);b=`${b.slice(0,c)}:${e}:${g}`}}let g=b.split("::");if(g.length>2)throw Error("Invalid IPv6 address");let h=g[0]?g[0].split(":").filter(Boolean):[],i=2===g.length&&g[1]?g[1].split(":").filter(Boolean):[],j=8-h.length-i.length;if(1===g.length&&0!==j||j<0)throw Error("Invalid IPv6 address");let k=2===g.length?[...h,...Array(j).fill("0"),...i]:h;if(8!==k.length)throw Error("Invalid IPv6 address");let l=Buffer.alloc(16);return k.forEach((a,b)=>{let c=Number.parseInt(a||"0",16);if(!Number.isInteger(c)||c<0||c>65535)throw Error("Invalid IPv6 address");l[2*b]=c>>8&255,l[2*b+1]=255&c}),l}(a)}function h(a){let b=String(a||"").trim();if(!b)throw Error("Empty IP rule");let c=b.indexOf("/"),f=e(c>=0?b.slice(0,c):b),g=d.isIP(f);if(!g)throw Error(`Invalid client IP/CIDR: ${b}`);let h=4===g?32:128,i=c>=0?Number(b.slice(c+1)):h;if(!Number.isInteger(i)||i<0||i>h)throw Error(`Invalid CIDR prefix: ${b}`);return{text:c>=0?`${f}/${i}`:f,ip:f,family:g,prefix:i}}a.exports={normalizeIp:e,parseIpRule:h,normalizeAllowedClientIps:function(a){let b=Array.isArray(a)?a:String(a||"").split(/[\r\n,]+/),c=[],d=new Set;for(let a of b){let b=String(a||"").trim();if(!b)continue;let e=h(b);d.has(e.text)||(d.add(e.text),c.push(e.text))}return c},clientIpMatches:function(a,b=[]){let c=e(a),f=d.isIP(c);if(!f)return!1;let i=g(c,f);for(let a of b||[]){let b;try{b=h(a)}catch{continue}if(b.family===f&&function(a,b,c){let d=Math.floor(c/8),e=c%8;for(let c=0;c<d;c+=1)if(a[c]!==b[c])return!1;if(!e)return!0;let f=255<<8-e&255;return(a[d]&f)==(b[d]&f)}(i,g(b.ip,b.family),b.prefix))return!0}return!1}}},7566:(a,b,c)=>{let d=c(55511),e=/^[a-z0-9][a-z0-9._-]{0,63}$/i,f=null;function g(){return f||(f=c(81370)),f}function h(a){return String(a||"").trim()}function i(a){let b=Array.isArray(a)?a:[],c=new Set,d=[];for(let a of b){if(!a||"object"!=typeof a)continue;let b=h(a.username),f=String(a.passwordHash||"");if(!e.test(b)||!f.startsWith("$2"))continue;let g=b.toLowerCase();c.has(g)||(c.add(g),d.push({username:b,passwordHash:f}))}return d}function j(a){if(Array.isArray(a))return null;let b=String(a||"").trim();if(!b||b.length>1024)return null;let c=b.indexOf(" ");if(c<0||"basic"!==b.slice(0,c).toLowerCase())return null;let d=b.slice(c+1).trim();if(!d||!/^[A-Za-z0-9+/]+={0,2}$/.test(d))return null;let e="";try{e=Buffer.from(d,"base64").toString("utf8")}catch{return null}let f=e.indexOf(":");return f<0?null:{username:e.slice(0,f),password:e.slice(f+1)}}a.exports={CACHE_TTL_MS:3e5,PASSWORD_MAX_BYTES:72,PASSWORD_MIN_BYTES:8,createProxyAuthLimiter:function({maxFailures:a=10,windowMs:b=6e4,cooldownMs:c=3e4,maxCooldownMs:d=3e5,maxEntries:e=1024}={}){let f=new Map;return{isLocked(a){let b=f.get(a);return!!b&&b.lockedUntil>Date.now()},recordFailure(g){let h=Date.now();!function(a){if(f.size<e)return;for(let[c,d]of f)if(d.lockedUntil<=a&&a-d.lastFailAt>b&&f.delete(c),f.size<e)return;let c=f.keys().next();c.done||f.delete(c.value)}(h);let i=f.get(g)||{failures:0,lastFailAt:0,lockedUntil:0,cooldownMs:c};h-i.lastFailAt>b&&(i.failures=0),i.failures+=1,i.lastFailAt=h;let j=!1;return i.failures>=a&&(i.lockedUntil=h+i.cooldownMs,i.cooldownMs=Math.min(2*i.cooldownMs,d),i.failures=0,j=!0),f.set(g,i),{lockedNow:j}},recordSuccess(a){f.delete(a)}}},createProxyAuthenticator:function(a){let b=new Map(i(a).map(a=>[a.username.toLowerCase(),a])),c=new Map,e=new Map;return{get accountCount(){return b.size},async authenticate(a){let f,h=j(a);if(!h)return{ok:!1,username:null,reason:a?"Unsupported proxy credentials":"Proxy authentication required"};let{username:i,password:k}=h,l=d.createHash("sha256").update(`${i}\0${k}`).digest("hex"),m=(f=c.get(l))?f.expiresAt<=Date.now()?(c.delete(l),null):f.username:null;if(m)return{ok:!0,username:m,reason:null};let n=b.get(i.trim().toLowerCase()),o=n?n.passwordHash:"$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy",p=e.get(l);p||(p=g().compare(k,o).catch(()=>!1),e.set(l,p),p.finally(()=>e.delete(l)));let q=await p;if(!n||!q)return{ok:!1,username:null,reason:"Invalid proxy credentials"};var r=n.username;if(c.size>=256){let a=c.keys().next();a.done||c.delete(a.value)}return c.set(l,{username:r,expiresAt:Date.now()+3e5}),{ok:!0,username:n.username,reason:null}}}},hashProxyPassword:async function a(a){let b=await g().genSalt(10);return g().hash(String(a),b)},isValidUsername:function(a){return e.test(h(a))},normalizeProxyUsers:i,parseBasicProxyAuthorization:j,redactProxyAuthUsers:function(a){return i(a).map(a=>({username:a.username,hasPassword:!0}))}}},43096:(a,b,c)=>{let d=c(29021),e=c(33873),{DATA_DIR:f}=c(82193),{normalizeAllowedClientIps:g}=c(5565),{normalizeAllowedToolsInput:h}=c(98586),{normalizeProxyUsers:i}=c(7566),{normalizeAccessGrants:j}=c(77407),k=e.join(f,"audit-gateway"),l=e.join(k,"config.json"),m=e.join(k,"audit.jsonl"),n=e.join(k,"logs"),o=Object.freeze({enabled:!1,bindHost:"127.0.0.1",port:3128,clientProxyHost:"",clientIpFilterEnabled:!1,allowedClientIps:[],clientToolFilterEnabled:!1,allowedClientTools:[],proxyAuthEnabled:!1,proxyAuthUsers:[],accessGrants:[],allowedHosts:["api.anthropic.com","*.anthropic.com","claude.ai","*.claude.ai","api.openai.com","*.openai.com","chatgpt.com","*.chatgpt.com"],passthroughUnknown:!0,captureBodies:!0,captureLimitBytes:2097152,retentionDays:7,verifyUpstreamTls:!0,connectTimeoutMs:1e4,tlsHandshakeTimeoutMs:1e4,responseHeaderTimeoutMs:3e4,idleTimeoutMs:9e5,shutdownGraceMs:1500,allowPlainHttp:!1,allowedConnectPorts:[443]});function p(){return{...o,allowedClientIps:[...o.allowedClientIps],allowedClientTools:[...o.allowedClientTools],proxyAuthUsers:[...o.proxyAuthUsers],accessGrants:[],allowedHosts:[...o.allowedHosts],allowedConnectPorts:[...o.allowedConnectPorts]}}function q(){d.mkdirSync(k,{recursive:!0}),d.mkdirSync(n,{recursive:!0})}function r(a){return[...new Set((Array.isArray(a)?a:String(a||"").split(/[\r\n,]+/)).map(a=>String(a||"").trim().toLowerCase()).filter(Boolean).filter(a=>!a.includes("://")&&/^[*a-z0-9._-]+$/.test(a)))]}function s(a,b,c,d,e){let f=null==a?b:Number(a);if(!Number.isInteger(f)||f<c||f>d)throw Error(`${e} must be between ${c} and ${d}`);return f}function t(a={}){let b={...o,...a},c=s(b.port,o.port,1,65535,"Proxy port"),d=Number(b.captureLimitBytes);if(!Number.isFinite(d)||d<0||d>0x1000000)throw Error("Capture limit must be between 0 and 16 MB");let e=s(b.retentionDays,o.retentionDays,1,365,"Retention days"),f=s(b.connectTimeoutMs,o.connectTimeoutMs,1e3,12e4,"Connect timeout"),k=s(b.tlsHandshakeTimeoutMs,o.tlsHandshakeTimeoutMs,1e3,12e4,"TLS handshake timeout"),l=s(b.responseHeaderTimeoutMs,o.responseHeaderTimeoutMs,1e3,3e5,"Response header timeout"),m=s(b.idleTimeoutMs,o.idleTimeoutMs,3e4,36e5,"Idle timeout"),n=s(b.shutdownGraceMs,o.shutdownGraceMs,0,3e4,"Shutdown grace period"),p=String(b.bindHost||"127.0.0.1").trim();if(!p||/\s/.test(p))throw Error("Invalid bind address");let q=String(b.clientProxyHost||"").trim();if(/\s/.test(q)||q.includes("://"))throw Error("Client proxy host must be a hostname or IP without protocol");let u=!0===b.clientIpFilterEnabled,v=g(b.allowedClientIps);if(u&&0===v.length)throw Error("Client IP filter requires at least one allowed IP or CIDR");let w=i(b.proxyAuthUsers);0;let x=j(b.accessGrants),y=!0===b.clientToolFilterEnabled,z=h(b.allowedClientTools);if(y&&0===z.length)throw Error("Client tool filter requires at least one allowed tool");return{enabled:!0===b.enabled,bindHost:p,port:c,clientProxyHost:q,clientIpFilterEnabled:u,allowedClientIps:v,clientToolFilterEnabled:y,allowedClientTools:z,proxyAuthEnabled:!1,proxyAuthUsers:w,accessGrants:x,allowedHosts:r(b.allowedHosts),passthroughUnknown:!1!==b.passthroughUnknown,captureBodies:!1!==b.captureBodies,captureLimitBytes:Math.round(d),retentionDays:e,verifyUpstreamTls:!0,connectTimeoutMs:f,tlsHandshakeTimeoutMs:k,responseHeaderTimeoutMs:l,idleTimeoutMs:m,shutdownGraceMs:n,allowPlainHttp:!1,allowedConnectPorts:[443]}}a.exports={PROXY_AUTH_FEATURE_ENABLED:!1,AUDIT_DIR:k,CONFIG_PATH:l,AUDIT_LOG_PATH:m,AUDIT_LOG_DIR:n,DEFAULT_CONFIG:o,ensureAuditDir:q,loadConfig:function(){if(q(),!d.existsSync(l))return p();try{return t(JSON.parse(d.readFileSync(l,"utf8")))}catch(a){return console.warn(`[audit-proxy] invalid config ignored: ${a.message||a}`),p()}},saveConfig:function(a){q();let b=t(a),c=`${l}.tmp`;return d.writeFileSync(c,`${JSON.stringify(b,null,2)}
2
- `,{mode:384}),d.renameSync(c,l),b},validateConfig:t,normalizeAllowedHosts:r,normalizeAllowedClientIps:g}},77407:(a,b,c)=>{let{normalizeAllowedClientIps:d,clientIpMatches:e,normalizeIp:f}=c(5565);function g(a){return String(a||"").trim().toLowerCase()}function h(a){let b=Array.isArray(a)?a:a&&"object"==typeof a?Object.entries(a).map(([a,b])=>({userId:a,ips:b})):[],c=new Map;for(let a of b){let b=g(a?.userId??a?.user??a?.id);if(!b)continue;let e=d(a?.ips??a?.allowedClientIps??[]);if(e.length>64)throw Error(`Grant for ${b} exceeds 64 IP entries`);let f=c.get(b);c.set(b,{userId:b,ips:f?d([...f.ips,...e]):e,note:String((a?.note??f?.note)||"").trim().slice(0,200)})}if(c.size>500)throw Error("At most 500 Audit Proxy access grants are supported");return[...c.values()].sort((a,b)=>a.userId.localeCompare(b.userId))}function i(a=[]){return d(a.flatMap(a=>a?.ips||[]))}a.exports={MAX_GRANTS:500,MAX_IPS_PER_GRANT:64,normalizeGrantUserId:g,normalizeAccessGrants:h,grantedIps:i,findAccessGrant:function(a=[],b=""){let c=g(b);return c&&a.find(a=>a.userId===c)||null},effectiveClientIpPolicy:function(a={}){let b=h(a.accessGrants),c=i(b);return c.length>0?{enabled:!0,allowedClientIps:c,source:"grants",grants:b}:{enabled:!0===a.clientIpFilterEnabled,allowedClientIps:d(a.allowedClientIps||[]),source:"manual",grants:b}},attachClientIpGate:function(a,b){let c=new Map;return a.prependListener("connection",a=>{let d=f(a?.remoteAddress||""),g=b()||{};if(g.enabled&&!e(d,g.allowedClientIps||[])){console.log(`[audit-proxy] denied client IP ${d||"unknown"} (${g.source||"manual"} allowlist)`);try{a.destroy()}catch{}return}c.set(a,d),a.once("close",()=>c.delete(a))}),{dropRevoked(){let a=b()||{};if(!a.enabled)return 0;let d=0;for(let[b,f]of[...c])if(!e(f,a.allowedClientIps||[])){console.log(`[audit-proxy] closing connection from revoked client IP ${f||"unknown"}`);try{b.destroy()}catch{}c.delete(b),d+=1}return d},connectionCount:()=>c.size}}}},82193:(a,b,c)=>{let d=c(29021),e=c(33873),f=c(21820),g="bluerouter";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}},98586:a=>{let b=[{id:"claude-code",label:"Claude Code",patterns:["claude-cli","claude-code","anthropic"]},{id:"codex",label:"OpenAI Codex",patterns:["codex_cli","codex-cli","codex"]},{id:"gemini-cli",label:"Gemini CLI",patterns:["gemini-cli","google-genai"]},{id:"cursor",label:"Cursor",patterns:["cursor"]},{id:"curl",label:"curl / scripts",patterns:["curl","wget","httpie"]}];function c(a){return String(a||"").trim().toLowerCase()}function d(a,b=[]){let e=c(a);return!!e&&!!b.length&&b.some(a=>a&&e.includes(a))}a.exports={TOOL_PRESETS:b,normalizeAllowedTools:function(a){let d=Array.isArray(a)?a:String(a||"").split(/[\r\n,]+/),e=[];for(let a of d){let d=c(a);if(!d)continue;let f=b.find(a=>a.id===d);f?e.push(...f.patterns):e.push(d)}return[...new Set(e)]},normalizeAllowedToolsInput:function(a){return[...new Set((Array.isArray(a)?a:String(a||"").split(/[\r\n,]+/)).map(c).filter(Boolean))]},clientToolMatches:d,shouldRefuseClientTool:function(a,b=[]){return!!c(a)&&!d(a,b)},describeUserAgent:function(a){let b=String(a||"").trim();return b?b.length>120?`${b.slice(0,119)}…`:b:"no User-Agent"}}}};
1
+ "use strict";exports.id=3096,exports.ids=[3096],exports.modules={5565:(a,b,c)=>{let d=c(91645);function e(a){let b=String(a||"").trim().toLowerCase();b.startsWith("[")&&b.endsWith("]")&&(b=b.slice(1,-1));let c=b.indexOf("%");return c>=0&&(b=b.slice(0,c)),b.startsWith("::ffff:")&&4===d.isIP(b.slice(7))&&(b=b.slice(7)),b}function f(a){return Buffer.from(a.split(".").map(a=>Number(a)))}function g(a,b){return 4===b?f(a):function(a){let b=e(a),c=b.lastIndexOf(":");if(c>=0){let a=b.slice(c+1);if(4===d.isIP(a)){let d=f(a),e=(d[0]<<8|d[1]).toString(16),g=(d[2]<<8|d[3]).toString(16);b=`${b.slice(0,c)}:${e}:${g}`}}let g=b.split("::");if(g.length>2)throw Error("Invalid IPv6 address");let h=g[0]?g[0].split(":").filter(Boolean):[],i=2===g.length&&g[1]?g[1].split(":").filter(Boolean):[],j=8-h.length-i.length;if(1===g.length&&0!==j||j<0)throw Error("Invalid IPv6 address");let k=2===g.length?[...h,...Array(j).fill("0"),...i]:h;if(8!==k.length)throw Error("Invalid IPv6 address");let l=Buffer.alloc(16);return k.forEach((a,b)=>{let c=Number.parseInt(a||"0",16);if(!Number.isInteger(c)||c<0||c>65535)throw Error("Invalid IPv6 address");l[2*b]=c>>8&255,l[2*b+1]=255&c}),l}(a)}function h(a){let b=String(a||"").trim();if(!b)throw Error("Empty IP rule");let c=b.indexOf("/"),f=e(c>=0?b.slice(0,c):b),g=d.isIP(f);if(!g)throw Error(`Invalid client IP/CIDR: ${b}`);let h=4===g?32:128,i=c>=0?Number(b.slice(c+1)):h;if(!Number.isInteger(i)||i<0||i>h)throw Error(`Invalid CIDR prefix: ${b}`);return{text:c>=0?`${f}/${i}`:f,ip:f,family:g,prefix:i}}a.exports={normalizeIp:e,parseIpRule:h,normalizeAllowedClientIps:function(a){let b=Array.isArray(a)?a:String(a||"").split(/[\r\n,]+/),c=[],d=new Set;for(let a of b){let b=String(a||"").trim();if(!b)continue;let e=h(b);d.has(e.text)||(d.add(e.text),c.push(e.text))}return c},clientIpMatches:function(a,b=[]){let c=e(a),f=d.isIP(c);if(!f)return!1;let i=g(c,f);for(let a of b||[]){let b;try{b=h(a)}catch{continue}if(b.family===f&&function(a,b,c){let d=Math.floor(c/8),e=c%8;for(let c=0;c<d;c+=1)if(a[c]!==b[c])return!1;if(!e)return!0;let f=255<<8-e&255;return(a[d]&f)==(b[d]&f)}(i,g(b.ip,b.family),b.prefix))return!0}return!1}}},7566:(a,b,c)=>{let d=c(55511),e=/^[a-z0-9][a-z0-9._-]{0,63}$/i,f=null;function g(){return f||(f=c(81370)),f}function h(a){return String(a||"").trim()}function i(a){let b=Array.isArray(a)?a:[],c=new Set,d=[];for(let a of b){if(!a||"object"!=typeof a)continue;let b=h(a.username),f=String(a.passwordHash||"");if(!e.test(b)||!f.startsWith("$2"))continue;let g=b.toLowerCase();c.has(g)||(c.add(g),d.push({username:b,passwordHash:f}))}return d}function j(a){if(Array.isArray(a))return null;let b=String(a||"").trim();if(!b||b.length>1024)return null;let c=b.indexOf(" ");if(c<0||"basic"!==b.slice(0,c).toLowerCase())return null;let d=b.slice(c+1).trim();if(!d||!/^[A-Za-z0-9+/]+={0,2}$/.test(d))return null;let e="";try{e=Buffer.from(d,"base64").toString("utf8")}catch{return null}let f=e.indexOf(":");return f<0?null:{username:e.slice(0,f),password:e.slice(f+1)}}a.exports={CACHE_TTL_MS:3e5,PASSWORD_MAX_BYTES:72,PASSWORD_MIN_BYTES:8,createProxyAuthLimiter:function({maxFailures:a=10,windowMs:b=6e4,cooldownMs:c=3e4,maxCooldownMs:d=3e5,maxEntries:e=1024}={}){let f=new Map;return{isLocked(a){let b=f.get(a);return!!b&&b.lockedUntil>Date.now()},recordFailure(g){let h=Date.now();!function(a){if(f.size<e)return;for(let[c,d]of f)if(d.lockedUntil<=a&&a-d.lastFailAt>b&&f.delete(c),f.size<e)return;let c=f.keys().next();c.done||f.delete(c.value)}(h);let i=f.get(g)||{failures:0,lastFailAt:0,lockedUntil:0,cooldownMs:c};h-i.lastFailAt>b&&(i.failures=0),i.failures+=1,i.lastFailAt=h;let j=!1;return i.failures>=a&&(i.lockedUntil=h+i.cooldownMs,i.cooldownMs=Math.min(2*i.cooldownMs,d),i.failures=0,j=!0),f.set(g,i),{lockedNow:j}},recordSuccess(a){f.delete(a)}}},createProxyAuthenticator:function(a){let b=new Map(i(a).map(a=>[a.username.toLowerCase(),a])),c=new Map,e=new Map;return{get accountCount(){return b.size},async authenticate(a){let f,h=j(a);if(!h)return{ok:!1,username:null,reason:a?"Unsupported proxy credentials":"Proxy authentication required"};let{username:i,password:k}=h,l=d.createHash("sha256").update(`${i}\0${k}`).digest("hex"),m=(f=c.get(l))?f.expiresAt<=Date.now()?(c.delete(l),null):f.username:null;if(m)return{ok:!0,username:m,reason:null};let n=b.get(i.trim().toLowerCase()),o=n?n.passwordHash:"$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy",p=e.get(l);p||(p=g().compare(k,o).catch(()=>!1),e.set(l,p),p.finally(()=>e.delete(l)));let q=await p;if(!n||!q)return{ok:!1,username:null,reason:"Invalid proxy credentials"};var r=n.username;if(c.size>=256){let a=c.keys().next();a.done||c.delete(a.value)}return c.set(l,{username:r,expiresAt:Date.now()+3e5}),{ok:!0,username:n.username,reason:null}}}},hashProxyPassword:async function a(a){let b=await g().genSalt(10);return g().hash(String(a),b)},isValidUsername:function(a){return e.test(h(a))},normalizeProxyUsers:i,parseBasicProxyAuthorization:j,redactProxyAuthUsers:function(a){return i(a).map(a=>({username:a.username,hasPassword:!0}))}}},43096:(a,b,c)=>{let d=c(29021),e=c(33873),{DATA_DIR:f}=c(82193),{normalizeAllowedClientIps:g}=c(5565),{normalizeAllowedToolsInput:h}=c(98586),{normalizeProxyUsers:i}=c(7566),{normalizeAccessGrants:j}=c(77407),k=e.join(f,"audit-gateway"),l=e.join(k,"config.json"),m=e.join(k,"audit.jsonl"),n=e.join(k,"logs"),o=Object.freeze({enabled:!1,bindHost:"127.0.0.1",port:3128,clientProxyHost:"",clientToolFilterEnabled:!1,allowedClientTools:[],proxyAuthEnabled:!1,proxyAuthUsers:[],accessGrants:[],allowedHosts:["api.anthropic.com","*.anthropic.com","claude.ai","*.claude.ai","api.openai.com","*.openai.com","chatgpt.com","*.chatgpt.com"],passthroughUnknown:!0,captureBodies:!0,captureLimitBytes:2097152,retentionDays:7,verifyUpstreamTls:!0,connectTimeoutMs:1e4,tlsHandshakeTimeoutMs:1e4,responseHeaderTimeoutMs:3e4,idleTimeoutMs:9e5,shutdownGraceMs:1500,allowPlainHttp:!1,allowedConnectPorts:[443]});function p(){return{...o,allowedClientTools:[...o.allowedClientTools],proxyAuthUsers:[...o.proxyAuthUsers],accessGrants:[],allowedHosts:[...o.allowedHosts],allowedConnectPorts:[...o.allowedConnectPorts]}}function q(){d.mkdirSync(k,{recursive:!0}),d.mkdirSync(n,{recursive:!0})}function r(a){return[...new Set((Array.isArray(a)?a:String(a||"").split(/[\r\n,]+/)).map(a=>String(a||"").trim().toLowerCase()).filter(Boolean).filter(a=>!a.includes("://")&&/^[*a-z0-9._-]+$/.test(a)))]}function s(a,b,c,d,e){let f=null==a?b:Number(a);if(!Number.isInteger(f)||f<c||f>d)throw Error(`${e} must be between ${c} and ${d}`);return f}function t(a={}){let b={...o,...a},c=s(b.port,o.port,1,65535,"Proxy port"),d=Number(b.captureLimitBytes);if(!Number.isFinite(d)||d<0||d>0x1000000)throw Error("Capture limit must be between 0 and 16 MB");let e=s(b.retentionDays,o.retentionDays,1,365,"Retention days"),f=s(b.connectTimeoutMs,o.connectTimeoutMs,1e3,12e4,"Connect timeout"),g=s(b.tlsHandshakeTimeoutMs,o.tlsHandshakeTimeoutMs,1e3,12e4,"TLS handshake timeout"),k=s(b.responseHeaderTimeoutMs,o.responseHeaderTimeoutMs,1e3,3e5,"Response header timeout"),l=s(b.idleTimeoutMs,o.idleTimeoutMs,3e4,36e5,"Idle timeout"),m=s(b.shutdownGraceMs,o.shutdownGraceMs,0,3e4,"Shutdown grace period"),n=String(b.bindHost||"127.0.0.1").trim();if(!n||/\s/.test(n))throw Error("Invalid bind address");let p=String(b.clientProxyHost||"").trim();if(/\s/.test(p)||p.includes("://"))throw Error("Client proxy host must be a hostname or IP without protocol");let q=i(b.proxyAuthUsers);0;let u=j(b.accessGrants),v=!0===b.clientToolFilterEnabled,w=h(b.allowedClientTools);if(v&&0===w.length)throw Error("Client tool filter requires at least one allowed tool");return{enabled:!0===b.enabled,bindHost:n,port:c,clientProxyHost:p,clientToolFilterEnabled:v,allowedClientTools:w,proxyAuthEnabled:!1,proxyAuthUsers:q,accessGrants:u,allowedHosts:r(b.allowedHosts),passthroughUnknown:!1!==b.passthroughUnknown,captureBodies:!1!==b.captureBodies,captureLimitBytes:Math.round(d),retentionDays:e,verifyUpstreamTls:!0,connectTimeoutMs:f,tlsHandshakeTimeoutMs:g,responseHeaderTimeoutMs:k,idleTimeoutMs:l,shutdownGraceMs:m,allowPlainHttp:!1,allowedConnectPorts:[443]}}a.exports={PROXY_AUTH_FEATURE_ENABLED:!1,AUDIT_DIR:k,CONFIG_PATH:l,AUDIT_LOG_PATH:m,AUDIT_LOG_DIR:n,DEFAULT_CONFIG:o,ensureAuditDir:q,loadConfig:function(){if(q(),!d.existsSync(l))return p();try{return t(JSON.parse(d.readFileSync(l,"utf8")))}catch(a){return console.warn(`[audit-proxy] invalid config ignored: ${a.message||a}`),p()}},saveConfig:function(a){q();let b=t(a),c=`${l}.tmp`;return d.writeFileSync(c,`${JSON.stringify(b,null,2)}
2
+ `,{mode:384}),d.renameSync(c,l),b},validateConfig:t,normalizeAllowedHosts:r,normalizeAllowedClientIps:g}},77407:(a,b,c)=>{let{normalizeAllowedClientIps:d,clientIpMatches:e,normalizeIp:f}=c(5565);function g(a){return String(a||"").trim().toLowerCase()}function h(a){let b=Array.isArray(a)?a:a&&"object"==typeof a?Object.entries(a).map(([a,b])=>({userId:a,ips:b})):[],c=new Map;for(let a of b){let b=g(a?.userId??a?.user??a?.id);if(!b)continue;let e=d(a?.ips??a?.allowedClientIps??[]);if(e.length>64)throw Error(`Grant for ${b} exceeds 64 IP entries`);let f=c.get(b);c.set(b,{userId:b,ips:f?d([...f.ips,...e]):e,note:String((a?.note??f?.note)||"").trim().slice(0,200)})}if(c.size>500)throw Error("At most 500 Audit Proxy access grants are supported");return[...c.values()].sort((a,b)=>a.userId.localeCompare(b.userId))}function i(a=[]){return d(a.flatMap(a=>a?.ips||[]))}a.exports={MAX_GRANTS:500,MAX_IPS_PER_GRANT:64,normalizeGrantUserId:g,normalizeAccessGrants:h,grantedIps:i,findAccessGrant:function(a=[],b=""){let c=g(b);return c&&a.find(a=>a.userId===c)||null},effectiveClientIpPolicy:function(a={}){let b=h(a.accessGrants);return{enabled:!0,allowedClientIps:i(b),source:"grants",grants:b}},attachClientIpGate:function(a,b){let c=new Map;return a.prependListener("connection",a=>{let d=f(a?.remoteAddress||""),g=b()||{};if(g.enabled&&!e(d,g.allowedClientIps||[])){console.log(`[audit-proxy] denied client IP ${d||"unknown"} (${g.source||"manual"} allowlist)`);try{a.destroy()}catch{}return}c.set(a,d),a.once("close",()=>c.delete(a))}),{dropRevoked(){let a=b()||{};if(!a.enabled)return 0;let d=0;for(let[b,f]of[...c])if(!e(f,a.allowedClientIps||[])){console.log(`[audit-proxy] closing connection from revoked client IP ${f||"unknown"}`);try{b.destroy()}catch{}c.delete(b),d+=1}return d},connectionCount:()=>c.size}}}},82193:(a,b,c)=>{let d=c(29021),e=c(33873),f=c(21820),g="bluerouter";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}},98586:a=>{let b=[{id:"claude-code",label:"Claude Code",patterns:["claude-cli","claude-code","anthropic"]},{id:"codex",label:"OpenAI Codex",patterns:["codex_cli","codex-cli","codex"]},{id:"gemini-cli",label:"Gemini CLI",patterns:["gemini-cli","google-genai"]},{id:"cursor",label:"Cursor",patterns:["cursor"]},{id:"curl",label:"curl / scripts",patterns:["curl","wget","httpie"]}];function c(a){return String(a||"").trim().toLowerCase()}function d(a,b=[]){let e=c(a);return!!e&&!!b.length&&b.some(a=>a&&e.includes(a))}a.exports={TOOL_PRESETS:b,normalizeAllowedTools:function(a){let d=Array.isArray(a)?a:String(a||"").split(/[\r\n,]+/),e=[];for(let a of d){let d=c(a);if(!d)continue;let f=b.find(a=>a.id===d);f?e.push(...f.patterns):e.push(d)}return[...new Set(e)]},normalizeAllowedToolsInput:function(a){return[...new Set((Array.isArray(a)?a:String(a||"").split(/[\r\n,]+/)).map(c).filter(Boolean))]},clientToolMatches:d,shouldRefuseClientTool:function(a,b=[]){return!!c(a)&&!d(a,b)},describeUserAgent:function(a){let b=String(a||"").trim();return b?b.length>120?`${b.slice(0,119)}…`:b:"no User-Agent"}}}};