@jheavenknows/bluerouter 5.3.55 → 5.3.56
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.
- package/app/.next-cli-build/BUILD_ID +1 -1
- package/app/.next-cli-build/app-path-routes-manifest.json +12 -12
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/prerender-manifest.json +0 -28
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/model-profiles/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/model-profiles/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/model-profiles/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/local-ai-report/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/local-ai-report/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/local-ai-report/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/routing-topology/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/routing-topology/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/routing-topology/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error/page.js +2 -2
- package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
- package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/app/.next-cli-build/server/app/_not-found.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/api/audit-proxy/ca/route.js +1 -18
- package/app/.next-cli-build/server/app/api/audit-proxy/ca/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/audit-proxy/route.js +14 -31
- package/app/.next-cli-build/server/app/api/audit-proxy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/view-mode/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/view-mode/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/branding/[asset]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/branding/[asset]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/branding/route.js +1 -1
- package/app/.next-cli-build/server/app/api/branding/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/branding/upload/route.js +1 -1
- package/app/.next-cli-build/server/app/api/branding/upload/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-model-profiles/cloud-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-model-profiles/cloud-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-model-profiles/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-model-profiles/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/qwen-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/config/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/config/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/heartbeat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/command/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/command/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/snapshot/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cluster/snapshot/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/sync/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/sync/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js +2 -2
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/ai-power-index/route.js +2 -2
- package/app/.next-cli-build/server/app/api/dashboard/ai-power-index/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/ai-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/ai-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/analyze/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/analyze/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js +2 -2
- package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/combos/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/local-ai-report/route.js +2 -2
- package/app/.next-cli-build/server/app/api/dashboard/local-ai-report/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/routing-topology/config/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/routing-topology/config/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/routing-topology/live/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/routing-topology/live/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/routing-topology/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/routing-topology/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/token-saver/route.js +2 -2
- package/app/.next-cli-build/server/app/api/dashboard/token-saver/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/caveman-test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/caveman-test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js +2 -2
- package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +2 -2
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/device-code/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/device-code/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/poll/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/poll/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/move/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/move/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/usage/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/usage/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/monitor/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/monitor/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/routing/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/routing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/shares/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/shares/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/visibility/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/visibility/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/catalog/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pricing/catalog/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/recalculate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/pricing/recalculate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-health/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/openai-compatible/manage/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/openai-compatible/manage/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/[id]/route.js +3 -3
- package/app/.next-cli-build/server/app/api/resource-monitor/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/ai-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/ai-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/analyze/route.js +2 -2
- package/app/.next-cli-build/server/app/api/resource-monitor/analyze/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/history/route.js +2 -2
- package/app/.next-cli-build/server/app/api/resource-monitor/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/route.js +3 -3
- package/app/.next-cli-build/server/app/api/resource-monitor/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js +2 -2
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page.js +1 -1
- package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/callback.html +1 -1
- package/app/.next-cli-build/server/app/callback.rsc +6 -6
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/!KGRhc2hib2FyZCk/dashboard/ai-power-index/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/model-profiles/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cluster.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cluster.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard/cluster/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/!KGRhc2hib2FyZCk/dashboard/local-ai-report/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard/resource-monitor/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/routing-topology.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/routing-topology.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/routing-topology.segments/!KGRhc2hib2FyZCk/dashboard/routing-topology/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/routing-topology.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/routing-topology.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/app/.next-cli-build/server/app/dashboard.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing/page.js +1 -1
- package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/landing.html +1 -1
- package/app/.next-cli-build/server/app/landing.rsc +6 -6
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/login/page.js +1 -1
- package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/login.html +1 -1
- package/app/.next-cli-build/server/app/login.rsc +7 -7
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page.js +1 -1
- package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +12 -12
- package/app/.next-cli-build/server/chunks/{7250.js → 1002.js} +1 -1
- package/app/.next-cli-build/server/chunks/2430.js +3 -3
- package/app/.next-cli-build/server/chunks/2507.js +1 -0
- package/app/.next-cli-build/server/chunks/2512.js +1 -0
- package/app/.next-cli-build/server/chunks/2944.js +1 -0
- package/app/.next-cli-build/server/chunks/3609.js +3 -0
- package/app/.next-cli-build/server/chunks/3738.js +1 -0
- package/app/.next-cli-build/server/chunks/3767.js +18 -0
- package/app/.next-cli-build/server/chunks/3958.js +14 -14
- package/app/.next-cli-build/server/chunks/{7638.js → 402.js} +8 -8
- package/app/.next-cli-build/server/chunks/4123.js +1 -1
- package/app/.next-cli-build/server/chunks/4696.js +1 -1
- package/app/.next-cli-build/server/chunks/{1350.js → 4746.js} +2 -2
- package/app/.next-cli-build/server/chunks/5206.js +1 -0
- package/app/.next-cli-build/server/chunks/5424.js +1 -0
- package/app/.next-cli-build/server/chunks/5915.js +1 -0
- package/app/.next-cli-build/server/chunks/595.js +1 -1
- package/app/.next-cli-build/server/chunks/6053.js +1 -1
- package/app/.next-cli-build/server/chunks/{1900.js → 6064.js} +1 -1
- package/app/.next-cli-build/server/chunks/607.js +9 -0
- package/app/.next-cli-build/server/chunks/6328.js +1 -1
- package/app/.next-cli-build/server/chunks/6811.js +1 -1
- package/app/.next-cli-build/server/chunks/{7700.js → 6936.js} +4 -4
- package/app/.next-cli-build/server/chunks/6992.js +1 -1
- package/app/.next-cli-build/server/chunks/7639.js +1 -1
- package/app/.next-cli-build/server/chunks/7812.js +1 -1
- package/app/.next-cli-build/server/chunks/8099.js +1 -0
- package/app/.next-cli-build/server/chunks/8255.js +1 -1
- package/app/.next-cli-build/server/chunks/8316.js +1 -1
- package/app/.next-cli-build/server/chunks/8347.js +1 -0
- package/app/.next-cli-build/server/instrumentation.js +1 -1
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/pages/404.html +1 -1
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/.next-cli-build/server/prefetch-hints.json +0 -24
- package/app/.next-cli-build/static/chunks/{5263-b67e8f4e90def189.js → 5263-880816cfad5dc39b.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/audit-proxy/page-6ed8392f835a28e2.js +1 -0
- package/app/.next-cli-build/static/css/b14ac663d252f431.css +1 -0
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-5.3.49-to-5.3.50-5.3.50-20260822-195035 → upgrade-5.3.53-to-5.3.54-5.3.54-20260822-220829}/data.sqlite +0 -0
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite +0 -0
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/app/.next-cli-build/server/app/dashboard/audit-proxy.html +0 -1
- package/app/.next-cli-build/server/app/dashboard/audit-proxy.meta +0 -36
- package/app/.next-cli-build/server/app/dashboard/audit-proxy.rsc +0 -26
- package/app/.next-cli-build/server/app/dashboard/audit-proxy.segments/!KGRhc2hib2FyZCk/dashboard/audit-proxy/__PAGE__.segment.rsc +0 -33
- package/app/.next-cli-build/server/app/dashboard/audit-proxy.segments/_full.segment.rsc +0 -26
- package/app/.next-cli-build/server/app/dashboard/audit-proxy.segments/_tree.segment.rsc +0 -4
- package/app/.next-cli-build/server/chunks/1220.js +0 -3
- package/app/.next-cli-build/server/chunks/1876.js +0 -1
- package/app/.next-cli-build/server/chunks/2999.js +0 -1
- package/app/.next-cli-build/server/chunks/4459.js +0 -9
- package/app/.next-cli-build/server/chunks/4755.js +0 -1
- package/app/.next-cli-build/server/chunks/5623.js +0 -1
- package/app/.next-cli-build/server/chunks/7895.js +0 -1
- package/app/.next-cli-build/server/chunks/8141.js +0 -1
- package/app/.next-cli-build/server/chunks/9413.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/audit-proxy/page-1668bdee838e50b6.js +0 -1
- package/app/.next-cli-build/static/css/1a3f62f10f5e4a32.css +0 -1
- /package/app/.next-cli-build/static/{dLYAsA1TrvO8gjZu0jVds → mhAZYh2CjtLe7IjwW4JJm}/_buildManifest.js +0 -0
- /package/app/.next-cli-build/static/{dLYAsA1TrvO8gjZu0jVds → mhAZYh2CjtLe7IjwW4JJm}/_ssgManifest.js +0 -0
|
@@ -1,40 +1,23 @@
|
|
|
1
|
-
(()=>{var a={};a.id=920,a.ids=[920],a.modules={261:a=>{
|
|
2
|
-
|
|
3
|
-
default_bits = 4096
|
|
4
|
-
prompt = no
|
|
5
|
-
distinguished_name = dn
|
|
6
|
-
req_extensions = v3_ca
|
|
7
|
-
|
|
8
|
-
[ dn ]
|
|
9
|
-
C = ${h}
|
|
10
|
-
O = ${f}
|
|
11
|
-
OU = AI Gateway
|
|
12
|
-
CN = ${d}
|
|
13
|
-
|
|
14
|
-
[ v3_ca ]
|
|
15
|
-
basicConstraints = critical, CA:true, pathlen:0
|
|
16
|
-
keyUsage = critical, keyCertSign, cRLSign
|
|
17
|
-
subjectKeyIdentifier = hash
|
|
18
|
-
`,j=t();e.writeFileSync(l,i,"utf8");try{g("openssl",["genrsa","-out",m,"4096"],{stdio:["ignore","pipe","pipe"]}),g("openssl",["req","-new","-key",m,"-out",k,"-config",l],{stdio:["ignore","pipe","pipe"]});try{e.chmodSync(m,384)}catch{}return{csr:k,pendingKey:m,config:l,backup:j}}catch(b){try{e.unlinkSync(m)}catch{}try{e.unlinkSync(k)}catch{}let a=b?.stderr?String(b.stderr).trim():"";throw Error(`OpenSSL CSR generation failed${a?`: ${a}`:""}`)}}({commonName:a,organizationName:b,countryName:c});let d=[{name:"commonName",value:String(a||"Fujinet Bluerouter MITM CA").trim()||"Fujinet Bluerouter MITM CA"},{name:"organizationName",value:String(b||"Fujinet").trim()||"Fujinet"},{name:"organizationalUnitName",value:"AI Gateway"}],h=String(c||"VN").trim().slice(0,2).toUpperCase();h&&d.push({name:"countryName",value:h});let i=f.pki.rsa.generateKeyPair(4096),j=f.pki.createCertificationRequest();if(j.publicKey=i.publicKey,j.setSubject(d),j.sign(i.privateKey,f.md.sha256.create()),!j.verify())throw Error("Generated CSR failed verification");let n=t(),p=f.pki.certificationRequestToPem(j),q=f.pki.privateKeyToPem(i.privateKey);return e.writeFileSync(m,q,{mode:384}),e.writeFileSync(k,p),{csr:k,pendingKey:m,backup:n}},importSignedRootCACert:function({certPem:a}){if(o(),!e.existsSync(m))throw Error("No pending CSR private key found. Generate a CSR first.");let b=p(a,"Signed certificate"),c=u(b,"Signed certificate");if(s(c,v(e.readFileSync(m,"utf8"),"Pending private key")),!r(c))throw Error("Signed certificate must be a CA certificate with CA:true and keyCertSign usage");if(c.validity.notAfter<new Date)throw Error("Signed certificate is already expired");let d=t();e.copyFileSync(m,i);try{e.chmodSync(i,384)}catch{}e.writeFileSync(j,b);try{e.unlinkSync(k)}catch{}try{e.unlinkSync(m)}catch{}return{key:i,cert:j,backup:d,info:x()}},loadRootCA:function(){if(!e.existsSync(i)||!e.existsSync(j))throw Error("Root CA not found. Generate it first.");let a=e.readFileSync(i,"utf8"),b=e.readFileSync(j,"utf8");return{key:f.pki.privateKeyFromPem(a),cert:f.pki.certificateFromPem(b)}},generateLeafCert:function(a,b){let c=f.pki.rsa.generateKeyPair(2048),d=f.pki.createCertificate();return d.publicKey=c.publicKey,d.serialNumber=Math.floor(1e6*Math.random()).toString(),d.validity.notBefore=new Date,d.validity.notAfter=new Date,d.validity.notAfter.setFullYear(d.validity.notBefore.getFullYear()+1),d.setSubject([{name:"commonName",value:a}]),d.setIssuer(b.cert.subject.attributes),d.setExtensions([{name:"basicConstraints",cA:!1},{name:"keyUsage",digitalSignature:!0,keyEncipherment:!0},{name:"extKeyUsage",serverAuth:!0,clientAuth:!0},{name:"subjectAltName",altNames:[{type:2,value:a},{type:2,value:`*.${a}`}]}]),d.sign(b.key,f.md.sha256.create()),{key:f.pki.privateKeyToPem(c.privateKey),cert:f.pki.certificateToPem(d)}},isCertExpired:w,readRootCAInfo:x,ROOT_CA_CERT_PATH:j,ROOT_CA_KEY_PATH:i,ROOT_CA_CSR_PATH:k,ROOT_CA_PENDING_KEY_PATH:m}},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},17224:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GET:()=>h,POST:()=>j,PUT:()=>i,dynamic:()=>g,runtime:()=>f});var d=c(23211),e=c(49083);let f="nodejs",g="force-dynamic";async function h(a){try{let{searchParams:b}=new URL(a.url),c=Math.max(1,Math.min(200,Number(b.get("limit"))||50)),f=await (0,e.getSnapshot)(c);return d.NextResponse.json({success:!0,...f},{headers:{"Cache-Control":"no-store"}})}catch(a){return d.NextResponse.json({error:a.message||"Failed to read Audit Proxy state"},{status:500})}}async function i(a){try{let b=await a.json(),c=(0,e.updateConfig)(b?.config||b||{});return d.NextResponse.json({success:!0,config:c})}catch(b){let a=/Stop or restart/.test(b.message||"")?409:400;return d.NextResponse.json({error:b.message||"Failed to save Audit Proxy configuration"},{status:a})}}async function j(a){try{let b=await a.json().catch(()=>({})),c=String(b?.action||"").trim().toLowerCase();if("start"===c)return b.config&&(0,e.updateConfig)(b.config),d.NextResponse.json({success:!0,status:await (0,e.startProxy)()});if("stop"===c)return d.NextResponse.json({success:!0,status:await (0,e.stopProxy)()});if("restart"===c)return d.NextResponse.json({success:!0,status:await (0,e.restartProxy)(b.config||null)});if("save-client-host"===c){let a=(0,e.updateClientProxyHost)(b.clientProxyHost);return d.NextResponse.json({success:!0,config:a})}if("save-ip-filter"===c){let a=await (0,e.updateClientIpFilter)({enabled:!0===b.enabled,allowedClientIps:b.allowedClientIps});return d.NextResponse.json({success:!0,...a})}if("test"===c){let a=await (0,e.runSelfTest)();return d.NextResponse.json({success:a.ok,test:a},{status:a.ok?200:500})}if("clear-logs"===c)return(0,e.clearAudit)(),d.NextResponse.json({success:!0});return d.NextResponse.json({error:"action must be start, stop, restart, save-client-host, save-ip-filter, test, or clear-logs"},{status:400})}catch(c){let a=c.message||"Audit Proxy action failed",b=/Invalid client IP|Invalid CIDR|requires at least one/.test(a)?400:500;return d.NextResponse.json({error:a},{status:b})}}},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19771:a=>{"use strict";a.exports=require("process")},21820:a=>{"use strict";a.exports=require("os")},26033:(a,b,c)=>{"use strict";c(33873),c(29021);let{MITM_DIR:d}=c(82193),{generateRootCA:e,loadRootCA:f,generateLeafCert:g}=c(8578);a.exports={generateCert:async function a(){return await e()},getCertForDomain:function(a){try{let b=f(),c=g(a,b);return{key:c.key,cert:c.cert}}catch(b){return console.error(`Failed to generate cert for ${a}:`,b.message),null}}}},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},34631:a=>{"use strict";a.exports=require("tls")},41204:a=>{"use strict";a.exports=require("string_decoder")},43096:(a,b,c)=>{"use strict";let d=c(29021),e=c(33873),{DATA_DIR:f}=c(82193),{normalizeAllowedClientIps:g}=c(5565),h=e.join(f,"audit-gateway"),i=e.join(h,"config.json"),j=e.join(h,"audit.jsonl"),k=Object.freeze({enabled:!1,bindHost:"127.0.0.1",port:3128,clientProxyHost:"",clientIpFilterEnabled:!1,allowedClientIps:[],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});function l(){return{...k,allowedClientIps:[...k.allowedClientIps],allowedHosts:[...k.allowedHosts]}}function m(){d.mkdirSync(h,{recursive:!0})}function n(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 o(a={}){let b={...k,...a},c=Number(b.port);if(!Number.isInteger(c)||c<1||c>65535)throw Error("Proxy port must be between 1 and 65535");let 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=Number(b.retentionDays);if(!Number.isInteger(e)||e<1||e>365)throw Error("Retention days must be between 1 and 365");let f=String(b.bindHost||"127.0.0.1").trim();if(!f||/\s/.test(f))throw Error("Invalid bind address");let h=String(b.clientProxyHost||"").trim();if(/\s/.test(h)||h.includes("://"))throw Error("Client proxy host must be a hostname or IP without protocol");let i=!0===b.clientIpFilterEnabled,j=g(b.allowedClientIps);if(i&&0===j.length)throw Error("Client IP filter requires at least one allowed IP or CIDR");return{enabled:!0===b.enabled,bindHost:f,port:c,clientProxyHost:h,clientIpFilterEnabled:i,allowedClientIps:j,allowedHosts:n(b.allowedHosts),passthroughUnknown:!1!==b.passthroughUnknown,captureBodies:!1!==b.captureBodies,captureLimitBytes:Math.round(d),retentionDays:e,verifyUpstreamTls:!0}}a.exports={AUDIT_DIR:h,CONFIG_PATH:i,AUDIT_LOG_PATH:j,DEFAULT_CONFIG:k,ensureAuditDir:m,loadConfig:function(){if(m(),!d.existsSync(i))return l();try{return o(JSON.parse(d.readFileSync(i,"utf8")))}catch{return l()}},saveConfig:function(a){m();let b=o(a),c=`${i}.tmp`;return d.writeFileSync(c,`${JSON.stringify(b,null,2)}
|
|
19
|
-
`,{mode:384}),d.renameSync(c,i),b},validateConfig:o,normalizeAllowedHosts:n,normalizeAllowedClientIps:g}},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},45372:(a,b,c)=>{"use strict";let d=c(81630),e=c(55591),f=c(91645),g=c(34631),h=c(55511),i=c(74075),{redactHeaders:j,redactBodyText:k,redactUrlPath:l,scrubString:m}=c(48350),n=new Set(["connection","proxy-connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","upgrade"]);function o(a){return String(a||"").trim().replace(/^\[|\]$/g,"").toLowerCase()}function p(a,b=443){let c=String(a||"").trim();if(!c)throw Error("Missing CONNECT authority");if(c.startsWith("[")){let a=c.indexOf("]");if(a<0)throw Error("Invalid IPv6 CONNECT authority");let d=c.slice(1,a),e=c.slice(a+1);return{host:d,port:e.startsWith(":")?Number(e.slice(1)):b}}let d=c.lastIndexOf(":");if(d>0&&c.indexOf(":")===d){let a=Number(c.slice(d+1));if(Number.isInteger(a)&&a>0&&a<=65535)return{host:c.slice(0,d),port:a}}return{host:c,port:b}}function q(a,b=[]){let c=o(a);return b.some(a=>{let b=o(a);if(!b)return!1;if(b===c)return!0;if(b.startsWith("*.")){let a=b.slice(1);return c.endsWith(a)&&c.length>a.length}return!1})}function r(a={},{stripInternal:b=!0}={}){let c=new Set([...n,...String(a.connection||"").split(",").map(a=>a.trim().toLowerCase()).filter(Boolean)]),d={};for(let[e,f]of Object.entries(a||{})){let a=e.toLowerCase();!c.has(a)&&(b&&(a.startsWith("x-9r-")||a.startsWith("x-bluerouter-"))||(d[e]=f))}return d}class s{constructor(a){this.limitBytes=Math.max(0,Number(a)||0),this.parts=[],this.capturedBytes=0,this.totalBytes=0,this.truncated=!1}add(a){if(!a)return;let b=Buffer.isBuffer(a)?a:Buffer.from(a);if(this.totalBytes+=b.length,this.capturedBytes>=this.limitBytes){b.length&&(this.truncated=!0);return}let c=this.limitBytes-this.capturedBytes,d=b.length>c?b.subarray(0,c):b;d.length&&(this.parts.push(Buffer.from(d)),this.capturedBytes+=d.length),d.length<b.length&&(this.truncated=!0)}finish(a="",b=""){let c=Buffer.concat(this.parts),d=String(b||"").trim().toLowerCase(),e=c,f=!1,g=null,h=!1,j=null,l=null;if(this.limitBytes>0&&c.length&&d&&"identity"!==d)if(this.truncated)j=`Compressed ${d} capture was truncated before decode`,l=`[${d} audit body capture truncated; decoded body unavailable]`;else try{let a=Math.max(1048576,Math.min(0x4000000,Math.max(8*this.limitBytes,this.limitBytes))),b=function(a,b,c){let d=String(b||"").split(",").map(a=>a.trim().toLowerCase()).filter(a=>a&&"identity"!==a);if(!d.length||!a.length)return{buffer:a,decoded:!1,contentEncoding:d.join(", ")||null};let e=a;for(let a of[...d].reverse()){let b={maxOutputLength:c};if("br"===a)e=i.brotliDecompressSync(e,b);else if("gzip"===a||"x-gzip"===a)e=i.gunzipSync(e,b);else if("deflate"===a)try{e=i.inflateSync(e,b)}catch(a){e=i.inflateRawSync(e,b)}else if("zstd"===a&&"function"==typeof i.zstdDecompressSync)e=i.zstdDecompressSync(e,b);else throw Error(`Unsupported content-encoding: ${a}`)}return{buffer:e,decoded:!0,contentEncoding:d.join(", ")}}(c,d,a);e=b.buffer,f=b.decoded,g=e.length,e.length>this.limitBytes&&(e=e.subarray(0,this.limitBytes),h=!0)}catch(a){j=m(a?.message||String(a)),l=`[Unable to decode ${d} audit body: ${j}]`}let n=/json|text|javascript|xml|x-www-form-urlencoded|event-stream/i.test(a||"");return{body:null!==l?l:n||!a?k(e.toString("utf8"),a):`[${e.length} bytes captured; binary body omitted]`,capturedBytes:this.capturedBytes,totalBytes:this.totalBytes,truncated:this.truncated||h,...d&&"identity"!==d?{contentEncoding:d}:{},...f?{decoded:!0,decodedBytes:g}:{},...j?{decodeError:j}:{}}}}function t(a){let b=o(a);return"api.anthropic.com"===b||b.endsWith(".anthropic.com")||"claude.ai"===b||b.endsWith(".claude.ai")?"anthropic":"api.openai.com"===b||b.endsWith(".openai.com")||"chatgpt.com"===b||b.endsWith(".chatgpt.com")?"openai":"other"}function u(a){if(!a||"string"!=typeof a)return null;try{let b=JSON.parse(a);return"string"==typeof b?.model?b.model:null}catch{return null}}function v(a,b,c){try{a.end(`HTTP/1.1 ${b}\r
|
|
1
|
+
"use strict";(()=>{var a={};a.id=920,a.ids=[920],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1932:a=>{a.exports=require("url")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{a.exports=require("node:buffer")},4984:a=>{a.exports=require("readline")},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}}},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14985:a=>{a.exports=require("dns")},17224:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>l,POST:()=>n,PUT:()=>m,dynamic:()=>h,revalidate:()=>i,runtime:()=>g});var d=c(23211),e=c(9588),f=c(49083);let g="nodejs",h="force-dynamic",i=0,j={"Cache-Control":"no-store"};async function k(){let{response:a}=await (0,e.hH)();return a}async function l(a){let b=await k();if(b)return b;try{let{searchParams:b}=new URL(a.url),c=Math.max(1,Math.min(500,Number(b.get("limit"))||50)),e=await (0,f.getSnapshot)(c);return d.NextResponse.json({success:!0,...e},{headers:j})}catch(a){return d.NextResponse.json({error:a.message||"Failed to read Audit Proxy state"},{status:500,headers:j})}}async function m(a){let b=await k();if(b)return b;try{let b=await a.json(),c=(0,f.updateConfig)(b?.config||b||{});return d.NextResponse.json({success:!0,config:c},{headers:j})}catch(b){let a=/Stop or restart/.test(b.message||"")?409:400;return d.NextResponse.json({error:b.message||"Failed to save Audit Proxy configuration"},{status:a,headers:j})}}async function n(a){let b=await k();if(b)return b;try{let b=await a.json().catch(()=>({})),c=String(b?.action||"").trim().toLowerCase();if("start"===c)return d.NextResponse.json({success:!0,status:await (0,f.startProxy)(b.config||null)},{headers:j});if("stop"===c)return d.NextResponse.json({success:!0,status:await (0,f.stopProxy)()},{headers:j});if("restart"===c)return d.NextResponse.json({success:!0,status:await (0,f.restartProxy)(b.config||null)},{headers:j});if("save-client-host"===c){let a=(0,f.updateClientProxyHost)(b.clientProxyHost);return d.NextResponse.json({success:!0,config:a},{headers:j})}if("save-ip-filter"===c){let a=await (0,f.updateClientIpFilter)({enabled:!0===b.enabled,allowedClientIps:b.allowedClientIps});return d.NextResponse.json({success:!0,...a},{headers:j})}if("test"===c){let a=await (0,f.runSelfTest)();return d.NextResponse.json({success:a.ok,test:a},{status:a.ok?200:500,headers:j})}if("clear-logs"===c)return await (0,f.clearAudit)(),d.NextResponse.json({success:!0},{headers:j});return d.NextResponse.json({error:"Unsupported Audit Proxy action"},{status:400,headers:j})}catch(c){let a=c.message||"Audit Proxy action failed",b=/Invalid client IP|Invalid CIDR|requires at least one|not allowed|Invalid CONNECT/.test(a)?400:500;return d.NextResponse.json({error:a},{status:b,headers:j})}}},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19771:a=>{a.exports=require("process")},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},34631:a=>{a.exports=require("tls")},41204:a=>{a.exports=require("string_decoder")},43096:(a,b,c)=>{let d=c(29021),e=c(33873),{DATA_DIR:f}=c(82193),{normalizeAllowedClientIps:g}=c(5565),h=e.join(f,"audit-gateway"),i=e.join(h,"config.json"),j=e.join(h,"audit.jsonl"),k=e.join(h,"logs"),l=Object.freeze({enabled:!1,bindHost:"127.0.0.1",port:3128,clientProxyHost:"",clientIpFilterEnabled:!1,allowedClientIps:[],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 m(){return{...l,allowedClientIps:[...l.allowedClientIps],allowedHosts:[...l.allowedHosts],allowedConnectPorts:[...l.allowedConnectPorts]}}function n(){d.mkdirSync(h,{recursive:!0}),d.mkdirSync(k,{recursive:!0})}function o(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 p(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 q(a={}){let b={...l,...a},c=p(b.port,l.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=p(b.retentionDays,l.retentionDays,1,365,"Retention days"),f=p(b.connectTimeoutMs,l.connectTimeoutMs,1e3,12e4,"Connect timeout"),h=p(b.tlsHandshakeTimeoutMs,l.tlsHandshakeTimeoutMs,1e3,12e4,"TLS handshake timeout"),i=p(b.responseHeaderTimeoutMs,l.responseHeaderTimeoutMs,1e3,3e5,"Response header timeout"),j=p(b.idleTimeoutMs,l.idleTimeoutMs,3e4,36e5,"Idle timeout"),k=p(b.shutdownGraceMs,l.shutdownGraceMs,0,3e4,"Shutdown grace period"),m=String(b.bindHost||"127.0.0.1").trim();if(!m||/\s/.test(m))throw Error("Invalid bind address");let n=String(b.clientProxyHost||"").trim();if(/\s/.test(n)||n.includes("://"))throw Error("Client proxy host must be a hostname or IP without protocol");let r=!0===b.clientIpFilterEnabled,s=g(b.allowedClientIps);if(r&&0===s.length)throw Error("Client IP filter requires at least one allowed IP or CIDR");return{enabled:!0===b.enabled,bindHost:m,port:c,clientProxyHost:n,clientIpFilterEnabled:r,allowedClientIps:s,allowedHosts:o(b.allowedHosts),passthroughUnknown:!1!==b.passthroughUnknown,captureBodies:!1!==b.captureBodies,captureLimitBytes:Math.round(d),retentionDays:e,verifyUpstreamTls:!0,connectTimeoutMs:f,tlsHandshakeTimeoutMs:h,responseHeaderTimeoutMs:i,idleTimeoutMs:j,shutdownGraceMs:k,allowPlainHttp:!1,allowedConnectPorts:[443]}}a.exports={AUDIT_DIR:h,CONFIG_PATH:i,AUDIT_LOG_PATH:j,AUDIT_LOG_DIR:k,DEFAULT_CONFIG:l,ensureAuditDir:n,loadConfig:function(){if(n(),!d.existsSync(i))return m();try{return q(JSON.parse(d.readFileSync(i,"utf8")))}catch(a){return console.warn(`[audit-proxy] invalid config ignored: ${a.message||a}`),m()}},saveConfig:function(a){n();let b=q(a),c=`${i}.tmp`;return d.writeFileSync(c,`${JSON.stringify(b,null,2)}
|
|
2
|
+
`,{mode:384}),d.renameSync(c,i),b},validateConfig:q,normalizeAllowedHosts:o,normalizeAllowedClientIps:g}},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},45372:(a,b,c)=>{let d=c(81630),e=c(73496),f=c(55591),g=c(91645),h=c(34631),i=c(55511),j=c(74075),{promisify:k}=c(28354),{redactHeaders:l,redactBodyText:m,redactUrlPath:n,scrubString:o}=c(48350),{resolvePublicTarget:p}=c(78864),q=k(j.brotliDecompress),r=k(j.gunzip),s=k(j.inflate),t=k(j.inflateRaw),u="function"==typeof j.zstdDecompress?k(j.zstdDecompress):null,v=new Set(["connection","proxy-connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","upgrade"]);function w(a){return String(a||"").trim().replace(/^\[|\]$/g,"").toLowerCase()}function x(a,b=443){let c=String(a||"").trim();if(!c)throw Error("Missing CONNECT authority");if(c.startsWith("[")){let a=c.indexOf("]");if(a<0)throw Error("Invalid IPv6 CONNECT authority");let d=c.slice(1,a),e=c.slice(a+1);if(e&&!e.startsWith(":"))throw Error("Invalid IPv6 CONNECT authority");let f=e?Number(e.slice(1)):b;if(!Number.isInteger(f)||f<1||f>65535)throw Error("Invalid CONNECT port");return{host:d,port:f}}let d=c.lastIndexOf(":");if(d>0&&c.indexOf(":")===d){let a=c.slice(d+1);if(!/^\d+$/.test(a))throw Error("Invalid CONNECT port");let b=Number(a);if(!Number.isInteger(b)||b<1||b>65535)throw Error("Invalid CONNECT port");return{host:c.slice(0,d),port:b}}return{host:c,port:b}}function y(a,b=[]){let c=w(a);return b.some(a=>{let b=w(a);if(!b)return!1;if(b===c)return!0;if(b.startsWith("*.")){let a=b.slice(1);return c.endsWith(a)&&c.length>a.length}return!1})}function z(a={},{stripInternal:b=!0}={}){let c=new Set([...v,...String(a.connection||"").split(",").map(a=>a.trim().toLowerCase()).filter(Boolean)]),d={};for(let[e,f]of Object.entries(a||{})){let a=e.toLowerCase();!c.has(a)&&(b&&(a.startsWith("x-9r-")||a.startsWith("x-bluerouter-"))||(d[e]=f))}return d}async function A(a,b,c){let d=String(b||"").split(",").map(a=>a.trim().toLowerCase()).filter(a=>a&&"identity"!==a);if(!d.length||!a.length)return{buffer:a,decoded:!1,contentEncoding:d.join(", ")||null};let e=a;for(let a of[...d].reverse()){let b={maxOutputLength:c};if("br"===a)e=await q(e,b);else if("gzip"===a||"x-gzip"===a)e=await r(e,b);else if("deflate"===a)try{e=await s(e,b)}catch{e=await t(e,b)}else if("zstd"===a&&u)e=await u(e,b);else throw Error(`Unsupported content-encoding: ${a}`)}return{buffer:e,decoded:!0,contentEncoding:d.join(", ")}}class B{constructor(a){this.limitBytes=Math.max(0,Number(a)||0),this.parts=[],this.capturedBytes=0,this.totalBytes=0,this.truncated=!1,this.hash=i.createHash("sha256"),this.finished=!1}add(a){if(!a||this.finished)return;let b=Buffer.isBuffer(a)?a:Buffer.from(a);if(this.hash.update(b),this.totalBytes+=b.length,this.capturedBytes>=this.limitBytes){b.length&&(this.truncated=!0);return}let c=this.limitBytes-this.capturedBytes,d=b.length>c?b.subarray(0,c):b;d.length&&(this.parts.push(Buffer.from(d)),this.capturedBytes+=d.length),d.length<b.length&&(this.truncated=!0)}async finish(a="",b=""){if(this.finished)throw Error("Audit capture was finalized more than once");this.finished=!0;let c=this.hash.digest("hex"),d=Buffer.concat(this.parts),e=String(b||"").trim().toLowerCase(),f=d,g=!1,h=null,i=!1,j=null,k=null;if(this.limitBytes>0&&d.length&&e&&"identity"!==e)if(this.truncated)j=`Compressed ${e} capture was truncated before decode`,k=`[${e} audit body capture truncated; decoded body unavailable]`;else try{let a=Math.max(1048576,Math.min(0x4000000,Math.max(8*this.limitBytes,this.limitBytes))),b=await A(d,e,a);f=b.buffer,g=b.decoded,h=f.length,f.length>this.limitBytes&&(f=f.subarray(0,this.limitBytes),i=!0)}catch(a){j=o(a?.message||String(a)),k=`[Unable to decode ${e} audit body: ${j}]`}let l=/json|text|javascript|xml|x-www-form-urlencoded|event-stream/i.test(a||"");return{body:null!==k?k:l||!a?m(f.toString("utf8"),a):`[${f.length} bytes captured; binary body omitted]`,capturedBytes:this.capturedBytes,totalBytes:this.totalBytes,wireSha256:c,truncated:this.truncated||i,...e&&"identity"!==e?{contentEncoding:e}:{},...g?{decoded:!0,decodedBytes:h}:{},...j?{decodeError:j}:{}}}}function C(a){let b=w(a);return"api.anthropic.com"===b||b.endsWith(".anthropic.com")||"claude.ai"===b||b.endsWith(".claude.ai")?"anthropic":"api.openai.com"===b||b.endsWith(".openai.com")||"chatgpt.com"===b||b.endsWith(".chatgpt.com")?"openai":"other"}function D(a){if(!a||"string"!=typeof a)return null;try{let b=JSON.parse(a);return"string"==typeof b?.model?b.model:null}catch{return null}}function E(a,b,c){try{let d=String(c||b);a.end(`HTTP/1.1 ${b}\r
|
|
20
3
|
Connection: close\r
|
|
21
|
-
Content-Type: text/plain\r
|
|
22
|
-
Content-Length: ${Buffer.byteLength(
|
|
4
|
+
Content-Type: text/plain; charset=utf-8\r
|
|
5
|
+
Content-Length: ${Buffer.byteLength(d)}\r
|
|
23
6
|
\r
|
|
24
|
-
${c}`)}catch{try{a.destroy()}catch{}}}a.exports={createAuditProxy:function(a={},b={}){let c={allowedHosts:[],passthroughUnknown:!0,captureBodies:!0,captureLimitBytes:2097152,verifyUpstreamTls:!0,...a};if(!0!==c.verifyUpstreamTls)throw Error("Upstream TLS verification is mandatory in Audit Proxy mode");let i=b.certificateProvider;if("function"!=typeof i)throw Error("certificateProvider is required");let k="function"==typeof b.onAudit?b.onAudit:()=>{},n=b.upstreamCa,w=d.createServer((a,b)=>{let d=a.socket.__auditTarget;if(!d){b.writeHead(502,{"content-type":"text/plain"}),b.end("Audit target is missing");return}let g=Date.now(),i=new s(c.captureBodies?c.captureLimitBytes:0),p=new s(c.captureBodies?c.captureLimitBytes:0),q=r(a.headers,{stripInternal:!0});q.host=443===d.port?d.host:`${d.host}:${d.port}`;let v=!1,w=(b,c,e)=>{v||(v=!0,Promise.resolve(k(function({req:a,target:b,requestCapture:c,responseCapture:d,responseHeaders:e,statusCode:f,startedAt:g,error:i}){var k;let n,p=c.finish(String(a.headers["content-type"]||""),String(a.headers["content-encoding"]||"")),q=d.finish(String(e?.["content-type"]||""),String(e?.["content-encoding"]||""));return{id:h.randomUUID(),timestamp:new Date().toISOString(),client:{ip:(k=a.socket,(n=k?.remoteAddress||"").startsWith("::ffff:")?n.slice(7):n),port:a.socket?.remotePort||null,userAgent:String(a.headers["user-agent"]||"")},provider:t(b.host),host:o(b.host),port:b.port,method:a.method,path:l(a.url),model:u(p.body),status:f||null,durationMs:Date.now()-g,error:i?m(i.message||i):null,request:{headers:j(a.headers),...p},response:{headers:j(e||{}),...q}}}({req:a,target:d,requestCapture:i,responseCapture:p,responseHeaders:c,statusCode:b,startedAt:g,error:e}))).catch(()=>{}))},x=e.request({hostname:d.host,port:d.port,method:a.method,path:a.url,headers:q,rejectUnauthorized:!0,servername:f.isIP(d.host)?void 0:d.host,ca:n,ALPNProtocols:["http/1.1"]},a=>{let c=r(a.headers,{stripInternal:!1});b.writeHead(a.statusCode||502,c),a.on("data",c=>{p.add(c),b.write(c)||a.pause()}),b.on("drain",()=>a.resume()),a.on("end",()=>{b.end(),w(a.statusCode,a.headers,null)}),a.on("error",c=>{try{b.destroy(c)}catch{}w(a.statusCode,a.headers,c)})});x.on("drain",()=>a.resume()),x.on("error",a=>{if(b.headersSent)try{b.destroy(a)}catch{}else b.writeHead(502,{"content-type":"application/json"}),b.end(JSON.stringify({error:"Verified upstream TLS request failed"}));w(null,{},a)}),a.on("data",b=>{i.add(b),x.write(b)||a.pause()}),a.on("end",()=>x.end()),a.on("aborted",()=>x.destroy(Error("Client request aborted")))});w.on("clientError",(a,b)=>{try{b.destroy()}catch{}});let x=d.createServer((a,b)=>{let c;try{c=new URL(a.url)}catch{b.writeHead(400,{"content-type":"text/plain"}),b.end("HTTP proxy requests must use an absolute URL");return}if("http:"!==c.protocol){b.writeHead(400,{"content-type":"text/plain"}),b.end("Use CONNECT for HTTPS destinations");return}let e=r(a.headers,{stripInternal:!0});e.host=c.host;let f=d.request({hostname:c.hostname,port:c.port?Number(c.port):80,method:a.method,path:`${c.pathname}${c.search}`,headers:e},a=>{b.writeHead(a.statusCode||502,r(a.headers,{stripInternal:!1})),a.pipe(b)});f.on("error",()=>{b.headersSent||b.writeHead(502,{"content-type":"text/plain"}),b.end("HTTP proxy upstream failed")}),a.pipe(f)});return x.on("connect",(a,b,d)=>{let e,h;try{e=p(a.url,443)}catch(a){v(b,"400 Bad Request",a.message);return}if(!q(e.host,c.allowedHosts)){if(!c.passthroughUnknown)return void v(b,"403 Forbidden","Host is not in the audit allowlist");let a=f.connect(e.port,e.host,()=>{b.write("HTTP/1.1 200 Connection Established\r\nProxy-Agent: BlueRouter-Audit\r\n\r\n"),d?.length&&a.write(d),a.pipe(b),b.pipe(a)});return a.on("error",()=>v(b,"502 Bad Gateway","TCP passthrough failed")),void b.on("error",()=>a.destroy())}try{if(h=i(e.host),!h?.key||!h?.cert)throw Error("Certificate provider returned no certificate")}catch(a){v(b,"500 Internal Server Error",`Cannot issue audit certificate: ${a.message}`);return}b.write("HTTP/1.1 200 Connection Established\r\nProxy-Agent: BlueRouter-Audit\r\n\r\n"),d?.length&&b.unshift(d);let j=new g.TLSSocket(b,{isServer:!0,key:h.key,cert:h.cert,ALPNProtocols:["http/1.1"]});j.__auditTarget=e,j.on("error",()=>{try{j.destroy()}catch{}}),w.emit("connection",j)}),x.on("clientError",(a,b)=>{try{b.destroy()}catch{}}),x.auditConfig=c,x},hostMatches:q,parseAuthority:p,stripHopByHop:r,CaptureBuffer:s,detectProvider:t,extractModel:u}},46293:a=>{"use strict";a.exports=require("sql.js")},48350:a=>{"use strict";let b=new Set(["authorization","proxy-authorization","x-api-key","api-key","cookie","set-cookie","x-auth-token","x-access-token","cf-access-jwt-assertion"]),c=/(^|[_-])(access[_-]?token|refresh[_-]?token|id[_-]?token|token|api[_-]?key|apikey|password|passwd|secret|authorization|cookie)($|[_-])/i;function d(a){let c=String(a||"").toLowerCase();return b.has(c)||/token|secret|password|credential/i.test(c)}function e(a,b=new WeakSet){if(null==a||"object"!=typeof a)return a;if(b.has(a))return"[CIRCULAR]";if(b.add(a),Array.isArray(a))return a.map(a=>e(a,b));let d={};for(let[f,g]of Object.entries(a))d[f]=c.test(f)?"[REDACTED]":e(g,b);return d}function f(a){if(null==a)return a;let b=String(a);return(b=(b=b.replace(/\bBearer\s+[A-Za-z0-9._~+\/-]+=*/gi,"Bearer [REDACTED]")).replace(/\b(sk-ant-[A-Za-z0-9_-]{8,}|sk-[A-Za-z0-9_-]{8,})\b/g,"[REDACTED]")).replace(/("(?:access_token|refresh_token|id_token|api_key|apikey|password|secret|authorization)"\s*:\s*")([^"]+)(")/gi,"$1[REDACTED]$3")}a.exports={redactHeaders:function(a={}){let b={};for(let[c,e]of Object.entries(a||{}))b[c]=d(c)?"[REDACTED]":e;return b},redactObject:e,redactBodyText:function(a,b=""){let c=String(a||"");if(/application\/(?:[^;]+\+)?json/i.test(b)||/^[\s\r\n]*[\[{]/.test(c))try{let a=JSON.parse(c);return JSON.stringify(e(a))}catch{}return f(c)},scrubString:f,redactUrlPath:function(a){let b=String(a||"");try{let a=new URL(b,"https://audit.invalid");for(let b of[...a.searchParams.keys()])if(/token|secret|key|password|credential|authorization|^code$/i.test(b))a.searchParams.set(b,"[REDACTED]");else{let c=a.searchParams.get(b);c&&a.searchParams.set(b,f(c))}return`${a.pathname}${a.search}`}catch{return f(b)}},containsLikelySecret:function(a){let b="string"==typeof a?a:JSON.stringify(a);return/Bearer\s+(?!\[REDACTED\])\S+|sk-ant-[A-Za-z0-9_-]{8,}|\bsk-[A-Za-z0-9_-]{8,}/i.test(b||"")},shouldRedactHeader:d}},49083:(a,b,c)=>{"use strict";let d=c(91645),{createAuditProxy:e}=c(45372),{loadConfig:f,saveConfig:g,validateConfig:h,CONFIG_PATH:i,AUDIT_LOG_PATH:j}=c(43096),{clientIpMatches:k,normalizeIp:l}=c(5565),{appendAudit:m,readRecent:n,clearAudit:o,pruneExpired:p}=c(90173),{generateCert:q,getCertForDomain:r}=c(26033),{readRootCAInfo:s}=c(8578),{runSelfTest:t}=c(85252);function u(){return globalThis.__blueRouterAuditProxyRuntime||(globalThis.__blueRouterAuditProxyRuntime={server:null,startedAt:null,lastError:null,autostartPromise:null}),globalThis.__blueRouterAuditProxyRuntime}function v(a){let b=f();return{...a,clientIpFilterEnabled:!0===b.clientIpFilterEnabled,allowedClientIps:[...b.allowedClientIps||[]]}}async function w(a=null){let b=u();if(b.server?.listening)return A();let c=a?g({...v(a),enabled:!1}):f();await q(),p();let d=e(c,{certificateProvider:r,onAudit:m});!function(a,b){if(!b.clientIpFilterEnabled)return;let c=b.allowedClientIps||[];a.prependListener("connection",a=>{let b=l(a?.remoteAddress||"");if(!k(b,c)){console.log(`[audit-proxy] denied client IP ${b||"unknown"}`);try{a.destroy()}catch{}}})}(d,c);try{let a=await new Promise((a,b)=>{let e=a=>{d.removeListener("listening",f),b(a)},f=()=>{d.removeListener("error",e),a(d.address())};d.once("error",e),d.once("listening",f),d.listen(c.port,c.bindHost)});return b.server=d,b.startedAt=new Date().toISOString(),b.lastError=null,g({...c,enabled:!0}),{...await A(),address:a}}catch(a){b.lastError=a.message||String(a);try{d.close()}catch{}throw a}}async function x(){let a=u(),b=f();return b.enabled?a.server?.listening?{started:!1,reason:"already-running",status:await A()}:(a.autostartPromise||(a.autostartPromise=(async()=>{try{let a=await w();return console.log(`[audit-proxy] autostarted on ${b.bindHost}:${b.port}`),{started:!0,status:a}}catch(b){return a.lastError=b?.message||String(b),console.log("[audit-proxy] autostart failed:",a.lastError),{started:!1,error:a.lastError}}finally{a.autostartPromise=null}})()),a.autostartPromise):{started:!1,reason:"disabled"}}async function y({persist:a=!0}={}){let b=u(),c=b.server;return b.server=null,b.startedAt=null,c&&await new Promise(a=>{if(!c?.listening)return a();c.close(()=>a()),setTimeout(a,1500).unref?.()}),a&&g({...f(),enabled:!1}),A()}async function z(a=null){return await y({persist:!1}),a&&g({...v(a),enabled:!1}),w()}async function A(){let a=u(),b=f(),c=!!a.server?.listening,e=!!c&&await function(a,b,c=300){return new Promise(e=>{let f=d.connect(b,a),g=a=>{try{f.destroy()}catch{}e(a)};f.setTimeout(c,()=>g(!1)),f.once("connect",()=>g(!0)),f.once("error",()=>g(!1))})}("0.0.0.0"===b.bindHost?"127.0.0.1":b.bindHost,b.port);return{running:c,listening:e,startedAt:a.startedAt,lastError:a.lastError,address:c?a.server.address():null,configPath:i,auditLogPath:j,rootCA:s()}}async function B({enabled:a,allowedClientIps:b}={}){let c=u(),d=h({...f(),clientIpFilterEnabled:!0===a,allowedClientIps:b});if(c.server?.listening){await y({persist:!1}),g({...d,enabled:!1});let a=await w();return{config:f(),status:a,restarted:!0}}return{config:g(d),status:await A(),restarted:!1}}a.exports={startProxy:w,ensureAuditProxyAutostart:x,stopProxy:y,restartProxy:z,getStatus:A,getSnapshot:function(a=50){let b=f();return Promise.resolve(A()).then(c=>({config:b,status:c,events:n(a)}))},updateConfig:function(a){let b=u();if(b.server?.listening)throw Error("Stop or restart the Audit Proxy before changing its configuration");return g(h(v(a)))},updateClientProxyHost:function(a){return g(h({...f(),clientProxyHost:String(a||"").trim()}))},updateClientIpFilter:B,clearAudit:o,runSelfTest:t}},51455:a=>{"use strict";a.exports=require("node:fs/promises")},53053:a=>{"use strict";a.exports=require("node:diagnostics_channel")},55511:a=>{"use strict";a.exports=require("crypto")},55591:a=>{"use strict";a.exports=require("https")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},63057:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>z,patchFetch:()=>y,routeModule:()=>u,serverHooks:()=>x,workAsyncStorage:()=>v,workUnitAsyncStorage:()=>w});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(37527);let u=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/audit-proxy/route",pathname:"/api/audit-proxy",filename:"route",bundlePath:"app/api/audit-proxy/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"D:\\bluerouter\\src\\app\\api\\audit-proxy\\route.js",nextConfigOutput:"standalone",userland:()=>c(17224),...{}}),{workAsyncStorage:v,workUnitAsyncStorage:w,serverHooks:x}=u;function y(){return(0,f.patchFetch)({workAsyncStorage:v,workUnitAsyncStorage:w})}async function z(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),u.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/audit-proxy/route";"/index"===d&&(d="/");let f=await u.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!f)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:v,deploymentId:w,params:x,nextConfig:y,parsedUrl:z,isDraftMode:A,prerenderManifest:B,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,resolvedPathname:F,clientReferenceManifest:G,serverActionsManifest:H}=f,I=(0,j.normalizeAppPath)(d),J=!!(B.dynamicRoutes[I]||B.routes[F]),K=async()=>((null==C?void 0:C.render404)?await C.render404(a,b,z,!1):b.end("This page could not be found"),null);if(J&&!A){let a=!!B.routes[F],b=B.dynamicRoutes[I];if(b&&!1===b.fallback&&!a){if(y.adapterPath)return await K();throw new s.NoFallbackError}}let L=null;!J||u.isDev||A||(L="/index"===(L=F)?"/":L);let M=!0===u.isDev||!J,N=J&&!M;H&&G&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:G,serverActionsManifest:H});let O=a.method||"GET",P=(0,h.getTracer)(),Q=P.getActiveScopeSpan(),R=!!(null==C?void 0:C.isWrappedByNextServer),S=!!(0,g.getRequestMeta)(a,"minimalMode"),T=(0,g.getRequestMeta)(a,"incrementalCache")||await u.getIncrementalCache(a,y,B,S);null==T||T.resetRequestCache(),globalThis.__incrementalCache=T;let U={params:x,previewProps:B.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts,useCacheTimeout:y.experimental.useCacheTimeout},cacheComponents:!!y.cacheComponents,validationLevel:y.experimental.instantInsights.validationLevel,supportsDynamicResponse:M,incrementalCache:T,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:y.cacheLife,staticPageGenerationTimeout:y.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>u.onRequestError(a,b,d,e,C)},sharedContext:{buildId:v,deploymentId:w}},V=new k.NodeNextRequest(a),W=new k.NodeNextResponse(b),X=l.NextRequestAdapter.fromNodeNextRequest(V,(0,l.signalFromNodeResponse)(b)),Y=async({previousCacheEntry:e})=>{try{if(!S&&D&&E&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await u.handle(X,U);a.fetchMetrics=U.renderOpts.fetchMetrics;let f=U.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=U.renderOpts.collectedTags;if(!J)return await (0,o.I)(V,W,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?y.expireTime:void 0:U.renderOpts.collectedExpire;return{value:{kind:t.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await u.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),b}},Z=async(d,f)=>{try{var g,i;let d=await u.handleResponse({req:a,nextConfig:y,cacheKey:L,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:B,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,responseGenerator:Y,waitUntil:c.waitUntil,isMinimalMode:S});if(!J)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==t.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});S||b.setHeader("x-nextjs-cache",D?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),A&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);S&&J||f.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(V,W,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(b){if(b instanceof s.NoFallbackError||await u.onRequestError(a,b,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),J)throw b;await (0,o.I)(V,W,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=P.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||I,g=`${O} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":g}),d.updateName(g),f&&f!==d&&(f.setAttribute("http.route",e),f.updateName(g))})()}};if(R&&Q)await Z(Q,void 0);else{let b=P.getActiveScopeSpan();await P.withPropagatedContext(a.headers,()=>P.trace(m.BaseServerSpan.handleRequest,{spanName:`${O} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":O,"http.target":a.url}},a=>Z(a,b)),void 0,!R)}}},64939:a=>{"use strict";a.exports=import("pg")},66136:a=>{"use strict";a.exports=require("timers")},73024:a=>{"use strict";a.exports=require("node:fs")},74075:a=>{"use strict";a.exports=require("zlib")},76760:a=>{"use strict";a.exports=require("node:path")},77598:a=>{"use strict";a.exports=require("node:crypto")},78335:()=>{},79428:a=>{"use strict";a.exports=require("buffer")},79646:a=>{"use strict";a.exports=require("child_process")},79748:a=>{"use strict";a.exports=require("fs/promises")},80099:a=>{"use strict";a.exports=require("node:sqlite")},81630:a=>{"use strict";a.exports=require("http")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},82193:(a,b,c)=>{"use strict";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}},85252:(a,b,c)=>{"use strict";let d=c(55591),e=c(91645),f=c(34631),g=c(74075),h=c(15296),{createAuditProxy:i,CaptureBuffer:j}=c(45372),{containsLikelySecret:k}=c(48350),{clientIpMatches:l,normalizeAllowedClientIps:m}=c(5565);function n(a){let b=h.pki.rsa.generateKeyPair(2048),c=h.pki.createCertificate();c.publicKey=b.publicKey,c.serialNumber=String(Date.now()),c.validity.notBefore=new Date(Date.now()-6e4),c.validity.notAfter=new Date(Date.now()+864e5);let d=[{name:"commonName",value:a}];return c.setSubject(d),c.setIssuer(d),c.setExtensions([{name:"basicConstraints",cA:!0,critical:!0},{name:"keyUsage",keyCertSign:!0,cRLSign:!0,critical:!0}]),c.sign(b.privateKey,h.md.sha256.create()),{cert:c,keys:b,certPem:h.pki.certificateToPem(c)}}function o(a,b){let c=h.pki.rsa.generateKeyPair(2048),d=h.pki.createCertificate();return d.publicKey=c.publicKey,d.serialNumber=`${Date.now()}${Math.floor(1e3*Math.random())}`,d.validity.notBefore=new Date(Date.now()-6e4),d.validity.notAfter=new Date(Date.now()+864e5),d.setSubject([{name:"commonName",value:b}]),d.setIssuer(a.cert.subject.attributes),d.setExtensions([{name:"basicConstraints",cA:!1},{name:"keyUsage",digitalSignature:!0,keyEncipherment:!0},{name:"extKeyUsage",serverAuth:!0},{name:"subjectAltName",altNames:[{type:2,value:b}]}]),d.sign(a.keys.privateKey,h.md.sha256.create()),{cert:h.pki.certificateToPem(d),key:h.pki.privateKeyToPem(c.privateKey)}}function p(a,b="127.0.0.1"){return new Promise((c,d)=>{a.once("error",d),a.listen(0,b,()=>{a.removeListener("error",d),c(a.address())})})}function q(a){return new Promise(b=>{if(!a?.listening)return b();a.close(()=>b()),setTimeout(b,500).unref?.()})}a.exports={runSelfTest:async function(){let a,b=Date.now(),c=[],h=(a,b,d="")=>c.push({name:a,ok:!!b,detail:d}),r=m(["172.16.253.3","10.20.30.0/24","2001:db8::/64"]);h("Client IP exact allowlist match",l("::ffff:172.16.253.3",r)),h("Client IPv4 CIDR allowlist match",l("10.20.30.77",r)),h("Client IPv6 CIDR allowlist match",l("2001:db8::1234",r)),h("Client IP outside allowlist denied",!l("10.20.31.77",r));let s=JSON.stringify({type:"message",content:[{type:"text",text:"brotli audit ok"}]}),t=new j(1048576);t.add(g.brotliCompressSync(Buffer.from(s)));let u=t.finish("application/json","br");h("Brotli audit body decoded",!0===u.decoded&&u.body.includes("brotli audit ok")&&!u.decodeError);let v=n("BlueRouter Audit Self Test Upstream CA"),w=o(v,"localhost"),x=n("BlueRouter Audit Self Test Proxy CA"),y=o(x,"localhost"),z=null,A=d.createServer({key:w.key,cert:w.cert},(a,b)=>{let c=[];a.on("data",a=>c.push(Buffer.from(a))),a.on("end",()=>{z={authorization:a.headers.authorization,apiKey:a.headers["x-api-key"],internalHeader:a.headers["x-9r-source-tool"],body:Buffer.concat(c).toString("utf8")},b.writeHead(200,{"content-type":"text/event-stream","cache-control":"no-cache"}),b.write('data: {"delta":"one"}\n\n'),setTimeout(()=>{b.write('data: {"delta":"two"}\n\n'),b.end()},20)})}),B=[];try{var C,D;let b=await p(A);a=i({allowedHosts:["localhost"],passthroughUnknown:!1,captureBodies:!0,captureLimitBytes:1048576,verifyUpstreamTls:!0},{certificateProvider:()=>y,upstreamCa:v.certPem,onAudit:a=>B.push(a)});let c=await p(a),d=await (C=c.port,D=`localhost:${b.port}`,new Promise((a,b)=>{let c=e.connect(C,"127.0.0.1"),d=Buffer.alloc(0),f=setTimeout(()=>b(Error("CONNECT timeout")),5e3);c.once("error",b),c.once("connect",()=>{c.write(`CONNECT ${D} HTTP/1.1\r
|
|
25
|
-
Host: ${
|
|
7
|
+
${d}`)}catch{try{a.destroy()}catch{}}}function F(a={}){let b={};for(let[c,d]of Object.entries(a||{}))b[c]=d;return b}async function G(a){let b=await a.requestCapture.finish(String(a.requestHeaders["content-type"]||""),String(a.requestHeaders["content-encoding"]||"")),c=await a.responseCapture.finish(String(a.responseHeaders?.["content-type"]||""),String(a.responseHeaders?.["content-encoding"]||""));return{id:i.randomUUID(),timestamp:new Date().toISOString(),protocol:a.protocol||"http/1.1",client:{ip:a.clientIp||"",port:a.clientPort||null,userAgent:String(a.requestHeaders["user-agent"]||"")},provider:C(a.target.host),host:w(a.target.host),port:a.target.port,method:a.method,path:n(a.path),model:D(b.body),status:a.statusCode||null,durationMs:Date.now()-a.startedAt,error:a.error?o(a.error.message||a.error):null,request:{headers:l(a.requestHeaders),...b},response:{headers:l(a.responseHeaders||{}),...c}}}a.exports={createAuditProxy:function(a={},b={}){let c={allowedHosts:[],passthroughUnknown:!0,captureBodies:!0,captureLimitBytes:2097152,verifyUpstreamTls:!0,allowedConnectPorts:[443],connectTimeoutMs:1e4,tlsHandshakeTimeoutMs:1e4,responseHeaderTimeoutMs:3e4,idleTimeoutMs:9e5,allowPlainHttp:!1,...a};if(!0!==c.verifyUpstreamTls)throw Error("Upstream TLS verification is mandatory in Audit Proxy mode");let i=b.certificateProvider;if("function"!=typeof i)throw Error("certificateProvider is required");let j="function"==typeof b.onAudit?b.onAudit:()=>{},k="function"==typeof b.onAuditJob?b.onAuditJob:null,l="function"==typeof b.resolveTarget?b.resolveTarget:(a,b)=>p(a,b,{allowedPorts:c.allowedConnectPorts}),m=b.upstreamCa,n=new Set,o=new Map,q=new WeakMap,r=new Set;function s(a){return!a||n.has(a)||(n.add(a),a.once?.("close",()=>n.delete(a))),a}function t(a,b){try{"function"==typeof a.destroy?a.destroy(b):"function"==typeof a.close&&a.close()}catch{}}function u(a){let b=()=>G(a);if(k){try{k(b)}catch(a){console.warn("[audit-proxy] audit enqueue failed:",a?.message||a)}return}setImmediate(()=>{Promise.resolve().then(b).then(j).catch(a=>console.warn("[audit-proxy] audit callback failed:",a?.message||a))})}function v({requestHeaders:a,method:b,path:c,target:d,requestCapture:e,responseCapture:f,responseHeaders:g,statusCode:h,startedAt:i,error:j,socket:k,protocol:l}){let m;return{requestHeaders:F(a),method:b,path:c,target:d,requestCapture:e,responseCapture:f,responseHeaders:F(g),statusCode:h,startedAt:i,error:j,clientIp:(m=k?.remoteAddress||"").startsWith("::ffff:")?m.slice(7):m,clientPort:k?.remotePort||null,protocol:l}}async function w(a,b,{expectContinue:d=!1}={}){let e=a.socket.__auditTarget;if(!e){b.writeHead(502,{"content-type":"text/plain"}),b.end("Audit target is missing");return}let h=Date.now(),i=new B(c.captureBodies?c.captureLimitBytes:0),j=new B(c.captureBodies?c.captureLimitBytes:0),k=z(a.headers,{stripInternal:!0});k.host=443===e.port?e.host:`${e.host}:${e.port}`;let n=null,p=null,q={},r=null,t=!1,x=!1,y=null,A=(b=null)=>{t||(t=!0,y&&clearTimeout(y),u(v({requestHeaders:a.headers,method:a.method,path:a.url,target:e,requestCapture:i,responseCapture:j,responseHeaders:q,statusCode:r,startedAt:h,error:b,socket:a.socket,protocol:"http/1.1"})))};try{let h,t,u=await l(e.host,e.port);(n=f.request({hostname:e.host,port:e.port,method:a.method,path:a.url,headers:k,rejectUnauthorized:!0,servername:g.isIP(e.host)?void 0:e.host,ca:m,ALPNProtocols:["http/1.1"],lookup:u.lookup,autoSelectFamily:!0,agent:(h=`${e.host}:${e.port}`,(t=o.get(h))||(t=new f.Agent({keepAlive:!0,maxSockets:32,maxFreeSockets:8,timeout:c.idleTimeoutMs}),o.set(h,t)),t)})).on("socket",a=>{if(s(a),a.setNoDelay(!0),a.setKeepAlive(!0,3e4),a.setTimeout(c.idleTimeoutMs,()=>a.destroy(Error("Upstream idle timeout"))),a.connecting){let b=setTimeout(()=>a.destroy(Error("Upstream TLS connect timeout")),c.connectTimeoutMs+c.tlsHandshakeTimeoutMs);b.unref?.();let d=()=>clearTimeout(b);a.once("secureConnect",d),a.once("error",d),a.once("close",d)}}),n.on("continue",()=>{d&&!b.headersSent&&b.writeContinue()}),n.on("information",a=>{102===a.statusCode&&"function"==typeof b.writeProcessing&&b.writeProcessing(),103===a.statusCode&&"function"==typeof b.writeEarlyHints&&b.writeEarlyHints(a.headers||{})}),n.on("response",a=>{p=a,y&&clearTimeout(y),r=a.statusCode||502,q=F(a.headers||{});let c=z(a.headers,{stripInternal:!1});b.writeHead(r,c),b.flushHeaders?.(),a.on("data",c=>{j.add(c),b.write(c)||a.pause()}),b.on("drain",()=>a.resume()),a.on("aborted",()=>{let a=Error("Upstream response aborted");b.destroyed||b.destroy(a),A(a)}),a.on("error",a=>{b.destroyed||b.destroy(a),A(a)}),a.on("end",()=>{if(a.trailers&&Object.keys(a.trailers).length)try{b.addTrailers(z(a.trailers,{stripInternal:!1}))}catch{}x=!0,b.end(),A(null)})}),n.on("error",a=>{b.headersSent?b.destroyed||b.destroy(a):(b.writeHead(502,{"content-type":"application/json"}),b.end(JSON.stringify({error:"Verified upstream TLS request failed"})),x=!0),A(a)}),a.on("data",b=>{i.add(b),n.write(b)||a.pause()}),n.on("drain",()=>a.resume()),a.on("end",()=>{if(a.trailers&&Object.keys(a.trailers).length)try{n.addTrailers(z(a.trailers,{stripInternal:!0}))}catch{}n.end(),y=setTimeout(()=>n.destroy(Error("Upstream response header timeout")),c.responseHeaderTimeoutMs),y.unref?.()}),a.on("aborted",()=>n.destroy(Error("Client request aborted"))),a.on("error",a=>n.destroy(a)),b.on("close",()=>{x||(p?.destroy(Error("Client response closed")),n?.destroy(Error("Client response closed")),A(Error("Client response closed")))})}catch(a){b.headersSent||(b.writeHead(502,{"content-type":"application/json"}),b.end(JSON.stringify({error:"Destination validation or connection failed"})),x=!0),A(a)}}let A=d.createServer((a,b)=>{w(a,b)});async function C(a){return a.upstreamPromise||(a.upstreamPromise=(async()=>{let b=a.target,d=await l(b.host,b.port),f=s(h.connect({host:b.host,port:b.port,servername:g.isIP(b.host)?void 0:b.host,rejectUnauthorized:!0,ca:m,ALPNProtocols:["h2"],lookup:d.lookup,autoSelectFamily:!0}));f.setNoDelay(!0),f.setKeepAlive(!0,3e4);let i=setTimeout(()=>f.destroy(Error("Upstream HTTP/2 TLS connect timeout")),c.connectTimeoutMs+c.tlsHandshakeTimeoutMs);i.unref?.(),f.once("secureConnect",()=>{clearTimeout(i),"h2"!==f.alpnProtocol&&f.destroy(Error("Upstream did not negotiate HTTP/2"))}),f.once("error",()=>clearTimeout(i)),f.once("close",()=>clearTimeout(i));let j=`https://${b.host}${443===b.port?"":`:${b.port}`}`,k=e.connect(j,{createConnection:()=>f,settings:{enablePush:!1}});return r.add(k),k.setTimeout(c.idleTimeoutMs,()=>k.destroy(Error("Upstream HTTP/2 idle timeout"))),k.once("close",()=>r.delete(k)),await new Promise((a,b)=>{let d=setTimeout(()=>b(Error("Upstream HTTP/2 session timeout")),c.connectTimeoutMs+c.tlsHandshakeTimeoutMs);d.unref?.();let e=(a,b)=>{clearTimeout(d),k.removeListener("connect",f),k.removeListener("error",g),a(b)},f=()=>e(a,k),g=a=>e(b,a);k.once("connect",f),k.once("error",g)}),k})().catch(b=>{throw a.upstreamPromise=null,b})),a.upstreamPromise}async function D(a,b){let d=q.get(a.session),f=d?.target;if(!d||!f){a.respond({":status":502,"content-type":"text/plain"}),a.end("Audit target is missing");return}a.pause();let g=Date.now(),h=new B(c.captureBodies?c.captureLimitBytes:0),i=new B(c.captureBodies?c.captureLimitBytes:0),j={},k=null,l=!1,m=!1,n=null,o=null,p=null,r=(c=null)=>{l||(l=!0,u(v({requestHeaders:b,method:b[":method"]||"GET",path:b[":path"]||"/",target:f,requestCapture:h,responseCapture:i,responseHeaders:j,statusCode:k,startedAt:g,error:c,socket:a.session.socket,protocol:"h2"})))};try{(n=(await C(d)).request(function(a,b){let c=z(a,{stripInternal:!0}),d={":method":a[":method"]||"GET",":path":a[":path"]||"/",":scheme":"https",":authority":443===b.port?b.host:`${b.host}:${b.port}`};for(let[a,b]of Object.entries(c))a.startsWith(":")||(d[a.toLowerCase()]=b);return d}(b,f),{endStream:!1,waitForTrailers:!0})).setTimeout(c.idleTimeoutMs,()=>n.close(e.constants.NGHTTP2_CANCEL)),a.setTimeout(c.idleTimeoutMs,()=>a.close(e.constants.NGHTTP2_CANCEL)),n.on("response",b=>{j=F(b),k=Number(b[":status"]||502),a.respond(function(a){let b=z(a,{stripInternal:!1}),c={":status":Number(a[":status"]||502)};for(let[a,d]of Object.entries(b))a.startsWith(":")||(c[a.toLowerCase()]=d);return c}(b),{waitForTrailers:!0})}),n.on("trailers",a=>{p=z(a,{stripInternal:!1})}),a.on("wantTrailers",()=>{try{a.sendTrailers(p||{})}catch{}}),a.on("trailers",a=>{o=z(a,{stripInternal:!0})}),n.on("wantTrailers",()=>{try{n.sendTrailers(o||{})}catch{}}),a.on("data",b=>{h.add(b),n.write(b)||a.pause()}),n.on("drain",()=>a.resume()),a.on("end",()=>n.end()),n.on("data",b=>{i.add(b),a.write(b)||n.pause()}),a.on("drain",()=>n.resume()),n.on("end",()=>{m=!0,a.end(),r(null)}),n.on("aborted",()=>{let b=Error("Upstream HTTP/2 stream aborted");a.close(e.constants.NGHTTP2_INTERNAL_ERROR),r(b)}),n.on("error",b=>{a.closed||a.close(e.constants.NGHTTP2_INTERNAL_ERROR),r(b)}),a.on("aborted",()=>{n.close(e.constants.NGHTTP2_CANCEL),r(Error("Client HTTP/2 stream aborted"))}),a.on("error",a=>{n.close(e.constants.NGHTTP2_CANCEL),r(a)}),a.on("close",()=>{m||!n||n.closed||(n.close(e.constants.NGHTTP2_CANCEL),r(Error("Client HTTP/2 stream closed")))}),a.resume()}catch(b){a.headersSent||a.closed||a.respond({":status":502,"content-type":"application/json"}),a.closed||a.end(JSON.stringify({error:"Verified upstream HTTP/2 request failed"})),r(b)}}A.on("checkContinue",(a,b)=>{w(a,b,{expectContinue:!0})}),A.on("clientError",(a,b)=>t(b)),A.headersTimeout=c.responseHeaderTimeoutMs,A.requestTimeout=0,A.keepAliveTimeout=c.idleTimeoutMs;let H=e.createServer({settings:{enablePush:!1}});H.on("session",a=>{let b={target:a.socket.__auditTarget,upstreamPromise:null};q.set(a,b),a.setTimeout(c.idleTimeoutMs,()=>a.destroy(Error("Client HTTP/2 idle timeout"))),a.once("close",()=>{Promise.resolve(b.upstreamPromise).then(a=>a?.close()).catch(()=>{})})}),H.on("stream",(a,b)=>{D(a,b)}),H.on("sessionError",a=>{console.warn("[audit-proxy] HTTP/2 client session error:",a?.message||a)});let I=d.createServer((a,b)=>{b.writeHead(403,{"content-type":"text/plain; charset=utf-8",connection:"close"}),b.end("Audit Proxy accepts HTTPS CONNECT traffic only")});return I.on("connect",(a,b,d)=>{(async()=>{let e,f;try{e=x(a.url,443),await l(e.host,e.port)}catch(a){E(b,"403 Forbidden",a.message||"Destination is not allowed");return}if(!y(e.host,c.allowedHosts)){if(!c.passthroughUnknown)return void E(b,"403 Forbidden","Host is not in the audit allowlist");let a=!1;try{let f=await l(e.host,e.port),h=s(g.connect({host:e.host,port:e.port,lookup:f.lookup,autoSelectFamily:!0})),i=setTimeout(()=>h.destroy(Error("TCP passthrough connect timeout")),c.connectTimeoutMs);i.unref?.(),h.setNoDelay(!0),h.setKeepAlive(!0,3e4),h.setTimeout(c.idleTimeoutMs,()=>h.destroy(Error("TCP passthrough idle timeout"))),h.once("connect",()=>{clearTimeout(i),a=!0,b.write("HTTP/1.1 200 Connection Established\r\nProxy-Agent: BlueRouter-Audit\r\n\r\n"),d?.length&&h.write(d),h.pipe(b),b.pipe(h)}),h.once("error",()=>{clearTimeout(i),a?t(b):E(b,"502 Bad Gateway","TCP passthrough failed")}),b.once("error",()=>t(h)),b.once("close",()=>t(h))}catch(a){E(b,"502 Bad Gateway",a.message||"TCP passthrough failed")}return}try{if(f=i(e.host),!f?.key||!f?.cert)throw Error("Certificate provider returned no certificate")}catch(a){E(b,"500 Internal Server Error",`Cannot issue audit certificate: ${a.message}`);return}b.write("HTTP/1.1 200 Connection Established\r\nProxy-Agent: BlueRouter-Audit\r\n\r\n"),d?.length&&b.unshift(d);let j=s(new h.TLSSocket(b,{isServer:!0,key:f.key,cert:f.cert,ALPNProtocols:["h2","http/1.1"]}));j.__auditTarget=e,j.setNoDelay(!0),j.setKeepAlive(!0,3e4),j.setTimeout(c.idleTimeoutMs,()=>j.destroy(Error("Client TLS idle timeout")));let k=setTimeout(()=>j.destroy(Error("Client TLS handshake timeout")),c.tlsHandshakeTimeoutMs);k.unref?.();let m=!1,n=()=>{m||(m=!0,clearTimeout(k),"h2"===j.alpnProtocol?H.emit("connection",j):A.emit("connection",j))};j.once("secure",n),j.once("secureConnect",n),j.once("error",()=>{clearTimeout(k),t(j)}),j.once("close",()=>clearTimeout(k))})().catch(a=>E(b,"500 Internal Server Error",a.message||"Audit CONNECT failed"))}),I.prependListener("connection",a=>{s(a),a.setNoDelay(!0),a.setKeepAlive(!0,3e4)}),I.on("upgrade",(a,b)=>E(b,"403 Forbidden","Protocol upgrade is not supported")),I.on("clientError",(a,b)=>t(b)),I.headersTimeout=c.responseHeaderTimeoutMs,I.requestTimeout=0,I.keepAliveTimeout=c.idleTimeoutMs,I.forceCloseAll=()=>{for(let a of r)try{a.destroy()}catch{}for(let a of o.values())try{a.destroy()}catch{}for(let a of[...n])t(a)},I.getActiveConnectionCount=()=>n.size,I.auditConfig=c,I.auditCapabilities={http1:!0,http2:!0,plainHttp:!1,publicConnectPorts:[...c.allowedConnectPorts]},I},hostMatches:y,parseAuthority:x,stripHopByHop:z,CaptureBuffer:B,detectProvider:C,extractModel:D,decodeCapturedBuffer:A}},46293:a=>{a.exports=require("sql.js")},48350:a=>{let b=new Set(["authorization","proxy-authorization","x-api-key","api-key","cookie","set-cookie","x-auth-token","x-access-token","cf-access-jwt-assertion"]),c=/(^|[_-])(access[_-]?token|refresh[_-]?token|id[_-]?token|token|api[_-]?key|apikey|password|passwd|secret|authorization|cookie)($|[_-])/i;function d(a){let c=String(a||"").toLowerCase();return b.has(c)||/token|secret|password|credential/i.test(c)}function e(a,b=new WeakSet){if(null==a||"object"!=typeof a)return a;if(b.has(a))return"[CIRCULAR]";if(b.add(a),Array.isArray(a))return a.map(a=>e(a,b));let d={};for(let[f,g]of Object.entries(a))d[f]=c.test(f)?"[REDACTED]":e(g,b);return d}function f(a){if(null==a)return a;let b=String(a);return(b=(b=b.replace(/\bBearer\s+[A-Za-z0-9._~+\/-]+=*/gi,"Bearer [REDACTED]")).replace(/\b(sk-ant-[A-Za-z0-9_-]{8,}|sk-[A-Za-z0-9_-]{8,})\b/g,"[REDACTED]")).replace(/("(?:access_token|refresh_token|id_token|api_key|apikey|password|secret|authorization)"\s*:\s*")([^"]+)(")/gi,"$1[REDACTED]$3")}a.exports={redactHeaders:function(a={}){let b={};for(let[c,e]of Object.entries(a||{}))b[c]=d(c)?"[REDACTED]":e;return b},redactObject:e,redactBodyText:function(a,b=""){let c=String(a||"");if(/application\/(?:[^;]+\+)?json/i.test(b)||/^[\s\r\n]*[\[{]/.test(c))try{let a=JSON.parse(c);return JSON.stringify(e(a))}catch{}return f(c)},scrubString:f,redactUrlPath:function(a){let b=String(a||"");try{let a=new URL(b,"https://audit.invalid");for(let b of[...a.searchParams.keys()])if(/token|secret|key|password|credential|authorization|^code$/i.test(b))a.searchParams.set(b,"[REDACTED]");else{let c=a.searchParams.get(b);c&&a.searchParams.set(b,f(c))}return`${a.pathname}${a.search}`}catch{return f(b)}},containsLikelySecret:function(a){let b="string"==typeof a?a:JSON.stringify(a);return/Bearer\s+(?!\[REDACTED\])\S+|sk-ant-[A-Za-z0-9_-]{8,}|\bsk-[A-Za-z0-9_-]{8,}/i.test(b||"")},shouldRedactHeader:d}},49083:(a,b,c)=>{let{createAuditProxy:d}=c(45372),{loadConfig:e,saveConfig:f,validateConfig:g,CONFIG_PATH:h,AUDIT_LOG_PATH:i,AUDIT_LOG_DIR:j}=c(43096),{clientIpMatches:k,normalizeIp:l}=c(5565),{enqueueAuditJob:m,readRecent:n,clearAudit:o,pruneExpired:p,startAuditMaintenance:q,stopAuditMaintenance:r,flushAuditQueue:s,getAuditStoreStats:t}=c(90173),{ensureAuditRootCA:u,createAuditCertificateProvider:v,validateRootCaPair:w}=c(85074),{readRootCAInfo:x}=c(8578),{runSelfTest:y}=c(85252);function z(){return globalThis.__blueRouterAuditProxyRuntime||(globalThis.__blueRouterAuditProxyRuntime={server:null,certificateProvider:null,startedAt:null,lastError:null,autostartPromise:null,lifecycle:Promise.resolve()}),globalThis.__blueRouterAuditProxyRuntime}function A(a){let b=z(),c=b.lifecycle.then(a,a);return b.lifecycle=c.catch(()=>{}),c}async function B(a,b=1500){if(!a)return;let c=Math.max(0,Number(b)||0);await new Promise(b=>{let d=!1,e=()=>{d||(d=!0,b())};try{a.listening?a.close(e):e()}catch{e()}let f=setTimeout(()=>{try{a.forceCloseAll?.()}catch{}},c);f.unref?.();let g=setTimeout(e,c+2e3);g.unref?.()});try{a.forceCloseAll?.()}catch{}}function C(a){let b=e();return{...a,clientIpFilterEnabled:!0===b.clientIpFilterEnabled,allowedClientIps:[...b.allowedClientIps||[]]}}async function D(a=null){let b=z();if(b.server?.listening)return I();let c=a?f({...C(a),enabled:!1}):e();await u(),await p(),q();let g=v({maxEntries:128});g.prewarm(c.allowedHosts);let h=d(c,{certificateProvider:g,onAuditJob:m});!function(a,b){if(!b.clientIpFilterEnabled)return;let c=b.allowedClientIps||[];a.prependListener("connection",a=>{let b=l(a?.remoteAddress||"");if(!k(b,c)){console.log(`[audit-proxy] denied client IP ${b||"unknown"}`);try{a.destroy()}catch{}}})}(h,c);try{let a=await new Promise((a,b)=>{let d=a=>{h.removeListener("listening",e),b(a)},e=()=>{h.removeListener("error",d),a(h.address())};h.once("error",d),h.once("listening",e),h.listen(c.port,c.bindHost)});return b.server=h,b.certificateProvider=g,b.startedAt=new Date().toISOString(),b.lastError=null,f({...c,enabled:!0}),{...await I(),address:a}}catch(a){b.lastError=a.message||String(a);try{h.forceCloseAll?.()}catch{}try{h.close()}catch{}throw g.clear?.(),a}}async function E({persist:a=!0}={}){let b=z(),c=b.server,d=e();return b.server=null,b.startedAt=null,await B(c,d.shutdownGraceMs),b.certificateProvider?.clear?.(),b.certificateProvider=null,await s(3e3),r(),a&&f({...d,enabled:!1}),I()}async function F(a=null){return await E({persist:!1}),a&&f({...C(a),enabled:!1}),D()}function G(a=null){return A(()=>D(a))}async function H(){let a=z(),b=e();return b.enabled?a.server?.listening?{started:!1,reason:"already-running",status:await I()}:(a.autostartPromise||(a.autostartPromise=(async()=>{try{let a=await G();return console.log(`[audit-proxy] autostarted on ${b.bindHost}:${b.port}`),{started:!0,status:a}}catch(b){return a.lastError=b?.message||String(b),console.log("[audit-proxy] autostart failed:",a.lastError),{started:!1,error:a.lastError}}finally{a.autostartPromise=null}})()),a.autostartPromise):{started:!1,reason:"disabled"}}async function I(){let a=z(),b=e(),c=!!a.server?.listening,d=x();try{let a=w();d={...d,validated:!0===a.exists,expiringSoon:!0===a.expiringSoon,autoRotation:!1}}catch(a){d={...d,validated:!1,autoRotation:!1,error:a.message||String(a)}}return{running:c,listening:c,startedAt:a.startedAt,lastError:a.lastError,address:c?a.server.address():null,activeConnections:c&&a.server.getActiveConnectionCount?.()||0,capabilities:c?a.server.auditCapabilities:{http1:!0,http2:!0,plainHttp:!1,publicConnectPorts:[443]},security:{clientIpFilterEnabled:b.clientIpFilterEnabled,lanExposedWithoutIpFilter:!["127.0.0.1","::1","localhost"].includes(String(b.bindHost||"").trim().toLowerCase())&&!b.clientIpFilterEnabled,privateDestinationsBlocked:!0,plainHttpBlocked:!0,upstreamTlsVerified:!0},certificateCache:a.certificateProvider?.stats?.()||{entries:0},auditStore:t(),configPath:h,auditLogPath:i,auditLogDirectory:j,rootCA:d}}async function J(a=50){let b=e(),[c,d]=await Promise.all([I(),n(a)]);return{config:b,status:c,events:d}}a.exports={startProxy:G,ensureAuditProxyAutostart:H,stopProxy:function(a={}){return A(()=>E(a))},restartProxy:function(a=null){return A(()=>F(a))},getStatus:I,getSnapshot:J,updateConfig:function(a){let b=z();if(b.server?.listening)throw Error("Stop or restart the Audit Proxy before changing its configuration");return f(g(C(a)))},updateClientProxyHost:function(a){return f(g({...e(),clientProxyHost:String(a||"").trim()}))},updateClientIpFilter:function({enabled:a,allowedClientIps:b}={}){return A(async()=>{let c=z(),d=g({...e(),clientIpFilterEnabled:!0===a,allowedClientIps:b});if(c.server?.listening){await E({persist:!1}),f({...d,enabled:!1});let a=await D();return{config:e(),status:a,restarted:!0}}return{config:f(d),status:await I(),restarted:!1}})},clearAudit:o,runSelfTest:y}},51455:a=>{a.exports=require("node:fs/promises")},53053:a=>{a.exports=require("node:diagnostics_channel")},55511:a=>{a.exports=require("crypto")},55591:a=>{a.exports=require("https")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},63057:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>z,patchFetch:()=>y,routeModule:()=>u,serverHooks:()=>x,workAsyncStorage:()=>v,workUnitAsyncStorage:()=>w});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(37527);let u=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/audit-proxy/route",pathname:"/api/audit-proxy",filename:"route",bundlePath:"app/api/audit-proxy/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"D:\\bluerouter\\src\\app\\api\\audit-proxy\\route.js",nextConfigOutput:"standalone",userland:()=>c(17224),...{}}),{workAsyncStorage:v,workUnitAsyncStorage:w,serverHooks:x}=u;function y(){return(0,f.patchFetch)({workAsyncStorage:v,workUnitAsyncStorage:w})}async function z(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),u.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/audit-proxy/route";"/index"===d&&(d="/");let f=await u.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!f)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:v,deploymentId:w,params:x,nextConfig:y,parsedUrl:z,isDraftMode:A,prerenderManifest:B,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,resolvedPathname:F,clientReferenceManifest:G,serverActionsManifest:H}=f,I=(0,j.normalizeAppPath)(d),J=!!(B.dynamicRoutes[I]||B.routes[F]),K=async()=>((null==C?void 0:C.render404)?await C.render404(a,b,z,!1):b.end("This page could not be found"),null);if(J&&!A){let a=!!B.routes[F],b=B.dynamicRoutes[I];if(b&&!1===b.fallback&&!a){if(y.adapterPath)return await K();throw new s.NoFallbackError}}let L=null;!J||u.isDev||A||(L="/index"===(L=F)?"/":L);let M=!0===u.isDev||!J,N=J&&!M;H&&G&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:G,serverActionsManifest:H});let O=a.method||"GET",P=(0,h.getTracer)(),Q=P.getActiveScopeSpan(),R=!!(null==C?void 0:C.isWrappedByNextServer),S=!!(0,g.getRequestMeta)(a,"minimalMode"),T=(0,g.getRequestMeta)(a,"incrementalCache")||await u.getIncrementalCache(a,y,B,S);null==T||T.resetRequestCache(),globalThis.__incrementalCache=T;let U={params:x,previewProps:B.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts,useCacheTimeout:y.experimental.useCacheTimeout},cacheComponents:!!y.cacheComponents,validationLevel:y.experimental.instantInsights.validationLevel,supportsDynamicResponse:M,incrementalCache:T,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:y.cacheLife,staticPageGenerationTimeout:y.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>u.onRequestError(a,b,d,e,C)},sharedContext:{buildId:v,deploymentId:w}},V=new k.NodeNextRequest(a),W=new k.NodeNextResponse(b),X=l.NextRequestAdapter.fromNodeNextRequest(V,(0,l.signalFromNodeResponse)(b)),Y=async({previousCacheEntry:e})=>{try{if(!S&&D&&E&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await u.handle(X,U);a.fetchMetrics=U.renderOpts.fetchMetrics;let f=U.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=U.renderOpts.collectedTags;if(!J)return await (0,o.I)(V,W,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?y.expireTime:void 0:U.renderOpts.collectedExpire;return{value:{kind:t.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await u.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),b}},Z=async(d,f)=>{try{var g,i;let d=await u.handleResponse({req:a,nextConfig:y,cacheKey:L,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:B,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,responseGenerator:Y,waitUntil:c.waitUntil,isMinimalMode:S});if(!J)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==t.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});S||b.setHeader("x-nextjs-cache",D?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),A&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);S&&J||f.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(V,W,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(b){if(b instanceof s.NoFallbackError||await u.onRequestError(a,b,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),J)throw b;await (0,o.I)(V,W,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=P.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||I,g=`${O} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":g}),d.updateName(g),f&&f!==d&&(f.setAttribute("http.route",e),f.updateName(g))})()}};if(R&&Q)await Z(Q,void 0);else{let b=P.getActiveScopeSpan();await P.withPropagatedContext(a.headers,()=>P.trace(m.BaseServerSpan.handleRequest,{spanName:`${O} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":O,"http.target":a.url}},a=>Z(a,b)),void 0,!R)}}},64939:a=>{a.exports=import("pg")},66136:a=>{a.exports=require("timers")},73024:a=>{a.exports=require("node:fs")},73496:a=>{a.exports=require("http2")},74075:a=>{a.exports=require("zlib")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},78864:(a,b,c)=>{let d=c(14985).promises,e=c(91645),{normalizeIp:f,clientIpMatches:g}=c(5565),h=new Map,i=Object.freeze(["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.2.0/24","192.88.99.0/24","192.168.0.0/16","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","224.0.0.0/4","240.0.0.0/4","::/96","::1/128","100::/64","2001:2::/48","2001:db8::/32","fc00::/7","fe80::/10","ff00::/8"]),j=Object.freeze([".localhost",".local",".internal",".lan",".home.arpa"]);function k(a){return String(a||"").trim().replace(/^\[|\]$/g,"").replace(/\.$/,"").toLowerCase()}function l(a){let b=k(a);return!(!(!b||"localhost"===b||j.some(a=>b.endsWith(a)))&&(e.isIP(b)||b.includes(".")))}function m(a){let b=f(a);return!!e.isIP(b)&&!g(b,i)}function n(a){let b=[...new Set((Array.isArray(a)?a:[a]).map(a=>Number(a)).filter(a=>Number.isInteger(a)&&a>=1&&a<=65535))];return b.length?b:[443]}function o(a){let b=[...a?.addresses||[]];return function(c,d,e){let f=d,g=e;"function"==typeof d&&(g=d,f={});let h="number"==typeof f?f:Number(f?.family||0);if("object"==typeof f&&f?.all===!0){let c=4===h||6===h?b.filter(a=>a.family===h):b;if(!c.length){let b=Error(`No validated public address for ${a.host}`);b.code="ENOTFOUND",g(b);return}g(null,c.map(({address:a,family:b})=>({address:a,family:b})));return}let i=function(a,b=0){let c=Number(b||0);return 4===c||6===c?a.find(a=>a.family===c)||null:a.find(a=>4===a.family)||a[0]||null}(b,h);if(!i){let b=Error(`No validated public address for ${a.host}`);b.code="ENOTFOUND",g(b);return}g(null,i.address,i.family)}}async function p(a,b,c={}){let g=k(a),i=Number(b||443),j=n(c.allowedPorts||[443]);if(!g)throw Error("Destination host is empty");if(!Number.isInteger(i)||!j.includes(i))throw Error(`CONNECT destination port ${i||"unknown"} is not allowed`);if(l(g))throw Error(`Private or local destination hostname is not allowed: ${g}`);let q=e.isIP(f(g));if(q){let a=f(g);if(!m(a))throw Error(`Private or reserved destination address is not allowed: ${a}`);let b={host:g,port:i,addresses:[{address:a,family:q}]};return{...b,lookup:o(b)}}let r=Date.now(),s=h.get(g);if(!s||s.expiresAt<=r){let a=await d.lookup(g,{all:!0,verbatim:!0}),b=[],c=new Set;for(let d of a||[]){let a=f(d.address),g=e.isIP(a);if(!g||!m(a))continue;let h=`${g}:${a}`;c.has(h)||(c.add(h),b.push({address:a,family:g}))}if(!b.length)throw Error(`Destination did not resolve to a public address: ${g}`);s={addresses:b,expiresAt:r+6e4},h.set(g,s)}let t={host:g,port:i,addresses:[...s.addresses]};return{...t,lookup:o(t)}}a.exports={BLOCKED_ADDRESS_RANGES:i,normalizeTargetHost:k,normalizeAllowedPorts:n,isBlockedHostname:l,isPublicAddress:m,createPinnedLookup:o,resolvePublicTarget:p,clearDnsPolicyCache:function(){h.clear()}}},79428:a=>{a.exports=require("buffer")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80099:a=>{a.exports=require("node:sqlite")},81630:a=>{a.exports=require("http")},81787:a=>{a.exports=require("bun:sqlite")},85252:(a,b,c)=>{let d=c(73496),e=c(91645),f=c(34631),g=c(74075),h=c(55511),i=c(15296),{createAuditProxy:j,CaptureBuffer:k}=c(45372),{containsLikelySecret:l}=c(48350),{clientIpMatches:m,normalizeAllowedClientIps:n}=c(5565),{isPublicAddress:o}=c(78864);function p(a){return h.createHash("sha256").update(a).digest("hex")}function q(a){let b=i.pki.rsa.generateKeyPair(2048),c=i.pki.createCertificate();c.publicKey=b.publicKey,c.serialNumber=String(Date.now()),c.validity.notBefore=new Date(Date.now()-6e4),c.validity.notAfter=new Date(Date.now()+864e5);let d=[{name:"commonName",value:a}];return c.setSubject(d),c.setIssuer(d),c.setExtensions([{name:"basicConstraints",cA:!0,critical:!0},{name:"keyUsage",keyCertSign:!0,cRLSign:!0,critical:!0}]),c.sign(b.privateKey,i.md.sha256.create()),{cert:c,keys:b,certPem:i.pki.certificateToPem(c)}}function r(a,b){let c=i.pki.rsa.generateKeyPair(2048),d=i.pki.createCertificate();return d.publicKey=c.publicKey,d.serialNumber=`${Date.now()}${Math.floor(1e3*Math.random())}`,d.validity.notBefore=new Date(Date.now()-6e4),d.validity.notAfter=new Date(Date.now()+864e5),d.setSubject([{name:"commonName",value:b}]),d.setIssuer(a.cert.subject.attributes),d.setExtensions([{name:"basicConstraints",cA:!1},{name:"keyUsage",digitalSignature:!0,keyEncipherment:!0},{name:"extKeyUsage",serverAuth:!0},{name:"subjectAltName",altNames:[{type:2,value:b}]}]),d.sign(a.keys.privateKey,i.md.sha256.create()),{cert:i.pki.certificateToPem(d),key:i.pki.privateKeyToPem(c.privateKey)}}function s(a,b="127.0.0.1"){return new Promise((c,d)=>{a.once("error",d),a.listen(0,b,()=>{a.removeListener("error",d),c(a.address())})})}function t(a){return new Promise(b=>{if(!a)return b();try{a.forceCloseAll?.()}catch{}if(!a.listening)return b();a.close(()=>b()),setTimeout(b,1e3).unref?.()})}function u(a,b){let c="127.0.0.1";return Promise.resolve({host:a,port:b,addresses:[{address:c,family:4}],lookup:(a,b,d)=>{let e=b,f=d;"function"==typeof b&&(f=b,e={}),e?.all?f(null,[{address:c,family:4}]):f(null,c,4)}})}function v(a,b){return new Promise((c,d)=>{let f=e.connect(a,"127.0.0.1"),g=Buffer.alloc(0),h=setTimeout(()=>d(Error("CONNECT timeout")),7e3);f.once("error",d),f.once("connect",()=>{f.write(`CONNECT ${b} HTTP/1.1\r
|
|
8
|
+
Host: ${b}\r
|
|
26
9
|
Proxy-Connection: keep-alive\r
|
|
27
10
|
\r
|
|
28
|
-
`)});let
|
|
11
|
+
`)});let i=a=>{let b=(g=Buffer.concat([g,a])).indexOf("\r\n\r\n");if(b<0)return;f.removeListener("data",i),clearTimeout(h);let e=g.subarray(0,b).toString("utf8"),j=g.subarray(b+4);if(!/^HTTP\/1\.1 200\b/.test(e)){f.destroy(),d(Error(`CONNECT failed: ${e.split("\r\n")[0]}`));return}j.length&&f.unshift(j),c(f)};f.on("data",i)})}function w({socket:a,ca:b,servername:c,port:d,body:e,path:g}){return new Promise((h,i)=>{let j=f.connect({socket:a,ca:b,servername:c,rejectUnauthorized:!0,ALPNProtocols:["http/1.1"]}),k=[],l=setTimeout(()=>i(Error("TLS HTTP/1.1 test timeout")),1e4);j.once("error",i),j.once("secureConnect",()=>{j.write(`POST ${g} HTTP/1.1\r
|
|
29
12
|
Host: localhost:${d}\r
|
|
30
13
|
Authorization: Bearer test-secret-authorization-123456789\r
|
|
31
14
|
x-api-key: sk-test-supersecret-123456789\r
|
|
32
15
|
x-9r-source-tool: should-not-reach-upstream\r
|
|
33
16
|
Content-Type: application/json\r
|
|
34
|
-
Content-Length: ${
|
|
17
|
+
Content-Length: ${e.length}\r
|
|
35
18
|
Connection: close\r
|
|
36
19
|
\r
|
|
37
|
-
|
|
20
|
+
`),j.write(e)}),j.on("data",a=>k.push(Buffer.from(a))),j.on("end",()=>{clearTimeout(l),h(function(a){let b=a.indexOf("\r\n\r\n");if(b<0)throw Error("Invalid HTTP/1.1 response");let c=a.subarray(0,b).toString("latin1"),d={};for(let a of c.split("\r\n").slice(1)){let b=a.indexOf(":");b>0&&(d[a.slice(0,b).toLowerCase()]=a.slice(b+1).trim())}let e=Number(d["content-length"]||0);return{head:c,headers:d,body:a.subarray(b+4,e?b+4+e:void 0)}}(Buffer.concat(k)))})})}async function x({socket:a,ca:b,servername:c,port:e,body:g,path:h}){let i=f.connect({socket:a,ca:b,servername:c,rejectUnauthorized:!0,ALPNProtocols:["h2"]});await new Promise((a,b)=>{let c=setTimeout(()=>b(Error("TLS HTTP/2 handshake timeout")),1e4);i.once("secureConnect",()=>{clearTimeout(c),"h2"!==i.alpnProtocol?b(Error(`Expected h2, got ${i.alpnProtocol||"none"}`)):a()}),i.once("error",b)});let j=d.connect(`https://${c}:${e}`,{createConnection:()=>i});await new Promise((a,b)=>{j.once("connect",a),j.once("error",b)});let k=j.request({":method":"POST",":path":h,":scheme":"https",":authority":`${c}:${e}`,authorization:"Bearer test-secret-authorization-123456789","x-api-key":"sk-test-supersecret-123456789","x-9r-source-tool":"should-not-reach-upstream","content-type":"application/json","content-length":String(g.length)}),l=[],m={};k.on("response",a=>{m=a}),k.on("data",a=>l.push(Buffer.from(a)));let n=new Promise((a,b)=>{k.once("end",a),k.once("error",b)});return k.end(g),await n,j.close(),{headers:m,body:Buffer.concat(l)}}a.exports={runSelfTest:async function(){let a=Date.now(),b=[],c=(a,c,d="")=>b.push({name:a,ok:!!c,detail:d}),f=n(["172.16.253.3","10.20.30.0/24","2001:db8::/64"]);c("Client IP exact allowlist match",m("::ffff:172.16.253.3",f)),c("Client IPv4 CIDR allowlist match",m("10.20.30.77",f)),c("Client IPv6 CIDR allowlist match",m("2001:db8::1234",f)),c("Client IP outside allowlist denied",!m("10.20.31.77",f)),c("Public destination accepted",o("1.1.1.1")),c("Private destination rejected",!o("127.0.0.1")&&!o("169.254.169.254"));let h=JSON.stringify({type:"message",content:[{type:"text",text:"brotli audit ok"}]}),i=new k(1048576);i.add(g.brotliCompressSync(Buffer.from(h)));let y=await i.finish("application/json","br");c("Brotli audit body decoded",!0===y.decoded&&y.body.includes("brotli audit ok")&&!y.decodeError);let z=q("BlueRouter Audit Self Test Upstream CA"),A=r(z,"localhost"),B=q("BlueRouter Audit Self Test Proxy CA"),C=r(B,"localhost"),D=Buffer.from(JSON.stringify({type:"message",content:[{type:"text",text:"compressed response preserved"}]})),E=g.brotliCompressSync(D),F=[],G=d.createSecureServer({key:A.key,cert:A.cert,allowHTTP1:!0});G.on("request",(a,b)=>{let c=[];a.on("data",a=>c.push(Buffer.from(a))),a.on("end",()=>{F.push({protocol:2===a.httpVersionMajor?"h2":"http/1.1",path:a.url,authorization:a.headers.authorization,apiKey:a.headers["x-api-key"],internalHeader:a.headers["x-9r-source-tool"],body:Buffer.concat(c)}),b.writeHead(200,{"content-type":"application/json","content-encoding":"br","content-length":String(E.length)}),b.end(E)})});let H=[],I=null,J=null;try{var K;let a=await s(G);I=j({allowedHosts:["localhost"],passthroughUnknown:!1,captureBodies:!0,captureLimitBytes:1048576,verifyUpstreamTls:!0,allowedConnectPorts:[a.port],connectTimeoutMs:5e3,tlsHandshakeTimeoutMs:5e3,responseHeaderTimeoutMs:5e3,idleTimeoutMs:3e4},{certificateProvider:()=>C,upstreamCa:z.certPem,resolveTarget:u,onAudit:a=>H.push(a)});let b=await s(I),d=await (K=b.port,new Promise((a,b)=>{let c=e.connect(K,"127.0.0.1"),d=[],f=setTimeout(()=>b(Error("Plain HTTP rejection timeout")),5e3);c.once("connect",()=>c.end("GET http://example.com/ HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n")),c.on("data",a=>d.push(Buffer.from(a))),c.once("error",b),c.once("end",()=>{clearTimeout(f),a(Buffer.concat(d).toString("utf8"))})}));c("Plain HTTP forward proxy is disabled",d.startsWith("HTTP/1.1 403"));let f=Buffer.from(JSON.stringify({model:"audit-self-test-h1",messages:[{role:"user",content:"hello h1 ✓"}]})),g="/v1/messages?beta=true&encoded=%2F",h=await v(b.port,`localhost:${a.port}`),i=await w({socket:h,ca:B.certPem,servername:"localhost",port:a.port,body:f,path:g});c("HTTP/1.1 CONNECT and TLS succeeded",i.head.startsWith("HTTP/1.1 200")),c("HTTP/1.1 compressed response bytes preserved",p(i.body)===p(E));let k=Buffer.from(JSON.stringify({model:"audit-self-test-h2",messages:[{role:"user",content:"hello h2 ✓"}]})),m="/v1/messages?beta=true&protocol=h2",n=await v(b.port,`localhost:${a.port}`),o=await x({socket:n,ca:B.certPem,servername:"localhost",port:a.port,body:k,path:m});c("HTTP/2 negotiated through Audit Proxy",200===Number(o.headers[":status"])),c("HTTP/2 compressed response bytes preserved",p(o.body)===p(E)),await new Promise(a=>setTimeout(a,100));let q=F.find(a=>"http/1.1"===a.protocol),r=F.find(a=>"h2"===a.protocol);c("HTTP/1.1 path/query preserved",q?.path===g),c("HTTP/2 path/query preserved",r?.path===m),c("HTTP/1.1 request body byte-identical",q&&p(q.body)===p(f)),c("HTTP/2 request body byte-identical",r&&p(r.body)===p(k)),c("Authorization preserved on wire",F.every(a=>"Bearer test-secret-authorization-123456789"===a.authorization)),c("x-api-key preserved on wire",F.every(a=>"sk-test-supersecret-123456789"===a.apiKey)),c("Internal x-9r-* header stripped",F.every(a=>null==a.internalHeader));let t=H.find(a=>"http/1.1"===a.protocol),y=H.find(a=>"h2"===a.protocol);c("HTTP/1.1 audit event captured",!!t),c("HTTP/2 audit event captured",!!y),c("Request wire SHA-256 recorded",t?.request?.wireSha256===p(f)&&y?.request?.wireSha256===p(k)),c("Response wire SHA-256 recorded",t?.response?.wireSha256===p(E)&&y?.response?.wireSha256===p(E)),c("Compressed audit response decoded",t?.response?.body?.includes("compressed response preserved")&&y?.response?.body?.includes("compressed response preserved")),c("Authorization redacted in audit",H.every(a=>a.request?.headers?.authorization==="[REDACTED]")),c("x-api-key redacted in audit",H.every(a=>a.request?.headers?.["x-api-key"]==="[REDACTED]")),c("No likely API secret persisted",H.length>=2&&H.every(a=>!l(a))),J=j({allowedHosts:["localhost"],passthroughUnknown:!1,captureBodies:!0,captureLimitBytes:1048576,verifyUpstreamTls:!0,allowedConnectPorts:[a.port],connectTimeoutMs:5e3,tlsHandshakeTimeoutMs:5e3,responseHeaderTimeoutMs:5e3,idleTimeoutMs:3e4},{certificateProvider:()=>C,upstreamCa:z.certPem,resolveTarget:u,onAudit:()=>{throw Error("simulated audit sink failure")}});let A=await s(J),D=await v(A.port,`localhost:${a.port}`),L=await w({socket:D,ca:B.certPem,servername:"localhost",port:a.port,body:f,path:g});c("Audit sink failure does not fail proxied request",L.head.startsWith("HTTP/1.1 200"))}catch(a){c("Self-test execution",!1,a.message||String(a))}finally{await t(J),await t(I),await t(G)}return{ok:b.length>0&&b.every(a=>a.ok),checks:b,passed:b.filter(a=>a.ok).length,total:b.length,durationMs:Date.now()-a}}}},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},90173:(a,b,c)=>{let d=c(29021),e=c(33873),f=c(4984),g=c(55511),{AUDIT_LOG_PATH:h,AUDIT_LOG_DIR:i,ensureAuditDir:j,loadConfig:k}=c(43096),{redactObject:l,scrubString:m}=c(48350),n="audit-proxy",o={expiresAt:0,config:null},p=null,q=null,r="",s=0,t=null,u=new Map,v={queue:[],workerPromise:null,clearing:!1,enqueued:0,written:0,dropped:0,failed:0,lastError:null,lastWrittenAt:null};function w(a){let b=Date.now();b-s<6e4||(s=b,console.warn(`[AuditProxy][PromptDB] ${a}`))}function x(a){v.lastError=String(a||"Audit store failure"),console.warn(`[AuditProxy][Store] ${v.lastError}`)}async function y(){let a=Date.now();if(o.expiresAt>a)return o.config;p||(p=Promise.resolve().then(c.bind(c,45903)));let b=await p,d=await b.getPromptLogDbConfig();return o={expiresAt:a+5e3,config:d},d}async function z(a){let b=g.createHash("sha256").update(JSON.stringify({host:a.host,port:Number(a.port||3306),database:a.database,username:a.username,password:a.password,ssl:!!a.ssl})).digest("hex");if(q&&r===b)return q;if(q){try{await q.end()}catch{}q=null,r=""}let d=await c.e(8491).then(c.t.bind(c,38491,19));return q=(d.default||d).createPool({host:a.host,port:Number(a.port||3306),database:a.database,user:a.username,password:a.password,ssl:a.ssl?{rejectUnauthorized:!0}:void 0,connectTimeout:3e3,waitForConnections:!0,connectionLimit:4,maxIdle:2,idleTimeout:6e4,queueLimit:100,enableKeepAlive:!0,keepAliveInitialDelay:3e4}),r=b,q}function A(a){if("string"!=typeof a)return a;let b=a.trim();if(!b||!b.startsWith("{")&&!b.startsWith("["))return a;try{return JSON.parse(b)}catch{return a}}function B(a,b=0,c=[]){if(null==a||b>12||c.join("\n").length>=2e5)return c;if("string"==typeof a)return a.trim()&&c.push(a.trim()),c;if(Array.isArray(a)){for(let d of a)B(d,b+1,c);return c}if("object"!=typeof a)return c;for(let[d,e]of Object.entries(a)){let a=d.toLowerCase();["content","text","prompt","input","message","output_text"].includes(a)?B(e,b+1,c):b<8&&["messages","contents","parts","body","request","payload","response","choices","output","item","items"].includes(a)&&B(e,b+1,c)}return c}async function C(a,b,c,d){if(!c)return null;let e=g.createHash("sha256").update(c).digest("hex"),f=Buffer.byteLength(String(c||""),"utf8");return await a.query(`INSERT INTO prompt_log_payloads (
|
|
38
21
|
payload_hash, created_at, last_seen_at, content_type, payload_size_bytes, ref_count, payload_json
|
|
39
22
|
) VALUES (?, ?, ?, ?, ?, 1, CAST(? AS JSON))
|
|
40
23
|
ON DUPLICATE KEY UPDATE
|
|
@@ -44,7 +27,7 @@ ${a}`)}),h.on("data",a=>i.push(Buffer.from(a))),h.on("end",()=>{clearTimeout(j),
|
|
|
44
27
|
WHEN content_type = VALUES(content_type) THEN content_type
|
|
45
28
|
WHEN content_type IS NULL OR content_type = '' THEN VALUES(content_type)
|
|
46
29
|
ELSE content_type
|
|
47
|
-
END`,[
|
|
30
|
+
END`,[e,b,b,d,f,c]),{payloadHash:e,payloadSizeBytes:f}}async function D(a){let b=null;try{var c,d;let e,f,h,i,j,k=await y();if(!k?.enabled)return{written:!1,disabled:!0};if("mysql"!==String(k.type||"").toLowerCase())return w(`Audit mirroring requires MySQL; current type is ${k.type||"unknown"}`),{written:!1,unsupported:!0};let o=function(a){try{let b=JSON.parse(JSON.stringify(a??null)),c=l(b);return JSON.parse(m(JSON.stringify(c)))}catch{return m(String(a??""))}}(a),{requestPayload:p,responsePayload:q}=(e=o.request||{},f=o.response||{},{requestPayload:{timestamp:o.timestamp,protocol:o.protocol||"http/1.1",method:o.method,endpoint:o.path,headers:e.headers||{},body:A(e.body),capturedBytes:Number(e.capturedBytes||0),totalBytes:Number(e.totalBytes||0),wireSha256:e.wireSha256||null,truncated:!0===e.truncated},responsePayload:{timestamp:o.timestamp,protocol:o.protocol||"http/1.1",status:o.status,headers:f.headers||{},body:A(f.body),capturedBytes:Number(f.capturedBytes||0),totalBytes:Number(f.totalBytes||0),wireSha256:f.wireSha256||null,truncated:!0===f.truncated}}),r=JSON.stringify(p),s=JSON.stringify(q),t=(h=(c=o.timestamp)?new Date(c):new Date,(Number.isNaN(h.getTime())?new Date:h).toISOString().replace("T"," ").replace("Z","")),u=(d=o.client?.userAgent,(i=String(d||"").toLowerCase()).includes("claude")?{tool:"claude-code",label:"Claude Code"}:i.includes("codex")?{tool:"codex",label:"Codex"}:{tool:"audit-proxy",label:"Enterprise AI Audit Proxy"}),v=String(o.provider||"other"),x=o.model?String(o.model):null,D=String(o.host||""),E=Number(o.port||443),F=String(o.path||""),G=D?`https://${D}${443!==E?`:${E}`:""}${F}`:null,H=await z(k);b=await H.getConnection(),await b.beginTransaction();let I=await C(b,t,r,"request_json"),J=await C(b,t,s,"response_json"),K={source:n,auditEventId:o.id||null,protocol:o.protocol||"http/1.1",host:D||null,port:E,method:o.method||null,path:F||null,durationMs:Number(o.durationMs||0),requestCapturedBytes:Number(o.request?.capturedBytes||0),requestTotalBytes:Number(o.request?.totalBytes||0),requestWireSha256:o.request?.wireSha256||null,requestTruncated:o.request?.truncated===!0,responseCapturedBytes:Number(o.response?.capturedBytes||0),responseTotalBytes:Number(o.response?.totalBytes||0),responseWireSha256:o.response?.wireSha256||null,responseTruncated:o.response?.truncated===!0,payloadHash:I?.payloadHash||null,payloadSizeBytes:I?.payloadSizeBytes||0,payloadStorage:I?"prompt_log_payloads":null,responsePayloadHash:J?.payloadHash||null,responsePayloadSizeBytes:J?.payloadSizeBytes||0,responsePayloadStorage:J?"prompt_log_payloads":null},L=String(o.id||g.randomUUID());return await b.query(`INSERT INTO prompt_logs (
|
|
48
31
|
id, created_at, session_id, source_format, target_format, model,
|
|
49
32
|
endpoint, stage, provider_url, provider, account_name, connection_id, display_model,
|
|
50
33
|
client_ip, client_port, client_user_agent, client_host,
|
|
@@ -52,10 +35,10 @@ ${a}`)}),h.on("data",a=>i.push(Buffer.from(a))),h.on("end",()=>{clearTimeout(j),
|
|
|
52
35
|
response_payload_hash, response_payload_size_bytes,
|
|
53
36
|
prompt_text, full_request_json,
|
|
54
37
|
response_text, status_code, error_text, meta_json
|
|
55
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CAST(? AS JSON), ?, ?, ?, CAST(? AS JSON))`,[
|
|
56
|
-
|
|
38
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CAST(? AS JSON), ?, ?, ?, CAST(? AS JSON))`,[L,t,`audit-${L}`,v,v,x,F||null,n,G,v,null,null,x?`${v}/${x}`:null,o.client?.ip||null,o.client?.port!=null?String(o.client.port):null,o.client?.userAgent||null,D||null,u.tool,u.label,D||null,o.request?.body||o.response?.body?"raw_json_preview":"metadata_only",I?.payloadHash||null,I?.payloadSizeBytes||0,J?.payloadHash||null,J?.payloadSizeBytes||0,(j=B(p?.body??p??{}).join("\n\n"))?j.slice(0,2e3):null,null,function(a){let b=a?.body;if("string"==typeof b)return b.slice(0,2e3)||null;let c=B(b??a??{}).join("\n\n");return c?c.slice(0,2e3):null}(q),null!=o.status?Number(o.status):null,o.error||null,JSON.stringify(K)]),await b.commit(),{written:!0}}catch(a){if(b)try{await b.rollback()}catch{}return w(`Failed to mirror audit event to prompt_logs: ${a.message||a}`),{written:!1,error:a.message||String(a)}}finally{try{b?.release()}catch{}}}async function E(a,b){let c;j();let f=(Number.isNaN((c=a?new Date(a):new Date).getTime())?new Date:c).toISOString().slice(0,10),g=u.get(f);if(!g){let a=await d.promises.readdir(i).catch(()=>[]),b=RegExp(`^audit-${f.replace(/-/g,"\\-")}(?:\\.(\\d+))?\\.jsonl$`),c=0;for(let d of a){let a=d.match(b);a&&(c=Math.max(c,Number(a[1]||0)))}let h=e.join(i,`audit-${f}${c?`.${c}`:""}.jsonl`),j=await d.promises.stat(h).catch(()=>null);g={segment:c,filePath:h,size:j?.size||0},u.set(f,g)}return g.size>0&&g.size+b>0x8000000&&(g={segment:g.segment+1,filePath:e.join(i,`audit-${f}.${g.segment+1}.jsonl`),size:0},u.set(f,g)),g}async function F(a){let b=`${JSON.stringify(a)}
|
|
39
|
+
`,c=Buffer.byteLength(b),e=await E(a.timestamp,c);return await d.promises.appendFile(e.filePath,b,{encoding:"utf8",mode:384}),e.size+=c,e.filePath}async function G(){return v.workerPromise||v.clearing||(v.workerPromise=(async()=>{for(;!v.clearing&&v.queue.length;){let a=v.queue.shift();try{let b=await a.finalize();try{await F(b)}catch(a){x(`Local JSONL write failed: ${a.message||a}`)}await D(b),v.written+=1,v.lastWrittenAt=new Date().toISOString()}catch(a){v.failed+=1,x(a.message||a)}}})().finally(()=>{v.workerPromise=null,!v.clearing&&v.queue.length&&setImmediate(()=>void G())})),v.workerPromise}function H(a){return"function"==typeof a&&(v.queue.length>=1e3?(v.dropped+=1,x(`Audit queue full; dropped event ${v.dropped}`),!1):(v.queue.push({finalize:a,enqueuedAt:Date.now()}),v.enqueued+=1,v.clearing||setImmediate(()=>void G()),!0))}async function I(){j();let a=(await d.promises.readdir(i).catch(()=>[])).filter(a=>/^audit-\d{4}-\d{2}-\d{2}(?:\.\d+)?\.jsonl$/.test(a)).sort((a,b)=>b.localeCompare(a,void 0,{numeric:!0})).map(a=>e.join(i,a));return d.existsSync(h)&&a.push(h),a}async function J(a,b){let c=await d.promises.stat(a).catch(()=>null);if(!c?.size||b<=0)return[];let e=await d.promises.open(a,"r");try{let a=c.size,d=Buffer.alloc(0),f=0;for(;a>0&&d.length<0x4000000&&f<=b;){let b=Math.min(262144,a,0x4000000-d.length);a-=b;let c=Buffer.alloc(b);await e.read(c,0,b,a),d=Buffer.concat([c,d]),f+=c.reduce((a,b)=>a+ +(10===b),0)}let g=d.toString("utf8");if(a>0){let a=g.indexOf("\n");g=a>=0?g.slice(a+1):""}return g.split("\n").filter(Boolean).slice(-b).reverse().map(a=>{try{return JSON.parse(a)}catch{return null}}).filter(Boolean)}finally{await e.close()}}async function K(a){if(!d.existsSync(h))return;let b=`${h}.tmp`,c=d.createReadStream(h,{encoding:"utf8"}),e=d.createWriteStream(b,{encoding:"utf8",mode:384});for await(let b of f.createInterface({input:c,crlfDelay:1/0}))if(b)try{let c=JSON.parse(b);Date.parse(c.timestamp||0)>=a&&e.write(`${b}
|
|
40
|
+
`)}catch{}await new Promise((a,b)=>{e.end(a),e.once("error",b)}),await d.promises.rename(b,h)}async function L(){j();let a=k(),b=Date.now()-24*a.retentionDays*36e5;for(let a of(await d.promises.readdir(i).catch(()=>[]))){if(!/^audit-\d{4}-\d{2}-\d{2}(?:\.\d+)?\.jsonl$/.test(a))continue;let c=e.join(i,a),f=await d.promises.stat(c).catch(()=>null);if(f&&f.mtimeMs<b)for(let[a,b]of(await d.promises.unlink(c).catch(()=>{}),u.entries()))b.filePath===c&&u.delete(a)}await K(b).catch(a=>x(`Legacy log prune failed: ${a.message||a}`))}async function M(){let a=null;try{let b=await y();if(!b?.enabled||"mysql"!==String(b.type||"").toLowerCase())return;let c=await z(b);a=await c.getConnection(),await a.beginTransaction();let[d]=await a.query("SELECT payload_hash, response_payload_hash FROM prompt_logs WHERE stage = ?",[n]);await a.query("DELETE FROM prompt_logs WHERE stage = ?",[n]);let e=new Map;for(let a of d||[])for(let b of[a.payload_hash,a.response_payload_hash]){let a=String(b||"").trim();a&&e.set(a,(e.get(a)||0)+1)}for(let[b,c]of e.entries())await a.query("UPDATE prompt_log_payloads SET ref_count = GREATEST(ref_count - ?, 0) WHERE payload_hash = ?",[c,b]),await a.query(`DELETE p FROM prompt_log_payloads p
|
|
57
41
|
WHERE p.payload_hash = ?
|
|
58
42
|
AND p.last_seen_at < UTC_TIMESTAMP(3) - INTERVAL 5 MINUTE
|
|
59
43
|
AND NOT EXISTS (SELECT 1 FROM prompt_logs r WHERE r.payload_hash = p.payload_hash)
|
|
60
|
-
AND NOT EXISTS (SELECT 1 FROM prompt_logs r WHERE r.response_payload_hash = p.payload_hash)`,[b]);await a.commit()}catch(b){if(a)try{await a.rollback()}catch{}
|
|
61
|
-
`,{encoding:"utf8",mode:384}),u(a)},readRecent:v,clearAudit:function(){g(),d.writeFileSync(f,"",{mode:384}),w()},pruneExpired:function(){if(!d.existsSync(f))return;let a=h(),b=Date.now()-24*a.retentionDays*36e5,c=d.statSync(f);if(c.size>0x6400000||c.mtimeMs<b){let a=v(1e4).filter(a=>Date.parse(a.timestamp||0)>=b),c=`${f}.tmp`;d.writeFileSync(c,a.map(a=>JSON.stringify(a)).join("\n")+(a.length?"\n":""),{mode:384}),d.renameSync(c,f)}},appendPromptLog:u}},91645:a=>{"use strict";a.exports=require("net")},94735:a=>{"use strict";a.exports=require("events")},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,5592,7669],()=>b(b.s=63057));module.exports=c})();
|
|
44
|
+
AND NOT EXISTS (SELECT 1 FROM prompt_logs r WHERE r.response_payload_hash = p.payload_hash)`,[b]);await a.commit()}catch(b){if(a)try{await a.rollback()}catch{}w(`Failed to clear mirrored audit rows: ${b.message||b}`)}finally{try{a?.release()}catch{}}}a.exports={appendAudit:function(a){return H(async()=>a)},enqueueAuditJob:H,readRecent:async function a(b=50){let c=Math.max(1,Math.min(1e3,Number(b)||50)),d=[];for(let a of(await I())){if(d.length>=c)break;let b=await J(a,c-d.length);d.push(...b)}return d.slice(0,c)},clearAudit:async function a(){v.clearing=!0,v.queue.length=0,v.workerPromise&&await v.workerPromise.catch(()=>{}),j();let a=await d.promises.readdir(i).catch(()=>[]);await Promise.all(a.filter(a=>a.endsWith(".jsonl")).map(a=>d.promises.unlink(e.join(i,a)).catch(()=>{}))),await d.promises.writeFile(h,"",{mode:384}).catch(()=>{}),u.clear(),await M(),v.clearing=!1,v.queue.length&&setImmediate(()=>void G())},pruneExpired:L,startAuditMaintenance:function(){t||(t=setInterval(()=>void L(),36e5),t.unref?.())},stopAuditMaintenance:function(){t&&clearInterval(t),t=null},flushAuditQueue:async function a(b=5e3){let c=Date.now()+Math.max(0,Number(b)||0);for(;(v.queue.length||v.workerPromise)&&Date.now()<c;)await G(),v.workerPromise&&await Promise.race([v.workerPromise,new Promise(a=>setTimeout(a,50))]);return 0===v.queue.length&&!v.workerPromise},getAuditStoreStats:function(){return{queueDepth:v.queue.length,queueLimit:1e3,workerRunning:!!v.workerPromise,enqueued:v.enqueued,written:v.written,dropped:v.dropped,failed:v.failed,lastError:v.lastError,lastWrittenAt:v.lastWrittenAt,logDirectory:i}},appendPromptLog:D}},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,5592,5573,4433,7669,402,3767],()=>b(b.s=63057));module.exports=c})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":1,"files":["../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-5.3.48-to-5.3.49-5.3.49-20260822-180600/data.sqlite","../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-5.3.49-to-5.3.50-5.3.50-20260822-195035/data.sqlite","../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-5.3.50-to-5.3.51-5.3.51-20260822-200352/data.sqlite","../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-5.3.51-to-5.3.52-5.3.52-20260822-210556/data.sqlite","../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-5.3.52-to-5.3.53-5.3.53-20260822-211655/data.sqlite","../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite","../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm","../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal","../../../../../cli/.build-home/AppData/Roaming/bluerouter/jwt-secret","../../../../../cli/.build-home/AppData/Roaming/bluerouter/machine-id","../../../../../cli/.build-home/AppData/Roaming/nextjs-nodejs/Config/config.json","../../../../../node_modules/@swc/helpers/_/_interop_require_default/package.json","../../../../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../../../../node_modules/@swc/helpers/package.json","../../../../../node_modules/better-sqlite3/build/Release/better_sqlite3.node","../../../../../node_modules/better-sqlite3/lib/database.js","../../../../../node_modules/better-sqlite3/lib/index.js","../../../../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../../node_modules/better-sqlite3/lib/methods/backup.js","../../../../../node_modules/better-sqlite3/lib/methods/function.js","../../../../../node_modules/better-sqlite3/lib/methods/inspect.js","../../../../../node_modules/better-sqlite3/lib/methods/pragma.js","../../../../../node_modules/better-sqlite3/lib/methods/serialize.js","../../../../../node_modules/better-sqlite3/lib/methods/table.js","../../../../../node_modules/better-sqlite3/lib/methods/transaction.js","../../../../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../../node_modules/better-sqlite3/lib/sqlite-error.js","../../../../../node_modules/better-sqlite3/lib/util.js","../../../../../node_modules/better-sqlite3/package.json","../../../../../node_modules/bindings/bindings.js","../../../../../node_modules/bindings/package.json","../../../../../node_modules/file-uri-to-path/index.js","../../../../../node_modules/file-uri-to-path/package.json","../../../../../node_modules/next/dist/build/adapter/setup-node-env.external.js","../../../../../node_modules/next/dist/client/components/hooks-server-context.js","../../../../../node_modules/next/dist/client/components/static-generation-bailout.js","../../../../../node_modules/next/dist/client/lib/console.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../../node_modules/next/dist/compiled/source-map/package.json","../../../../../node_modules/next/dist/compiled/source-map/source-map.js","../../../../../node_modules/next/dist/compiled/stacktrace-parser/package.json","../../../../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../../../../../node_modules/next/dist/compiled/ws/index.js","../../../../../node_modules/next/dist/compiled/ws/package.json","../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../node_modules/next/dist/lib/constants.js","../../../../../node_modules/next/dist/lib/framework/boundary-constants.js","../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../node_modules/next/dist/lib/is-error.js","../../../../../node_modules/next/dist/lib/picocolors.js","../../../../../node_modules/next/dist/lib/scheduler.js","../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../node_modules/next/dist/server/app-render/blocking-route-messages.js","../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/dynamic-rendering.js","../../../../../node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js","../../../../../node_modules/next/dist/server/app-render/instant-validation/boundary-tracking.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../node_modules/next/dist/server/app-render/staged-rendering.js","../../../../../node_modules/next/dist/server/app-render/sync-io-messages.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../node_modules/next/dist/server/dev/browser-logs/file-logger.js","../../../../../node_modules/next/dist/server/dynamic-rendering-utils.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../node_modules/next/dist/server/lib/parse-stack.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../node_modules/next/dist/server/lib/source-maps.js","../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../node_modules/next/dist/server/node-environment-baseline.js","../../../../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.js","../../../../../node_modules/next/dist/server/node-environment-extensions/console-exit.js","../../../../../node_modules/next/dist/server/node-environment-extensions/console-file.js","../../../../../node_modules/next/dist/server/node-environment-extensions/date.js","../../../../../node_modules/next/dist/server/node-environment-extensions/error-inspect.js","../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../node_modules/next/dist/server/node-environment-extensions/io-utils.js","../../../../../node_modules/next/dist/server/node-environment-extensions/node-crypto.js","../../../../../node_modules/next/dist/server/node-environment-extensions/random.js","../../../../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js","../../../../../node_modules/next/dist/server/node-environment-extensions/web-crypto.js","../../../../../node_modules/next/dist/server/node-environment.js","../../../../../node_modules/next/dist/server/node-polyfill-crypto.js","../../../../../node_modules/next/dist/server/patch-error-inspect.js","../../../../../node_modules/next/dist/server/require-hook.js","../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../node_modules/next/dist/shared/lib/instant-messages.js","../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js","../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../../node_modules/next/dist/shared/lib/promise-with-resolvers.js","../../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../../node_modules/next/dist/shared/lib/segment.js","../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../node_modules/next/package.json","../../../../../node_modules/pg-cloudflare/dist/empty.js","../../../../../node_modules/pg-cloudflare/dist/index.js","../../../../../node_modules/pg-cloudflare/package.json","../../../../../node_modules/pg-connection-string/index.js","../../../../../node_modules/pg-connection-string/package.json","../../../../../node_modules/pg-int8/index.js","../../../../../node_modules/pg-int8/package.json","../../../../../node_modules/pg-pool/index.js","../../../../../node_modules/pg-pool/package.json","../../../../../node_modules/pg-protocol/dist/buffer-reader.js","../../../../../node_modules/pg-protocol/dist/buffer-writer.js","../../../../../node_modules/pg-protocol/dist/index.js","../../../../../node_modules/pg-protocol/dist/messages.js","../../../../../node_modules/pg-protocol/dist/parser.js","../../../../../node_modules/pg-protocol/dist/serializer.js","../../../../../node_modules/pg-protocol/package.json","../../../../../node_modules/pg-types/index.js","../../../../../node_modules/pg-types/lib/arrayParser.js","../../../../../node_modules/pg-types/lib/binaryParsers.js","../../../../../node_modules/pg-types/lib/builtins.js","../../../../../node_modules/pg-types/lib/textParsers.js","../../../../../node_modules/pg-types/package.json","../../../../../node_modules/pg/esm/index.mjs","../../../../../node_modules/pg/lib/client.js","../../../../../node_modules/pg/lib/connection-parameters.js","../../../../../node_modules/pg/lib/connection.js","../../../../../node_modules/pg/lib/crypto/cert-signatures.js","../../../../../node_modules/pg/lib/crypto/sasl.js","../../../../../node_modules/pg/lib/crypto/utils.js","../../../../../node_modules/pg/lib/defaults.js","../../../../../node_modules/pg/lib/index.js","../../../../../node_modules/pg/lib/native/client.js","../../../../../node_modules/pg/lib/native/index.js","../../../../../node_modules/pg/lib/native/query.js","../../../../../node_modules/pg/lib/query.js","../../../../../node_modules/pg/lib/result.js","../../../../../node_modules/pg/lib/stream.js","../../../../../node_modules/pg/lib/type-overrides.js","../../../../../node_modules/pg/lib/utils.js","../../../../../node_modules/pg/package.json","../../../../../node_modules/pgpass/lib/helper.js","../../../../../node_modules/pgpass/lib/index.js","../../../../../node_modules/pgpass/package.json","../../../../../node_modules/postgres-array/index.js","../../../../../node_modules/postgres-array/package.json","../../../../../node_modules/postgres-bytea/index.js","../../../../../node_modules/postgres-bytea/package.json","../../../../../node_modules/postgres-date/index.js","../../../../../node_modules/postgres-date/package.json","../../../../../node_modules/postgres-interval/index.js","../../../../../node_modules/postgres-interval/package.json","../../../../../node_modules/react/cjs/react.development.js","../../../../../node_modules/react/cjs/react.production.js","../../../../../node_modules/react/index.js","../../../../../node_modules/react/package.json","../../../../../node_modules/split2/index.js","../../../../../node_modules/split2/package.json","../../../../../node_modules/sql.js/dist/sql-wasm.js","../../../../../node_modules/sql.js/package.json","../../../../../node_modules/xtend/mutable.js","../../../../../node_modules/xtend/package.json","../../../../../package.json","../../../../../src/lib/db/adapters/betterSqliteAdapter.js","../../../../../src/lib/db/adapters/bunSqliteAdapter.js","../../../../../src/lib/db/adapters/nodeSqliteAdapter.js","../../../../../src/lib/db/adapters/sqljsAdapter.js","../../../../../src/lib/db/migrate.js","../../../../../src/shared/utils/apiKey.js","../../../../package.json","../../../chunks/1220.js","../../../chunks/1350.js","../../../chunks/1455.js","../../../chunks/1817.js","../../../chunks/1876.js","../../../chunks/1900.js","../../../chunks/1998.js","../../../chunks/2155.js","../../../chunks/2242.js","../../../chunks/241.js","../../../chunks/2430.js","../../../chunks/2506.js","../../../chunks/2556.js","../../../chunks/2566.js","../../../chunks/2611.js","../../../chunks/2650.js","../../../chunks/2664.js","../../../chunks/2731.js","../../../chunks/2891.js","../../../chunks/2999.js","../../../chunks/3031.js","../../../chunks/3104.js","../../../chunks/318.js","../../../chunks/3433.js","../../../chunks/3484.js","../../../chunks/3593.js","../../../chunks/3696.js","../../../chunks/3801.js","../../../chunks/3824.js","../../../chunks/3958.js","../../../chunks/3960.js","../../../chunks/4013.js","../../../chunks/4017.js","../../../chunks/4123.js","../../../chunks/4177.js","../../../chunks/4315.js","../../../chunks/436.js","../../../chunks/4404.js","../../../chunks/4433.js","../../../chunks/4459.js","../../../chunks/4632.js","../../../chunks/4696.js","../../../chunks/4739.js","../../../chunks/4741.js","../../../chunks/4755.js","../../../chunks/476.js","../../../chunks/4778.js","../../../chunks/4780.js","../../../chunks/4790.js","../../../chunks/4803.js","../../../chunks/507.js","../../../chunks/5210.js","../../../chunks/5258.js","../../../chunks/541.js","../../../chunks/5433.js","../../../chunks/5573.js","../../../chunks/5592.js","../../../chunks/5623.js","../../../chunks/564.js","../../../chunks/5681.js","../../../chunks/5852.js","../../../chunks/5901.js","../../../chunks/595.js","../../../chunks/6053.js","../../../chunks/6103.js","../../../chunks/6108.js","../../../chunks/6118.js","../../../chunks/6182.js","../../../chunks/6252.js","../../../chunks/6328.js","../../../chunks/6404.js","../../../chunks/6492.js","../../../chunks/6811.js","../../../chunks/6844.js","../../../chunks/689.js","../../../chunks/6956.js","../../../chunks/6977.js","../../../chunks/698.js","../../../chunks/6992.js","../../../chunks/7242.js","../../../chunks/7250.js","../../../chunks/7341.js","../../../chunks/7464.js","../../../chunks/7638.js","../../../chunks/7639.js","../../../chunks/7669.js","../../../chunks/7700.js","../../../chunks/7753.js","../../../chunks/7774.js","../../../chunks/7812.js","../../../chunks/7828.js","../../../chunks/7895.js","../../../chunks/7965.js","../../../chunks/8023.js","../../../chunks/8062.js","../../../chunks/814.js","../../../chunks/8141.js","../../../chunks/8255.js","../../../chunks/8316.js","../../../chunks/8352.js","../../../chunks/8360.js","../../../chunks/8469.js","../../../chunks/8491.js","../../../chunks/8520.js","../../../chunks/8590.js","../../../chunks/8627.js","../../../chunks/8640.js","../../../chunks/8895.js","../../../chunks/8946.js","../../../chunks/9413.js","../../../chunks/9483.js","../../../chunks/9489.js","../../../chunks/9609.js","../../../chunks/9868.js","../../../webpack-runtime.js","route_client-reference-manifest.js"]}
|
|
1
|
+
{"version":1,"files":["../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-5.3.49-to-5.3.50-5.3.50-20260822-195035/data.sqlite","../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-5.3.50-to-5.3.51-5.3.51-20260822-200352/data.sqlite","../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-5.3.51-to-5.3.52-5.3.52-20260822-210556/data.sqlite","../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-5.3.52-to-5.3.53-5.3.53-20260822-211655/data.sqlite","../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-5.3.53-to-5.3.54-5.3.54-20260822-220829/data.sqlite","../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite","../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm","../../../../../cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal","../../../../../cli/.build-home/AppData/Roaming/bluerouter/jwt-secret","../../../../../cli/.build-home/AppData/Roaming/bluerouter/machine-id","../../../../../cli/.build-home/AppData/Roaming/nextjs-nodejs/Config/config.json","../../../../../node_modules/@swc/helpers/_/_interop_require_default/package.json","../../../../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../../../../node_modules/@swc/helpers/package.json","../../../../../node_modules/better-sqlite3/build/Release/better_sqlite3.node","../../../../../node_modules/better-sqlite3/lib/database.js","../../../../../node_modules/better-sqlite3/lib/index.js","../../../../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../../node_modules/better-sqlite3/lib/methods/backup.js","../../../../../node_modules/better-sqlite3/lib/methods/function.js","../../../../../node_modules/better-sqlite3/lib/methods/inspect.js","../../../../../node_modules/better-sqlite3/lib/methods/pragma.js","../../../../../node_modules/better-sqlite3/lib/methods/serialize.js","../../../../../node_modules/better-sqlite3/lib/methods/table.js","../../../../../node_modules/better-sqlite3/lib/methods/transaction.js","../../../../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../../node_modules/better-sqlite3/lib/sqlite-error.js","../../../../../node_modules/better-sqlite3/lib/util.js","../../../../../node_modules/better-sqlite3/package.json","../../../../../node_modules/bindings/bindings.js","../../../../../node_modules/bindings/package.json","../../../../../node_modules/file-uri-to-path/index.js","../../../../../node_modules/file-uri-to-path/package.json","../../../../../node_modules/next/dist/build/adapter/setup-node-env.external.js","../../../../../node_modules/next/dist/client/components/hooks-server-context.js","../../../../../node_modules/next/dist/client/components/static-generation-bailout.js","../../../../../node_modules/next/dist/client/lib/console.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../../node_modules/next/dist/compiled/source-map/package.json","../../../../../node_modules/next/dist/compiled/source-map/source-map.js","../../../../../node_modules/next/dist/compiled/stacktrace-parser/package.json","../../../../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../../../../../node_modules/next/dist/compiled/ws/index.js","../../../../../node_modules/next/dist/compiled/ws/package.json","../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../node_modules/next/dist/lib/constants.js","../../../../../node_modules/next/dist/lib/framework/boundary-constants.js","../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../node_modules/next/dist/lib/is-error.js","../../../../../node_modules/next/dist/lib/picocolors.js","../../../../../node_modules/next/dist/lib/scheduler.js","../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../node_modules/next/dist/server/app-render/blocking-route-messages.js","../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/dynamic-rendering.js","../../../../../node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js","../../../../../node_modules/next/dist/server/app-render/instant-validation/boundary-tracking.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../node_modules/next/dist/server/app-render/staged-rendering.js","../../../../../node_modules/next/dist/server/app-render/sync-io-messages.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../node_modules/next/dist/server/dev/browser-logs/file-logger.js","../../../../../node_modules/next/dist/server/dynamic-rendering-utils.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../node_modules/next/dist/server/lib/parse-stack.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../node_modules/next/dist/server/lib/source-maps.js","../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../node_modules/next/dist/server/node-environment-baseline.js","../../../../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.js","../../../../../node_modules/next/dist/server/node-environment-extensions/console-exit.js","../../../../../node_modules/next/dist/server/node-environment-extensions/console-file.js","../../../../../node_modules/next/dist/server/node-environment-extensions/date.js","../../../../../node_modules/next/dist/server/node-environment-extensions/error-inspect.js","../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../node_modules/next/dist/server/node-environment-extensions/io-utils.js","../../../../../node_modules/next/dist/server/node-environment-extensions/node-crypto.js","../../../../../node_modules/next/dist/server/node-environment-extensions/random.js","../../../../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js","../../../../../node_modules/next/dist/server/node-environment-extensions/web-crypto.js","../../../../../node_modules/next/dist/server/node-environment.js","../../../../../node_modules/next/dist/server/node-polyfill-crypto.js","../../../../../node_modules/next/dist/server/patch-error-inspect.js","../../../../../node_modules/next/dist/server/require-hook.js","../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../node_modules/next/dist/shared/lib/instant-messages.js","../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js","../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../../node_modules/next/dist/shared/lib/promise-with-resolvers.js","../../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../../node_modules/next/dist/shared/lib/segment.js","../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../node_modules/next/package.json","../../../../../node_modules/pg-cloudflare/dist/empty.js","../../../../../node_modules/pg-cloudflare/dist/index.js","../../../../../node_modules/pg-cloudflare/package.json","../../../../../node_modules/pg-connection-string/index.js","../../../../../node_modules/pg-connection-string/package.json","../../../../../node_modules/pg-int8/index.js","../../../../../node_modules/pg-int8/package.json","../../../../../node_modules/pg-pool/index.js","../../../../../node_modules/pg-pool/package.json","../../../../../node_modules/pg-protocol/dist/buffer-reader.js","../../../../../node_modules/pg-protocol/dist/buffer-writer.js","../../../../../node_modules/pg-protocol/dist/index.js","../../../../../node_modules/pg-protocol/dist/messages.js","../../../../../node_modules/pg-protocol/dist/parser.js","../../../../../node_modules/pg-protocol/dist/serializer.js","../../../../../node_modules/pg-protocol/package.json","../../../../../node_modules/pg-types/index.js","../../../../../node_modules/pg-types/lib/arrayParser.js","../../../../../node_modules/pg-types/lib/binaryParsers.js","../../../../../node_modules/pg-types/lib/builtins.js","../../../../../node_modules/pg-types/lib/textParsers.js","../../../../../node_modules/pg-types/package.json","../../../../../node_modules/pg/esm/index.mjs","../../../../../node_modules/pg/lib/client.js","../../../../../node_modules/pg/lib/connection-parameters.js","../../../../../node_modules/pg/lib/connection.js","../../../../../node_modules/pg/lib/crypto/cert-signatures.js","../../../../../node_modules/pg/lib/crypto/sasl.js","../../../../../node_modules/pg/lib/crypto/utils.js","../../../../../node_modules/pg/lib/defaults.js","../../../../../node_modules/pg/lib/index.js","../../../../../node_modules/pg/lib/native/client.js","../../../../../node_modules/pg/lib/native/index.js","../../../../../node_modules/pg/lib/native/query.js","../../../../../node_modules/pg/lib/query.js","../../../../../node_modules/pg/lib/result.js","../../../../../node_modules/pg/lib/stream.js","../../../../../node_modules/pg/lib/type-overrides.js","../../../../../node_modules/pg/lib/utils.js","../../../../../node_modules/pg/package.json","../../../../../node_modules/pgpass/lib/helper.js","../../../../../node_modules/pgpass/lib/index.js","../../../../../node_modules/pgpass/package.json","../../../../../node_modules/postgres-array/index.js","../../../../../node_modules/postgres-array/package.json","../../../../../node_modules/postgres-bytea/index.js","../../../../../node_modules/postgres-bytea/package.json","../../../../../node_modules/postgres-date/index.js","../../../../../node_modules/postgres-date/package.json","../../../../../node_modules/postgres-interval/index.js","../../../../../node_modules/postgres-interval/package.json","../../../../../node_modules/react/cjs/react.development.js","../../../../../node_modules/react/cjs/react.production.js","../../../../../node_modules/react/index.js","../../../../../node_modules/react/package.json","../../../../../node_modules/split2/index.js","../../../../../node_modules/split2/package.json","../../../../../node_modules/sql.js/dist/sql-wasm.js","../../../../../node_modules/sql.js/package.json","../../../../../node_modules/xtend/mutable.js","../../../../../node_modules/xtend/package.json","../../../../../package.json","../../../../../src/lib/db/adapters/betterSqliteAdapter.js","../../../../../src/lib/db/adapters/bunSqliteAdapter.js","../../../../../src/lib/db/adapters/nodeSqliteAdapter.js","../../../../../src/lib/db/adapters/sqljsAdapter.js","../../../../../src/lib/db/migrate.js","../../../../../src/shared/utils/apiKey.js","../../../../package.json","../../../chunks/1002.js","../../../chunks/1455.js","../../../chunks/1817.js","../../../chunks/1998.js","../../../chunks/2155.js","../../../chunks/2242.js","../../../chunks/241.js","../../../chunks/2430.js","../../../chunks/2506.js","../../../chunks/2507.js","../../../chunks/2512.js","../../../chunks/2556.js","../../../chunks/2566.js","../../../chunks/2611.js","../../../chunks/2650.js","../../../chunks/2664.js","../../../chunks/2731.js","../../../chunks/2891.js","../../../chunks/2944.js","../../../chunks/3031.js","../../../chunks/3104.js","../../../chunks/318.js","../../../chunks/3433.js","../../../chunks/3484.js","../../../chunks/3593.js","../../../chunks/3609.js","../../../chunks/3696.js","../../../chunks/3738.js","../../../chunks/3767.js","../../../chunks/3801.js","../../../chunks/3824.js","../../../chunks/3958.js","../../../chunks/3960.js","../../../chunks/4013.js","../../../chunks/4017.js","../../../chunks/402.js","../../../chunks/4123.js","../../../chunks/4177.js","../../../chunks/4315.js","../../../chunks/436.js","../../../chunks/4404.js","../../../chunks/4433.js","../../../chunks/4632.js","../../../chunks/4696.js","../../../chunks/4739.js","../../../chunks/4741.js","../../../chunks/4746.js","../../../chunks/476.js","../../../chunks/4778.js","../../../chunks/4780.js","../../../chunks/4790.js","../../../chunks/4803.js","../../../chunks/507.js","../../../chunks/5206.js","../../../chunks/5210.js","../../../chunks/5258.js","../../../chunks/541.js","../../../chunks/5424.js","../../../chunks/5433.js","../../../chunks/5573.js","../../../chunks/5592.js","../../../chunks/564.js","../../../chunks/5681.js","../../../chunks/5852.js","../../../chunks/5901.js","../../../chunks/5915.js","../../../chunks/595.js","../../../chunks/6053.js","../../../chunks/6064.js","../../../chunks/607.js","../../../chunks/6103.js","../../../chunks/6108.js","../../../chunks/6118.js","../../../chunks/6182.js","../../../chunks/6252.js","../../../chunks/6328.js","../../../chunks/6404.js","../../../chunks/6492.js","../../../chunks/6811.js","../../../chunks/6844.js","../../../chunks/689.js","../../../chunks/6936.js","../../../chunks/6956.js","../../../chunks/6977.js","../../../chunks/698.js","../../../chunks/6992.js","../../../chunks/7242.js","../../../chunks/7341.js","../../../chunks/7464.js","../../../chunks/7639.js","../../../chunks/7669.js","../../../chunks/7753.js","../../../chunks/7774.js","../../../chunks/7812.js","../../../chunks/7828.js","../../../chunks/7965.js","../../../chunks/8023.js","../../../chunks/8062.js","../../../chunks/8099.js","../../../chunks/814.js","../../../chunks/8255.js","../../../chunks/8316.js","../../../chunks/8347.js","../../../chunks/8352.js","../../../chunks/8360.js","../../../chunks/8469.js","../../../chunks/8491.js","../../../chunks/8520.js","../../../chunks/8590.js","../../../chunks/8627.js","../../../chunks/8640.js","../../../chunks/8895.js","../../../chunks/8946.js","../../../chunks/9483.js","../../../chunks/9489.js","../../../chunks/9609.js","../../../chunks/9868.js","../../../webpack-runtime.js","route_client-reference-manifest.js"]}
|