@thangnm.nip/irouter 0.0.7 → 0.0.8
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/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +3 -3
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/employees/[keyId]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/employees/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/employees/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +1 -1
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_not-found.html +1 -1
- package/app/.next/server/app/_not-found.rsc +3 -3
- package/app/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +1 -1
- package/app/.next/server/app/api/models/route.js +1 -1
- package/app/.next/server/app/api/providers/route.js +1 -1
- package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
- package/app/.next/server/app/api/translator/console-logs/stream/route.js +1 -1
- package/app/.next/server/app/api/usage/stream/route.js +2 -2
- package/app/.next/server/app/api/version/route.js +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback.html +1 -1
- package/app/.next/server/app/callback.rsc +3 -3
- package/app/.next/server/app/callback.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next/server/app/dashboard/cli-tools.rsc +5 -5
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.html +1 -1
- package/app/.next/server/app/dashboard/combos.rsc +5 -5
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/employees.html +1 -1
- package/app/.next/server/app/dashboard/employees.rsc +5 -5
- package/app/.next/server/app/dashboard/employees.segments/!KGRhc2hib2FyZCk/dashboard/employees/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/employees.segments/!KGRhc2hib2FyZCk/dashboard/employees.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/employees.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/employees.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/employees.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/employees.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/employees.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/employees.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.html +1 -1
- package/app/.next/server/app/dashboard/endpoint.rsc +5 -5
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/mitm.html +1 -1
- package/app/.next/server/app/dashboard/mitm.rsc +5 -5
- package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.html +1 -1
- package/app/.next/server/app/dashboard/profile.rsc +5 -5
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.html +1 -1
- package/app/.next/server/app/dashboard/providers/new.rsc +5 -5
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.html +1 -1
- package/app/.next/server/app/dashboard/providers.rsc +5 -5
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.rsc +5 -5
- package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/quota.html +2 -2
- package/app/.next/server/app/dashboard/quota.rsc +4 -4
- package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.rsc +3 -3
- package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.html +1 -1
- package/app/.next/server/app/dashboard/translator.rsc +5 -5
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.html +1 -1
- package/app/.next/server/app/dashboard/usage.rsc +5 -5
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.html +1 -1
- package/app/.next/server/app/dashboard.rsc +4 -4
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/index.html +1 -1
- package/app/.next/server/app/index.rsc +3 -3
- package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing.html +1 -1
- package/app/.next/server/app/landing.rsc +3 -3
- package/app/.next/server/app/landing.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login.html +1 -1
- package/app/.next/server/app/login.rsc +4 -4
- package/app/.next/server/app/login.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +3 -3
- package/app/.next/server/chunks/1424.js +1 -1
- package/app/.next/server/chunks/2664.js +1 -1
- package/app/.next/server/chunks/3093.js +1 -1
- package/app/.next/server/chunks/4989.js +2 -2
- package/app/.next/server/chunks/8895.js +2 -2
- package/app/.next/server/middleware-build-manifest.js +1 -1
- package/app/.next/server/pages/404.html +1 -1
- package/app/.next/server/pages/500.html +1 -1
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/chunks/{5497-895f5aeae6865844.js → 5497-a2cd3b9c24168e6b.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/employees/page-ff965877894880b8.js +1 -0
- package/app/.next/static/chunks/app/{layout-eef0e315aaedee4b.js → layout-58cc806d831ca352.js} +1 -1
- package/app/open-sse/handlers/chatCore.js +7 -7
- package/app/open-sse/handlers/internalChatCore.js +6 -6
- package/app/open-sse/utils/stream.js +1 -1
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/employees/page-759cf0824c54aa0a.js +0 -1
- /package/app/.next/static/{Zuy5P2lh2UzDvTuMBJHLu → v7c4R6tiVR1wVjLQgOJj-}/_buildManifest.js +0 -0
- /package/app/.next/static/{Zuy5P2lh2UzDvTuMBJHLu → v7c4R6tiVR1wVjLQgOJj-}/_ssgManifest.js +0 -0
|
@@ -198,7 +198,7 @@ export async function handleInternalChatCore({ body, modelInfo, credentials, str
|
|
|
198
198
|
return createErrorResult(HTTP_STATUS.INTERNAL_ERROR, `Executor for ${provider} does not support executePassthrough`);
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
-
trackPendingRequest(model, provider, connectionId, true);
|
|
201
|
+
trackPendingRequest(model, provider, connectionId, true, false, apiKey);
|
|
202
202
|
appendRequestLog({ model, provider, connectionId, status: "PENDING" }).catch(() => { });
|
|
203
203
|
|
|
204
204
|
const msgCount = body.request?.contents?.length || 0;
|
|
@@ -206,10 +206,10 @@ export async function handleInternalChatCore({ body, modelInfo, credentials, str
|
|
|
206
206
|
|
|
207
207
|
const streamController = createStreamController({
|
|
208
208
|
onDisconnect: (reason) => {
|
|
209
|
-
trackPendingRequest(model, provider, connectionId, false);
|
|
209
|
+
trackPendingRequest(model, provider, connectionId, false, false, apiKey);
|
|
210
210
|
if (onDisconnect) onDisconnect(reason);
|
|
211
211
|
},
|
|
212
|
-
onError: () => trackPendingRequest(model, provider, connectionId, false),
|
|
212
|
+
onError: () => trackPendingRequest(model, provider, connectionId, false, false, apiKey),
|
|
213
213
|
log, provider, model
|
|
214
214
|
});
|
|
215
215
|
|
|
@@ -289,7 +289,7 @@ export async function handleInternalChatCore({ body, modelInfo, credentials, str
|
|
|
289
289
|
|
|
290
290
|
if (!response.ok) {
|
|
291
291
|
reqLogger.logError(response.status, response.statusText);
|
|
292
|
-
trackPendingRequest(model, provider, connectionId, false, true);
|
|
292
|
+
trackPendingRequest(model, provider, connectionId, false, true, apiKey);
|
|
293
293
|
appendRequestLog({ status: `FAILED ${response.status}` }).catch(() => { });
|
|
294
294
|
|
|
295
295
|
const errorBodyText = await response.text();
|
|
@@ -321,14 +321,14 @@ export async function handleInternalChatCore({ body, modelInfo, credentials, str
|
|
|
321
321
|
onRequestSuccess, reqLogger, streamController
|
|
322
322
|
});
|
|
323
323
|
} else {
|
|
324
|
-
trackPendingRequest(model, provider, connectionId, false);
|
|
324
|
+
trackPendingRequest(model, provider, connectionId, false, false, apiKey);
|
|
325
325
|
return await handleInternalNonStreamingResponse({
|
|
326
326
|
providerResponse: response, provider, model, body: finalBody, stream, requestStartTime, connectionId, apiKey, clientRawRequest,
|
|
327
327
|
onRequestSuccess, reqLogger
|
|
328
328
|
});
|
|
329
329
|
}
|
|
330
330
|
} catch (error) {
|
|
331
|
-
trackPendingRequest(model, provider, connectionId, false, true);
|
|
331
|
+
trackPendingRequest(model, provider, connectionId, false, true, apiKey);
|
|
332
332
|
appendRequestLog({ status: "FAILED ERROR" }).catch(() => { });
|
|
333
333
|
|
|
334
334
|
if (error.name === "AbortError" || streamController.signal.aborted) {
|
|
@@ -255,7 +255,7 @@ export function createSSEStream(options = {}) {
|
|
|
255
255
|
},
|
|
256
256
|
|
|
257
257
|
flush(controller) {
|
|
258
|
-
trackPendingRequest(model, provider, connectionId, false);
|
|
258
|
+
trackPendingRequest(model, provider, connectionId, false, false, apiKey);
|
|
259
259
|
try {
|
|
260
260
|
const remaining = decoder.decode();
|
|
261
261
|
if (remaining) buffer += remaining;
|
package/app/package.json
CHANGED
package/package.json
CHANGED
package/app/.next/static/chunks/app/(dashboard)/dashboard/employees/page-759cf0824c54aa0a.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7979],{52600:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>P});var r=s(95155),a=s(12115),l=s(73321),o=s(35497),i=s(84588),n=s(56061),c=s(14051),d=s.n(c),x=s(81750),m=s(6793);s(53255);var u=s(52679);function p({data:e}){let{label:t,color:s,imageUrl:l,textIcon:o,active:i}=e,[n,c]=(0,a.useState)(!1);return(0,r.jsxs)("div",{className:"flex items-center gap-2.5 px-4 py-2.5 rounded-lg border-2 transition-all duration-300 bg-bg",style:{borderColor:i?s:"var(--color-border)",boxShadow:i?`0 0 16px ${s}40`:"none",minWidth:"150px"},children:[(0,r.jsx)(x.h7,{type:"target",position:m.yX.Left,id:"left",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,r.jsx)("div",{className:"w-8 h-8 rounded-md flex items-center justify-center shrink-0",style:{backgroundColor:`${s}15`},children:n?(0,r.jsx)("span",{className:"text-sm font-bold",style:{color:s},children:o}):(0,r.jsx)("img",{src:l,alt:t,className:"w-6 h-6 rounded-sm object-contain",onError:()=>c(!0)})}),(0,r.jsx)("span",{className:"text-base font-medium truncate",style:{color:i?s:"var(--color-text)"},children:t}),i&&(0,r.jsxs)("span",{className:"relative flex h-2 w-2 shrink-0",children:[(0,r.jsx)("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full opacity-75",style:{backgroundColor:s}}),(0,r.jsx)("span",{className:"relative inline-flex rounded-full h-2 w-2",style:{backgroundColor:s}})]})]})}function h({data:e}){let{label:t,active:s,color:a="#f59e0b"}=e;return(0,r.jsxs)("div",{className:"flex items-center gap-2 px-4 py-2.5 rounded-lg border-2 transition-all duration-300 bg-bg",style:{borderColor:s?a:"var(--color-border)",boxShadow:s?`0 0 12px ${a}40`:"none",minWidth:"120px"},children:[(0,r.jsx)("div",{className:"w-7 h-7 rounded-md flex items-center justify-center shrink-0",style:{backgroundColor:`${a}15`},children:(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:s?a:"currentColor",style:{color:s?a:void 0},children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15.75 5.25a3 3 0 013 3m3 0a6 6 0 01-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1121.75 8.25z"})})}),(0,r.jsx)("span",{className:"text-sm font-medium truncate",style:{color:s?a:"var(--color-text)"},children:t}),s&&(0,r.jsxs)("span",{className:"relative flex h-2 w-2 shrink-0",children:[(0,r.jsx)("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full opacity-75",style:{backgroundColor:a}}),(0,r.jsx)("span",{className:"relative inline-flex rounded-full h-2 w-2",style:{backgroundColor:a}})]}),(0,r.jsx)(x.h7,{type:"source",position:m.yX.Right,id:"right",className:"!bg-transparent !border-0 !w-0 !h-0"})]})}function f({data:e}){return(0,r.jsxs)("div",{className:"flex items-center justify-center px-5 py-3 rounded-xl border-2 border-primary bg-primary/5 shadow-md min-w-[130px]",children:[(0,r.jsx)(x.h7,{type:"target",position:m.yX.Left,id:"left",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,r.jsx)(x.h7,{type:"source",position:m.yX.Right,id:"right",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,r.jsx)("img",{src:"/favicon.svg",alt:"iRouter",className:"w-6 h-6 mr-2"}),(0,r.jsx)("span",{className:"text-sm font-bold text-primary",children:"iRouter"}),e.activeCount>0&&(0,r.jsx)("span",{className:"ml-2 px-1.5 py-0.5 rounded-full bg-primary text-white text-xs font-bold",children:e.activeCount})]})}p.propTypes={data:d().object.isRequired},h.propTypes={data:d().object.isRequired},f.propTypes={data:d().object.isRequired};let g={provider:p,router:f,apikey:h};function b({providers:e=[],apiKeys:t=[],activeRequests:s=[],recentRequests:l=[],lastProvider:o="",errorProvider:i=""}){let n=(0,a.useMemo)(()=>s.map(e=>e.provider?.toLowerCase()).filter(Boolean).sort().join(","),[s]),c=o?.toLowerCase()||"",d=i?.toLowerCase()||"",m=(0,a.useMemo)(()=>new Set(n?n.split(","):[]),[n]),p=(0,a.useMemo)(()=>new Set(c?[c]:[]),[c]),h=(0,a.useMemo)(()=>new Set(d?[d]:[]),[d]),f=(0,a.useMemo)(()=>l.map(e=>`${e.keyName||""}:${e.provider||""}`).join(","),[l]),{nodes:y,edges:v}=(0,a.useMemo)(()=>(function(e,t,s,r,a,l){t=t.filter(e=>!1!==e.isActive);let o=e.length,i=t.length,n=Math.max(160,240-((Math.ceil(i/7)||1)-1)*20),c=[],d=[],x={},m={};for(let e of l){let t=e.keyName||"",s=e.provider?.toLowerCase()||"";t&&s&&(x[t]||(x[t]=new Set),x[t].add(s),m[s]||(m[s]=new Set),m[s].add(t))}let p=["#6366f1","#22c55e","#f59e0b","#ef4444","#ec4899","#06b6d4","#8b5cf6","#14b8a6"],h={};t.forEach((e,t)=>{h[e.name||e.key?.slice(0,12)]=p[t%p.length]}),c.push({id:"router",type:"router",position:{x:-65,y:-22},data:{activeCount:s.size},draggable:!1});let f=[];for(let e=0;e<i;e+=7)f.push(t.slice(e,e+7));f.reverse();let g=f.length;f.forEach((e,t)=>{let r=0-n-(g-1-t)*160,a=0-(e.length-1)*80/2;e.forEach((e,t)=>{let l=`apikey-${e.id}`,o=e.name||e.key?.slice(0,12)+"...",i=!!x[o],n=h[o]||"#6b7280",m=i&&s.size>0;c.push({id:l,type:"apikey",position:{x:r-80,y:a+80*t-20},data:{label:o,active:m,color:n},draggable:!1}),d.push({id:`e-key-${l}`,source:l,sourceHandle:"right",target:"router",targetHandle:"left",animated:m,style:m?{stroke:n,strokeWidth:2.5,opacity:.9}:i?{stroke:n,strokeWidth:2,opacity:.7}:{stroke:"var(--color-border)",strokeWidth:1,opacity:.2}})})});let b=[];for(let t=0;t<o;t+=7)b.push(e.slice(t,t+7));return b.forEach((e,t)=>{let l=0+n+160*t,o=0-(e.length-1)*80/2;e.forEach((e,t)=>{var i,n;let x=(i=e.provider,u.Q2[i]||{color:"#6b7280",name:i}),p=s.has(e.provider?.toLowerCase()),f=!p&&r.has(e.provider?.toLowerCase()),g=!p&&a.has(e.provider?.toLowerCase()),b=`provider-${e.provider}`,y=m[e.provider?.toLowerCase()]||new Set,v=y.size>0,j="var(--color-border)",N=1,k=.2,w=!1;g?(j="#ef4444",N=2.5,k=.9):p?(j="#22c55e",N=2.5,k=.9,w=!0):v?(j=h[[...y][0]]||"#6366f1",N=2,k=.7):f&&(j="#f59e0b",N=2,k=.7),c.push({id:b,type:"provider",position:{x:l-90,y:o+80*t-20},data:{label:(x.name!==e.provider?x.name:null)||e.name||e.provider,color:x.color||"#6b7280",imageUrl:(n=e.provider,`/providers/${n}.png`),textIcon:x.textIcon||(e.provider||"?").slice(0,2).toUpperCase(),active:p||v},draggable:!1}),d.push({id:`e-prov-${b}`,source:"router",sourceHandle:"right",target:b,targetHandle:"left",animated:w,style:{stroke:j,strokeWidth:N,opacity:k}})})}),{nodes:c,edges:d}})(e,t,m,p,h,l),[e,t,n,c,d,f]),j=(0,a.useMemo)(()=>e.map(e=>e.provider).sort().join(",")+"|"+t.map(e=>e.id).sort().join(","),[e,t]),N=(0,a.useRef)(null),k=(0,a.useCallback)(e=>{N.current=e,setTimeout(()=>e.fitView({padding:.06}),50)},[]);return(0,r.jsx)("div",{className:"w-full rounded-lg border border-border bg-bg-subtle/30",style:{height:480},children:0===e.length&&0===t.length?(0,r.jsx)("div",{className:"h-full flex items-center justify-center text-text-muted text-sm",children:"No providers or API keys configured"}):(0,r.jsx)(x.Gc,{nodes:y,edges:v,nodeTypes:g,fitView:!0,fitViewOptions:{padding:.06},onInit:k,minZoom:.6,proOptions:{hideAttribution:!0},panOnDrag:!1,zoomOnScroll:!1,zoomOnPinch:!1,zoomOnDoubleClick:!1,preventScrolling:!1,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1},j)})}b.propTypes={providers:d().arrayOf(d().shape({id:d().string,provider:d().string,name:d().string})),apiKeys:d().arrayOf(d().shape({id:d().string,name:d().string,key:d().string})),activeRequests:d().arrayOf(d().shape({provider:d().string,model:d().string})),recentRequests:d().array,lastProvider:d().string,errorProvider:d().string};var y=s(10124),v=s(1728),j=s(48035),N=s(28408),k=s(32539),w=s(59656),C=s(58021),S=s(61567),q=s(67389);let $=["#079A8B","#F57C00","#3B82F6","#EF4444","#8B5CF6","#EC4899","#22C55E","#F59E0B"],R=e=>new Intl.NumberFormat().format(e||0),T=e=>`$${(e||0).toFixed(2)}`;function L({timestamp:e}){let t,[,s]=(0,a.useState)(0);return(0,a.useEffect)(()=>{let e=setInterval(()=>s(e=>e+1),1e3);return()=>clearInterval(e)},[]),(0,r.jsx)(r.Fragment,{children:(t=Math.floor((Date.now()-new Date(e))/1e3))<60?`${t}s ago`:t<3600?`${Math.floor(t/60)}m ago`:t<86400?`${Math.floor(t/3600)}h ago`:`${Math.floor(t/86400)}d ago`})}function E({requests:e=[]}){return(0,r.jsxs)(i.default,{className:"flex flex-col overflow-hidden",padding:"sm",style:{height:480},children:[(0,r.jsx)("div",{className:"px-1 py-2 border-b border-border shrink-0",children:(0,r.jsx)("span",{className:"text-xs font-semibold text-text-muted uppercase tracking-wide",children:"Recent Requests"})}),e.length?(0,r.jsx)("div",{className:"flex-1 overflow-y-auto",children:(0,r.jsxs)("table",{className:"w-full text-xs border-collapse",children:[(0,r.jsx)("thead",{className:"sticky top-0 bg-bg z-10",children:(0,r.jsxs)("tr",{className:"border-b border-border",children:[(0,r.jsx)("th",{className:"py-1.5 text-left font-semibold text-text-muted w-2"}),(0,r.jsx)("th",{className:"py-1.5 text-left font-semibold text-text-muted",children:"Model"}),(0,r.jsx)("th",{className:"py-1.5 pl-3 text-left font-semibold text-text-muted",children:"API Key"}),(0,r.jsx)("th",{className:"py-1.5 text-right font-semibold text-text-muted whitespace-nowrap",children:"In / Out"}),(0,r.jsx)("th",{className:"py-1.5 text-right font-semibold text-text-muted",children:"When"})]})}),(0,r.jsx)("tbody",{className:"divide-y divide-border/50",children:e.map((e,t)=>{let s=!e.status||"ok"===e.status||"success"===e.status;return(0,r.jsxs)("tr",{className:"hover:bg-bg-subtle transition-colors",children:[(0,r.jsx)("td",{className:"py-1.5",children:(0,r.jsx)("span",{className:`block w-1.5 h-1.5 rounded-full ${s?"bg-success":"bg-error"}`})}),(0,r.jsx)("td",{className:"py-1.5 font-mono truncate max-w-[120px]",title:e.model,children:e.model}),(0,r.jsx)("td",{className:"py-1.5 pl-3 truncate max-w-[100px] text-secondary",title:e.keyName,children:e.keyName||"—"}),(0,r.jsxs)("td",{className:"py-1.5 text-right whitespace-nowrap",children:[(0,r.jsxs)("span",{className:"text-primary",children:[R(e.promptTokens),"↑"]})," ",(0,r.jsxs)("span",{className:"text-success",children:[R(e.completionTokens),"↓"]})]}),(0,r.jsx)("td",{className:"py-1.5 text-right text-text-muted whitespace-nowrap",children:(0,r.jsx)(L,{timestamp:e.timestamp})})]},t)})})]})}):(0,r.jsx)("div",{className:"flex-1 flex items-center justify-center text-text-muted text-sm",children:"No requests yet."})]})}let O=[{value:"24h",label:"24h"},{value:"7d",label:"7D"},{value:"30d",label:"30D"},{value:"60d",label:"60D"}];function D(){let[e,t]=(0,a.useState)(null),[s,l]=(0,a.useState)(!0),[o,n]=(0,a.useState)("7d"),[c,d]=(0,a.useState)("cost"),[x,m]=(0,a.useState)([]),[u,p]=(0,a.useState)([]),[h,f]=(0,a.useState)([]),[g,L]=(0,a.useState)([]),[D,F]=(0,a.useState)({activeRequests:[],recentRequests:[],errorProvider:""}),z=(0,a.useCallback)(async()=>{l(!0);try{let[e,s]=await Promise.all([fetch(`/api/employees/stats?period=${o}`),fetch(`/api/usage/stats?period=${o}`)]);if(e.ok){let s=await e.json();t(s)}if(s.ok){let e=await s.json(),t=e.byAccount||{},r={};for(let e of Object.values(t)){let t=e.accountName||"Unknown";r[t]||(r[t]={name:t,requests:0,cost:0,tokens:0}),r[t].requests+=e.requests||0,r[t].cost+=e.cost||0,r[t].tokens+=(e.promptTokens||0)+(e.completionTokens||0)}m(Object.values(r).sort((e,t)=>t.requests-e.requests));let a=e.byModel||{},l=Object.values(a).map(e=>({name:e.rawModel||"Unknown",provider:e.provider||"",requests:e.requests||0,cost:e.cost||0,tokens:(e.promptTokens||0)+(e.completionTokens||0)})),o={};for(let e of l)o[e.name]||(o[e.name]={name:e.name,requests:0,cost:0,tokens:0}),o[e.name].requests+=e.requests,o[e.name].cost+=e.cost,o[e.name].tokens+=e.tokens;p(Object.values(o).sort((e,t)=>t.requests-e.requests))}}catch(e){console.error("Failed to fetch stats:",e)}finally{l(!1)}},[o]);(0,a.useEffect)(()=>{z()},[z]),(0,a.useEffect)(()=>{fetch("/api/providers").then(e=>e.ok?e.json():null).then(e=>{if(!e?.connections)return;let t=new Set;f(e.connections.filter(e=>!t.has(e.provider)&&(t.add(e.provider),!0)))}).catch(()=>{}),fetch("/api/keys").then(e=>e.ok?e.json():null).then(e=>{e?.keys&&L(e.keys)}).catch(()=>{}),fetch("/api/usage/stats?period=7d").then(e=>e.ok?e.json():null).then(e=>{e&&F({activeRequests:e.activeRequests||[],recentRequests:e.recentRequests||[],errorProvider:e.errorProvider||""})}).catch(()=>{})},[]),(0,a.useEffect)(()=>{let e=new EventSource("/api/usage/stream");return e.onmessage=e=>{try{let t=JSON.parse(e.data);F({activeRequests:t.activeRequests||[],recentRequests:t.recentRequests||[],errorProvider:t.errorProvider||""})}catch(e){console.error("[SSE CLIENT] parse error:",e)}},e.onerror=()=>{},()=>e.close()},[]);let A=(0,a.useMemo)(()=>e?.employees?[...e.employees].filter(e=>"cost"===c?e.totalCost>0:e.totalTokens>0).sort((e,t)=>"cost"===c?t.totalCost-e.totalCost:t.totalTokens-e.totalTokens).slice(0,10).map(e=>({name:e.name?.length>12?e.name.slice(0,12)+"…":e.name,fullName:e.name,value:"cost"===c?e.totalCost:e.totalTokens})):[],[e,c]);if(s)return(0,r.jsx)("div",{className:"flex items-center justify-center py-12 text-text-muted",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[32px] animate-spin",children:"progress_activity"})});if(!e)return(0,r.jsx)("div",{className:"text-text-muted text-center py-12",children:"Failed to load employee data."});let{summary:M}=e;return(0,r.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,r.jsx)("div",{className:"flex items-center gap-2 self-end",children:(0,r.jsx)("div",{className:"flex items-center gap-1 bg-bg-subtle rounded-lg p-1 border border-border",children:O.map(e=>(0,r.jsx)("button",{onClick:()=>n(e.value),className:`px-3 py-1 rounded-md text-sm font-medium transition-colors ${o===e.value?"bg-primary text-white shadow-sm":"text-text-muted hover:text-text hover:bg-bg-hover"}`,children:e.label},e.value))})}),(0,r.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[(0,r.jsxs)(i.default,{className:"px-4 py-3 flex flex-col gap-1",children:[(0,r.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Total Employees"}),(0,r.jsx)("span",{className:"text-2xl font-bold",children:R(M.totalEmployees)}),(0,r.jsxs)("span",{className:"text-xs text-text-muted",children:[R(M.activeEmployees)," active"]})]}),(0,r.jsxs)(i.default,{className:"px-4 py-3 flex flex-col gap-1",children:[(0,r.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Total Requests"}),(0,r.jsx)("span",{className:"text-2xl font-bold text-primary",children:R(M.totalRequests)})]}),(0,r.jsxs)(i.default,{className:"px-4 py-3 flex flex-col gap-1",children:[(0,r.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Total Cost"}),(0,r.jsxs)("span",{className:"text-2xl font-bold text-warning",children:["~",T(M.totalCost)]})]}),(0,r.jsxs)(i.default,{className:"px-4 py-3 flex flex-col gap-1",children:[(0,r.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Top Spender"}),(0,r.jsx)("span",{className:"text-2xl font-bold truncate",children:M.topSpender?.name||"—"}),(0,r.jsx)("span",{className:"text-xs text-text-muted",children:M.topSpender?T(M.topSpender.cost):"—"})]})]}),(0,r.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-[2fr_1fr] gap-2 items-stretch",children:[(0,r.jsx)(b,{providers:h,apiKeys:g,activeRequests:D.activeRequests,recentRequests:D.recentRequests,lastProvider:D.recentRequests?.[0]?.provider||"",errorProvider:D.errorProvider}),(0,r.jsx)(E,{requests:D.recentRequests})]}),(0,r.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_2fr] gap-4",children:[(0,r.jsxs)(i.default,{className:"p-4 flex flex-col gap-3",children:[(0,r.jsx)("h3",{className:"font-semibold text-sm text-text-muted uppercase",children:"By Model"}),u.length>0?(0,r.jsx)(v.u,{width:"100%",height:250,children:(0,r.jsxs)(j.E,{data:u.slice(0,8).map(e=>({name:e.name?.length>14?e.name.slice(0,14)+"…":e.name,fullName:e.name,requests:e.requests})),layout:"vertical",margin:{top:0,right:8,left:0,bottom:0},children:[(0,r.jsx)(N.d,{strokeDasharray:"3 3",strokeOpacity:.1,horizontal:!1}),(0,r.jsx)(k.W,{type:"number",tick:{fontSize:10,fill:"currentColor",fillOpacity:.5},tickLine:!1,axisLine:!1,tickFormatter:e=>e>=1e3?`${(e/1e3).toFixed(0)}K`:e}),(0,r.jsx)(w.h,{type:"category",dataKey:"name",tick:{fontSize:10,fill:"currentColor",fillOpacity:.6},tickLine:!1,axisLine:!1,width:100}),(0,r.jsx)(C.m,{cursor:!1,contentStyle:{backgroundColor:"var(--color-bg)",border:"1px solid var(--color-border)",borderRadius:"8px",fontSize:"12px"},formatter:e=>[R(e),"Requests"],labelFormatter:(e,t)=>t?.[0]?.payload?.fullName||e}),(0,r.jsx)(S.yP,{dataKey:"requests",radius:[0,4,4,0],maxBarSize:24,children:u.slice(0,8).map((e,t)=>(0,r.jsx)(q.f,{fill:$[t%$.length]},t))})]})}):(0,r.jsx)("div",{className:"flex-1 flex items-center justify-center text-text-muted text-sm h-[250px]",children:"No data"})]}),A.length>0?(0,r.jsxs)(i.default,{className:"p-4 flex flex-col gap-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("h3",{className:"font-semibold text-sm text-text-muted uppercase",children:"Employee Comparison"}),(0,r.jsxs)("div",{className:"flex items-center gap-1 bg-bg-subtle rounded-lg p-1 border border-border",children:[(0,r.jsx)("button",{onClick:()=>d("cost"),className:`px-3 py-1 rounded-md text-sm font-medium transition-colors ${"cost"===c?"bg-primary text-white shadow-sm":"text-text-muted hover:text-text hover:bg-bg-hover"}`,children:"Cost"}),(0,r.jsx)("button",{onClick:()=>d("tokens"),className:`px-3 py-1 rounded-md text-sm font-medium transition-colors ${"tokens"===c?"bg-primary text-white shadow-sm":"text-text-muted hover:text-text hover:bg-bg-hover"}`,children:"Tokens"})]})]}),(0,r.jsx)(v.u,{width:"100%",height:250,children:(0,r.jsxs)(j.E,{data:A,margin:{top:4,right:8,left:0,bottom:0},children:[(0,r.jsx)(N.d,{strokeDasharray:"3 3",strokeOpacity:.1}),(0,r.jsx)(k.W,{dataKey:"name",tick:{fontSize:11,fill:"currentColor",fillOpacity:.5},tickLine:!1,axisLine:!1}),(0,r.jsx)(w.h,{tick:{fontSize:10,fill:"currentColor",fillOpacity:.5},tickLine:!1,axisLine:!1,tickFormatter:"cost"===c?e=>`$${e.toFixed(2)}`:e=>e>=1e3?`${(e/1e3).toFixed(0)}K`:e,width:55}),(0,r.jsx)(C.m,{cursor:!1,contentStyle:{backgroundColor:"var(--color-bg)",border:"1px solid var(--color-border)",borderRadius:"8px",fontSize:"12px"},formatter:e=>["cost"===c?`$${e.toFixed(4)}`:R(e),"cost"===c?"Cost":"Tokens"],labelFormatter:(e,t)=>t?.[0]?.payload?.fullName||e}),(0,r.jsx)(S.yP,{dataKey:"value",radius:[4,4,0,0],maxBarSize:40,children:A.map((e,t)=>(0,r.jsx)(q.f,{fill:$[t%$.length]},t))})]})})]}):(0,r.jsx)(i.default,{className:"p-4 flex items-center justify-center text-text-muted text-sm h-full",children:"No employee data"})]}),(0,r.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-[2fr_1fr] gap-4",children:[(0,r.jsx)(y.A,{period:o}),(0,r.jsxs)(i.default,{className:"p-4 flex flex-col gap-3",children:[(0,r.jsx)("h3",{className:"font-semibold text-sm text-text-muted uppercase",children:"By Account"}),x.length>0?(0,r.jsx)(v.u,{width:"100%",height:200,children:(0,r.jsxs)(j.E,{data:x.slice(0,8).map(e=>({name:e.name?.length>12?e.name.slice(0,12)+"…":e.name,fullName:e.name,requests:e.requests})),layout:"vertical",margin:{top:0,right:8,left:0,bottom:0},children:[(0,r.jsx)(N.d,{strokeDasharray:"3 3",strokeOpacity:.1,horizontal:!1}),(0,r.jsx)(k.W,{type:"number",tick:{fontSize:10,fill:"currentColor",fillOpacity:.5},tickLine:!1,axisLine:!1,tickFormatter:e=>e>=1e3?`${(e/1e3).toFixed(0)}K`:e}),(0,r.jsx)(w.h,{type:"category",dataKey:"name",tick:{fontSize:11,fill:"currentColor",fillOpacity:.6},tickLine:!1,axisLine:!1,width:90}),(0,r.jsx)(C.m,{cursor:!1,contentStyle:{backgroundColor:"var(--color-bg)",border:"1px solid var(--color-border)",borderRadius:"8px",fontSize:"12px"},formatter:e=>[R(e),"Requests"],labelFormatter:(e,t)=>t?.[0]?.payload?.fullName||e}),(0,r.jsx)(S.yP,{dataKey:"requests",radius:[0,4,4,0],maxBarSize:24,children:x.slice(0,8).map((e,t)=>(0,r.jsx)(q.f,{fill:$[t%$.length]},t))})]})}):(0,r.jsx)("div",{className:"flex-1 flex items-center justify-center text-text-muted text-sm h-[200px]",children:"No data"})]})]})]})}let F=e=>new Intl.NumberFormat().format(e||0),z=[{value:"24h",label:"24h"},{value:"7d",label:"7D"},{value:"30d",label:"30D"},{value:"60d",label:"60D"}],A=[{key:"name",label:"Employee",align:"left"},{key:"isActive",label:"Status",align:"center"},{key:"totalRequests",label:"Requests",align:"right"},{key:"totalPromptTokens",label:"Input Tokens",align:"right"},{key:"totalCompletionTokens",label:"Output Tokens",align:"right"},{key:"totalTokens",label:"Total Tokens",align:"right"},{key:"totalCost",label:"Cost",align:"right"},{key:"modelsUsed",label:"Models",align:"right"},{key:"lastActive",label:"Last Active",align:"right"},{key:"apiKey",label:"API Key",align:"center",sortable:!1}];function M(){let e=(0,l.useRouter)(),[t,s]=(0,a.useState)("7d"),[o,c]=(0,a.useState)(null),[d,x]=(0,a.useState)(!0),[m,u]=(0,a.useState)(""),[p,h]=(0,a.useState)("lastActive"),[f,g]=(0,a.useState)("desc"),b=(0,a.useCallback)(async()=>{x(!0);try{let e=await fetch(`/api/employees/stats?period=${t}`);if(e.ok){let t=await e.json();c(t)}}catch(e){console.error("Failed to fetch:",e)}finally{x(!1)}},[t]);(0,a.useEffect)(()=>{b()},[b]);let y=o?.employees||[],v=(0,a.useMemo)(()=>(m?y.filter(e=>e.name?.toLowerCase().includes(m.toLowerCase())):[...y]).sort((e,t)=>{let s=e[p],r=t[p];return("name"===p?(s=(s||"").toLowerCase(),r=(r||"").toLowerCase()):"isActive"===p?(s=+!!s,r=+!!r):"lastActive"===p?(s=s?new Date(s).getTime():0,r=r?new Date(r).getTime():0):(s=s||0,r=r||0),s<r)?"asc"===f?-1:1:s>r?"asc"===f?1:-1:0}),[y,m,p,f]);return d?(0,r.jsx)("div",{className:"flex items-center justify-center py-12 text-text-muted",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[32px] animate-spin",children:"progress_activity"})}):(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("div",{className:"flex items-center gap-1 bg-bg-subtle rounded-lg p-1 border border-border",children:z.map(e=>(0,r.jsx)("button",{onClick:()=>s(e.value),className:`px-3 py-1 rounded-md text-sm font-medium transition-colors ${t===e.value?"bg-primary text-white shadow-sm":"text-text-muted hover:text-text hover:bg-bg-hover"}`,children:e.label},e.value))}),(0,r.jsx)("input",{type:"text",placeholder:"Filter by name...",value:m,onChange:e=>u(e.target.value),className:"px-3 py-1.5 rounded-lg border border-border bg-bg text-sm text-text focus:outline-none focus:ring-2 focus:ring-primary/50 w-48"})]}),(0,r.jsx)(i.default,{className:"overflow-hidden",children:(0,r.jsx)("div",{className:"overflow-x-auto",children:(0,r.jsxs)("table",{className:"w-full text-sm text-left",children:[(0,r.jsx)("thead",{className:"bg-bg-subtle/30 text-text-muted uppercase text-xs",children:(0,r.jsx)("tr",{children:A.map(e=>{let t=!1!==e.sortable,s=p===e.key,a="center"===e.align?"text-center":"right"===e.align?"text-right":"text-left";return(0,r.jsx)("th",{className:`px-6 py-3 ${a} ${t?"cursor-pointer select-none hover:text-text transition-colors":""}`,onClick:()=>{var s;return t&&void((s=e.key)===p?g(e=>"asc"===e?"desc":"asc"):(h(s),g("desc")))},children:(0,r.jsxs)("span",{className:"inline-flex items-center gap-1",children:[e.label,t&&s&&(0,r.jsx)("span",{className:"text-[10px]",children:"asc"===f?"↑":"↓"}),t&&!s&&(0,r.jsx)("span",{className:"opacity-20 text-[10px]",children:"↕"})]})},e.key)})})}),(0,r.jsxs)("tbody",{className:"divide-y divide-border",children:[v.map(t=>{let s;return(0,r.jsxs)("tr",{onClick:()=>e.push(`/dashboard/employees/${t.keyId}`),className:"hover:bg-bg-subtle/50 transition-colors cursor-pointer",children:[(0,r.jsx)("td",{className:"px-6 py-3 font-medium",children:t.name||"Unnamed"}),(0,r.jsx)("td",{className:"px-6 py-3 text-center",children:(0,r.jsx)(n.default,{variant:t.isActive?"success":"error",size:"sm",children:t.isActive?"Active":"Inactive"})}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:F(t.totalRequests)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-primary",children:F(t.totalPromptTokens)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-success",children:F(t.totalCompletionTokens)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right font-medium",children:F(t.totalTokens)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right font-medium text-warning",children:(s=t.totalCost,`$${(s||0).toFixed(2)}`)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:t.modelsUsed}),(0,r.jsx)("td",{className:"px-6 py-3 text-right whitespace-nowrap",children:(0,r.jsxs)("span",{className:"inline-flex items-center gap-1",children:[t.lastActive&&(0,r.jsx)("span",{className:`inline-block size-1.5 rounded-full ${function(e){if(!e)return"";let t=(Date.now()-new Date(e))/6e4;return t<1?"bg-green-500":t<=60?"bg-blue-400":"bg-red-500"}(t.lastActive)} ${(Date.now()-new Date(t.lastActive))/6e4<=60?"animate-pulse":""}`}),(0,r.jsx)("span",{className:`font-semibold ${function(e){if(!e)return"text-text-muted";let t=(Date.now()-new Date(e))/6e4;return t<1?"text-green-500":t<=60?"text-blue-400":"text-red-400"}(t.lastActive)}`,children:function(e){if(!e)return"Never";let t=Math.floor((Date.now()-new Date(e))/6e4);return t<1?"JUST NOW":t<60?`${t}m ago`:t<1440?`${Math.floor(t/60)}h ago`:new Date(e).toLocaleDateString()}(t.lastActive)})]})}),(0,r.jsx)("td",{className:"px-6 py-3 text-center",children:(0,r.jsx)("code",{className:"text-xs bg-bg-subtle px-2 py-0.5 rounded",children:t.apiKey})})]},t.keyId)}),0===v.length&&(0,r.jsx)("tr",{children:(0,r.jsx)("td",{colSpan:10,className:"px-6 py-8 text-center text-text-muted",children:"No employees found."})})]})]})})})]})}function P(){return(0,r.jsx)(a.Suspense,{fallback:(0,r.jsx)(o.Qv,{}),children:(0,r.jsx)(I,{})})}function I(){let e=(0,l.useSearchParams)(),t=(0,l.useRouter)(),[s,i]=(0,a.useState)(!1),n=e.get("tab"),c=n&&["overview","details"].includes(n)?n:"overview";return(0,r.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,r.jsx)(o.Iz,{options:[{value:"overview",label:"Overview"},{value:"details",label:"Details"}],value:c,onChange:s=>{if(s===c)return;i(!0);let r=new URLSearchParams(e);r.set("tab",s),t.push(`/dashboard/employees?${r.toString()}`,{scroll:!1}),setTimeout(()=>i(!1),300)}}),s?(0,r.jsx)(o.Qv,{}):(0,r.jsxs)(r.Fragment,{children:["overview"===c&&(0,r.jsx)(a.Suspense,{fallback:(0,r.jsx)(o.Qv,{}),children:(0,r.jsx)(D,{})}),"details"===c&&(0,r.jsx)(M,{})]})]})}},70842:(e,t,s)=>{Promise.resolve().then(s.bind(s,52600))}},e=>{e.O(0,[2574,3862,5772,6902,7505,2652,5497,8441,3794,7358],()=>e(e.s=70842)),_N_E=e.O()}]);
|
|
File without changes
|
|
File without changes
|