@aitne/dashboard 0.1.4 → 0.1.7
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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +5 -1
- package/.next/build-manifest.json +3 -3
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/diagnostics/route-bundle-stats.json +450 -356
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +96 -0
- package/.next/routes-manifest.json +24 -0
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +15 -15
- package/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
- package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/activity/page.js.nft.json +1 -1
- package/.next/server/app/activity/page_client-reference-manifest.js +1 -1
- package/.next/server/app/activity.html +1 -1
- package/.next/server/app/activity.rsc +19 -19
- package/.next/server/app/activity.segments/_full.segment.rsc +19 -19
- package/.next/server/app/activity.segments/_head.segment.rsc +4 -4
- package/.next/server/app/activity.segments/_index.segment.rsc +10 -10
- package/.next/server/app/activity.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/activity.segments/activity/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/activity.segments/activity.segment.rsc +4 -4
- package/.next/server/app/analytics/page.js.nft.json +1 -1
- package/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
- package/.next/server/app/analytics.html +1 -1
- package/.next/server/app/analytics.rsc +19 -19
- package/.next/server/app/analytics.segments/_full.segment.rsc +19 -19
- package/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
- package/.next/server/app/analytics.segments/_index.segment.rsc +10 -10
- package/.next/server/app/analytics.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/analytics.segments/analytics.segment.rsc +4 -4
- package/.next/server/app/api/[...path]/route.js +1 -1
- package/.next/server/app/api/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +17 -17
- package/.next/server/app/chat.segments/_full.segment.rsc +17 -17
- package/.next/server/app/chat.segments/_head.segment.rsc +4 -4
- package/.next/server/app/chat.segments/_index.segment.rsc +10 -10
- package/.next/server/app/chat.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/chat.segments/chat.segment.rsc +3 -3
- package/.next/server/app/connections/calendar/page.js.nft.json +1 -1
- package/.next/server/app/connections/calendar/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections/calendar.html +1 -1
- package/.next/server/app/connections/calendar.rsc +18 -18
- package/.next/server/app/connections/calendar.segments/_full.segment.rsc +18 -18
- package/.next/server/app/connections/calendar.segments/_head.segment.rsc +4 -4
- package/.next/server/app/connections/calendar.segments/_index.segment.rsc +10 -10
- package/.next/server/app/connections/calendar.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/connections/calendar.segments/connections/calendar/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/connections/calendar.segments/connections/calendar.segment.rsc +3 -3
- package/.next/server/app/connections/calendar.segments/connections.segment.rsc +4 -4
- package/.next/server/app/connections/journal/page.js.nft.json +1 -1
- package/.next/server/app/connections/journal/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections/journal.html +1 -1
- package/.next/server/app/connections/journal.rsc +16 -16
- package/.next/server/app/connections/journal.segments/_full.segment.rsc +16 -16
- package/.next/server/app/connections/journal.segments/_head.segment.rsc +4 -4
- package/.next/server/app/connections/journal.segments/_index.segment.rsc +10 -10
- package/.next/server/app/connections/journal.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/connections/journal.segments/connections/journal/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/connections/journal.segments/connections/journal.segment.rsc +3 -3
- package/.next/server/app/connections/journal.segments/connections.segment.rsc +4 -4
- package/.next/server/app/connections/knowledge/page.js.nft.json +1 -1
- package/.next/server/app/connections/knowledge/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections/knowledge.html +1 -1
- package/.next/server/app/connections/knowledge.rsc +18 -18
- package/.next/server/app/connections/knowledge.segments/_full.segment.rsc +18 -18
- package/.next/server/app/connections/knowledge.segments/_head.segment.rsc +4 -4
- package/.next/server/app/connections/knowledge.segments/_index.segment.rsc +10 -10
- package/.next/server/app/connections/knowledge.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/connections/knowledge.segments/connections/knowledge/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/connections/knowledge.segments/connections/knowledge.segment.rsc +3 -3
- package/.next/server/app/connections/knowledge.segments/connections.segment.rsc +4 -4
- package/.next/server/app/connections/mail/page.js.nft.json +1 -1
- package/.next/server/app/connections/mail/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections/mail.html +1 -1
- package/.next/server/app/connections/mail.rsc +18 -18
- package/.next/server/app/connections/mail.segments/_full.segment.rsc +18 -18
- package/.next/server/app/connections/mail.segments/_head.segment.rsc +4 -4
- package/.next/server/app/connections/mail.segments/_index.segment.rsc +10 -10
- package/.next/server/app/connections/mail.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/connections/mail.segments/connections/mail/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/connections/mail.segments/connections/mail.segment.rsc +3 -3
- package/.next/server/app/connections/mail.segments/connections.segment.rsc +4 -4
- package/.next/server/app/connections/mcp/page.js.nft.json +1 -1
- package/.next/server/app/connections/mcp/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections/mcp.html +1 -1
- package/.next/server/app/connections/mcp.rsc +18 -18
- package/.next/server/app/connections/mcp.segments/_full.segment.rsc +18 -18
- package/.next/server/app/connections/mcp.segments/_head.segment.rsc +4 -4
- package/.next/server/app/connections/mcp.segments/_index.segment.rsc +10 -10
- package/.next/server/app/connections/mcp.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/connections/mcp.segments/connections/mcp/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/connections/mcp.segments/connections/mcp.segment.rsc +3 -3
- package/.next/server/app/connections/mcp.segments/connections.segment.rsc +4 -4
- package/.next/server/app/connections/messaging/page.js.nft.json +1 -1
- package/.next/server/app/connections/messaging/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections/messaging.html +1 -1
- package/.next/server/app/connections/messaging.rsc +18 -18
- package/.next/server/app/connections/messaging.segments/_full.segment.rsc +18 -18
- package/.next/server/app/connections/messaging.segments/_head.segment.rsc +4 -4
- package/.next/server/app/connections/messaging.segments/_index.segment.rsc +10 -10
- package/.next/server/app/connections/messaging.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/connections/messaging.segments/connections/messaging/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/connections/messaging.segments/connections/messaging.segment.rsc +3 -3
- package/.next/server/app/connections/messaging.segments/connections.segment.rsc +4 -4
- package/.next/server/app/connections/page.js.nft.json +1 -1
- package/.next/server/app/connections/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections/repositories/page.js.nft.json +1 -1
- package/.next/server/app/connections/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections/repositories.html +1 -1
- package/.next/server/app/connections/repositories.rsc +18 -18
- package/.next/server/app/connections/repositories.segments/_full.segment.rsc +18 -18
- package/.next/server/app/connections/repositories.segments/_head.segment.rsc +4 -4
- package/.next/server/app/connections/repositories.segments/_index.segment.rsc +10 -10
- package/.next/server/app/connections/repositories.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/connections/repositories.segments/connections/repositories/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/connections/repositories.segments/connections/repositories.segment.rsc +3 -3
- package/.next/server/app/connections/repositories.segments/connections.segment.rsc +4 -4
- package/.next/server/app/connections/routines/page.js.nft.json +1 -1
- package/.next/server/app/connections/routines/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections/routines.html +1 -1
- package/.next/server/app/connections/routines.rsc +16 -16
- package/.next/server/app/connections/routines.segments/_full.segment.rsc +16 -16
- package/.next/server/app/connections/routines.segments/_head.segment.rsc +4 -4
- package/.next/server/app/connections/routines.segments/_index.segment.rsc +10 -10
- package/.next/server/app/connections/routines.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/connections/routines.segments/connections/routines/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/connections/routines.segments/connections/routines.segment.rsc +3 -3
- package/.next/server/app/connections/routines.segments/connections.segment.rsc +4 -4
- package/.next/server/app/connections.html +1 -1
- package/.next/server/app/connections.rsc +16 -16
- package/.next/server/app/connections.segments/_full.segment.rsc +16 -16
- package/.next/server/app/connections.segments/_head.segment.rsc +4 -4
- package/.next/server/app/connections.segments/_index.segment.rsc +10 -10
- package/.next/server/app/connections.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/connections.segments/connections/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/connections.segments/connections.segment.rsc +4 -4
- package/.next/server/app/conversations/[id]/page.js.nft.json +1 -1
- package/.next/server/app/conversations/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/conversations/page.js.nft.json +1 -1
- package/.next/server/app/conversations/page_client-reference-manifest.js +1 -1
- package/.next/server/app/conversations.html +1 -1
- package/.next/server/app/conversations.rsc +15 -15
- package/.next/server/app/conversations.segments/_full.segment.rsc +15 -15
- package/.next/server/app/conversations.segments/_head.segment.rsc +4 -4
- package/.next/server/app/conversations.segments/_index.segment.rsc +10 -10
- package/.next/server/app/conversations.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/conversations.segments/conversations/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/conversations.segments/conversations.segment.rsc +3 -3
- package/.next/server/app/docs/[[...slug]]/page.js.nft.json +1 -1
- package/.next/server/app/docs/[[...slug]]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/finance/page.js.nft.json +1 -1
- package/.next/server/app/finance/page_client-reference-manifest.js +1 -1
- package/.next/server/app/finance.html +1 -1
- package/.next/server/app/finance.rsc +17 -17
- package/.next/server/app/finance.segments/_full.segment.rsc +17 -17
- package/.next/server/app/finance.segments/_head.segment.rsc +4 -4
- package/.next/server/app/finance.segments/_index.segment.rsc +10 -10
- package/.next/server/app/finance.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/finance.segments/finance/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/finance.segments/finance.segment.rsc +3 -3
- package/.next/server/app/git/page.js.nft.json +1 -1
- package/.next/server/app/git/page_client-reference-manifest.js +1 -1
- package/.next/server/app/git.html +1 -1
- package/.next/server/app/git.rsc +17 -17
- package/.next/server/app/git.segments/_full.segment.rsc +17 -17
- package/.next/server/app/git.segments/_head.segment.rsc +4 -4
- package/.next/server/app/git.segments/_index.segment.rsc +10 -10
- package/.next/server/app/git.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/git.segments/git/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/git.segments/git.segment.rsc +3 -3
- package/.next/server/app/health/page.js.nft.json +1 -1
- package/.next/server/app/health/page_client-reference-manifest.js +1 -1
- package/.next/server/app/health.html +1 -1
- package/.next/server/app/health.rsc +17 -17
- package/.next/server/app/health.segments/_full.segment.rsc +17 -17
- package/.next/server/app/health.segments/_head.segment.rsc +4 -4
- package/.next/server/app/health.segments/_index.segment.rsc +10 -10
- package/.next/server/app/health.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/health.segments/health/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/health.segments/health.segment.rsc +3 -3
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +17 -17
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/index.segments/_full.segment.rsc +17 -17
- package/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/server/app/index.segments/_index.segment.rsc +10 -10
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/knowledge/page.js.nft.json +1 -1
- package/.next/server/app/knowledge/page_client-reference-manifest.js +1 -1
- package/.next/server/app/knowledge.html +1 -1
- package/.next/server/app/knowledge.rsc +18 -18
- package/.next/server/app/knowledge.segments/_full.segment.rsc +18 -18
- package/.next/server/app/knowledge.segments/_head.segment.rsc +4 -4
- package/.next/server/app/knowledge.segments/_index.segment.rsc +10 -10
- package/.next/server/app/knowledge.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/knowledge.segments/knowledge/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/knowledge.segments/knowledge.segment.rsc +4 -4
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/reading/page.js.nft.json +1 -1
- package/.next/server/app/reading/page_client-reference-manifest.js +1 -1
- package/.next/server/app/reading.html +1 -1
- package/.next/server/app/reading.rsc +17 -17
- package/.next/server/app/reading.segments/_full.segment.rsc +17 -17
- package/.next/server/app/reading.segments/_head.segment.rsc +4 -4
- package/.next/server/app/reading.segments/_index.segment.rsc +10 -10
- package/.next/server/app/reading.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/reading.segments/reading/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/reading.segments/reading.segment.rsc +3 -3
- package/.next/server/app/schedule/page.js.nft.json +1 -1
- package/.next/server/app/schedule/page_client-reference-manifest.js +1 -1
- package/.next/server/app/schedule.html +1 -1
- package/.next/server/app/schedule.rsc +17 -17
- package/.next/server/app/schedule.segments/_full.segment.rsc +17 -17
- package/.next/server/app/schedule.segments/_head.segment.rsc +4 -4
- package/.next/server/app/schedule.segments/_index.segment.rsc +10 -10
- package/.next/server/app/schedule.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/schedule.segments/schedule/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/schedule.segments/schedule.segment.rsc +3 -3
- package/.next/server/app/settings/advanced/page.js.nft.json +1 -1
- package/.next/server/app/settings/advanced/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/advanced.html +1 -1
- package/.next/server/app/settings/advanced.rsc +18 -18
- package/.next/server/app/settings/advanced.segments/_full.segment.rsc +18 -18
- package/.next/server/app/settings/advanced.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/advanced.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/advanced.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/advanced.segments/settings/advanced/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/advanced.segments/settings/advanced.segment.rsc +3 -3
- package/.next/server/app/settings/advanced.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/backends/page.js.nft.json +1 -1
- package/.next/server/app/settings/backends/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/backends.html +1 -1
- package/.next/server/app/settings/backends.rsc +16 -16
- package/.next/server/app/settings/backends.segments/_full.segment.rsc +16 -16
- package/.next/server/app/settings/backends.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/backends.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/backends.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/backends.segments/settings/backends/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings/backends.segments/settings/backends.segment.rsc +3 -3
- package/.next/server/app/settings/backends.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/commands/page.js.nft.json +1 -1
- package/.next/server/app/settings/commands/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/commands.html +1 -1
- package/.next/server/app/settings/commands.rsc +18 -18
- package/.next/server/app/settings/commands.segments/_full.segment.rsc +18 -18
- package/.next/server/app/settings/commands.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/commands.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/commands.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/commands.segments/settings/commands/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/commands.segments/settings/commands.segment.rsc +3 -3
- package/.next/server/app/settings/commands.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/connections/page.js.nft.json +1 -1
- package/.next/server/app/settings/connections/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/connections.html +1 -1
- package/.next/server/app/settings/connections.rsc +16 -16
- package/.next/server/app/settings/connections.segments/_full.segment.rsc +16 -16
- package/.next/server/app/settings/connections.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/connections.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/connections.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/connections.segments/settings/connections/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings/connections.segments/settings/connections.segment.rsc +3 -3
- package/.next/server/app/settings/connections.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/journal/page.js.nft.json +1 -1
- package/.next/server/app/settings/journal/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/journal.html +1 -1
- package/.next/server/app/settings/journal.rsc +18 -18
- package/.next/server/app/settings/journal.segments/_full.segment.rsc +18 -18
- package/.next/server/app/settings/journal.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/journal.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/journal.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/journal.segments/settings/journal/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/journal.segments/settings/journal.segment.rsc +3 -3
- package/.next/server/app/settings/journal.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/management/page.js.nft.json +1 -1
- package/.next/server/app/settings/management/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/management.html +1 -1
- package/.next/server/app/settings/management.rsc +18 -18
- package/.next/server/app/settings/management.segments/_full.segment.rsc +18 -18
- package/.next/server/app/settings/management.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/management.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/management.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/management.segments/settings/management/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/management.segments/settings/management.segment.rsc +3 -3
- package/.next/server/app/settings/management.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/messaging/page.js.nft.json +1 -1
- package/.next/server/app/settings/messaging/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/messaging.html +1 -1
- package/.next/server/app/settings/messaging.rsc +16 -16
- package/.next/server/app/settings/messaging.segments/_full.segment.rsc +16 -16
- package/.next/server/app/settings/messaging.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/messaging.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/messaging.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/messaging.segments/settings/messaging/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings/messaging.segments/settings/messaging.segment.rsc +3 -3
- package/.next/server/app/settings/messaging.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/models/page.js.nft.json +1 -1
- package/.next/server/app/settings/models/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/models.html +1 -1
- package/.next/server/app/settings/models.rsc +18 -18
- package/.next/server/app/settings/models.segments/_full.segment.rsc +18 -18
- package/.next/server/app/settings/models.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/models.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/models.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/models.segments/settings/models/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/models.segments/settings/models.segment.rsc +3 -3
- package/.next/server/app/settings/models.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/processes/page.js.nft.json +1 -1
- package/.next/server/app/settings/processes/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/processes.html +1 -1
- package/.next/server/app/settings/processes.rsc +16 -16
- package/.next/server/app/settings/processes.segments/_full.segment.rsc +16 -16
- package/.next/server/app/settings/processes.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/processes.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/processes.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/processes.segments/settings/processes/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings/processes.segments/settings/processes.segment.rsc +3 -3
- package/.next/server/app/settings/processes.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/routines/page.js.nft.json +1 -1
- package/.next/server/app/settings/routines/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/routines.html +1 -1
- package/.next/server/app/settings/routines.rsc +18 -18
- package/.next/server/app/settings/routines.segments/_full.segment.rsc +18 -18
- package/.next/server/app/settings/routines.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/routines.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/routines.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/routines.segments/settings/routines/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/routines.segments/settings/routines.segment.rsc +3 -3
- package/.next/server/app/settings/routines.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/schedule/page.js.nft.json +1 -1
- package/.next/server/app/settings/schedule/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/schedule.html +1 -1
- package/.next/server/app/settings/schedule.rsc +18 -18
- package/.next/server/app/settings/schedule.segments/_full.segment.rsc +18 -18
- package/.next/server/app/settings/schedule.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/schedule.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/schedule.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/schedule.segments/settings/schedule/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/schedule.segments/settings/schedule.segment.rsc +3 -3
- package/.next/server/app/settings/schedule.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/self-learning/page.js.nft.json +1 -1
- package/.next/server/app/settings/self-learning/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/self-learning.html +1 -1
- package/.next/server/app/settings/self-learning.rsc +18 -18
- package/.next/server/app/settings/self-learning.segments/_full.segment.rsc +18 -18
- package/.next/server/app/settings/self-learning.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/self-learning.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/self-learning.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/self-learning.segments/settings/self-learning/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/self-learning.segments/settings/self-learning.segment.rsc +3 -3
- package/.next/server/app/settings/self-learning.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/wiki/page/app-paths-manifest.json +3 -0
- package/.next/server/app/settings/wiki/page/build-manifest.json +18 -0
- package/.next/server/app/settings/wiki/page/next-font-manifest.json +6 -0
- package/.next/server/app/settings/wiki/page/react-loadable-manifest.json +8 -0
- package/.next/server/app/settings/wiki/page/server-reference-manifest.json +4 -0
- package/.next/server/app/settings/wiki/page.js +16 -0
- package/.next/server/app/settings/wiki/page.js.map +5 -0
- package/.next/server/app/settings/wiki/page.js.nft.json +1 -0
- package/.next/server/app/settings/wiki/page_client-reference-manifest.js +3 -0
- package/.next/server/app/settings/wiki/timeline/page/app-paths-manifest.json +3 -0
- package/.next/server/app/settings/wiki/timeline/page/build-manifest.json +18 -0
- package/.next/server/app/settings/wiki/timeline/page/next-font-manifest.json +6 -0
- package/.next/server/app/settings/wiki/timeline/page/react-loadable-manifest.json +8 -0
- package/.next/server/app/settings/wiki/timeline/page/server-reference-manifest.json +4 -0
- package/.next/server/app/settings/wiki/timeline/page.js +17 -0
- package/.next/server/app/settings/wiki/timeline/page.js.map +5 -0
- package/.next/server/app/settings/wiki/timeline/page.js.nft.json +1 -0
- package/.next/server/app/settings/wiki/timeline/page_client-reference-manifest.js +3 -0
- package/.next/server/app/settings/wiki/timeline.html +1 -0
- package/.next/server/app/settings/wiki/timeline.meta +17 -0
- package/.next/server/app/settings/wiki/timeline.rsc +24 -0
- package/.next/server/app/settings/wiki/timeline.segments/_full.segment.rsc +24 -0
- package/.next/server/app/settings/wiki/timeline.segments/_head.segment.rsc +6 -0
- package/.next/server/app/settings/wiki/timeline.segments/_index.segment.rsc +11 -0
- package/.next/server/app/settings/wiki/timeline.segments/_tree.segment.rsc +2 -0
- package/.next/server/app/settings/wiki/timeline.segments/settings/wiki/timeline/__PAGE__.segment.rsc +6 -0
- package/.next/server/app/settings/wiki/timeline.segments/settings/wiki/timeline.segment.rsc +5 -0
- package/.next/server/app/settings/wiki/timeline.segments/settings/wiki.segment.rsc +5 -0
- package/.next/server/app/settings/wiki/timeline.segments/settings.segment.rsc +5 -0
- package/.next/server/app/settings/wiki.html +1 -0
- package/.next/server/app/settings/wiki.meta +16 -0
- package/.next/server/app/settings/wiki.rsc +27 -0
- package/.next/server/app/settings/wiki.segments/_full.segment.rsc +27 -0
- package/.next/server/app/settings/wiki.segments/_head.segment.rsc +6 -0
- package/.next/server/app/settings/wiki.segments/_index.segment.rsc +11 -0
- package/.next/server/app/settings/wiki.segments/_tree.segment.rsc +2 -0
- package/.next/server/app/settings/wiki.segments/settings/wiki/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/settings/wiki.segments/settings/wiki.segment.rsc +5 -0
- package/.next/server/app/settings/wiki.segments/settings.segment.rsc +5 -0
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +18 -18
- package/.next/server/app/settings.segments/_full.segment.rsc +18 -18
- package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings.segments/settings.segment.rsc +4 -4
- package/.next/server/app/setup/page.js.nft.json +1 -1
- package/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/.next/server/app/setup.html +1 -1
- package/.next/server/app/setup.rsc +17 -17
- package/.next/server/app/setup.segments/_full.segment.rsc +17 -17
- package/.next/server/app/setup.segments/_head.segment.rsc +4 -4
- package/.next/server/app/setup.segments/_index.segment.rsc +10 -10
- package/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/setup.segments/setup.segment.rsc +3 -3
- package/.next/server/app/trip/page.js.nft.json +1 -1
- package/.next/server/app/trip/page_client-reference-manifest.js +1 -1
- package/.next/server/app/trip.html +1 -1
- package/.next/server/app/trip.rsc +17 -17
- package/.next/server/app/trip.segments/_full.segment.rsc +17 -17
- package/.next/server/app/trip.segments/_head.segment.rsc +4 -4
- package/.next/server/app/trip.segments/_index.segment.rsc +10 -10
- package/.next/server/app/trip.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/trip.segments/trip/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/trip.segments/trip.segment.rsc +3 -3
- package/.next/server/app/wiki/page/app-paths-manifest.json +3 -0
- package/.next/server/app/wiki/page/build-manifest.json +18 -0
- package/.next/server/app/wiki/page/next-font-manifest.json +6 -0
- package/.next/server/app/wiki/page/react-loadable-manifest.json +8 -0
- package/.next/server/app/wiki/page/server-reference-manifest.json +4 -0
- package/.next/server/app/wiki/page.js +15 -0
- package/.next/server/app/wiki/page.js.map +5 -0
- package/.next/server/app/wiki/page.js.nft.json +1 -0
- package/.next/server/app/wiki/page_client-reference-manifest.js +3 -0
- package/.next/server/app/wiki/timeline/page/app-paths-manifest.json +3 -0
- package/.next/server/app/wiki/timeline/page/build-manifest.json +18 -0
- package/.next/server/app/wiki/timeline/page/next-font-manifest.json +6 -0
- package/.next/server/app/wiki/timeline/page/react-loadable-manifest.json +8 -0
- package/.next/server/app/wiki/timeline/page/server-reference-manifest.json +4 -0
- package/.next/server/app/wiki/timeline/page.js +15 -0
- package/.next/server/app/wiki/timeline/page.js.map +5 -0
- package/.next/server/app/wiki/timeline/page.js.nft.json +1 -0
- package/.next/server/app/wiki/timeline/page_client-reference-manifest.js +3 -0
- package/.next/server/app/wiki/timeline.html +1 -0
- package/.next/server/app/wiki/timeline.meta +16 -0
- package/.next/server/app/wiki/timeline.rsc +26 -0
- package/.next/server/app/wiki/timeline.segments/_full.segment.rsc +26 -0
- package/.next/server/app/wiki/timeline.segments/_head.segment.rsc +6 -0
- package/.next/server/app/wiki/timeline.segments/_index.segment.rsc +11 -0
- package/.next/server/app/wiki/timeline.segments/_tree.segment.rsc +2 -0
- package/.next/server/app/wiki/timeline.segments/wiki/timeline/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/wiki/timeline.segments/wiki/timeline.segment.rsc +5 -0
- package/.next/server/app/wiki/timeline.segments/wiki.segment.rsc +5 -0
- package/.next/server/app/wiki.html +1 -0
- package/.next/server/app/wiki.meta +15 -0
- package/.next/server/app/wiki.rsc +26 -0
- package/.next/server/app/wiki.segments/_full.segment.rsc +26 -0
- package/.next/server/app/wiki.segments/_head.segment.rsc +6 -0
- package/.next/server/app/wiki.segments/_index.segment.rsc +11 -0
- package/.next/server/app/wiki.segments/_tree.segment.rsc +2 -0
- package/.next/server/app/wiki.segments/wiki/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/wiki.segments/wiki.segment.rsc +5 -0
- package/.next/server/app-paths-manifest.json +5 -1
- package/.next/server/chunks/0z~i_next_dist_esm_build_templates_app-route_0o_o_hp.js +1 -1
- package/.next/server/chunks/0z~i_next_dist_esm_build_templates_app-route_0o_o_hp.js.map +1 -1
- package/.next/server/chunks/{[root-of-the-server]__00gp8gz._.js → [root-of-the-server]__01knfi.._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0-0wgko._.js → [root-of-the-server]__08_s4yo._.js} +2 -2
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_wiki_timeline_page_actions_0czqn6z.js +3 -0
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_wiki_timeline_page_actions_0czqn6z.js.map +1 -0
- package/.next/server/chunks/ssr/0mzu_lucide-react_dist_esm_icons_zap_115-27i.js +3 -0
- package/.next/server/chunks/ssr/0mzu_lucide-react_dist_esm_icons_zap_115-27i.js.map +1 -0
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0k3x-na.js +4 -0
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0k3x-na.js.map +1 -0
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0km22.v.js +4 -0
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0km22.v.js.map +1 -0
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0vui1gx.js +4 -0
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0vui1gx.js.map +1 -0
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_11h319t.js +4 -0
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_11h319t.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__007ymqm._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__007ymqm._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__00vjce2._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__00vjce2._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__07pkvm3._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__07pkvm3._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0dfuz7_._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0dfuz7_._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__117dw_l._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__117dw_l._.js.map +1 -0
- package/.next/server/chunks/ssr/_0-3uzu1._.js +3 -0
- package/.next/server/chunks/ssr/_0-3uzu1._.js.map +1 -0
- package/.next/server/chunks/ssr/_0-6jgyg._.js +3 -0
- package/.next/server/chunks/ssr/_0-6jgyg._.js.map +1 -0
- package/.next/server/chunks/ssr/_0-fv_sr._.js +1 -1
- package/.next/server/chunks/ssr/_0-fv_sr._.js.map +1 -1
- package/.next/server/chunks/ssr/_0.7pki~._.js +3 -0
- package/.next/server/chunks/ssr/_0.7pki~._.js.map +1 -0
- package/.next/server/chunks/ssr/_02s86rg._.js +3 -0
- package/.next/server/chunks/ssr/_02s86rg._.js.map +1 -0
- package/.next/server/chunks/ssr/_03bq.de._.js +3 -0
- package/.next/server/chunks/ssr/_03bq.de._.js.map +1 -0
- package/.next/server/chunks/ssr/_03u6ja0._.js +3 -0
- package/.next/server/chunks/ssr/_03u6ja0._.js.map +1 -0
- package/.next/server/chunks/ssr/_04-.z69._.js +3 -0
- package/.next/server/chunks/ssr/_04-.z69._.js.map +1 -0
- package/.next/server/chunks/ssr/_05rlac0._.js +3 -0
- package/.next/server/chunks/ssr/_05rlac0._.js.map +1 -0
- package/.next/server/chunks/ssr/_05xysbw._.js +3 -0
- package/.next/server/chunks/ssr/_05xysbw._.js.map +1 -0
- package/.next/server/chunks/ssr/_09e_66m._.js +3 -0
- package/.next/server/chunks/ssr/_09e_66m._.js.map +1 -0
- package/.next/server/chunks/ssr/_0_bnan9._.js +3 -0
- package/.next/server/chunks/ssr/_0_bnan9._.js.map +1 -0
- package/.next/server/chunks/ssr/_0b00io4._.js +3 -0
- package/.next/server/chunks/ssr/_0b00io4._.js.map +1 -0
- package/.next/server/chunks/ssr/_0es_2i2._.js +3 -0
- package/.next/server/chunks/ssr/_0es_2i2._.js.map +1 -0
- package/.next/server/chunks/ssr/_0g7_r5i._.js +3 -0
- package/.next/server/chunks/ssr/_0g7_r5i._.js.map +1 -0
- package/.next/server/chunks/ssr/_0hojxqy._.js +1 -1
- package/.next/server/chunks/ssr/_0hojxqy._.js.map +1 -1
- package/.next/server/chunks/ssr/_0ifb9jm._.js +3 -0
- package/.next/server/chunks/ssr/_0ifb9jm._.js.map +1 -0
- package/.next/server/chunks/ssr/_0jl_-u5._.js +3 -0
- package/.next/server/chunks/ssr/_0jl_-u5._.js.map +1 -0
- package/.next/server/chunks/ssr/_0lfuvjg._.js +3 -0
- package/.next/server/chunks/ssr/_0lfuvjg._.js.map +1 -0
- package/.next/server/chunks/ssr/{_0jm~wn-._.js → _0mp7n5i._.js} +2 -2
- package/.next/server/chunks/ssr/{_0jm~wn-._.js.map → _0mp7n5i._.js.map} +1 -1
- package/.next/server/chunks/ssr/_0powsoh._.js +3 -0
- package/.next/server/chunks/ssr/_0powsoh._.js.map +1 -0
- package/.next/server/chunks/ssr/_0q34y9l._.js +3 -0
- package/.next/server/chunks/ssr/_0q34y9l._.js.map +1 -0
- package/.next/server/chunks/ssr/_0q4rpi-._.js +5 -0
- package/.next/server/chunks/ssr/_0q4rpi-._.js.map +1 -0
- package/.next/server/chunks/ssr/_0rc-7d4._.js +3 -0
- package/.next/server/chunks/ssr/_0rc-7d4._.js.map +1 -0
- package/.next/server/chunks/ssr/_0tjsh16._.js +3 -0
- package/.next/server/chunks/ssr/_0tjsh16._.js.map +1 -0
- package/.next/server/chunks/ssr/_0tl98en._.js +1 -1
- package/.next/server/chunks/ssr/_0tl98en._.js.map +1 -1
- package/.next/server/chunks/ssr/{_0._ysx3._.js → _0v_6ros._.js} +2 -2
- package/.next/server/chunks/ssr/_0v_6ros._.js.map +1 -0
- package/.next/server/chunks/ssr/_0vncjim._.js +3 -0
- package/.next/server/chunks/ssr/_0vncjim._.js.map +1 -0
- package/.next/server/chunks/ssr/_0vx-jgf._.js +3 -0
- package/.next/server/chunks/ssr/_0vx-jgf._.js.map +1 -0
- package/.next/server/chunks/ssr/_0w1ez1p._.js +3 -0
- package/.next/server/chunks/ssr/_0w1ez1p._.js.map +1 -0
- package/.next/server/chunks/ssr/_0yl49yk._.js +3 -0
- package/.next/server/chunks/ssr/_0yl49yk._.js.map +1 -0
- package/.next/server/chunks/ssr/_0z1ah9x._.js +1 -1
- package/.next/server/chunks/ssr/_0z1ah9x._.js.map +1 -1
- package/.next/server/chunks/ssr/_0z9ikwn._.js +3 -0
- package/.next/server/chunks/ssr/_0z9ikwn._.js.map +1 -0
- package/.next/server/chunks/ssr/_0z_cp12._.js +3 -0
- package/.next/server/chunks/ssr/_0z_cp12._.js.map +1 -0
- package/.next/server/chunks/ssr/_10hvwg5._.js +3 -0
- package/.next/server/chunks/ssr/_10hvwg5._.js.map +1 -0
- package/.next/server/chunks/ssr/packages_dashboard__next-internal_server_app_settings_wiki_page_actions_12d~w9l.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard__next-internal_server_app_settings_wiki_page_actions_12d~w9l.js.map +1 -0
- package/.next/server/chunks/ssr/packages_dashboard__next-internal_server_app_wiki_page_actions_026bi.d.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard__next-internal_server_app_wiki_page_actions_026bi.d.js.map +1 -0
- package/.next/server/chunks/ssr/packages_dashboard__next-internal_server_app_wiki_timeline_page_actions_06jb4gg.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard__next-internal_server_app_wiki_timeline_page_actions_06jb4gg.js.map +1 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_0bx940s._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_0bx940s._.js.map +1 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_0fo7nqq._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_0fo7nqq._.js.map +1 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_0uxs9-.._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_0uxs9-.._.js.map +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_activity_page_tsx_08yep46._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_activity_page_tsx_08yep46._.js.map +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_connections_repositories_page_tsx_08y6paq._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_connections_repositories_page_tsx_08y6paq._.js.map +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_git_page_tsx_0ah19-6._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_git_page_tsx_0ah19-6._.js.map +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_schedule_page_tsx_0znc404._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_schedule_page_tsx_0znc404._.js.map +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_models_page_tsx_0djsx88._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_models_page_tsx_0djsx88._.js.map +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_schedule_page_tsx_0b8zr2l._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_schedule_page_tsx_0b8zr2l._.js.map +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_wiki_page_tsx_0..1tkb._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_wiki_page_tsx_0..1tkb._.js.map +1 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_app_setup_page_tsx_06k3via._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_setup_page_tsx_06k3via._.js.map +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_components_connections_slack-card_tsx_0mahejj._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_components_connections_slack-card_tsx_0mahejj._.js.map +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_components_settings_backend-settings_tsx_0i-tp_u._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_components_settings_backend-settings_tsx_0i-tp_u._.js.map +1 -0
- package/.next/server/chunks/ssr/packages_shared_dist_index_0kuvow-.js +1 -1
- package/.next/server/chunks/ssr/packages_shared_dist_index_0kuvow-.js.map +1 -1
- package/.next/server/middleware/middleware-manifest.json +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/middleware-manifest.json +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/static/chunks/01yix41q.0970.js +1 -0
- package/.next/static/chunks/02qjylw4yp63l.js +1 -0
- package/.next/static/chunks/06y2ddf5x9x_4.js +1 -0
- package/.next/static/chunks/{0ztl~44vjnpe1.js → 08ie9t4zn6n4-.js} +1 -1
- package/.next/static/chunks/091khs5zza4_4.js +1 -0
- package/.next/static/chunks/{0~_56pt8wsmeo.js → 0abhg-m1-acdb.js} +1 -1
- package/.next/static/chunks/0ae.1upy09t--.js +1 -0
- package/.next/static/chunks/0bvcd~k.vfro8.js +1 -0
- package/.next/static/chunks/{0g6.0r0i-wyeg.js → 0eqm47_oikj36.js} +1 -1
- package/.next/static/chunks/0fqugh~hv4my1.js +1 -0
- package/.next/static/chunks/0has04tc4mrik.js +1 -0
- package/.next/static/chunks/0huynm-qbj26k.js +1 -0
- package/.next/static/chunks/0ibq4zul6305p.js +1 -0
- package/.next/static/chunks/0jm_e6e6n~rdn.js +1 -0
- package/.next/static/chunks/0k0.4cksmybb2.js +1 -0
- package/.next/static/chunks/0l07yrtw3fxp5.js +1 -0
- package/.next/static/chunks/0nhqu-sq045x7.js +1 -0
- package/.next/static/chunks/0op3oc-if6n5-.js +3 -0
- package/.next/static/chunks/0p34n6.st3s~1.js +1 -0
- package/.next/static/chunks/0r8nosw42e2m9.js +1 -0
- package/.next/static/chunks/0shx3_mxukfhr.js +1 -0
- package/.next/static/chunks/0thm~t5g5adz1.js +1 -0
- package/.next/static/chunks/0thyr1cngc-j..css +1 -0
- package/.next/static/chunks/0ttdb_354lh4t.js +1 -0
- package/.next/static/chunks/0v..ut2v38yep.js +1 -0
- package/.next/static/chunks/{17npklzvg8-~3.js → 0vhj0k-zy6jhh.js} +1 -1
- package/.next/static/chunks/0wdx410~0~gmn.js +1 -0
- package/.next/static/chunks/0y3ptqa0bbi-h.js +1 -0
- package/.next/static/chunks/{0zbxi2grjtx.c.js → 0zx_~u_zxg_7e.js} +1 -1
- package/.next/static/chunks/{0f3kjzb~5zhc~.js → 10pq~97vgkzro.js} +1 -1
- package/.next/static/chunks/11hlk6.h1of0y.js +1 -0
- package/.next/static/chunks/13w_6v~nprp8j.js +11 -0
- package/.next/static/chunks/14-kkni6ecqaw.js +1 -0
- package/.next/static/chunks/{148a9fv~bo0gq.js → 1555iv~_t.1lp.js} +1 -1
- package/.next/static/chunks/{04bbme2th8s1_.js → 15ec5~pa1pv_z.js} +1 -1
- package/.next/static/chunks/15vc-857cdedi.js +1 -0
- package/.next/static/chunks/16zgco6hwlr-n.js +1 -0
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/.next/types/routes.d.ts +5 -1
- package/.next/types/validator.ts +36 -0
- package/package.json +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__02idks~._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__02idks~._.js.map +0 -1
- package/.next/server/chunks/ssr/_0-8__9s._.js +0 -3
- package/.next/server/chunks/ssr/_0-8__9s._.js.map +0 -1
- package/.next/server/chunks/ssr/_0._ysx3._.js.map +0 -1
- package/.next/server/chunks/ssr/_0.h-tj4._.js +0 -3
- package/.next/server/chunks/ssr/_0.h-tj4._.js.map +0 -1
- package/.next/server/chunks/ssr/_02g4o18._.js +0 -3
- package/.next/server/chunks/ssr/_02g4o18._.js.map +0 -1
- package/.next/server/chunks/ssr/_0463dg_._.js +0 -3
- package/.next/server/chunks/ssr/_0463dg_._.js.map +0 -1
- package/.next/server/chunks/ssr/_04a42pa._.js +0 -3
- package/.next/server/chunks/ssr/_04a42pa._.js.map +0 -1
- package/.next/server/chunks/ssr/_04kt9.8._.js +0 -3
- package/.next/server/chunks/ssr/_04kt9.8._.js.map +0 -1
- package/.next/server/chunks/ssr/_052zlig._.js +0 -3
- package/.next/server/chunks/ssr/_052zlig._.js.map +0 -1
- package/.next/server/chunks/ssr/_060itkv._.js +0 -3
- package/.next/server/chunks/ssr/_060itkv._.js.map +0 -1
- package/.next/server/chunks/ssr/_07p0n9g._.js +0 -3
- package/.next/server/chunks/ssr/_07p0n9g._.js.map +0 -1
- package/.next/server/chunks/ssr/_08mbdt1._.js +0 -3
- package/.next/server/chunks/ssr/_08mbdt1._.js.map +0 -1
- package/.next/server/chunks/ssr/_08r_qwd._.js +0 -3
- package/.next/server/chunks/ssr/_08r_qwd._.js.map +0 -1
- package/.next/server/chunks/ssr/_08xk3kp._.js +0 -3
- package/.next/server/chunks/ssr/_08xk3kp._.js.map +0 -1
- package/.next/server/chunks/ssr/_0938p.1._.js +0 -3
- package/.next/server/chunks/ssr/_0938p.1._.js.map +0 -1
- package/.next/server/chunks/ssr/_0afdsbz._.js +0 -3
- package/.next/server/chunks/ssr/_0afdsbz._.js.map +0 -1
- package/.next/server/chunks/ssr/_0ff5qav._.js +0 -3
- package/.next/server/chunks/ssr/_0ff5qav._.js.map +0 -1
- package/.next/server/chunks/ssr/_0gp8d.p._.js +0 -3
- package/.next/server/chunks/ssr/_0gp8d.p._.js.map +0 -1
- package/.next/server/chunks/ssr/_0k2j6-t._.js +0 -3
- package/.next/server/chunks/ssr/_0k2j6-t._.js.map +0 -1
- package/.next/server/chunks/ssr/_0mix09j._.js +0 -3
- package/.next/server/chunks/ssr/_0mix09j._.js.map +0 -1
- package/.next/server/chunks/ssr/_0mk7dqt._.js +0 -3
- package/.next/server/chunks/ssr/_0mk7dqt._.js.map +0 -1
- package/.next/server/chunks/ssr/_0n168uk._.js +0 -3
- package/.next/server/chunks/ssr/_0n168uk._.js.map +0 -1
- package/.next/server/chunks/ssr/_0nwg6lo._.js +0 -3
- package/.next/server/chunks/ssr/_0nwg6lo._.js.map +0 -1
- package/.next/server/chunks/ssr/_0pwd-nz._.js +0 -3
- package/.next/server/chunks/ssr/_0pwd-nz._.js.map +0 -1
- package/.next/server/chunks/ssr/_0rspzax._.js +0 -3
- package/.next/server/chunks/ssr/_0rspzax._.js.map +0 -1
- package/.next/server/chunks/ssr/_0t-2u_i._.js +0 -3
- package/.next/server/chunks/ssr/_0t-2u_i._.js.map +0 -1
- package/.next/server/chunks/ssr/_0vn5_62._.js +0 -5
- package/.next/server/chunks/ssr/_0vn5_62._.js.map +0 -1
- package/.next/server/chunks/ssr/_0yiz~s5._.js +0 -3
- package/.next/server/chunks/ssr/_0yiz~s5._.js.map +0 -1
- package/.next/server/chunks/ssr/_0~4ta0s._.js +0 -3
- package/.next/server/chunks/ssr/_0~4ta0s._.js.map +0 -1
- package/.next/server/chunks/ssr/_0~5r_8s._.js +0 -3
- package/.next/server/chunks/ssr/_0~5r_8s._.js.map +0 -1
- package/.next/server/chunks/ssr/_115_o9h._.js +0 -3
- package/.next/server/chunks/ssr/_115_o9h._.js.map +0 -1
- package/.next/server/chunks/ssr/_13mk_9n._.js +0 -3
- package/.next/server/chunks/ssr/_13mk_9n._.js.map +0 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_07.4ogy._.js +0 -3
- package/.next/server/chunks/ssr/packages_dashboard_src_07.4ogy._.js.map +0 -1
- package/.next/static/chunks/00p2fat~wl7uz.js +0 -1
- package/.next/static/chunks/07aksg8x5r0d9.js +0 -1
- package/.next/static/chunks/082cjr-p4ubw7.js +0 -1
- package/.next/static/chunks/09hewwcw-ts34.js +0 -1
- package/.next/static/chunks/09j~fmfefj03i.js +0 -1
- package/.next/static/chunks/0adfy5uyh_8c8.js +0 -1
- package/.next/static/chunks/0agoryx~xvt31.js +0 -1
- package/.next/static/chunks/0aoci_z-c0ele.css +0 -1
- package/.next/static/chunks/0atsym5j2dgzw.js +0 -1
- package/.next/static/chunks/0b3tta7tnnbur.js +0 -1
- package/.next/static/chunks/0d02.lqlwe9a_.js +0 -1
- package/.next/static/chunks/0eqyosc.qae5n.js +0 -1
- package/.next/static/chunks/0kkrrex6qm68-.js +0 -1
- package/.next/static/chunks/0lfxqap3b6sar.js +0 -11
- package/.next/static/chunks/0ord2b6oqi.3g.js +0 -1
- package/.next/static/chunks/0rh-ee9ky1ybq.js +0 -1
- package/.next/static/chunks/0t5v~o90gn66f.js +0 -1
- package/.next/static/chunks/0vaymprggmdwi.js +0 -3
- package/.next/static/chunks/0x2vder5-rzy3.js +0 -1
- package/.next/static/chunks/0yk64vsbmwqd8.js +0 -1
- package/.next/static/chunks/0yvzj34_7s6kb.js +0 -1
- package/.next/static/chunks/104za._t2qmr8.js +0 -1
- package/.next/static/chunks/13pe2-ed6nel..js +0 -1
- package/.next/static/chunks/13zn61okwjlyn.js +0 -1
- package/.next/static/chunks/153hm0-366-at.js +0 -1
- package/.next/static/chunks/16k3_-6f7kx97.js +0 -1
- package/.next/static/chunks/18904zqns5ncn.js +0 -1
- /package/.next/server/chunks/{[root-of-the-server]__00gp8gz._.js.map → [root-of-the-server]__01knfi.._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0-0wgko._.js.map → [root-of-the-server]__08_s4yo._.js.map} +0 -0
- /package/.next/static/{CDXVH-99b-ZdHz0Rd9pr_ → lsV2FU1YUtwJPmeiim7tk}/_buildManifest.js +0 -0
- /package/.next/static/{CDXVH-99b-ZdHz0Rd9pr_ → lsV2FU1YUtwJPmeiim7tk}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{CDXVH-99b-ZdHz0Rd9pr_ → lsV2FU1YUtwJPmeiim7tk}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,90925,e=>{"use strict";let t=(0,e.i(77379).default)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);e.s(["Trash2",0,t],90925)},60168,e=>{"use strict";let t=(0,e.i(77379).default)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",0,t],60168)},99758,e=>{"use strict";let t=(0,e.i(77379).default)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",0,t],99758)},76176,e=>{"use strict";let t={claude:"Claude Code",codex:"OpenAI Codex",gemini:"Gemini CLI"},r={claude:"Claude",codex:"Codex",gemini:"Gemini"},n={claude:["#7C2D12","#B54B2D","#E15B40","#F97316","#FDBA74"],codex:["#86198F","#A21CAF","#D946EF","#E879F9","#F5D0FE"],gemini:["#1E3A8A","#1D4ED8","#1C69FF","#60A5FA","#93C5FD"]},i=["#6b7280","#9ca3af","#4b5563","#374151"],a={claude:"orange",codex:"pink",gemini:"blue"},s={"routine.morning_routine":"Morning Routine","routine.evening_review":"Evening Review","routine.weekly_review":"Weekly Review","routine.monthly_review":"Monthly Review","routine.hourly_check":"Hourly Check","routine.roadmap_refresh":"Roadmap Refresh","message.dm":"Direct Messages","message.mention":"Mentions","dashboard.chat":"Dashboard Chat","agent.task":"Scheduled Tasks","calendar.change":"Calendar Events",gmail_classify:"Gmail Classification","github.pull_request.review_requested":"GitHub Review Requests","github.assigned":"GitHub Assignments","github.security_alert":"GitHub Security Alerts","github.workflow_run.failed":"GitHub CI Failures","wiki.ingest_url":"Wiki URL Ingest","wiki.compile":"Wiki Compile","wiki.ask":"Wiki Ask"};function o(e){let t;if(!e)return[];try{t=JSON.parse(e)}catch{return[]}if(!t||"object"!=typeof t)return[];let r=[];for(let[e,n]of Object.entries(t))n&&"object"==typeof n&&r.push({modelId:e,inputTokens:"number"==typeof n.inputTokens?n.inputTokens:0,outputTokens:"number"==typeof n.outputTokens?n.outputTokens:0,costUsd:"number"==typeof n.costUsd?n.costUsd:0});return r.sort((e,t)=>t.costUsd-e.costUsd)}function l(e){if(!e)return null;let t=e.toLowerCase();return t.includes("claude")||t.includes("sonnet")||t.includes("opus")||t.includes("haiku")?"claude":t.includes("gemini")?"gemini":t.includes("gpt")||t.includes("codex")||t.includes("o3")||t.includes("o4")?"codex":null}e.s(["BACKEND_BADGE_VARIANTS",0,a,"BACKEND_COLORS",0,{claude:"#E15B40",codex:"#D946EF",gemini:"#1C69FF"},"BACKEND_LABELS",0,t,"BACKEND_PROVIDER_LABELS",0,{claude:"Claude (Anthropic)",codex:"ChatGPT (OpenAI)",gemini:"Gemini (Google)"},"BACKEND_PROVIDER_SHORT",0,{claude:"Claude",codex:"ChatGPT",gemini:"Gemini"},"BACKEND_WEB_SEARCH_DESCRIPTIONS",0,{claude:"Lets the agent call Anthropic's built-in WebSearch tool.",codex:"Lets the agent call OpenAI's web_search tool. Works in safe (sandbox) mode — the tool runs at OpenAI, not as a local shell command.",gemini:"Lets the agent call Gemini's google_web_search tool."},"CHART_CATEGORY_PALETTE",0,["#3b82f6","#10b981","#f59e0b","#8b5cf6","#ec4899","#14b8a6","#f97316","#6366f1","#ef4444","#22c55e"],"assignModelColors",0,function(e){let t=new Map;for(let r of e){if(!r)continue;let e=l(r)??"other",n=t.get(e)??[];n.push(r),t.set(e,n)}let r={};for(let[e,a]of t){a.sort((e,t)=>e.localeCompare(t));let t="other"===e?i:n[e],s=a.length;a.forEach((e,n)=>{let i;i=s>=t.length?n%t.length:1===s?Math.floor(t.length/2):Math.floor((n+.5)*t.length/s),r[e]=t[i]})}return r},"detectBackendFromModel",0,l,"formatModelName",0,function(e){return e?e.replace(/^claude-/,"Claude ").replace(/^gpt-/,"GPT-").replace(/^gemini-/,"Gemini ").replace(/-/g," ").replace(/\bpreview\b/gi,"(preview)").replace(/\bpro\b/gi,"Pro").replace(/\bflash\b/gi,"Flash").replace(/\blite\b/gi,"Lite").replace(/\bmini\b/gi,"Mini").replace(/\bcodex\b/gi,"Codex").replace(/\bopus\b/gi,"Opus").replace(/\bsonnet\b/gi,"Sonnet").replace(/\bhaiku\b/gi,"Haiku").replace(/\s+/g," ").trim():"Not set"},"formatShortModelName",0,function(e){if(!e)return"unknown";if("opus"===e)return"Opus";if("sonnet"===e)return"Sonnet";let t=e.replace(/-\d{8,}$/,"").replace(/^claude-/,"").replace(/(\d+)-(\d+)(?![-\d])/g,"$1.$2").replace(/-/g," ");return e.startsWith("gpt-")&&(t=`GPT-${t.replace(/^gpt\s*/i,"")}`),e.startsWith("gemini-")&&(t=t.replace(/^gemini\s*/i,"Gemini ")),t.replace(/\bopus\b/gi,"Opus").replace(/\bsonnet\b/gi,"Sonnet").replace(/\bhaiku\b/gi,"Haiku").replace(/\bpro\b/gi,"Pro").replace(/\bflash\b/gi,"Flash").replace(/\blite\b/gi,"Lite").replace(/\bmini\b/gi,"Mini").replace(/\s+/g," ").trim()},"getBackendLabel",0,function(e){return t[e]},"getBackendShortLabel",0,function(e){return r[e]},"getProcessGroup",0,function(e){return e.startsWith("wiki.")?"Wiki":e.startsWith("message.")||e.startsWith("dashboard.")?"Conversation":e.startsWith("routine.")?"Routines":e.startsWith("git.")||e.startsWith("github.")?"Git & GitHub":e.startsWith("calendar.")||"gmail_classify"===e?"Integrations":"Tasks"},"getProcessLabel",0,function(e){return s[e]??e},"modelBadgeVariant",0,function(e){if(!e)return"gray";let t=l(e);return t?a[t]:"gray"},"parseModelUsage",0,o,"pickDisplayModel",0,function(e,t){let r=o(t);return r.length>0&&r[0]?r[0].modelId:e??null}])},59134,e=>{"use strict";let t=(0,e.i(77379).default)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);e.s(["RefreshCw",0,t],59134)},75540,e=>{"use strict";var t=e.i(46437),r=e.i(49457),n=class extends t.QueryObserver{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){super.setOptions({...e,behavior:(0,r.infiniteQueryBehavior)()})}getOptimisticResult(e){return e.behavior=(0,r.infiniteQueryBehavior)(),super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"backward"}}})}createResult(e,t){let{state:n}=e,i=super.createResult(e,t),{isFetching:a,isRefetching:s,isError:o,isRefetchError:l}=i,c=n.fetchMeta?.fetchMore?.direction,u=o&&"forward"===c,d=a&&"forward"===c,f=o&&"backward"===c,m=a&&"backward"===c;return{...i,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:(0,r.hasNextPage)(t,n.data),hasPreviousPage:(0,r.hasPreviousPage)(t,n.data),isFetchNextPageError:u,isFetchingNextPage:d,isFetchPreviousPageError:f,isFetchingPreviousPage:m,isRefetchError:l&&!u&&!f,isRefetching:s&&!d&&!m}}},i=e.i(98757);e.s(["useInfiniteQuery",0,function(e,t){return(0,i.useBaseQuery)(e,n,t)}],75540)},50862,e=>{"use strict";var t=e.i(54710),r=e.i(81471);e.s(["EmptyState",0,function({icon:e,title:n,description:i,className:a,children:s}){return(0,t.jsxs)("div",{className:(0,r.cn)("flex flex-col items-center justify-center py-16 text-muted-foreground",a),children:[(0,t.jsx)(e,{className:"mb-3 h-10 w-10 opacity-40"}),(0,t.jsx)("p",{className:"text-sm font-medium",children:n}),i&&(0,t.jsx)("p",{className:"mt-1 max-w-prose text-xs text-muted-foreground/70",children:i}),s]})}])},49785,e=>{"use strict";var t=e.i(54710),r=e.i(63991),n=e.i(72740),i=e.i(20014),a=e.i(81471);function s(){return(0,t.jsx)("div",{className:"flex items-center justify-center py-16",children:(0,t.jsx)(n.Loader2,{className:"h-6 w-6 animate-spin text-muted-foreground"})})}function o({error:e,onRetry:n}){return(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center gap-3 py-16",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-destructive",children:[(0,t.jsx)(r.AlertCircle,{className:"h-5 w-5"}),(0,t.jsx)("p",{className:"text-sm font-medium",children:"Failed to load data"})]}),e?.message&&(0,t.jsx)("p",{className:"max-w-md text-center text-xs text-muted-foreground",children:e.message}),n&&(0,t.jsx)(i.Button,{variant:"outline",size:"sm",onClick:n,children:"Retry"})]})}e.s(["CardSkeleton",0,function({count:e=3}){return(0,t.jsx)("div",{className:(0,a.cn)("grid gap-4",e<=2?"grid-cols-1 md:grid-cols-2":4===e?"grid-cols-2 md:grid-cols-4":"grid-cols-1 md:grid-cols-3"),children:Array.from({length:e}).map((e,r)=>(0,t.jsx)("div",{className:"h-28 animate-pulse rounded-xl border border-border bg-muted/30"},r))})},"QueryResult",0,function({isLoading:e,isError:r,error:n,onRetry:i,skeleton:l,className:c,children:u}){return e?(0,t.jsx)("div",{className:(0,a.cn)(c),children:l??(0,t.jsx)(s,{})}):r?(0,t.jsx)("div",{className:(0,a.cn)(c),children:(0,t.jsx)(o,{error:n,onRetry:i})}):(0,t.jsx)(t.Fragment,{children:u})},"TableSkeleton",0,function({rows:e=5}){return(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("div",{className:"h-10 animate-pulse rounded-lg bg-muted/40"}),Array.from({length:e}).map((e,r)=>(0,t.jsx)("div",{className:"h-12 animate-pulse rounded-lg bg-muted/20"},r))]})}])},26406,e=>{"use strict";var t=e.i(54710),r=e.i(34416),n=e.i(91967),i=e.i(9413),a=e.i(87099),s=e.i(22353),o=e.i(11207),l=e.i(85565),c=e.i(88248),u=e.i(36567),d=e.i(75649),f="rovingFocusGroup.onEntryFocus",m={bubbles:!1,cancelable:!0},g="RovingFocusGroup",[h,p,b]=(0,a.createCollection)(g),[v,x]=(0,i.createContextScope)(g,[b]),[y,w]=v(g),k=r.forwardRef((e,r)=>(0,t.jsx)(h.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,t.jsx)(h.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,t.jsx)(C,{...e,ref:r})})}));k.displayName=g;var C=r.forwardRef((e,i)=>{let{__scopeRovingFocusGroup:a,orientation:o,loop:h=!1,dir:b,currentTabStopId:v,defaultCurrentTabStopId:x,onCurrentTabStopIdChange:w,onEntryFocus:k,preventScrollOnEntryFocus:C=!1,...R}=e,j=r.useRef(null),N=(0,s.useComposedRefs)(i,j),A=(0,d.useDirection)(b),[P,T]=(0,u.useControllableState)({prop:v,defaultProp:x??null,onChange:w,caller:g}),[D,F]=r.useState(!1),M=(0,c.useCallbackRef)(k),I=p(a),S=r.useRef(!1),[_,B]=r.useState(0);return r.useEffect(()=>{let e=j.current;if(e)return e.addEventListener(f,M),()=>e.removeEventListener(f,M)},[M]),(0,t.jsx)(y,{scope:a,orientation:o,dir:A,loop:h,currentTabStopId:P,onItemFocus:r.useCallback(e=>T(e),[T]),onItemShiftTab:r.useCallback(()=>F(!0),[]),onFocusableItemAdd:r.useCallback(()=>B(e=>e+1),[]),onFocusableItemRemove:r.useCallback(()=>B(e=>e-1),[]),children:(0,t.jsx)(l.Primitive.div,{tabIndex:D||0===_?-1:0,"data-orientation":o,...R,ref:N,style:{outline:"none",...e.style},onMouseDown:(0,n.composeEventHandlers)(e.onMouseDown,()=>{S.current=!0}),onFocus:(0,n.composeEventHandlers)(e.onFocus,e=>{let t=!S.current;if(e.target===e.currentTarget&&t&&!D){let t=new CustomEvent(f,m);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=I().filter(e=>e.focusable);E([e.find(e=>e.active),e.find(e=>e.id===P),...e].filter(Boolean).map(e=>e.ref.current),C)}}S.current=!1}),onBlur:(0,n.composeEventHandlers)(e.onBlur,()=>F(!1))})})}),R="RovingFocusGroupItem",j=r.forwardRef((e,i)=>{let{__scopeRovingFocusGroup:a,focusable:s=!0,active:c=!1,tabStopId:u,children:d,...f}=e,m=(0,o.useId)(),g=u||m,b=w(R,a),v=b.currentTabStopId===g,x=p(a),{onFocusableItemAdd:y,onFocusableItemRemove:k,currentTabStopId:C}=b;return r.useEffect(()=>{if(s)return y(),()=>k()},[s,y,k]),(0,t.jsx)(h.ItemSlot,{scope:a,id:g,focusable:s,active:c,children:(0,t.jsx)(l.Primitive.span,{tabIndex:v?0:-1,"data-orientation":b.orientation,...f,ref:i,onMouseDown:(0,n.composeEventHandlers)(e.onMouseDown,e=>{s?b.onItemFocus(g):e.preventDefault()}),onFocus:(0,n.composeEventHandlers)(e.onFocus,()=>b.onItemFocus(g)),onKeyDown:(0,n.composeEventHandlers)(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey)return void b.onItemShiftTab();if(e.target!==e.currentTarget)return;let t=function(e,t,r){var n;let i=(n=e.key,"rtl"!==r?n:"ArrowLeft"===n?"ArrowRight":"ArrowRight"===n?"ArrowLeft":n);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(i))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(i)))return N[i]}(e,b.orientation,b.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let i=x().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)i.reverse();else if("prev"===t||"next"===t){var r,n;"prev"===t&&i.reverse();let a=i.indexOf(e.currentTarget);i=b.loop?(r=i,n=a+1,r.map((e,t)=>r[(n+t)%r.length])):i.slice(a+1)}setTimeout(()=>E(i))}}),children:"function"==typeof d?d({isCurrentTabStop:v,hasTabStop:null!=C}):d})})});j.displayName=R;var N={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function E(e,t=!1){let r=document.activeElement;for(let n of e)if(n===r||(n.focus({preventScroll:t}),document.activeElement!==r))return}var A=e.i(90816),P="Tabs",[T,D]=(0,i.createContextScope)(P,[x]),F=x(),[M,I]=T(P),S=r.forwardRef((e,r)=>{let{__scopeTabs:n,value:i,onValueChange:a,defaultValue:s,orientation:c="horizontal",dir:f,activationMode:m="automatic",...g}=e,h=(0,d.useDirection)(f),[p,b]=(0,u.useControllableState)({prop:i,onChange:a,defaultProp:s??"",caller:P});return(0,t.jsx)(M,{scope:n,baseId:(0,o.useId)(),value:p,onValueChange:b,orientation:c,dir:h,activationMode:m,children:(0,t.jsx)(l.Primitive.div,{dir:h,"data-orientation":c,...g,ref:r})})});S.displayName=P;var _="TabsList",B=r.forwardRef((e,r)=>{let{__scopeTabs:n,loop:i=!0,...a}=e,s=I(_,n),o=F(n);return(0,t.jsx)(k,{asChild:!0,...o,orientation:s.orientation,dir:s.dir,loop:i,children:(0,t.jsx)(l.Primitive.div,{role:"tablist","aria-orientation":s.orientation,...a,ref:r})})});B.displayName=_;var L="TabsTrigger",G=r.forwardRef((e,r)=>{let{__scopeTabs:i,value:a,disabled:s=!1,...o}=e,c=I(L,i),u=F(i),d=K(c.baseId,a),f=W(c.baseId,a),m=a===c.value;return(0,t.jsx)(j,{asChild:!0,...u,focusable:!s,active:m,children:(0,t.jsx)(l.Primitive.button,{type:"button",role:"tab","aria-selected":m,"aria-controls":f,"data-state":m?"active":"inactive","data-disabled":s?"":void 0,disabled:s,id:d,...o,ref:r,onMouseDown:(0,n.composeEventHandlers)(e.onMouseDown,e=>{s||0!==e.button||!1!==e.ctrlKey?e.preventDefault():c.onValueChange(a)}),onKeyDown:(0,n.composeEventHandlers)(e.onKeyDown,e=>{[" ","Enter"].includes(e.key)&&c.onValueChange(a)}),onFocus:(0,n.composeEventHandlers)(e.onFocus,()=>{let e="manual"!==c.activationMode;m||s||!e||c.onValueChange(a)})})})});G.displayName=L;var O="TabsContent",H=r.forwardRef((e,n)=>{let{__scopeTabs:i,value:a,forceMount:s,children:o,...c}=e,u=I(O,i),d=K(u.baseId,a),f=W(u.baseId,a),m=a===u.value,g=r.useRef(m);return r.useEffect(()=>{let e=requestAnimationFrame(()=>g.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,t.jsx)(A.Presence,{present:s||m,children:({present:r})=>(0,t.jsx)(l.Primitive.div,{"data-state":m?"active":"inactive","data-orientation":u.orientation,role:"tabpanel","aria-labelledby":d,hidden:!r,id:f,tabIndex:0,...c,ref:n,style:{...e.style,animationDuration:g.current?"0s":void 0},children:r&&o})})});function K(e,t){return`${e}-trigger-${t}`}function W(e,t){return`${e}-content-${t}`}H.displayName=O;var U=e.i(81471);e.s(["Tabs",0,S,"TabsContent",0,function({className:e,...r}){return(0,t.jsx)(H,{className:(0,U.cn)("mt-2 ring-offset-background focus-visible:outline-none",e),...r})},"TabsList",0,function({className:e,...r}){return(0,t.jsx)(B,{className:(0,U.cn)("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",e),...r})},"TabsTrigger",0,function({className:e,...r}){return(0,t.jsx)(G,{className:(0,U.cn)("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",e),...r})}],26406)},90780,e=>{"use strict";let t=(0,e.i(77379).default)("Pen",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]);e.s(["Edit2",0,t],90780)},71816,49214,e=>{"use strict";var t=e.i(34416),r=e.i(95486),n=e.i(65268);e.s(["useRegenerate",0,function(){let[e,i]=(0,t.useState)(null),[a,s]=(0,t.useState)("idle"),[o,l]=(0,t.useState)(null),c=(0,r.useQueryClient)(),u=(0,t.useRef)(null),d=(0,t.useRef)(null),f=(0,t.useRef)(0);(0,t.useEffect)(()=>()=>{u.current&&clearInterval(u.current)},[]);let m=(0,t.useCallback)(()=>{u.current&&(clearInterval(u.current),u.current=null)},[]);return{regenerate:(0,t.useCallback)(async e=>{if("triggered"===a||"running"===a)return;i(e),s("triggered"),l(null),f.current=Date.now();let t=await n.api.get(`/context/${e}`).catch(()=>null);d.current=t?.lastModified??null;try{await n.api.post("/agent/regenerate",{target:e}),s("running"),u.current=setInterval(async()=>{if(Date.now()-f.current>3e5){m(),s("error"),l("Timeout — agent may still be processing");return}try{let t=await n.api.get(`/context/${e}`);(null===d.current||t.lastModified!==d.current)&&(m(),s("done"),c.invalidateQueries({queryKey:["context",e]}),c.invalidateQueries({queryKey:["calendar"]}),setTimeout(()=>{s("idle"),i(null)},5e3))}catch{}},3e3)}catch(e){s("error"),l(e instanceof Error?e.message:"Failed to trigger")}},[a,c,m]),target:e,status:a,error:o,dismiss:(0,t.useCallback)(()=>{m(),s("idle"),i(null),l(null)},[m])}}],71816);var i=e.i(54710),a=e.i(20014),s=e.i(81471),o=e.i(59134),l=e.i(99758),c=e.i(63991),u=e.i(72740);e.s(["RegenerateButton",0,function({target:e,label:t,currentTarget:r,status:n,error:d,onRegenerate:f,onDismiss:m,variant:g="outline",size:h="sm",className:p}){let b=r===e;return b&&"done"===n?(0,i.jsxs)(a.Button,{variant:g,size:h,className:(0,s.cn)("text-emerald-600 dark:text-emerald-400",p),onClick:m,children:[(0,i.jsx)(l.Check,{className:"h-3.5 w-3.5 mr-1.5"}),"Updated"]}):b&&"error"===n?(0,i.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,i.jsxs)(a.Button,{variant:g,size:h,className:(0,s.cn)("text-red-600 dark:text-red-400",p),onClick:m,children:[(0,i.jsx)(c.AlertCircle,{className:"h-3.5 w-3.5 mr-1.5"}),"Failed"]}),d&&(0,i.jsx)("span",{className:"text-xs text-red-600 dark:text-red-400 max-w-48 truncate",children:d})]}):(0,i.jsxs)(a.Button,{variant:g,size:h,onClick:()=>f(e),disabled:"triggered"===n||"running"===n,className:p,children:[b&&"idle"!==n?(0,i.jsx)(u.Loader2,{className:"h-3.5 w-3.5 mr-1.5 animate-spin"}):(0,i.jsx)(o.RefreshCw,{className:"h-3.5 w-3.5 mr-1.5"}),b&&"triggered"===n?"Triggering...":b&&"running"===n?"Running...":t]})}],49214)},42455,e=>{"use strict";var t=e.i(14260),r=e.i(65268);e.s(["useScheduleNext",0,function(){return(0,t.useQuery)({queryKey:["schedule-next"],queryFn:()=>r.api.get("/schedule/next"),refetchInterval:3e4})}])}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,76176,e=>{"use strict";let t={claude:"Claude Code",codex:"OpenAI Codex",gemini:"Gemini CLI"},r={claude:"Claude",codex:"Codex",gemini:"Gemini"},n={claude:["#7C2D12","#B54B2D","#E15B40","#F97316","#FDBA74"],codex:["#86198F","#A21CAF","#D946EF","#E879F9","#F5D0FE"],gemini:["#1E3A8A","#1D4ED8","#1C69FF","#60A5FA","#93C5FD"]},i=["#6b7280","#9ca3af","#4b5563","#374151"],a={claude:"orange",codex:"pink",gemini:"blue"},o={"routine.morning_routine":"Morning Routine","routine.evening_review":"Evening Review","routine.weekly_review":"Weekly Review","routine.monthly_review":"Monthly Review","routine.hourly_check":"Hourly Check","routine.roadmap_refresh":"Roadmap Refresh","message.dm":"Direct Messages","message.mention":"Mentions","dashboard.chat":"Dashboard Chat","agent.task":"Scheduled Tasks","calendar.change":"Calendar Events",gmail_classify:"Gmail Classification","github.pull_request.review_requested":"GitHub Review Requests","github.assigned":"GitHub Assignments","github.security_alert":"GitHub Security Alerts","github.workflow_run.failed":"GitHub CI Failures","wiki.ingest_url":"Wiki URL Ingest","wiki.compile":"Wiki Compile","wiki.ask":"Wiki Ask"};function s(e){let t;if(!e)return[];try{t=JSON.parse(e)}catch{return[]}if(!t||"object"!=typeof t)return[];let r=[];for(let[e,n]of Object.entries(t))n&&"object"==typeof n&&r.push({modelId:e,inputTokens:"number"==typeof n.inputTokens?n.inputTokens:0,outputTokens:"number"==typeof n.outputTokens?n.outputTokens:0,costUsd:"number"==typeof n.costUsd?n.costUsd:0});return r.sort((e,t)=>t.costUsd-e.costUsd)}function l(e){if(!e)return null;let t=e.toLowerCase();return t.includes("claude")||t.includes("sonnet")||t.includes("opus")||t.includes("haiku")?"claude":t.includes("gemini")?"gemini":t.includes("gpt")||t.includes("codex")||t.includes("o3")||t.includes("o4")?"codex":null}e.s(["BACKEND_BADGE_VARIANTS",0,a,"BACKEND_COLORS",0,{claude:"#E15B40",codex:"#D946EF",gemini:"#1C69FF"},"BACKEND_LABELS",0,t,"BACKEND_PROVIDER_LABELS",0,{claude:"Claude (Anthropic)",codex:"ChatGPT (OpenAI)",gemini:"Gemini (Google)"},"BACKEND_PROVIDER_SHORT",0,{claude:"Claude",codex:"ChatGPT",gemini:"Gemini"},"BACKEND_WEB_SEARCH_DESCRIPTIONS",0,{claude:"Lets the agent call Anthropic's built-in WebSearch tool.",codex:"Lets the agent call OpenAI's web_search tool. Works in safe (sandbox) mode — the tool runs at OpenAI, not as a local shell command.",gemini:"Lets the agent call Gemini's google_web_search tool."},"CHART_CATEGORY_PALETTE",0,["#3b82f6","#10b981","#f59e0b","#8b5cf6","#ec4899","#14b8a6","#f97316","#6366f1","#ef4444","#22c55e"],"assignModelColors",0,function(e){let t=new Map;for(let r of e){if(!r)continue;let e=l(r)??"other",n=t.get(e)??[];n.push(r),t.set(e,n)}let r={};for(let[e,a]of t){a.sort((e,t)=>e.localeCompare(t));let t="other"===e?i:n[e],o=a.length;a.forEach((e,n)=>{let i;i=o>=t.length?n%t.length:1===o?Math.floor(t.length/2):Math.floor((n+.5)*t.length/o),r[e]=t[i]})}return r},"detectBackendFromModel",0,l,"formatModelName",0,function(e){return e?e.replace(/^claude-/,"Claude ").replace(/^gpt-/,"GPT-").replace(/^gemini-/,"Gemini ").replace(/-/g," ").replace(/\bpreview\b/gi,"(preview)").replace(/\bpro\b/gi,"Pro").replace(/\bflash\b/gi,"Flash").replace(/\blite\b/gi,"Lite").replace(/\bmini\b/gi,"Mini").replace(/\bcodex\b/gi,"Codex").replace(/\bopus\b/gi,"Opus").replace(/\bsonnet\b/gi,"Sonnet").replace(/\bhaiku\b/gi,"Haiku").replace(/\s+/g," ").trim():"Not set"},"formatShortModelName",0,function(e){if(!e)return"unknown";if("opus"===e)return"Opus";if("sonnet"===e)return"Sonnet";let t=e.replace(/-\d{8,}$/,"").replace(/^claude-/,"").replace(/(\d+)-(\d+)(?![-\d])/g,"$1.$2").replace(/-/g," ");return e.startsWith("gpt-")&&(t=`GPT-${t.replace(/^gpt\s*/i,"")}`),e.startsWith("gemini-")&&(t=t.replace(/^gemini\s*/i,"Gemini ")),t.replace(/\bopus\b/gi,"Opus").replace(/\bsonnet\b/gi,"Sonnet").replace(/\bhaiku\b/gi,"Haiku").replace(/\bpro\b/gi,"Pro").replace(/\bflash\b/gi,"Flash").replace(/\blite\b/gi,"Lite").replace(/\bmini\b/gi,"Mini").replace(/\s+/g," ").trim()},"getBackendLabel",0,function(e){return t[e]},"getBackendShortLabel",0,function(e){return r[e]},"getProcessGroup",0,function(e){return e.startsWith("wiki.")?"Wiki":e.startsWith("message.")||e.startsWith("dashboard.")?"Conversation":e.startsWith("routine.")?"Routines":e.startsWith("git.")||e.startsWith("github.")?"Git & GitHub":e.startsWith("calendar.")||"gmail_classify"===e?"Integrations":"Tasks"},"getProcessLabel",0,function(e){return o[e]??e},"modelBadgeVariant",0,function(e){if(!e)return"gray";let t=l(e);return t?a[t]:"gray"},"parseModelUsage",0,s,"pickDisplayModel",0,function(e,t){let r=s(t);return r.length>0&&r[0]?r[0].modelId:e??null}])},90925,e=>{"use strict";let t=(0,e.i(77379).default)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);e.s(["Trash2",0,t],90925)},60168,e=>{"use strict";let t=(0,e.i(77379).default)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",0,t],60168)},99758,e=>{"use strict";let t=(0,e.i(77379).default)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",0,t],99758)},55575,e=>{"use strict";let t=(0,e.i(77379).default)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);e.s(["FolderOpen",0,t],55575)},24756,e=>{"use strict";var t=e.i(14260),r=e.i(65268);e.s(["useBackends",0,function(e){return(0,t.useQuery)({queryKey:["backends"],queryFn:()=>r.api.get("/backends"),enabled:e?.enabled??!0,staleTime:6e4})}])},21682,e=>{"use strict";let t=(0,e.i(77379).default)("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);e.s(["Pencil",0,t],21682)},7663,e=>{"use strict";let t=(0,e.i(77379).default)("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);e.s(["Save",0,t],7663)},70986,e=>{"use strict";var t=e.i(34416),r=e.i(91967),n=e.i(9413),i=e.i(36567),a=e.i(18731),o=e.i(22353),s=e.i(85565),l=e.i(90816),u=e.i(11207),c=e.i(54710),d="Collapsible",[f,p]=(0,n.createContextScope)(d),[h,m]=f(d),v=t.forwardRef((e,r)=>{let{__scopeCollapsible:n,open:a,defaultOpen:o,disabled:l,onOpenChange:f,...p}=e,[m,v]=(0,i.useControllableState)({prop:a,defaultProp:o??!1,onChange:f,caller:d});return(0,c.jsx)(h,{scope:n,disabled:l,contentId:(0,u.useId)(),open:m,onOpenToggle:t.useCallback(()=>v(e=>!e),[v]),children:(0,c.jsx)(s.Primitive.div,{"data-state":C(m),"data-disabled":l?"":void 0,...p,ref:r})})});v.displayName=d;var g="CollapsibleTrigger",b=t.forwardRef((e,t)=>{let{__scopeCollapsible:n,...i}=e,a=m(g,n);return(0,c.jsx)(s.Primitive.button,{type:"button","aria-controls":a.contentId,"aria-expanded":a.open||!1,"data-state":C(a.open),"data-disabled":a.disabled?"":void 0,disabled:a.disabled,...i,ref:t,onClick:(0,r.composeEventHandlers)(e.onClick,a.onOpenToggle)})});b.displayName=g;var y="CollapsibleContent",x=t.forwardRef((e,t)=>{let{forceMount:r,...n}=e,i=m(y,e.__scopeCollapsible);return(0,c.jsx)(l.Presence,{present:r||i.open,children:({present:e})=>(0,c.jsx)(w,{...n,ref:t,present:e})})});x.displayName=y;var w=t.forwardRef((e,r)=>{let{__scopeCollapsible:n,present:i,children:l,...u}=e,d=m(y,n),[f,p]=t.useState(i),h=t.useRef(null),v=(0,o.useComposedRefs)(r,h),g=t.useRef(0),b=g.current,x=t.useRef(0),w=x.current,k=d.open||f,R=t.useRef(k),S=t.useRef(void 0);return t.useEffect(()=>{let e=requestAnimationFrame(()=>R.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,a.useLayoutEffect)(()=>{let e=h.current;if(e){S.current=S.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";let t=e.getBoundingClientRect();g.current=t.height,x.current=t.width,R.current||(e.style.transitionDuration=S.current.transitionDuration,e.style.animationName=S.current.animationName),p(i)}},[d.open,i]),(0,c.jsx)(s.Primitive.div,{"data-state":C(d.open),"data-disabled":d.disabled?"":void 0,id:d.contentId,hidden:!k,...u,ref:v,style:{"--radix-collapsible-content-height":b?`${b}px`:void 0,"--radix-collapsible-content-width":w?`${w}px`:void 0,...e.style},children:k&&l})});function C(e){return e?"open":"closed"}e.s(["Collapsible",0,v,"CollapsibleContent",0,x,"CollapsibleTrigger",0,b],70986)},59134,e=>{"use strict";let t=(0,e.i(77379).default)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);e.s(["RefreshCw",0,t],59134)},40974,e=>{"use strict";let t=(0,e.i(77379).default)("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);e.s(["Lock",0,t],40974)},84603,e=>{"use strict";let t=(0,e.i(77379).default)("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);e.s(["Activity",0,t],84603)},13707,e=>{"use strict";var t=e.i(54710),r=e.i(34416),n=e.i(85565),i=e.i(90816),a=e.i(9413),o=e.i(22353),s=e.i(88248),l=e.i(75649),u=e.i(18731),c=e.i(27069),d=e.i(91967),f="ScrollArea",[p,h]=(0,a.createContextScope)(f),[m,v]=p(f),g=r.forwardRef((e,i)=>{let{__scopeScrollArea:a,type:s="hover",dir:u,scrollHideDelay:c=600,...d}=e,[f,p]=r.useState(null),[h,v]=r.useState(null),[g,b]=r.useState(null),[y,x]=r.useState(null),[w,C]=r.useState(null),[k,R]=r.useState(0),[S,E]=r.useState(0),[T,j]=r.useState(!1),[P,N]=r.useState(!1),A=(0,o.useComposedRefs)(i,e=>p(e)),D=(0,l.useDirection)(u);return(0,t.jsx)(m,{scope:a,type:s,dir:D,scrollHideDelay:c,scrollArea:f,viewport:h,onViewportChange:v,content:g,onContentChange:b,scrollbarX:y,onScrollbarXChange:x,scrollbarXEnabled:T,onScrollbarXEnabledChange:j,scrollbarY:w,onScrollbarYChange:C,scrollbarYEnabled:P,onScrollbarYEnabledChange:N,onCornerWidthChange:R,onCornerHeightChange:E,children:(0,t.jsx)(n.Primitive.div,{dir:D,...d,ref:A,style:{position:"relative","--radix-scroll-area-corner-width":k+"px","--radix-scroll-area-corner-height":S+"px",...e.style}})})});g.displayName=f;var b="ScrollAreaViewport",y=r.forwardRef((e,i)=>{let{__scopeScrollArea:a,children:s,nonce:l,...u}=e,c=v(b,a),d=r.useRef(null),f=(0,o.useComposedRefs)(i,d,c.onViewportChange);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:l}),(0,t.jsx)(n.Primitive.div,{"data-radix-scroll-area-viewport":"",...u,ref:f,style:{overflowX:c.scrollbarXEnabled?"scroll":"hidden",overflowY:c.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,t.jsx)("div",{ref:c.onContentChange,style:{minWidth:"100%",display:"table"},children:s})})]})});y.displayName=b;var x="ScrollAreaScrollbar",w=r.forwardRef((e,n)=>{let{forceMount:i,...a}=e,o=v(x,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:l}=o,u="horizontal"===e.orientation;return r.useEffect(()=>(u?s(!0):l(!0),()=>{u?s(!1):l(!1)}),[u,s,l]),"hover"===o.type?(0,t.jsx)(C,{...a,ref:n,forceMount:i}):"scroll"===o.type?(0,t.jsx)(k,{...a,ref:n,forceMount:i}):"auto"===o.type?(0,t.jsx)(R,{...a,ref:n,forceMount:i}):"always"===o.type?(0,t.jsx)(S,{...a,ref:n}):null});w.displayName=x;var C=r.forwardRef((e,n)=>{let{forceMount:a,...o}=e,s=v(x,e.__scopeScrollArea),[l,u]=r.useState(!1);return r.useEffect(()=>{let e=s.scrollArea,t=0;if(e){let r=()=>{window.clearTimeout(t),u(!0)},n=()=>{t=window.setTimeout(()=>u(!1),s.scrollHideDelay)};return e.addEventListener("pointerenter",r),e.addEventListener("pointerleave",n),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",r),e.removeEventListener("pointerleave",n)}}},[s.scrollArea,s.scrollHideDelay]),(0,t.jsx)(i.Presence,{present:a||l,children:(0,t.jsx)(R,{"data-state":l?"visible":"hidden",...o,ref:n})})}),k=r.forwardRef((e,n)=>{var a;let{forceMount:o,...s}=e,l=v(x,e.__scopeScrollArea),u="horizontal"===e.orientation,c=B(()=>p("SCROLL_END"),100),[f,p]=(a={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},r.useReducer((e,t)=>a[e][t]??e,"hidden"));return r.useEffect(()=>{if("idle"===f){let e=window.setTimeout(()=>p("HIDE"),l.scrollHideDelay);return()=>window.clearTimeout(e)}},[f,l.scrollHideDelay,p]),r.useEffect(()=>{let e=l.viewport,t=u?"scrollLeft":"scrollTop";if(e){let r=e[t],n=()=>{let n=e[t];r!==n&&(p("SCROLL"),c()),r=n};return e.addEventListener("scroll",n),()=>e.removeEventListener("scroll",n)}},[l.viewport,u,p,c]),(0,t.jsx)(i.Presence,{present:o||"hidden"!==f,children:(0,t.jsx)(S,{"data-state":"hidden"===f?"hidden":"visible",...s,ref:n,onPointerEnter:(0,d.composeEventHandlers)(e.onPointerEnter,()=>p("POINTER_ENTER")),onPointerLeave:(0,d.composeEventHandlers)(e.onPointerLeave,()=>p("POINTER_LEAVE"))})})}),R=r.forwardRef((e,n)=>{let a=v(x,e.__scopeScrollArea),{forceMount:o,...s}=e,[l,u]=r.useState(!1),c="horizontal"===e.orientation,d=B(()=>{if(a.viewport){let e=a.viewport.offsetWidth<a.viewport.scrollWidth,t=a.viewport.offsetHeight<a.viewport.scrollHeight;u(c?e:t)}},10);return W(a.viewport,d),W(a.content,d),(0,t.jsx)(i.Presence,{present:o||l,children:(0,t.jsx)(S,{"data-state":l?"visible":"hidden",...s,ref:n})})}),S=r.forwardRef((e,n)=>{let{orientation:i="vertical",...a}=e,o=v(x,e.__scopeScrollArea),s=r.useRef(null),l=r.useRef(0),[u,c]=r.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=H(u.viewport,u.content),f={...a,sizes:u,onSizesChange:c,hasThumb:!!(d>0&&d<1),onThumbChange:e=>s.current=e,onThumbPointerUp:()=>l.current=0,onThumbPointerDown:e=>l.current=e};function p(e,t){return function(e,t,r,n="ltr"){let i=K(r),a=t||i/2,o=r.scrollbar.paddingStart+a,s=r.scrollbar.size-r.scrollbar.paddingEnd-(i-a),l=r.content-r.viewport;return O([o,s],"ltr"===n?[0,l]:[-1*l,0])(e)}(e,l.current,u,t)}return"horizontal"===i?(0,t.jsx)(E,{...f,ref:n,onThumbPositionChange:()=>{if(o.viewport&&s.current){let e=q(o.viewport.scrollLeft,u,o.dir);s.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{o.viewport&&(o.viewport.scrollLeft=e)},onDragScroll:e=>{o.viewport&&(o.viewport.scrollLeft=p(e,o.dir))}}):"vertical"===i?(0,t.jsx)(T,{...f,ref:n,onThumbPositionChange:()=>{if(o.viewport&&s.current){let e=q(o.viewport.scrollTop,u);s.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{o.viewport&&(o.viewport.scrollTop=e)},onDragScroll:e=>{o.viewport&&(o.viewport.scrollTop=p(e))}}):null}),E=r.forwardRef((e,n)=>{let{sizes:i,onSizesChange:a,...s}=e,l=v(x,e.__scopeScrollArea),[u,c]=r.useState(),d=r.useRef(null),f=(0,o.useComposedRefs)(n,d,l.onScrollbarXChange);return r.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),(0,t.jsx)(N,{"data-orientation":"horizontal",...s,ref:f,sizes:i,style:{bottom:0,left:"rtl"===l.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===l.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":K(i)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,r)=>{if(l.viewport){var n,i;let a=l.viewport.scrollLeft+t.deltaX;e.onWheelScroll(a),n=a,i=r,n>0&&n<i&&t.preventDefault()}},onResize:()=>{d.current&&l.viewport&&u&&a({content:l.viewport.scrollWidth,viewport:l.viewport.offsetWidth,scrollbar:{size:d.current.clientWidth,paddingStart:I(u.paddingLeft),paddingEnd:I(u.paddingRight)}})}})}),T=r.forwardRef((e,n)=>{let{sizes:i,onSizesChange:a,...s}=e,l=v(x,e.__scopeScrollArea),[u,c]=r.useState(),d=r.useRef(null),f=(0,o.useComposedRefs)(n,d,l.onScrollbarYChange);return r.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),(0,t.jsx)(N,{"data-orientation":"vertical",...s,ref:f,sizes:i,style:{top:0,right:"ltr"===l.dir?0:void 0,left:"rtl"===l.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":K(i)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,r)=>{if(l.viewport){var n,i;let a=l.viewport.scrollTop+t.deltaY;e.onWheelScroll(a),n=a,i=r,n>0&&n<i&&t.preventDefault()}},onResize:()=>{d.current&&l.viewport&&u&&a({content:l.viewport.scrollHeight,viewport:l.viewport.offsetHeight,scrollbar:{size:d.current.clientHeight,paddingStart:I(u.paddingTop),paddingEnd:I(u.paddingBottom)}})}})}),[j,P]=p(x),N=r.forwardRef((e,i)=>{let{__scopeScrollArea:a,sizes:l,hasThumb:u,onThumbChange:c,onThumbPointerUp:f,onThumbPointerDown:p,onThumbPositionChange:h,onDragScroll:m,onWheelScroll:g,onResize:b,...y}=e,w=v(x,a),[C,k]=r.useState(null),R=(0,o.useComposedRefs)(i,e=>k(e)),S=r.useRef(null),E=r.useRef(""),T=w.viewport,P=l.content-l.viewport,N=(0,s.useCallbackRef)(g),A=(0,s.useCallbackRef)(h),D=B(b,10);function F(e){S.current&&m({x:e.clientX-S.current.left,y:e.clientY-S.current.top})}return r.useEffect(()=>{let e=e=>{let t=e.target;C?.contains(t)&&N(e,P)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[T,C,P,N]),r.useEffect(A,[l,A]),W(C,D),W(w.content,D),(0,t.jsx)(j,{scope:a,scrollbar:C,hasThumb:u,onThumbChange:(0,s.useCallbackRef)(c),onThumbPointerUp:(0,s.useCallbackRef)(f),onThumbPositionChange:A,onThumbPointerDown:(0,s.useCallbackRef)(p),children:(0,t.jsx)(n.Primitive.div,{...y,ref:R,style:{position:"absolute",...y.style},onPointerDown:(0,d.composeEventHandlers)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),S.current=C.getBoundingClientRect(),E.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",w.viewport&&(w.viewport.style.scrollBehavior="auto"),F(e))}),onPointerMove:(0,d.composeEventHandlers)(e.onPointerMove,F),onPointerUp:(0,d.composeEventHandlers)(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=E.current,w.viewport&&(w.viewport.style.scrollBehavior=""),S.current=null})})})}),A="ScrollAreaThumb",D=r.forwardRef((e,r)=>{let{forceMount:n,...a}=e,o=P(A,e.__scopeScrollArea);return(0,t.jsx)(i.Presence,{present:n||o.hasThumb,children:(0,t.jsx)(F,{ref:r,...a})})}),F=r.forwardRef((e,i)=>{let{__scopeScrollArea:a,style:s,...l}=e,u=v(A,a),c=P(A,a),{onThumbPositionChange:f}=c,p=(0,o.useComposedRefs)(i,e=>c.onThumbChange(e)),h=r.useRef(void 0),m=B(()=>{h.current&&(h.current(),h.current=void 0)},100);return r.useEffect(()=>{let e=u.viewport;if(e){let t=()=>{m(),h.current||(h.current=Q(e,f),f())};return f(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[u.viewport,m,f]),(0,t.jsx)(n.Primitive.div,{"data-state":c.hasThumb?"visible":"hidden",...l,ref:p,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...s},onPointerDownCapture:(0,d.composeEventHandlers)(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),r=e.clientX-t.left,n=e.clientY-t.top;c.onThumbPointerDown({x:r,y:n})}),onPointerUp:(0,d.composeEventHandlers)(e.onPointerUp,c.onThumbPointerUp)})});D.displayName=A;var L="ScrollAreaCorner",M=r.forwardRef((e,r)=>{let n=v(L,e.__scopeScrollArea),i=!!(n.scrollbarX&&n.scrollbarY);return"scroll"!==n.type&&i?(0,t.jsx)(_,{...e,ref:r}):null});M.displayName=L;var _=r.forwardRef((e,i)=>{let{__scopeScrollArea:a,...o}=e,s=v(L,a),[l,u]=r.useState(0),[c,d]=r.useState(0),f=!!(l&&c);return W(s.scrollbarX,()=>{let e=s.scrollbarX?.offsetHeight||0;s.onCornerHeightChange(e),d(e)}),W(s.scrollbarY,()=>{let e=s.scrollbarY?.offsetWidth||0;s.onCornerWidthChange(e),u(e)}),f?(0,t.jsx)(n.Primitive.div,{...o,ref:i,style:{width:l,height:c,position:"absolute",right:"ltr"===s.dir?0:void 0,left:"rtl"===s.dir?0:void 0,bottom:0,...e.style}}):null});function I(e){return e?parseInt(e,10):0}function H(e,t){let r=e/t;return isNaN(r)?0:r}function K(e){let t=H(e.viewport,e.content),r=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-r)*t,18)}function q(e,t,r="ltr"){let n=K(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=(0,c.clamp)(e,"ltr"===r?[0,o]:[-1*o,0]);return O([0,o],[0,a-n])(s)}function O(e,t){return r=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let n=(t[1]-t[0])/(e[1]-e[0]);return t[0]+n*(r-e[0])}}var Q=(e,t=()=>{})=>{let r={left:e.scrollLeft,top:e.scrollTop},n=0;return!function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=r.left!==a.left,s=r.top!==a.top;(o||s)&&t(),r=a,n=window.requestAnimationFrame(i)}(),()=>window.cancelAnimationFrame(n)};function B(e,t){let n=(0,s.useCallbackRef)(e),i=r.useRef(0);return r.useEffect(()=>()=>window.clearTimeout(i.current),[]),r.useCallback(()=>{window.clearTimeout(i.current),i.current=window.setTimeout(n,t)},[n,t])}function W(e,t){let r=(0,s.useCallbackRef)(t);(0,u.useLayoutEffect)(()=>{let t=0;if(e){let n=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(r)});return n.observe(e),()=>{window.cancelAnimationFrame(t),n.unobserve(e)}}},[e,r])}var z=e.i(81471);let G=(0,r.forwardRef)(({className:e,children:r,...n},i)=>(0,t.jsxs)(g,{className:(0,z.cn)("relative overflow-hidden",e),...n,children:[(0,t.jsx)(y,{ref:i,className:"h-full w-full rounded-[inherit]",children:r}),(0,t.jsx)(w,{orientation:"vertical",className:"flex h-full w-2.5 touch-none select-none border-l border-l-transparent p-[1px] transition-colors",children:(0,t.jsx)(D,{className:"relative flex-1 rounded-full bg-border"})}),(0,t.jsx)(M,{})]}));G.displayName="ScrollArea",e.s(["ScrollArea",0,G],13707)},78927,e=>{"use strict";let t=(0,e.i(77379).default)("Upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);e.s(["Upload",0,t],78927)},75540,e=>{"use strict";var t=e.i(46437),r=e.i(49457),n=class extends t.QueryObserver{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){super.setOptions({...e,behavior:(0,r.infiniteQueryBehavior)()})}getOptimisticResult(e){return e.behavior=(0,r.infiniteQueryBehavior)(),super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"backward"}}})}createResult(e,t){let{state:n}=e,i=super.createResult(e,t),{isFetching:a,isRefetching:o,isError:s,isRefetchError:l}=i,u=n.fetchMeta?.fetchMore?.direction,c=s&&"forward"===u,d=a&&"forward"===u,f=s&&"backward"===u,p=a&&"backward"===u;return{...i,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:(0,r.hasNextPage)(t,n.data),hasPreviousPage:(0,r.hasPreviousPage)(t,n.data),isFetchNextPageError:c,isFetchingNextPage:d,isFetchPreviousPageError:f,isFetchingPreviousPage:p,isRefetchError:l&&!c&&!f,isRefetching:o&&!d&&!p}}},i=e.i(98757);e.s(["useInfiniteQuery",0,function(e,t){return(0,i.useBaseQuery)(e,n,t)}],75540)},50862,e=>{"use strict";var t=e.i(54710),r=e.i(81471);e.s(["EmptyState",0,function({icon:e,title:n,description:i,className:a,children:o}){return(0,t.jsxs)("div",{className:(0,r.cn)("flex flex-col items-center justify-center py-16 text-muted-foreground",a),children:[(0,t.jsx)(e,{className:"mb-3 h-10 w-10 opacity-40"}),(0,t.jsx)("p",{className:"text-sm font-medium",children:n}),i&&(0,t.jsx)("p",{className:"mt-1 max-w-prose text-xs text-muted-foreground/70",children:i}),o]})}])},49785,e=>{"use strict";var t=e.i(54710),r=e.i(63991),n=e.i(72740),i=e.i(20014),a=e.i(81471);function o(){return(0,t.jsx)("div",{className:"flex items-center justify-center py-16",children:(0,t.jsx)(n.Loader2,{className:"h-6 w-6 animate-spin text-muted-foreground"})})}function s({error:e,onRetry:n}){return(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center gap-3 py-16",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-destructive",children:[(0,t.jsx)(r.AlertCircle,{className:"h-5 w-5"}),(0,t.jsx)("p",{className:"text-sm font-medium",children:"Failed to load data"})]}),e?.message&&(0,t.jsx)("p",{className:"max-w-md text-center text-xs text-muted-foreground",children:e.message}),n&&(0,t.jsx)(i.Button,{variant:"outline",size:"sm",onClick:n,children:"Retry"})]})}e.s(["CardSkeleton",0,function({count:e=3}){return(0,t.jsx)("div",{className:(0,a.cn)("grid gap-4",e<=2?"grid-cols-1 md:grid-cols-2":4===e?"grid-cols-2 md:grid-cols-4":"grid-cols-1 md:grid-cols-3"),children:Array.from({length:e}).map((e,r)=>(0,t.jsx)("div",{className:"h-28 animate-pulse rounded-xl border border-border bg-muted/30"},r))})},"QueryResult",0,function({isLoading:e,isError:r,error:n,onRetry:i,skeleton:l,className:u,children:c}){return e?(0,t.jsx)("div",{className:(0,a.cn)(u),children:l??(0,t.jsx)(o,{})}):r?(0,t.jsx)("div",{className:(0,a.cn)(u),children:(0,t.jsx)(s,{error:n,onRetry:i})}):(0,t.jsx)(t.Fragment,{children:c})},"TableSkeleton",0,function({rows:e=5}){return(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("div",{className:"h-10 animate-pulse rounded-lg bg-muted/40"}),Array.from({length:e}).map((e,r)=>(0,t.jsx)("div",{className:"h-12 animate-pulse rounded-lg bg-muted/20"},r))]})}])},26406,e=>{"use strict";var t=e.i(54710),r=e.i(34416),n=e.i(91967),i=e.i(9413),a=e.i(87099),o=e.i(22353),s=e.i(11207),l=e.i(85565),u=e.i(88248),c=e.i(36567),d=e.i(75649),f="rovingFocusGroup.onEntryFocus",p={bubbles:!1,cancelable:!0},h="RovingFocusGroup",[m,v,g]=(0,a.createCollection)(h),[b,y]=(0,i.createContextScope)(h,[g]),[x,w]=b(h),C=r.forwardRef((e,r)=>(0,t.jsx)(m.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,t.jsx)(m.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,t.jsx)(k,{...e,ref:r})})}));C.displayName=h;var k=r.forwardRef((e,i)=>{let{__scopeRovingFocusGroup:a,orientation:s,loop:m=!1,dir:g,currentTabStopId:b,defaultCurrentTabStopId:y,onCurrentTabStopIdChange:w,onEntryFocus:C,preventScrollOnEntryFocus:k=!1,...R}=e,S=r.useRef(null),E=(0,o.useComposedRefs)(i,S),j=(0,d.useDirection)(g),[P,N]=(0,c.useControllableState)({prop:b,defaultProp:y??null,onChange:w,caller:h}),[A,D]=r.useState(!1),F=(0,u.useCallbackRef)(C),L=v(a),M=r.useRef(!1),[_,I]=r.useState(0);return r.useEffect(()=>{let e=S.current;if(e)return e.addEventListener(f,F),()=>e.removeEventListener(f,F)},[F]),(0,t.jsx)(x,{scope:a,orientation:s,dir:j,loop:m,currentTabStopId:P,onItemFocus:r.useCallback(e=>N(e),[N]),onItemShiftTab:r.useCallback(()=>D(!0),[]),onFocusableItemAdd:r.useCallback(()=>I(e=>e+1),[]),onFocusableItemRemove:r.useCallback(()=>I(e=>e-1),[]),children:(0,t.jsx)(l.Primitive.div,{tabIndex:A||0===_?-1:0,"data-orientation":s,...R,ref:E,style:{outline:"none",...e.style},onMouseDown:(0,n.composeEventHandlers)(e.onMouseDown,()=>{M.current=!0}),onFocus:(0,n.composeEventHandlers)(e.onFocus,e=>{let t=!M.current;if(e.target===e.currentTarget&&t&&!A){let t=new CustomEvent(f,p);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=L().filter(e=>e.focusable);T([e.find(e=>e.active),e.find(e=>e.id===P),...e].filter(Boolean).map(e=>e.ref.current),k)}}M.current=!1}),onBlur:(0,n.composeEventHandlers)(e.onBlur,()=>D(!1))})})}),R="RovingFocusGroupItem",S=r.forwardRef((e,i)=>{let{__scopeRovingFocusGroup:a,focusable:o=!0,active:u=!1,tabStopId:c,children:d,...f}=e,p=(0,s.useId)(),h=c||p,g=w(R,a),b=g.currentTabStopId===h,y=v(a),{onFocusableItemAdd:x,onFocusableItemRemove:C,currentTabStopId:k}=g;return r.useEffect(()=>{if(o)return x(),()=>C()},[o,x,C]),(0,t.jsx)(m.ItemSlot,{scope:a,id:h,focusable:o,active:u,children:(0,t.jsx)(l.Primitive.span,{tabIndex:b?0:-1,"data-orientation":g.orientation,...f,ref:i,onMouseDown:(0,n.composeEventHandlers)(e.onMouseDown,e=>{o?g.onItemFocus(h):e.preventDefault()}),onFocus:(0,n.composeEventHandlers)(e.onFocus,()=>g.onItemFocus(h)),onKeyDown:(0,n.composeEventHandlers)(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey)return void g.onItemShiftTab();if(e.target!==e.currentTarget)return;let t=function(e,t,r){var n;let i=(n=e.key,"rtl"!==r?n:"ArrowLeft"===n?"ArrowRight":"ArrowRight"===n?"ArrowLeft":n);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(i))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(i)))return E[i]}(e,g.orientation,g.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let i=y().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)i.reverse();else if("prev"===t||"next"===t){var r,n;"prev"===t&&i.reverse();let a=i.indexOf(e.currentTarget);i=g.loop?(r=i,n=a+1,r.map((e,t)=>r[(n+t)%r.length])):i.slice(a+1)}setTimeout(()=>T(i))}}),children:"function"==typeof d?d({isCurrentTabStop:b,hasTabStop:null!=k}):d})})});S.displayName=R;var E={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function T(e,t=!1){let r=document.activeElement;for(let n of e)if(n===r||(n.focus({preventScroll:t}),document.activeElement!==r))return}var j=e.i(90816),P="Tabs",[N,A]=(0,i.createContextScope)(P,[y]),D=y(),[F,L]=N(P),M=r.forwardRef((e,r)=>{let{__scopeTabs:n,value:i,onValueChange:a,defaultValue:o,orientation:u="horizontal",dir:f,activationMode:p="automatic",...h}=e,m=(0,d.useDirection)(f),[v,g]=(0,c.useControllableState)({prop:i,onChange:a,defaultProp:o??"",caller:P});return(0,t.jsx)(F,{scope:n,baseId:(0,s.useId)(),value:v,onValueChange:g,orientation:u,dir:m,activationMode:p,children:(0,t.jsx)(l.Primitive.div,{dir:m,"data-orientation":u,...h,ref:r})})});M.displayName=P;var _="TabsList",I=r.forwardRef((e,r)=>{let{__scopeTabs:n,loop:i=!0,...a}=e,o=L(_,n),s=D(n);return(0,t.jsx)(C,{asChild:!0,...s,orientation:o.orientation,dir:o.dir,loop:i,children:(0,t.jsx)(l.Primitive.div,{role:"tablist","aria-orientation":o.orientation,...a,ref:r})})});I.displayName=_;var H="TabsTrigger",K=r.forwardRef((e,r)=>{let{__scopeTabs:i,value:a,disabled:o=!1,...s}=e,u=L(H,i),c=D(i),d=Q(u.baseId,a),f=B(u.baseId,a),p=a===u.value;return(0,t.jsx)(S,{asChild:!0,...c,focusable:!o,active:p,children:(0,t.jsx)(l.Primitive.button,{type:"button",role:"tab","aria-selected":p,"aria-controls":f,"data-state":p?"active":"inactive","data-disabled":o?"":void 0,disabled:o,id:d,...s,ref:r,onMouseDown:(0,n.composeEventHandlers)(e.onMouseDown,e=>{o||0!==e.button||!1!==e.ctrlKey?e.preventDefault():u.onValueChange(a)}),onKeyDown:(0,n.composeEventHandlers)(e.onKeyDown,e=>{[" ","Enter"].includes(e.key)&&u.onValueChange(a)}),onFocus:(0,n.composeEventHandlers)(e.onFocus,()=>{let e="manual"!==u.activationMode;p||o||!e||u.onValueChange(a)})})})});K.displayName=H;var q="TabsContent",O=r.forwardRef((e,n)=>{let{__scopeTabs:i,value:a,forceMount:o,children:s,...u}=e,c=L(q,i),d=Q(c.baseId,a),f=B(c.baseId,a),p=a===c.value,h=r.useRef(p);return r.useEffect(()=>{let e=requestAnimationFrame(()=>h.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,t.jsx)(j.Presence,{present:o||p,children:({present:r})=>(0,t.jsx)(l.Primitive.div,{"data-state":p?"active":"inactive","data-orientation":c.orientation,role:"tabpanel","aria-labelledby":d,hidden:!r,id:f,tabIndex:0,...u,ref:n,style:{...e.style,animationDuration:h.current?"0s":void 0},children:r&&s})})});function Q(e,t){return`${e}-trigger-${t}`}function B(e,t){return`${e}-content-${t}`}O.displayName=q;var W=e.i(81471);e.s(["Tabs",0,M,"TabsContent",0,function({className:e,...r}){return(0,t.jsx)(O,{className:(0,W.cn)("mt-2 ring-offset-background focus-visible:outline-none",e),...r})},"TabsList",0,function({className:e,...r}){return(0,t.jsx)(I,{className:(0,W.cn)("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",e),...r})},"TabsTrigger",0,function({className:e,...r}){return(0,t.jsx)(K,{className:(0,W.cn)("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",e),...r})}],26406)},44178,e=>{"use strict";var t=e.i(57415),r=e.i(14260),n=e.i(95486),i=e.i(65268);class a extends Error{conflict;constructor(e){super("context_conflict"),this.conflict=e,this.name="ContextConflictError"}}e.s(["ContextConflictError",0,a,"useContextFile",0,function(e,t){return(0,r.useQuery)({queryKey:["context",e],queryFn:()=>i.api.get(`/context/${e}`),enabled:!!e&&t?.enabled!==!1,refetchOnWindowFocus:t?.enabled!==!1})},"useContextList",0,function(e){return(0,r.useQuery)({queryKey:["context-list",e],queryFn:()=>i.api.get(`/context/list/${e}`)})},"useDeleteContextFile",0,function(){let e=(0,n.useQueryClient)();return(0,t.useMutation)({mutationFn:async({path:e})=>i.api.delete(`/context/${e}`),onSuccess:(t,{path:r})=>{e.removeQueries({queryKey:["context",r]}),e.invalidateQueries({queryKey:["snapshots",r]});let n=r.includes("/")?r.split("/")[0]:null;n&&e.invalidateQueries({queryKey:["context-list",n]}),r.startsWith("routines/custom/")&&e.invalidateQueries({queryKey:["context-list","routines"]})}})},"useUpdateContextFile",0,function(){let e=(0,n.useQueryClient)();return(0,t.useMutation)({mutationFn:async({path:e,content:t,expectedMtime:r})=>{try{return await i.api.put(`/context/${e}`,{content:t,...void 0!==r?{expectedMtime:r}:{}})}catch(e){if(e instanceof i.ApiError&&409===e.status&&e.body?.error==="conflict"){let t=e.body;throw new a({currentMtime:t.currentMtime??"",currentContent:t.currentContent??""})}throw e}},onSuccess:(t,{path:r,content:n})=>{e.setQueryData(["context",r],e=>e?{...e,content:n,lastModified:t.lastModified}:{content:n,lastModified:t.lastModified,editable:!0}),e.invalidateQueries({queryKey:["snapshots",r]});let i=r.includes("/")?r.split("/")[0]:null;i&&e.invalidateQueries({queryKey:["context-list",i]})}})}])},40893,e=>{"use strict";var t=e.i(54710),r=e.i(81187),n=e.i(20014),i=e.i(81471);e.s(["FileConflictBanner",0,function({onReload:e,onOverwrite:a,isPending:o=!1,reloadLabel:s="Reload latest",className:l}){return(0,t.jsxs)("div",{role:"alert","aria-live":"assertive",className:(0,i.cn)("rounded-md border border-amber-500/50 bg-amber-500/10 p-3 text-xs",l),children:[(0,t.jsxs)("div",{className:"mb-2 flex items-center gap-2 font-semibold text-amber-900 dark:text-amber-200",children:[(0,t.jsx)(r.AlertTriangle,{className:"h-3.5 w-3.5"}),"File was modified by another process"]}),(0,t.jsx)("p",{className:"mb-3 text-amber-900/90 dark:text-amber-100/90",children:"The agent or another tab wrote to this file after you started editing. Your unsaved draft is preserved — choose how to proceed."}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(n.Button,{size:"sm",variant:"outline",onClick:e,disabled:o,className:"h-7",children:s}),(0,t.jsx)(n.Button,{size:"sm",variant:"destructive",onClick:a,disabled:o,className:"h-7",children:o?"Overwriting…":"Overwrite with my edits"})]})]})}])},26928,e=>{"use strict";var t=e.i(75540),r=e.i(57415),n=e.i(14260),i=e.i(95486),a=e.i(65268);let o=["managed-tasks"],s=["management-history"];function l(e){e.invalidateQueries({queryKey:o}),e.invalidateQueries({queryKey:s}),e.invalidateQueries({queryKey:["managed-task"]}),e.invalidateQueries({queryKey:["recurring-schedules"]}),e.invalidateQueries({queryKey:["schedule-list"]}),e.invalidateQueries({queryKey:["schedule-next"]})}e.s(["useDeleteManagedTask",0,function(){let e=(0,i.useQueryClient)();return(0,r.useMutation)({mutationFn:e=>a.api.delete(`/managed-tasks/${e}`),onSuccess:()=>l(e)})},"useManagedTask",0,function(e){return(0,n.useQuery)({queryKey:["managed-task",e],queryFn:()=>a.api.get(`/managed-tasks/${e}`),enabled:!!e,staleTime:15e3})},"useManagedTaskRuns",0,function(e,t=25){return(0,n.useQuery)({queryKey:["managed-task-runs",e,t],queryFn:()=>a.api.get(`/managed-tasks/${e}/runs`,{limit:t}),enabled:!!e,staleTime:15e3})},"useManagedTasks",0,function(){return(0,n.useQuery)({queryKey:o,queryFn:()=>a.api.get("/managed-tasks"),staleTime:3e4})},"useManagementHistory",0,function(e=50){return(0,t.useInfiniteQuery)({queryKey:[...s,e],queryFn:({pageParam:t})=>a.api.get("/management-history",{limit:e,...t?{before_id:t}:{}}),initialPageParam:void 0,getNextPageParam:e=>e.nextCursor??void 0,staleTime:15e3})},"useRenameManagedTaskApp",0,function(){let e=(0,i.useQueryClient)();return(0,r.useMutation)({mutationFn:({id:e,newApp:t})=>a.api.post(`/managed-tasks/${e}/rename-app`,{newApp:t}),onSuccess:(t,r)=>{l(e),e.invalidateQueries({queryKey:["managed-task-runs",r.id]}),e.invalidateQueries({queryKey:["entities"]}),e.invalidateQueries({queryKey:["entities-by-source"]})}})},"useRunManagedTaskNow",0,function(){let e=(0,i.useQueryClient)();return(0,r.useMutation)({mutationFn:({id:e,reason:t})=>a.api.post(`/managed-tasks/${e}/run-now`,{reason:t}),onSuccess:(t,r)=>{e.invalidateQueries({queryKey:s}),e.invalidateQueries({queryKey:["managed-task-runs",r.id]}),e.invalidateQueries({queryKey:["schedule-list"]})}})},"useUpdateManagedTask",0,function(){let e=(0,i.useQueryClient)();return(0,r.useMutation)({mutationFn:({id:e,...t})=>a.api.patch(`/managed-tasks/${e}`,t),onSuccess:(t,r)=>{l(e),e.invalidateQueries({queryKey:["managed-task-runs",r.id]})}})}])},71816,49214,e=>{"use strict";var t=e.i(34416),r=e.i(95486),n=e.i(65268);e.s(["useRegenerate",0,function(){let[e,i]=(0,t.useState)(null),[a,o]=(0,t.useState)("idle"),[s,l]=(0,t.useState)(null),u=(0,r.useQueryClient)(),c=(0,t.useRef)(null),d=(0,t.useRef)(null),f=(0,t.useRef)(0);(0,t.useEffect)(()=>()=>{c.current&&clearInterval(c.current)},[]);let p=(0,t.useCallback)(()=>{c.current&&(clearInterval(c.current),c.current=null)},[]);return{regenerate:(0,t.useCallback)(async e=>{if("triggered"===a||"running"===a)return;i(e),o("triggered"),l(null),f.current=Date.now();let t=await n.api.get(`/context/${e}`).catch(()=>null);d.current=t?.lastModified??null;try{await n.api.post("/agent/regenerate",{target:e}),o("running"),c.current=setInterval(async()=>{if(Date.now()-f.current>3e5){p(),o("error"),l("Timeout — agent may still be processing");return}try{let t=await n.api.get(`/context/${e}`);(null===d.current||t.lastModified!==d.current)&&(p(),o("done"),u.invalidateQueries({queryKey:["context",e]}),u.invalidateQueries({queryKey:["calendar"]}),setTimeout(()=>{o("idle"),i(null)},5e3))}catch{}},3e3)}catch(e){o("error"),l(e instanceof Error?e.message:"Failed to trigger")}},[a,u,p]),target:e,status:a,error:s,dismiss:(0,t.useCallback)(()=>{p(),o("idle"),i(null),l(null)},[p])}}],71816);var i=e.i(54710),a=e.i(20014),o=e.i(81471),s=e.i(59134),l=e.i(99758),u=e.i(63991),c=e.i(72740);e.s(["RegenerateButton",0,function({target:e,label:t,currentTarget:r,status:n,error:d,onRegenerate:f,onDismiss:p,variant:h="outline",size:m="sm",className:v}){let g=r===e;return g&&"done"===n?(0,i.jsxs)(a.Button,{variant:h,size:m,className:(0,o.cn)("text-emerald-600 dark:text-emerald-400",v),onClick:p,children:[(0,i.jsx)(l.Check,{className:"h-3.5 w-3.5 mr-1.5"}),"Updated"]}):g&&"error"===n?(0,i.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,i.jsxs)(a.Button,{variant:h,size:m,className:(0,o.cn)("text-red-600 dark:text-red-400",v),onClick:p,children:[(0,i.jsx)(u.AlertCircle,{className:"h-3.5 w-3.5 mr-1.5"}),"Failed"]}),d&&(0,i.jsx)("span",{className:"text-xs text-red-600 dark:text-red-400 max-w-48 truncate",children:d})]}):(0,i.jsxs)(a.Button,{variant:h,size:m,onClick:()=>f(e),disabled:"triggered"===n||"running"===n,className:v,children:[g&&"idle"!==n?(0,i.jsx)(c.Loader2,{className:"h-3.5 w-3.5 mr-1.5 animate-spin"}):(0,i.jsx)(s.RefreshCw,{className:"h-3.5 w-3.5 mr-1.5"}),g&&"triggered"===n?"Triggering...":g&&"running"===n?"Running...":t]})}],49214)},17532,e=>{"use strict";var t=e.i(14260),r=e.i(65268);e.s(["useSetupStatus",0,function(){return(0,t.useQuery)({queryKey:["setup-status"],queryFn:()=>r.api.get("/setup/status"),staleTime:3e4})}])},93823,e=>{e.v(t=>Promise.all(["static/chunks/0o0y3ud0jgvy_.js"].map(t=>e.l(t))).then(()=>t(37023)))}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,52387,e=>{"use strict";let t=(0,e.i(77379).default)("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["ExternalLink",0,t],52387)},85631,e=>{"use strict";var t=e.i(54710),a=e.i(81471);e.s(["ConnectionsSectionHeader",0,function({title:e,description:s,healthy:n,total:i,attention:r,actions:l}){let o=i>0&&n===i,c=i>0&&0===n;return(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between gap-3",children:[(0,t.jsx)("h1",{className:"text-2xl font-semibold text-foreground",children:e}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[i>0&&(0,t.jsxs)("span",{className:(0,a.cn)("text-xs font-medium tabular-nums",o?"text-emerald-600 dark:text-emerald-400":c?"text-muted-foreground":"text-amber-600 dark:text-amber-400"),children:[n,"/",i," connected"]}),l]})]}),s&&(0,t.jsx)("p",{className:"max-w-3xl text-sm text-muted-foreground",children:s}),r&&(0,t.jsx)("p",{className:"text-xs text-amber-600 dark:text-amber-400",children:r})]})}])},76176,e=>{"use strict";let t={claude:"Claude Code",codex:"OpenAI Codex",gemini:"Gemini CLI"},a={claude:"Claude",codex:"Codex",gemini:"Gemini"},s={claude:["#7C2D12","#B54B2D","#E15B40","#F97316","#FDBA74"],codex:["#86198F","#A21CAF","#D946EF","#E879F9","#F5D0FE"],gemini:["#1E3A8A","#1D4ED8","#1C69FF","#60A5FA","#93C5FD"]},n=["#6b7280","#9ca3af","#4b5563","#374151"],i={claude:"orange",codex:"pink",gemini:"blue"},r={"routine.morning_routine":"Morning Routine","routine.evening_review":"Evening Review","routine.weekly_review":"Weekly Review","routine.monthly_review":"Monthly Review","routine.hourly_check":"Hourly Check","routine.roadmap_refresh":"Roadmap Refresh","message.dm":"Direct Messages","message.mention":"Mentions","dashboard.chat":"Dashboard Chat","agent.task":"Scheduled Tasks","calendar.change":"Calendar Events",gmail_classify:"Gmail Classification","github.pull_request.review_requested":"GitHub Review Requests","github.assigned":"GitHub Assignments","github.security_alert":"GitHub Security Alerts","github.workflow_run.failed":"GitHub CI Failures","wiki.ingest_url":"Wiki URL Ingest","wiki.compile":"Wiki Compile","wiki.ask":"Wiki Ask"};function l(e){let t;if(!e)return[];try{t=JSON.parse(e)}catch{return[]}if(!t||"object"!=typeof t)return[];let a=[];for(let[e,s]of Object.entries(t))s&&"object"==typeof s&&a.push({modelId:e,inputTokens:"number"==typeof s.inputTokens?s.inputTokens:0,outputTokens:"number"==typeof s.outputTokens?s.outputTokens:0,costUsd:"number"==typeof s.costUsd?s.costUsd:0});return a.sort((e,t)=>t.costUsd-e.costUsd)}function o(e){if(!e)return null;let t=e.toLowerCase();return t.includes("claude")||t.includes("sonnet")||t.includes("opus")||t.includes("haiku")?"claude":t.includes("gemini")?"gemini":t.includes("gpt")||t.includes("codex")||t.includes("o3")||t.includes("o4")?"codex":null}e.s(["BACKEND_BADGE_VARIANTS",0,i,"BACKEND_COLORS",0,{claude:"#E15B40",codex:"#D946EF",gemini:"#1C69FF"},"BACKEND_LABELS",0,t,"BACKEND_PROVIDER_LABELS",0,{claude:"Claude (Anthropic)",codex:"ChatGPT (OpenAI)",gemini:"Gemini (Google)"},"BACKEND_PROVIDER_SHORT",0,{claude:"Claude",codex:"ChatGPT",gemini:"Gemini"},"BACKEND_WEB_SEARCH_DESCRIPTIONS",0,{claude:"Lets the agent call Anthropic's built-in WebSearch tool.",codex:"Lets the agent call OpenAI's web_search tool. Works in safe (sandbox) mode — the tool runs at OpenAI, not as a local shell command.",gemini:"Lets the agent call Gemini's google_web_search tool."},"CHART_CATEGORY_PALETTE",0,["#3b82f6","#10b981","#f59e0b","#8b5cf6","#ec4899","#14b8a6","#f97316","#6366f1","#ef4444","#22c55e"],"assignModelColors",0,function(e){let t=new Map;for(let a of e){if(!a)continue;let e=o(a)??"other",s=t.get(e)??[];s.push(a),t.set(e,s)}let a={};for(let[e,i]of t){i.sort((e,t)=>e.localeCompare(t));let t="other"===e?n:s[e],r=i.length;i.forEach((e,s)=>{let n;n=r>=t.length?s%t.length:1===r?Math.floor(t.length/2):Math.floor((s+.5)*t.length/r),a[e]=t[n]})}return a},"detectBackendFromModel",0,o,"formatModelName",0,function(e){return e?e.replace(/^claude-/,"Claude ").replace(/^gpt-/,"GPT-").replace(/^gemini-/,"Gemini ").replace(/-/g," ").replace(/\bpreview\b/gi,"(preview)").replace(/\bpro\b/gi,"Pro").replace(/\bflash\b/gi,"Flash").replace(/\blite\b/gi,"Lite").replace(/\bmini\b/gi,"Mini").replace(/\bcodex\b/gi,"Codex").replace(/\bopus\b/gi,"Opus").replace(/\bsonnet\b/gi,"Sonnet").replace(/\bhaiku\b/gi,"Haiku").replace(/\s+/g," ").trim():"Not set"},"formatShortModelName",0,function(e){if(!e)return"unknown";if("opus"===e)return"Opus";if("sonnet"===e)return"Sonnet";let t=e.replace(/-\d{8,}$/,"").replace(/^claude-/,"").replace(/(\d+)-(\d+)(?![-\d])/g,"$1.$2").replace(/-/g," ");return e.startsWith("gpt-")&&(t=`GPT-${t.replace(/^gpt\s*/i,"")}`),e.startsWith("gemini-")&&(t=t.replace(/^gemini\s*/i,"Gemini ")),t.replace(/\bopus\b/gi,"Opus").replace(/\bsonnet\b/gi,"Sonnet").replace(/\bhaiku\b/gi,"Haiku").replace(/\bpro\b/gi,"Pro").replace(/\bflash\b/gi,"Flash").replace(/\blite\b/gi,"Lite").replace(/\bmini\b/gi,"Mini").replace(/\s+/g," ").trim()},"getBackendLabel",0,function(e){return t[e]},"getBackendShortLabel",0,function(e){return a[e]},"getProcessGroup",0,function(e){return e.startsWith("wiki.")?"Wiki":e.startsWith("message.")||e.startsWith("dashboard.")?"Conversation":e.startsWith("routine.")?"Routines":e.startsWith("git.")||e.startsWith("github.")?"Git & GitHub":e.startsWith("calendar.")||"gmail_classify"===e?"Integrations":"Tasks"},"getProcessLabel",0,function(e){return r[e]??e},"modelBadgeVariant",0,function(e){if(!e)return"gray";let t=o(e);return t?i[t]:"gray"},"parseModelUsage",0,l,"pickDisplayModel",0,function(e,t){let a=l(t);return a.length>0&&a[0]?a[0].modelId:e??null}])},99758,e=>{"use strict";let t=(0,e.i(77379).default)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",0,t],99758)},59134,e=>{"use strict";let t=(0,e.i(77379).default)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);e.s(["RefreshCw",0,t],59134)},24756,e=>{"use strict";var t=e.i(14260),a=e.i(65268);e.s(["useBackends",0,function(e){return(0,t.useQuery)({queryKey:["backends"],queryFn:()=>a.api.get("/backends"),enabled:e?.enabled??!0,staleTime:6e4})}])},90925,e=>{"use strict";let t=(0,e.i(77379).default)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);e.s(["Trash2",0,t],90925)},21682,e=>{"use strict";let t=(0,e.i(77379).default)("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);e.s(["Pencil",0,t],21682)},7663,e=>{"use strict";let t=(0,e.i(77379).default)("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);e.s(["Save",0,t],7663)},40974,e=>{"use strict";let t=(0,e.i(77379).default)("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);e.s(["Lock",0,t],40974)},70986,e=>{"use strict";var t=e.i(34416),a=e.i(91967),s=e.i(9413),n=e.i(36567),i=e.i(18731),r=e.i(22353),l=e.i(85565),o=e.i(90816),c=e.i(11207),d=e.i(54710),u="Collapsible",[h,m]=(0,s.createContextScope)(u),[p,x]=h(u),g=t.forwardRef((e,a)=>{let{__scopeCollapsible:s,open:i,defaultOpen:r,disabled:o,onOpenChange:h,...m}=e,[x,g]=(0,n.useControllableState)({prop:i,defaultProp:r??!1,onChange:h,caller:u});return(0,d.jsx)(p,{scope:s,disabled:o,contentId:(0,c.useId)(),open:x,onOpenToggle:t.useCallback(()=>g(e=>!e),[g]),children:(0,d.jsx)(l.Primitive.div,{"data-state":k(x),"data-disabled":o?"":void 0,...m,ref:a})})});g.displayName=u;var f="CollapsibleTrigger",b=t.forwardRef((e,t)=>{let{__scopeCollapsible:s,...n}=e,i=x(f,s);return(0,d.jsx)(l.Primitive.button,{type:"button","aria-controls":i.contentId,"aria-expanded":i.open||!1,"data-state":k(i.open),"data-disabled":i.disabled?"":void 0,disabled:i.disabled,...n,ref:t,onClick:(0,a.composeEventHandlers)(e.onClick,i.onOpenToggle)})});b.displayName=f;var y="CollapsibleContent",j=t.forwardRef((e,t)=>{let{forceMount:a,...s}=e,n=x(y,e.__scopeCollapsible);return(0,d.jsx)(o.Presence,{present:a||n.open,children:({present:e})=>(0,d.jsx)(v,{...s,ref:t,present:e})})});j.displayName=y;var v=t.forwardRef((e,a)=>{let{__scopeCollapsible:s,present:n,children:o,...c}=e,u=x(y,s),[h,m]=t.useState(n),p=t.useRef(null),g=(0,r.useComposedRefs)(a,p),f=t.useRef(0),b=f.current,j=t.useRef(0),v=j.current,w=u.open||h,N=t.useRef(w),C=t.useRef(void 0);return t.useEffect(()=>{let e=requestAnimationFrame(()=>N.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,i.useLayoutEffect)(()=>{let e=p.current;if(e){C.current=C.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";let t=e.getBoundingClientRect();f.current=t.height,j.current=t.width,N.current||(e.style.transitionDuration=C.current.transitionDuration,e.style.animationName=C.current.animationName),m(n)}},[u.open,n]),(0,d.jsx)(l.Primitive.div,{"data-state":k(u.open),"data-disabled":u.disabled?"":void 0,id:u.contentId,hidden:!w,...c,ref:g,style:{"--radix-collapsible-content-height":b?`${b}px`:void 0,"--radix-collapsible-content-width":v?`${v}px`:void 0,...e.style},children:w&&o})});function k(e){return e?"open":"closed"}e.s(["Collapsible",0,g,"CollapsibleContent",0,j,"CollapsibleTrigger",0,b],70986)},75750,e=>{"use strict";let t=(0,e.i(77379).default)("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["XCircle",0,t],75750)},87040,e=>{"use strict";var t=e.i(14260),a=e.i(65268);e.s(["useProcessConfig",0,function(e){return(0,t.useQuery)({queryKey:["process-config"],queryFn:()=>a.api.get("/process-config"),enabled:e?.enabled??!0,staleTime:6e4})}])},19660,e=>{"use strict";let t=(0,e.i(77379).default)("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);e.s(["Bot",0,t],19660)},32220,e=>{"use strict";var t=e.i(54710),a=e.i(34416),s=e.i(95486),n=e.i(19660),i=e.i(72740),r=e.i(21682),l=e.i(7663),o=e.i(75750),c=e.i(74490),d=e.i(20014),u=e.i(48467),h=e.i(79634),m=e.i(10427),p=e.i(65268),x=e.i(24756),g=e.i(87040),f=e.i(76176);e.s(["ProcessModelCard",0,function({processKey:e,title:b="AI Model",description:y}){let j=(0,s.useQueryClient)(),{data:v}=(0,x.useBackends)(),{data:k}=(0,g.useProcessConfig)(),[w,N]=(0,a.useState)(!1),[C,A]=(0,a.useState)(null),[S,I]=(0,a.useState)(null),[M,E]=(0,a.useState)(!1),[T,R]=(0,a.useState)(null),B=k?.configs.find(t=>t.processKey===e),D=new Map((v?.backends??[]).map(e=>[e.id,e])),F=(v?.backends??[]).filter(e=>e.enabled);if(!v||!k||!B)return null;let L=D.get(B.mainBackend),P=L?.models.find(e=>e.modelId===B.mainModel)?.label??(0,f.formatModelName)(B.mainModel),O=C?D.get(C):null,G=O?.models??[];async function _(){if(C&&S){E(!0),R(null);try{await p.api.put(`/process-config/${e}`,{mainBackend:C,mainModel:S,fallbackBackend:B.fallbackBackend,fallbackModel:B.fallbackModel,maxTurns:B.maxTurns,maxBudgetUsd:B.maxBudgetUsd}),await j.invalidateQueries({queryKey:["process-config"]}),R({type:"success",message:"Saved"}),N(!1)}catch(t){let e=t instanceof p.ApiError?t.body:null;R({type:"error",message:"string"==typeof e?.error?e.error:t instanceof Error?t.message:"Save failed"})}finally{E(!1)}}}return(0,t.jsxs)(c.Card,{children:[(0,t.jsxs)(c.CardHeader,{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(n.Bot,{className:"h-4 w-4 text-muted-foreground"}),(0,t.jsx)(c.CardTitle,{className:"text-base",children:b}),"user"===B.updatedBy&&(0,t.jsx)(u.Badge,{variant:"blue",className:"text-xs",children:"Custom"})]}),!w&&(0,t.jsxs)(d.Button,{variant:"ghost",size:"sm",onClick:function(){A(B.mainBackend),I(B.mainModel),R(null),N(!0)},className:"h-8",children:[(0,t.jsx)(r.Pencil,{className:"h-3.5 w-3.5"}),"Edit"]})]}),!w&&(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[(0,t.jsx)(u.Badge,{variant:f.BACKEND_BADGE_VARIANTS[B.mainBackend],children:(0,f.getBackendLabel)(B.mainBackend)}),(0,t.jsx)("span",{className:"text-muted-foreground",children:P}),(0,t.jsx)(u.Badge,{variant:"high"===B.defaultTier?"purple":"medium"===B.defaultTier?"blue":"default",className:"text-xs",children:B.defaultTier})]}),y&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:y})]}),w&&(0,t.jsxs)("div",{className:"mt-1 space-y-3",children:[(0,t.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:"Backend"}),(0,t.jsxs)(m.Select,{value:C??"",onValueChange:e=>(function(e){var t,a;let s,n=D.get(e);if(!n)return;A(e);let i=(t=n.models,a=B.defaultTier,(s=t.filter(e=>e.tier===a)).length>0?s:t);I(i[0]?.modelId??n.models[0]?.modelId??"")})(e),children:[(0,t.jsx)(m.SelectTrigger,{children:(0,t.jsx)(m.SelectValue,{})}),(0,t.jsx)(m.SelectContent,{children:F.map(e=>(0,t.jsx)(m.SelectItem,{value:e.id,children:(0,f.getBackendLabel)(e.id)},e.id))})]})]}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:"Model"}),(0,t.jsxs)(m.Select,{value:S??"",onValueChange:e=>I(e),children:[(0,t.jsx)(m.SelectTrigger,{children:(0,t.jsx)(m.SelectValue,{})}),(0,t.jsx)(m.SelectContent,{children:G.map(e=>(0,t.jsx)(m.SelectItem,{value:e.modelId,children:e.label},e.modelId))})]})]})]}),(0,t.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,t.jsxs)(d.Button,{variant:"outline",size:"sm",onClick:function(){N(!1),A(null),I(null)},disabled:M,children:[(0,t.jsx)(o.XCircle,{className:"h-3.5 w-3.5"}),"Cancel"]}),(0,t.jsxs)(d.Button,{size:"sm",onClick:()=>{_()},disabled:M||!S,children:[M?(0,t.jsx)(i.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(l.Save,{className:"h-3.5 w-3.5"}),"Save"]})]})]}),T&&(0,t.jsx)(h.Alert,{variant:"success"===T.type?"success":"error",className:"mt-3",children:T.message})]})}])},86567,6423,86704,29472,e=>{"use strict";var t=e.i(54710),a=e.i(34416),s=e.i(45958),n=e.i(52387),i=e.i(20014),r=e.i(90826),l=e.i(81187),o=e.i(89883),c=e.i(90925),d=e.i(65268),u=e.i(8652),h=e.i(48467),m=e.i(79634),p=e.i(81471),x=e.i(14260),g=e.i(95486);function f(e,t){return(0,x.useQuery)({queryKey:["mail-health",e],queryFn:()=>d.api.get(`/mail/${encodeURIComponent(e)}/health`),refetchInterval:1e4,enabled:t})}function b(){let e=(0,g.useQueryClient)();return()=>{e.invalidateQueries({queryKey:["mail-providers"]}),e.invalidateQueries({queryKey:["mail-accounts"]}),e.invalidateQueries({queryKey:["mail-health"]})}}async function y(e,t,a){let s=new Set(e);a?s.add(t):s.delete(t);let n=["gmail","outlook","yahoo","icloud"].filter(e=>s.has(e));return await d.api.patch("/mail/providers",{enabledKinds:n}),n}e.s(["toggleProviderEnabled",0,y,"useInvalidateMail",0,b,"useMailAccountHealth",0,f,"useMailAccounts",0,function(){return(0,x.useQuery)({queryKey:["mail-accounts"],queryFn:()=>d.api.get("/mail/accounts"),refetchInterval:1e4})},"useMailProviders",0,function(){return(0,x.useQuery)({queryKey:["mail-providers"],queryFn:()=>d.api.get("/mail/providers"),refetchInterval:3e4})}],6423);let j={healthy:{variant:"green",label:"Healthy"},requires_consent:{variant:"amber",label:"Re-authenticate"},degraded:{variant:"red",label:"Degraded"}};function v({account:e,highlight:s=!1,hideActive:n=!1,hideHealth:l=!1,onReauthenticate:u,isLastOfKind:p=!1,onAfterRemove:x}){let g=(0,a.useRef)(null),y=(0,r.useConfirm)(),N=b(),[C,A]=(0,a.useState)(!1),[S,I]=(0,a.useState)(null);(0,a.useEffect)(()=>{s&&g.current&&g.current.scrollIntoView({behavior:"smooth",block:"center"})},[s]);let M=f(e.id,!l).data??null,E="yahoo"===e.kind||"icloud"===e.kind,[T,R]=(0,a.useState)(!1),B=async()=>{I(null),A(!0);try{await d.api.patch(`/mail/accounts/${encodeURIComponent(e.id)}`,{active:!e.active}),N()}catch(e){I(e instanceof Error?e.message:"Failed to update")}finally{A(!1)}},D=async()=>{if(await y({title:`Remove ${e.email}?`,description:"Local credentials are revoked and the account is removed from this app. The mailbox itself is untouched at the provider."+(p?" This is the last account of its kind, so the provider will also be disabled — re-authenticate and toggle Enable to bring it back.":""),confirmLabel:"Remove",variant:"destructive"})){I(null),A(!0);try{await d.api.delete(`/mail/accounts/${encodeURIComponent(e.id)}`),x&&await x(),N()}catch(e){I(e instanceof Error?e.message:"Failed to remove")}finally{A(!1)}}},F=j[e.authStatus],L=l||!e.idleEnabled?null:M?.idleFallbackUntilUtc?{label:"polling (IDLE down)",variant:"amber"}:{label:"IDLE",variant:"green"};return(0,t.jsxs)("div",{ref:g,id:`account-${e.id}`,className:"rounded-md border p-3 transition-colors "+(s?"border-amber-400 ring-1 ring-amber-300/60":"border-border"),children:[(0,t.jsxs)("div",{className:"flex items-start gap-3",children:[(0,t.jsx)(o.Mail,{className:"mt-0.5 h-4 w-4 shrink-0 text-muted-foreground"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-foreground truncate",children:e.email}),e.label&&(0,t.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",e.label,")"]}),(0,t.jsx)(h.Badge,{variant:F.variant,children:F.label}),L&&(0,t.jsx)(h.Badge,{variant:L.variant,children:L.label})]}),!l&&(0,t.jsx)(w,{health:M})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2 shrink-0",children:[!n&&(0,t.jsxs)("label",{className:"flex items-center gap-1 text-xs cursor-pointer select-none",children:[(0,t.jsx)("input",{type:"checkbox",checked:e.active,disabled:C,onChange:()=>void B(),className:"h-3.5 w-3.5 rounded border-border"}),"Active"]}),"requires_consent"===e.authStatus&&(E?(0,t.jsx)(i.Button,{size:"sm",variant:"outline",disabled:C,onClick:()=>R(e=>!e),className:"h-7 text-xs px-2",children:T?"Cancel":"Re-authenticate"}):u&&(0,t.jsx)(i.Button,{size:"sm",variant:"outline",disabled:C,onClick:()=>void u(),className:"h-7 text-xs px-2",children:"Re-authenticate"})),(0,t.jsx)(i.Button,{size:"sm",variant:"outline",onClick:()=>void D(),disabled:C,className:"h-7 px-2",title:"Remove account",children:(0,t.jsx)(c.Trash2,{className:"h-3.5 w-3.5"})})]})]}),S&&(0,t.jsx)(m.Alert,{variant:"error",className:"mt-2",children:S}),E&&T&&(0,t.jsx)(k,{accountId:e.id,onSuccess:()=>{R(!1),N()}})]})}function k({accountId:e,onSuccess:s}){let[n,r]=(0,a.useState)(""),[l,o]=(0,a.useState)(!1),[c,h]=(0,a.useState)(null),p=async()=>{o(!0),h(null);try{await d.api.post(`/config/mail/app-password/${encodeURIComponent(e)}/refresh`,{appPassword:n.trim()}),r(""),s()}catch(e){h(e instanceof Error?e.message:"Failed to refresh")}finally{o(!1)}};return(0,t.jsxs)("div",{className:"mt-2 rounded-md border border-amber-200 bg-amber-50/50 p-3 dark:border-amber-900 dark:bg-amber-950/30 space-y-2",children:[(0,t.jsx)("p",{className:"text-xs text-foreground",children:"Generate a new app password at the provider, paste it here, and the daemon will swap it in place — the polling cursor and account ID stay intact."}),(0,t.jsx)(u.Input,{type:"password",value:n,onChange:e=>r(e.target.value),placeholder:"paste new app password",className:"h-8 text-xs"}),(0,t.jsx)("div",{className:"flex gap-2",children:(0,t.jsx)(i.Button,{size:"sm",onClick:()=>void p(),disabled:l||0===n.trim().length,className:"h-7 text-xs px-3",children:l?"Verifying…":"Update password"})}),c&&(0,t.jsx)(m.Alert,{variant:"error",children:c})]})}function w({health:e}){if(!e)return(0,t.jsx)("p",{className:"mt-1 text-[11px] text-muted-foreground",children:"Waiting for first poll…"});let a=e.lastPollAtUtc,s=null!=a&&Date.now()-(0,p.parseUtcDate)(a).getTime()>9e5;return(0,t.jsxs)("div",{className:"mt-1 flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px] text-muted-foreground",children:[(0,t.jsxs)("span",{children:["last poll:"," ",a?(0,t.jsxs)("span",{title:(0,p.formatAbsoluteTime)(a),className:s?"text-amber-600 dark:text-amber-400":void 0,children:[(0,p.formatRelativeTime)(a),s?" · stale":""]}):(0,t.jsx)("span",{children:"never"})]}),e.consecutiveErrorCount>0&&(0,t.jsxs)("span",{className:"text-amber-600 dark:text-amber-400",children:[e.consecutiveErrorCount," consecutive errors"]}),e.lastError&&(0,t.jsxs)("span",{className:"flex items-center gap-1 text-red-600 dark:text-red-400 max-w-full truncate",title:e.lastError,children:[(0,t.jsx)(l.AlertTriangle,{className:"h-3 w-3 shrink-0"}),e.lastError]})]})}var N=e.i(74490),C=e.i(57628);let A={"not-connected":{variant:"gray",label:"Not connected"},"needs-setup":{variant:"gray",label:"Needs setup"},disabled:{variant:"amber",label:"Ready to enable"},enabled:{variant:"green",label:"Enabled"},attention:{variant:"red",label:"Needs attention"}};function S(e){return e.accounts.some(e=>"healthy"!==e.authStatus)?"attention":0===e.accounts.length?e.awaitingProviderSetup?"needs-setup":"not-connected":e.enabled?"enabled":"disabled"}function I(e){let a=A[e.status],s="attention"===e.status?"warning":"enabled"===e.status?"success":"default";return(0,t.jsxs)(N.Card,{tone:s,children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,t.jsx)(o.Mail,{className:"h-4 w-4 text-muted-foreground shrink-0"}),(0,t.jsx)("h3",{className:"text-base font-semibold text-foreground truncate",children:e.name})]}),(0,t.jsx)(h.Badge,{variant:a.variant,children:a.label})]}),(0,t.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:e.description}),(0,t.jsx)("div",{className:"mt-3 space-y-3",children:e.setupSection}),e.accountsSection&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(C.Separator,{className:"my-4"}),(0,t.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground mb-2",children:"Authenticated accounts"}),(0,t.jsx)("div",{className:"space-y-2",children:e.accountsSection})]}),(0,t.jsx)(C.Separator,{className:"my-4"}),(0,t.jsx)(M,{toggle:e.enableToggle})]})}function M({toggle:e}){let[s,n]=(0,a.useState)(null),i=async t=>{n(null);try{await e.onChange(t)}catch(e){n(e instanceof Error?e.message:"Failed to update")}};return(0,t.jsxs)("div",{children:[(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm select-none "+(e.disabled||e.busy?"cursor-not-allowed opacity-60":"cursor-pointer"),title:e.disabled?e.disabledReason:void 0,children:[(0,t.jsx)("input",{type:"checkbox",checked:e.enabled,disabled:e.disabled||e.busy,onChange:e=>void i(e.target.checked),className:"h-4 w-4 rounded border-border"}),(0,t.jsx)("span",{className:"font-medium text-foreground",children:"Enable for the agent"}),e.busy&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:"saving…"})]}),e.disabled&&e.disabledReason&&(0,t.jsx)("p",{className:"mt-1 ml-6 text-xs text-muted-foreground",children:e.disabledReason}),!e.disabled&&e.explainer&&(0,t.jsx)("p",{className:"mt-1 ml-6 text-xs text-muted-foreground",children:e.explainer}),s&&(0,t.jsx)(m.Alert,{variant:"error",className:"mt-2",children:s})]})}e.s(["GmailCard",0,function({accounts:e,enabledKinds:l,focusAccountId:o,hideExternalGoogleLink:c=!1}){let d=b(),u=(0,r.useConfirm)(),[h,m]=(0,a.useState)(!1),p=l.includes("gmail"),x=S({accounts:e,enabled:p}),g=async e=>{if(e||await u({title:"Disable Gmail for the agent?",description:"This stops the unified mail poller from observing Gmail — receipts, travel bookings, and Kindle highlights will not be classified until you re-enable Gmail. Tokens stay in the keychain and the integration resumes the moment you flip the switch back on.",confirmLabel:"Disable Gmail",variant:"destructive"})){m(!0);try{await y(l,"gmail",e),d()}finally{m(!1)}}};return(0,t.jsx)(I,{name:"Gmail / Google Workspace",description:(0,t.jsx)(t.Fragment,{children:"Authenticated through your existing Google connection (it is shared with Calendar). Manage Google OAuth on the Connections page."}),status:x,setupSection:0===e.length?(0,t.jsxs)("div",{className:"rounded-md border border-dashed border-border p-3 text-xs",children:[(0,t.jsx)("p",{className:"text-foreground font-medium mb-1",children:"No Gmail account connected yet."}),(0,t.jsx)("p",{className:"text-muted-foreground mb-2",children:c?"Switch the Mode above to Direct and complete the Google connection step on this page — the daemon detects your Gmail address from the OAuth response and registers it here.":"Authenticate Google in Connections — the daemon detects your Gmail address from the OAuth response and registers it here."}),!c&&(0,t.jsx)(s.default,{href:"/connections/calendar#google",children:(0,t.jsxs)(i.Button,{size:"sm",variant:"outline",className:"h-7 text-xs px-3",children:["Open Google connection",(0,t.jsx)(n.ExternalLink,{className:"ml-1 h-3 w-3"})]})})]}):c?null:(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Re-authentication, scope changes, or revoking access live on the"," ",(0,t.jsx)(s.default,{href:"/connections/calendar#google",className:"underline underline-offset-2",children:"Google connection card"}),"."]}),accountsSection:e.length>0?e.map(a=>(0,t.jsx)(v,{account:a,highlight:o===a.id,hideActive:!0,hideHealth:!0,isLastOfKind:1===e.length,onAfterRemove:async()=>{1===e.length&&p&&await y(l,"gmail",!1)}},a.id)):void 0,enableToggle:{enabled:p,disabled:0===e.length,disabledReason:0===e.length?"Connect a Google account first.":void 0,busy:h,onChange:g,explainer:"When enabled, the legacy Gmail poller observes your inbox and the agent can read, draft, and send messages."}})}],86567),e.i(18446);var E=e.i(49445);function T({index:e,title:a,completed:s=!1,disabled:n=!1,children:i}){return(0,t.jsxs)("div",{className:"rounded-md border border-dashed p-3 "+(n?"border-border opacity-50":s?"border-emerald-300 dark:border-emerald-800":"border-border"),children:[(0,t.jsxs)("p",{className:"text-xs font-semibold text-foreground mb-2",children:["Step ",e,": ",a,s&&(0,t.jsx)("span",{className:"ml-2 text-emerald-600 dark:text-emerald-400",children:"✓"})]}),i]})}e.s(["OutlookCard",0,function({accounts:e,enabledKinds:s,focusAccountId:l}){let o=b(),c=(0,r.useConfirm)(),h=s.includes("outlook"),p=(0,x.useQuery)({queryKey:["outlook-client-config"],queryFn:()=>d.api.get("/config/mail/outlook/client-config"),staleTime:3e4}),g=p.data?.configured===!0,f=S({accounts:e,enabled:h,awaitingProviderSetup:!g}),[j,k]=(0,a.useState)(!1),[w,N]=(0,a.useState)(""),[C,A]=(0,a.useState)("common"),[M,R]=(0,a.useState)(""),[B,D]=(0,a.useState)(!1),[F,L]=(0,a.useState)(null),[P,O]=(0,a.useState)(null),[G,_]=(0,a.useState)(null),[q,K]=(0,a.useState)(!1),W=async e=>{K(!0);try{await y(s,"outlook",e),o()}finally{K(!1)}},H=async()=>{D(!0),L(null);try{await d.api.put("/config/mail/outlook/client-config",{clientId:w.trim(),tenant:C.trim()||"common"}),await p.refetch(),k(!1)}catch(e){L(e instanceof Error?e.message:"Failed to save client config")}finally{D(!1)}},U=async()=>{if(await c({title:"Reset Azure app registration?",description:"Existing Outlook accounts keep working until their tokens expire. You'll need to re-enter the client ID before adding new accounts.",confirmLabel:"Reset",variant:"destructive"})){D(!0),L(null);try{await d.api.delete("/config/mail/outlook/client-config"),await p.refetch()}catch(e){L(e instanceof Error?e.message:"Failed to reset")}finally{D(!1)}}},z=async()=>{if(await c({title:"Open Microsoft sign-in?",description:"The daemon will open your browser to sign in to Microsoft. macOS or Windows may show a one-time firewall prompt — accept it so the loopback callback can complete.",confirmLabel:"Continue"})){D(!0),L(null),O(null);try{await d.api.post("/mail/accounts",{kind:"outlook",label:M.trim()||void 0}),O("Outlook account authenticated. Toggle the switch below to start using it."),R(""),o()}catch(e){L(e instanceof Error?e.message:"OAuth failed")}finally{D(!1)}}},$=async()=>{D(!0),L(null),O(null),_(null);try{let e=await fetch("/api/mail/accounts/device-code",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({kind:"outlook",label:M.trim()||void 0})});if(!e.ok||!e.body)throw Error(`HTTP ${e.status}`);let t=e.body.getReader(),a=new TextDecoder,s="";for(;;){let{value:e,done:n}=await t.read();if(n)break;let i=(s+=a.decode(e,{stream:!0})).split("\n\n");for(let e of(s=i.pop()??"",i)){let t=e.split("\n"),a="",s="";for(let e of t)e.startsWith("event:")&&(a=e.slice(6).trim()),e.startsWith("data:")&&(s+=e.slice(5).trim());if(a){if("prompt"===a)_(JSON.parse(s));else if("completed"===a)O("Outlook account authenticated. Toggle the switch below to start using it."),_(null),R(""),o();else if("failed"===a){let e=JSON.parse(s);throw Error(e.message??"device-code failed")}}}}}catch(e){L(e instanceof Error?e.message:"Device-code OAuth failed"),_(null)}finally{D(!1)}},V=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(T,{index:1,title:"Register an Azure app (one-time)",completed:g,children:[!g&&!j&&(0,t.jsxs)("div",{className:"space-y-3 text-xs",children:[(0,t.jsxs)("p",{className:"text-muted-foreground",children:["One-time setup: you'll tell Microsoft that the ",E.APP_NAME,"daemon on your computer is allowed to read and send mail on your behalf. Follow every sub-step — two of them are easy to miss and will make sign-in fail with ",(0,t.jsx)("code",{children:"server_error"})," later."]}),(0,t.jsxs)("ol",{className:"list-decimal list-outside pl-4 space-y-2 text-muted-foreground",children:[(0,t.jsxs)("li",{children:["Open the"," ",(0,t.jsxs)("a",{href:"https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade",target:"_blank",rel:"noreferrer",className:"underline inline-flex items-center gap-0.5",children:["Azure portal — App registrations"," ",(0,t.jsx)(n.ExternalLink,{className:"h-3 w-3"})]}),". Sign in with the Microsoft account you want the agent to use."]}),(0,t.jsxs)("li",{children:["Click ",(0,t.jsx)("strong",{children:"+ New registration"})," at the top of the page."]}),(0,t.jsxs)("li",{children:["Fill in the form:",(0,t.jsxs)("ul",{className:"list-disc list-outside pl-4 mt-1 space-y-1",children:[(0,t.jsxs)("li",{children:[(0,t.jsx)("strong",{children:"Name"}),": anything, e.g. ",(0,t.jsx)("code",{children:E.APP_NAME}),"."]}),(0,t.jsxs)("li",{children:[(0,t.jsx)("strong",{children:"Supported account types"}),": pick"," ",(0,t.jsx)("em",{children:"Accounts in any organizational directory (Any Microsoft Entra ID tenant – Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)"}),"."]}),(0,t.jsxs)("li",{children:[(0,t.jsx)("strong",{children:"Redirect URI"}),": in the left-hand dropdown choose ",(0,t.jsx)("code",{children:"Public client/native (mobile & desktop)"})," ",(0,t.jsx)("strong",{children:"— not"})," ",(0,t.jsx)("code",{children:"Web"}),". Then type"," ",(0,t.jsx)("code",{children:"http://127.0.0.1/callback"})," in the box on the right."]})]}),(0,t.jsxs)("p",{className:"mt-1 rounded-md border border-amber-400/60 bg-amber-400/10 px-2 py-1 text-amber-700 dark:text-amber-300",children:["⚠ Trap #1: if you leave ",(0,t.jsx)("code",{children:"Web"})," selected, Microsoft will later return ",(0,t.jsx)("code",{children:"Authorization failed: server_error"}),". Use the Public client/native option."]})]}),(0,t.jsxs)("li",{children:["Click ",(0,t.jsx)("strong",{children:"Register"})," at the bottom of the form."]}),(0,t.jsxs)("li",{children:["You'll land on the ",(0,t.jsx)("em",{children:"Overview"})," page. Copy the value labelled ",(0,t.jsx)("strong",{children:"Application (client) ID"}),"— you'll paste it into the form below in a moment."]}),(0,t.jsxs)("li",{children:["In the left sidebar click ",(0,t.jsx)("strong",{children:"Authentication"}),". Scroll to the very bottom, find ",(0,t.jsx)("em",{children:"Advanced settings"})," →"," ",(0,t.jsx)("strong",{children:"Allow public client flows"}),", flip the toggle to"," ",(0,t.jsx)("strong",{children:"Yes"}),", then click ",(0,t.jsx)("strong",{children:"Save"})," at the top of the page.",(0,t.jsxs)("p",{className:"mt-1 rounded-md border border-amber-400/60 bg-amber-400/10 px-2 py-1 text-amber-700 dark:text-amber-300",children:["⚠ Trap #2: this toggle is off by default. Without it sign-in also fails with ",(0,t.jsx)("code",{children:"server_error"}),"."]})]}),(0,t.jsxs)("li",{children:["In the left sidebar click ",(0,t.jsx)("strong",{children:"API permissions"})," →"," ",(0,t.jsx)("strong",{children:"+ Add a permission"})," →"," ",(0,t.jsx)("strong",{children:"Microsoft Graph"})," →"," ",(0,t.jsx)("strong",{children:"Delegated permissions"}),". Use the search box to find and tick each of:",(0,t.jsxs)("ul",{className:"list-disc list-outside pl-4 mt-1",children:[(0,t.jsx)("li",{children:(0,t.jsx)("code",{children:"offline_access"})}),(0,t.jsx)("li",{children:(0,t.jsx)("code",{children:"User.Read"})}),(0,t.jsx)("li",{children:(0,t.jsx)("code",{children:"Mail.ReadWrite"})}),(0,t.jsx)("li",{children:(0,t.jsx)("code",{children:"Mail.Send"})})]}),"Then click ",(0,t.jsx)("strong",{children:"Add permissions"})," at the bottom."]}),(0,t.jsxs)("li",{children:["(Work/school tenant only) If your org requires admin consent for these scopes, click ",(0,t.jsx)("strong",{children:"Grant admin consent"}),". Personal Microsoft accounts don't need this step."]}),(0,t.jsxs)("li",{children:["Come back here and click ",(0,t.jsx)("strong",{children:"I have a client ID"}),". Paste the Application (client) ID you copied in step 5; leave Tenant as ",(0,t.jsx)("code",{children:"common"})," unless your admin told you otherwise."]})]}),(0,t.jsx)(i.Button,{size:"sm",variant:"outline",onClick:()=>k(!0),className:"h-7 text-xs px-3",children:"I have a client ID"})]}),j&&(0,t.jsxs)("div",{className:"space-y-2 rounded-md border border-border p-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs text-muted-foreground mb-1",htmlFor:"outlook-client-id",children:"Application (client) ID"}),(0,t.jsx)(u.Input,{id:"outlook-client-id",value:w,onChange:e=>N(e.target.value),placeholder:"00000000-0000-0000-0000-000000000000",className:"h-8 text-xs"})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("label",{className:"block text-xs text-muted-foreground mb-1",htmlFor:"outlook-tenant",children:["Tenant (default ",(0,t.jsx)("code",{children:"common"}),")"]}),(0,t.jsx)(u.Input,{id:"outlook-tenant",value:C,onChange:e=>A(e.target.value),placeholder:"common / organizations / <tenant-guid>",className:"h-8 text-xs"})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(i.Button,{size:"sm",variant:"outline",onClick:()=>void H(),disabled:B||0===w.trim().length,className:"h-7 text-xs px-3",children:B?"Saving…":"Save"}),(0,t.jsx)(i.Button,{size:"sm",variant:"outline",onClick:()=>k(!1),disabled:B,className:"h-7 text-xs px-3",children:"Cancel"})]})]}),g&&!j&&(0,t.jsxs)("div",{className:"text-xs text-muted-foreground",children:["Application ID:"," ",(0,t.jsx)("code",{className:"font-mono",children:p.data?.clientId})," ","(tenant ",(0,t.jsx)("code",{children:p.data?.tenant}),")."," ",(0,t.jsx)("button",{type:"button",className:"underline",onClick:()=>void U(),disabled:B,children:"reset"})]})]}),(0,t.jsx)(T,{index:2,title:"Authenticate an Outlook account",disabled:!g,children:g?(0,t.jsxs)("div",{className:"space-y-2 rounded-md border border-border p-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs text-muted-foreground mb-1",htmlFor:"outlook-label",children:"Label (optional)"}),(0,t.jsx)(u.Input,{id:"outlook-label",value:M,onChange:e=>R(e.target.value),placeholder:"work, personal, …",className:"h-8 text-xs"})]}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(i.Button,{size:"sm",onClick:()=>void z(),disabled:B,className:"h-7 text-xs px-3",children:B?"Waiting for consent…":"Authenticate (browser)"}),(0,t.jsx)(i.Button,{size:"sm",variant:"outline",onClick:()=>void $(),disabled:B,className:"h-7 text-xs px-3",title:"Use if the daemon runs headless (SSH / WSL)",children:"Authenticate (device code)"})]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"The browser flow may trigger a one-time macOS / Windows firewall prompt — accept it so the loopback callback can complete."})]}):(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Save the client ID first."})}),G&&(0,t.jsx)(m.Alert,{variant:"warning",children:(0,t.jsxs)("div",{className:"text-xs",children:["Visit"," ",(0,t.jsx)("a",{href:G.verificationUri,target:"_blank",rel:"noreferrer",className:"underline",children:G.verificationUri})," ","and enter code"," ",(0,t.jsx)("code",{className:"font-mono",children:G.userCode}),". Expires in ",Math.round(G.expiresIn/60)," min."]})}),P&&(0,t.jsx)(m.Alert,{variant:"success",children:P}),F&&(0,t.jsx)(m.Alert,{variant:"error",children:F})]});return(0,t.jsx)(I,{name:"Outlook / Microsoft 365",description:(0,t.jsx)(t.Fragment,{children:"One-time Azure app registration, then connect as many Outlook / outlook.com / Microsoft 365 accounts as you need."}),status:f,setupSection:V,accountsSection:e.length>0?e.map(a=>(0,t.jsx)(v,{account:a,highlight:l===a.id,onReauthenticate:()=>void z(),isLastOfKind:1===e.length,onAfterRemove:async()=>{1===e.length&&h&&await y(s,"outlook",!1)}},a.id)):void 0,enableToggle:{enabled:h,disabled:0===e.length,disabledReason:0===e.length?"Authenticate an Outlook account first.":void 0,busy:q,onChange:W,explainer:"When enabled, the agent observes your Outlook inbox via Microsoft Graph and can read, draft, and send messages."}})}],86704);let R={yahoo:{name:"Yahoo Mail",description:"App-password login over IMAP/SMTP. Generate the password in Yahoo Account Security, paste it once, and the daemon stores it in the OS keychain.",setupUrl:"https://login.yahoo.com/account/security",setupLabel:"Yahoo Account Security",passwordLabel:"Yahoo app password",defaultDomain:"yahoo.com",prerequisite:"Yahoo requires two-step verification on the account before it lets you create app passwords. If you haven't enabled it yet, turn it on first from the same Account Security page.",passwordSteps:[(0,t.jsxs)(t.Fragment,{children:["Open the"," ",(0,t.jsx)("strong",{children:"Yahoo Account Security"})," page and sign in with the Yahoo account you want to connect."]}),(0,t.jsxs)(t.Fragment,{children:["Scroll to ",(0,t.jsx)("strong",{children:"Other ways to sign in"})," and click"," ",(0,t.jsx)("strong",{children:"Generate and manage app passwords"}),". (If the link is missing, enable two-step verification first.)"]}),(0,t.jsxs)(t.Fragment,{children:["In the ",(0,t.jsx)("em",{children:"App name"})," field type ",(0,t.jsx)("code",{children:E.APP_NAME})," (any name works; this is just a label Yahoo shows in your account), then click ",(0,t.jsx)("strong",{children:"Generate password"}),"."]}),(0,t.jsxs)(t.Fragment,{children:["Yahoo shows a 16-character password with spaces. Copy it exactly as shown — ",(0,t.jsx)("strong",{children:"do not type it by hand"}),". Spaces are part of the password."]}),(0,t.jsx)(t.Fragment,{children:"Paste it into the password field below, then click Authenticate."})],passwordHint:"16 characters from Yahoo, spaces included. Do not retype — paste."},icloud:{name:"iCloud Mail",description:"App-specific-password login over IMAP/SMTP. Create the password in Apple Account → Sign-In and Security, paste it once, and the daemon stores it in the OS keychain.",setupUrl:"https://account.apple.com",setupLabel:"Apple Account",passwordLabel:"Apple app-specific password",defaultDomain:"icloud.com",prerequisite:"Apple only allows app-specific passwords on Apple IDs that have two-factor authentication turned on. If your Apple ID doesn't have 2FA yet, enable it first at appleid.apple.com.",passwordSteps:[(0,t.jsxs)(t.Fragment,{children:["Open ",(0,t.jsx)("strong",{children:"Apple Account"})," and sign in with the Apple ID whose iCloud mailbox you want to connect."]}),(0,t.jsxs)(t.Fragment,{children:["In the left sidebar click ",(0,t.jsx)("strong",{children:"Sign-In and Security"}),", then click ",(0,t.jsx)("strong",{children:"App-Specific Passwords"}),"."]}),(0,t.jsxs)(t.Fragment,{children:["Click ",(0,t.jsx)("strong",{children:"+ Generate an app-specific password"}),". Apple may ask you to re-enter your Apple ID password."]}),(0,t.jsxs)(t.Fragment,{children:["In the label field type ",(0,t.jsx)("code",{children:E.APP_NAME})," (any name works), then click ",(0,t.jsx)("strong",{children:"Create"}),"."]}),(0,t.jsxs)(t.Fragment,{children:["Apple shows a 19-character password in the form"," ",(0,t.jsx)("code",{children:"xxxx-xxxx-xxxx-xxxx"}),". Copy it exactly —"," ",(0,t.jsx)("strong",{children:"the dashes are required"}),"."]}),(0,t.jsx)(t.Fragment,{children:"Paste it into the password field below, then click Authenticate."})],passwordHint:"Format: xxxx-xxxx-xxxx-xxxx. Dashes are required — paste, don't retype."}};e.s(["ImapCard",0,function({kind:e,accounts:s,enabledKinds:r,focusAccountId:l}){let o=b(),c=R[e],h=r.includes(e),p=S({accounts:s,enabled:h}),[x,g]=(0,a.useState)(""),[f,j]=(0,a.useState)(""),[k,w]=(0,a.useState)(""),[N,C]=(0,a.useState)(!1),[A,M]=(0,a.useState)(null),[E,T]=(0,a.useState)(null),[B,D]=(0,a.useState)(!1),F=async t=>{D(!0);try{await y(r,e,t),o()}finally{D(!1)}},L=async()=>{C(!0),M(null),T(null);try{await d.api.post("/config/mail/app-password",{kind:e,email:`${x.trim()}@${c.defaultDomain}`,appPassword:f.trim(),label:k.trim()||void 0}),T(`${c.name} authenticated. Toggle the switch below to start using it.`),g(""),j(""),w(""),o()}catch(e){M(e instanceof Error?e.message:"Failed to connect")}finally{C(!1)}},P=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"rounded-md border border-dashed border-border p-3 text-xs space-y-2",children:[(0,t.jsx)("p",{className:"text-foreground font-medium",children:"Step 1: Generate an app password"}),(0,t.jsxs)("p",{className:"text-muted-foreground",children:[c.prerequisite," ",(0,t.jsxs)("a",{href:c.setupUrl,target:"_blank",rel:"noreferrer",className:"underline inline-flex items-center gap-0.5",children:["Open ",c.setupLabel," ",(0,t.jsx)(n.ExternalLink,{className:"h-3 w-3"})]}),"."]}),(0,t.jsx)("ol",{className:"list-decimal list-outside pl-4 space-y-1 text-muted-foreground",children:c.passwordSteps.map((e,a)=>(0,t.jsx)("li",{children:e},a))})]}),(0,t.jsxs)("div",{className:"rounded-md border border-border p-3 space-y-2",children:[(0,t.jsx)("p",{className:"text-xs font-semibold text-foreground",children:"Step 2: Authenticate the account"}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs text-muted-foreground mb-1",htmlFor:`${e}-email`,children:"Account email"}),(0,t.jsxs)("div",{className:"flex items-center",children:[(0,t.jsx)(u.Input,{id:`${e}-email`,value:x,onChange:e=>g(e.target.value),placeholder:"username",className:"h-8 text-xs rounded-r-none"}),(0,t.jsxs)("span",{className:"inline-flex h-8 items-center rounded-r-md border border-l-0 border-input bg-muted px-3 text-xs text-muted-foreground select-none",children:["@",c.defaultDomain]})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs text-muted-foreground mb-1",htmlFor:`${e}-app-password`,children:c.passwordLabel}),(0,t.jsx)(u.Input,{id:`${e}-app-password`,type:"password",value:f,onChange:e=>j(e.target.value),placeholder:"paste generated password",className:"h-8 text-xs"}),(0,t.jsx)("p",{className:"mt-1 text-[11px] text-muted-foreground",children:c.passwordHint})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs text-muted-foreground mb-1",htmlFor:`${e}-label`,children:"Label (optional)"}),(0,t.jsx)(u.Input,{id:`${e}-label`,value:k,onChange:e=>w(e.target.value),placeholder:"personal, family, …",className:"h-8 text-xs"})]}),(0,t.jsx)(i.Button,{size:"sm",onClick:()=>void L(),disabled:N||0===x.trim().length||0===f.trim().length,className:"h-7 text-xs px-3",children:N?"Authenticating…":"Authenticate"})]}),E&&(0,t.jsx)(m.Alert,{variant:"success",children:E}),A&&(0,t.jsx)(m.Alert,{variant:"error",children:A})]});return(0,t.jsx)(I,{name:c.name,description:c.description,status:p,setupSection:P,accountsSection:s.length>0?s.map(a=>(0,t.jsx)(v,{account:a,highlight:l===a.id,isLastOfKind:1===s.length,onAfterRemove:async()=>{1===s.length&&h&&await y(r,e,!1)}},a.id)):void 0,enableToggle:{enabled:h,disabled:0===s.length,disabledReason:0===s.length?`Authenticate a ${c.name} account first.`:void 0,busy:B,onChange:F,explainer:`When enabled, the agent observes your ${c.name} inbox via IMAP IDLE and can read, draft, and send messages.`}})}],29472)},91653,e=>{"use strict";var t=e.i(54710),a=e.i(34416),s=e.i(79634),n=e.i(86567),i=e.i(86704),r=e.i(29472),l=e.i(6423),o=e.i(85631),c=e.i(32077),d=e.i(32220);e.s(["default",0,function(){let e=(0,l.useMailAccounts)(),u=(0,l.useMailProviders)(),h=function(){let[e,t]=(0,a.useState)(null);return(0,a.useEffect)(()=>{let e=()=>{let e=window.location.hash.replace(/^#/,"");t(e.length>0?e:null)};return e(),window.addEventListener("hashchange",e),()=>window.removeEventListener("hashchange",e)},[]),e}(),m=e.data?.accounts??[],p=u.data?.enabledKinds??[],x=function(e){let t={gmail:[],outlook:[],yahoo:[],icloud:[]};for(let a of e)t[a.kind].push(a);return t}(m),g=e.isLoading||u.isLoading,f=e.error??u.error,b=m.filter(e=>e.active&&p.includes(e.kind)).length;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.ConnectionsSectionHeader,{title:"Mail",description:"Connect each mail service in two steps: authenticate, then flip the card's enable switch. The agent only observes and acts on providers whose switch is on. Per-account Active toggles one mailbox without touching the provider-wide switch.",healthy:b,total:m.length}),f&&(0,t.jsxs)(s.Alert,{variant:"error",children:["Couldn't load mail data:"," ",f instanceof Error?f.message:"unknown error"]}),g?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading…"}):(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(c.IntegrationCard,{integrationKey:"gmail",gmailAccountCount:x.gmail.length}),(0,t.jsx)(d.ProcessModelCard,{processKey:"gmail_classify",title:"Gmail Classification Model",description:"Model used to classify incoming Gmail messages and decide how the agent should respond. Light-tier is recommended — Haiku 4.5 or Sonnet 4.6 handles classification well at lower cost."}),(0,t.jsx)(n.GmailCard,{accounts:x.gmail,enabledKinds:p,focusAccountId:h}),(0,t.jsx)(c.IntegrationCard,{integrationKey:"outlook_mail"}),(0,t.jsx)(i.OutlookCard,{accounts:x.outlook,enabledKinds:p,focusAccountId:h}),(0,t.jsx)(r.ImapCard,{kind:"yahoo",accounts:x.yahoo,enabledKinds:p,focusAccountId:h}),(0,t.jsx)(r.ImapCard,{kind:"icloud",accounts:x.icloud,enabledKinds:p,focusAccountId:h})]})]})}])}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,90925,e=>{"use strict";let t=(0,e.i(77379).default)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);e.s(["Trash2",0,t],90925)},60168,e=>{"use strict";let t=(0,e.i(77379).default)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",0,t],60168)},99758,e=>{"use strict";let t=(0,e.i(77379).default)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",0,t],99758)},55575,e=>{"use strict";let t=(0,e.i(77379).default)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);e.s(["FolderOpen",0,t],55575)},66127,e=>{"use strict";var t=e.i(65268);async function a({title:e,defaultPath:s}){let n=await t.api.post("/system/pick-directory",{title:e,...s?{defaultPath:s}:{}});if("selected"===n.status&&n.path)return n.path;if("cancelled"===n.status)return null;throw Error(n.message??"Folder picker is unavailable.")}e.s(["pickDirectoryFromDesktop",0,a])},25795,e=>{"use strict";let t=(0,e.i(77379).default)("RotateCcw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);e.s(["RotateCcw",0,t],25795)},49681,e=>{"use strict";var t=e.i(54710),a=e.i(7771),s=e.i(95486),n=e.i(8011),i=e.i(10628),l=e.i(81471);e.s(["DocsHelpInline",0,function({docId:e,anchor:r=null,label:o,className:d}){let c=(0,s.useQueryClient)(),u=o??"Help";return(0,t.jsx)(i.TooltipProvider,{delayDuration:300,children:(0,t.jsxs)(i.Tooltip,{children:[(0,t.jsx)(i.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",onClick:t=>{t.preventDefault(),t.stopPropagation(),(0,n.openDocsHelpSlideover)(c,{docId:e,anchor:r,autoFocusComposer:!1})},className:(0,l.cn)("inline-flex h-5 w-5 items-center justify-center rounded-full text-muted-foreground/70 transition hover:bg-accent hover:text-foreground",d),"aria-label":`Open help — ${u}`,"data-testid":"docs-help-inline",children:(0,t.jsx)(a.HelpCircle,{className:"h-3.5 w-3.5","aria-hidden":"true"})})}),(0,t.jsx)(i.TooltipContent,{side:"top",children:(0,t.jsx)("span",{children:u})})]})})}])},82239,e=>{"use strict";var t=e.i(54710),a=e.i(25795),s=e.i(10628);e.s(["RestartRequiredBadge",0,function(){return(0,t.jsxs)(s.Tooltip,{children:[(0,t.jsx)(s.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded-sm bg-amber-100 px-1 py-0.5 text-[10px] font-medium text-amber-700 dark:bg-amber-900/40 dark:text-amber-300",children:[(0,t.jsx)(a.RotateCcw,{className:"h-2.5 w-2.5"}),"restart"]})}),(0,t.jsx)(s.TooltipContent,{side:"top",className:"max-w-[220px] text-xs",children:"Changing this value requires a daemon restart to take effect."})]})}])},88,e=>{"use strict";var t=e.i(54710),a=e.i(34416),s=e.i(99758),n=e.i(55575),i=e.i(21682),l=e.i(60168),r=e.i(25795),o=e.i(90925),d=e.i(36451);e.i(18446);var c=e.i(28444),u=e.i(48467),m=e.i(20014),x=e.i(74490),h=e.i(8652),p=e.i(82239),f=e.i(49681),b=e.i(66127),g=e.i(36413);let y=new Set(c.RESTART_REQUIRED_KEY_TUPLE);function k(e){return null===e?"":String(e)}e.s(["ConfigSection",0,function({title:e,children:a,helpDocId:s,helpAnchor:n}){return(0,t.jsxs)(x.Card,{children:[(0,t.jsx)(x.CardHeader,{children:(0,t.jsxs)(x.CardTitle,{className:"flex items-center gap-1.5",children:[(0,t.jsx)("span",{children:e}),s&&(0,t.jsx)(f.DocsHelpInline,{docId:s,anchor:n??null,label:e})]})}),(0,t.jsx)("div",{className:"space-y-0.5 [&>p]:max-w-prose",children:a})]})},"EditableArrayField",0,function({label:e,values:s,configKey:i,variant:r="gray",placeholder:o="Add item...",directoryPicker:c,modified:x,onSave:f}){let g=y.has(i),[k,v]=(0,a.useState)(""),[j,C]=(0,a.useState)(!1),[w,N]=(0,a.useState)(null),S=async()=>{let e=k.trim();if(!(!e||s.includes(e))){C(!0),N(null);try{await f(i,[...s,e]),v("")}catch{}finally{C(!1)}}},M=async e=>{C(!0);try{await f(i,s.filter(t=>t!==e))}finally{C(!1)}},T=async()=>{if(c){C(!0),N(null);try{let e=await (0,b.pickDirectoryFromDesktop)({title:c.title,defaultPath:k.trim()||c.defaultPath});if(!e)return;if(s.includes(e)){v(e),N("That directory is already in the list.");return}await f(i,[...s,e]),v("")}catch(e){N(e instanceof Error?e.message:"Folder picker is unavailable.")}finally{C(!1)}}};return(0,t.jsxs)("div",{className:`py-2${x?" border-l-2 border-blue-500 pl-2 -ml-1 rounded":""}`,"data-config-key":i,children:[(0,t.jsxs)("p",{className:"text-sm text-muted-foreground mb-2 inline-flex items-center gap-1.5",children:[e,g&&(0,t.jsx)(p.RestartRequiredBadge,{}),x&&(0,t.jsx)("span",{className:"text-[10px] font-medium text-blue-600 dark:text-blue-400",children:"modified"})]}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-1.5 mb-2",children:[s.map(e=>(0,t.jsxs)(u.Badge,{variant:r,className:"gap-1 pr-1",children:[e,(0,t.jsx)("button",{onClick:()=>M(e),disabled:j,className:"ml-0.5 rounded-sm hover:bg-black/10 dark:hover:bg-white/10 p-0.5 transition-colors",children:(0,t.jsx)(d.X,{className:"h-3 w-3"})})]},e)),0===s.length&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground italic",children:"No items"})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(h.Input,{value:k,onChange:e=>v(e.target.value),onKeyDown:e=>{"Enter"===e.key&&S()},placeholder:o,className:"max-w-[320px]",disabled:j}),c&&(0,t.jsxs)(m.Button,{size:"sm",variant:"outline",onClick:T,disabled:j,children:[(0,t.jsx)(n.FolderOpen,{className:"h-3.5 w-3.5 mr-1"}),c.buttonLabel??"Choose"]}),(0,t.jsxs)(m.Button,{size:"sm",variant:"outline",onClick:S,disabled:!k.trim()||j,children:[(0,t.jsx)(l.Plus,{className:"h-3.5 w-3.5 mr-1"}),"Add"]})]}),w&&(0,t.jsx)("p",{className:"mt-1 text-xs text-destructive",children:w})]})},"EditableBooleanField",0,function({label:e,value:s,configKey:n,description:i,modified:l,defaultValue:o,onSave:d}){let[c,u]=(0,a.useState)(!1),x=y.has(n),h=void 0!==o&&s===o,f=async()=>{u(!0);try{await d(n,!s)}finally{u(!1)}},b=async()=>{if(void 0!==o){u(!0);try{await d(n,o)}finally{u(!1)}}};return(0,t.jsx)("div",{className:`py-1.5 group${l?" border-l-2 border-blue-500 pl-2 -ml-1 rounded":""}`,"data-config-key":n,children:(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("p",{className:"text-sm text-muted-foreground inline-flex items-center gap-1.5",children:[e,x&&(0,t.jsx)(p.RestartRequiredBadge,{}),l&&(0,t.jsx)("span",{className:"text-[10px] font-medium text-blue-600 dark:text-blue-400",children:"modified"}),void 0!==o&&!h&&!l&&(0,t.jsxs)("button",{type:"button",onClick:b,className:"text-[10px] text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-0.5 opacity-0 group-hover:opacity-100",children:[(0,t.jsx)(r.RotateCcw,{className:"h-2.5 w-2.5"}),"reset"]})]}),i&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:i})]}),(0,t.jsx)(m.Button,{variant:s?"default":"outline",size:"sm",onClick:f,disabled:c,children:s?"Enabled":"Disabled"})]})})},"EditableField",0,function({label:e,value:n,configKey:l,type:c="text",suffix:u,description:x,min:f,max:b,nullable:v=!1,emptyLabel:j="Not set",modified:C,defaultValue:w,onSave:N}){let S=y.has(l),[M,T]=(0,a.useState)(!1),[E,D]=(0,a.useState)(k(n)),[_,A]=(0,a.useState)(!1),[B,R]=(0,a.useState)(null),L=(0,a.useRef)(null),I=(0,g.useDiscardGeneration)(),P=(0,a.useRef)(I);(0,a.useEffect)(()=>{I!==P.current&&(P.current=I,T(!1),R(null))},[I]),(0,a.useEffect)(()=>{M&&L.current?.focus()},[M]),(0,a.useEffect)(()=>{M||D(k(n))},[n,M]);let F=void 0!==w&&n===w,K=async e=>{if(e.stopPropagation(),void 0!==w){A(!0);try{await N(l,w)}finally{A(!1)}}},O=async e=>{e.stopPropagation(),A(!0);try{await N(l,null)}finally{A(!1)}},$=async()=>{let e=E.trim(),t=v&&""===e?null:"number"===c?Number(E):E;if(t===n)return void T(!1);if(null!==t&&"number"===c&&(void 0!==f||void 0!==b)&&(void 0!==f&&t<f||void 0!==b&&t>b))return void R(`Must be ${f??""}–${b??""}`);R(null),A(!0);try{await N(l,t),T(!1)}catch{}finally{A(!1)}};return M?(0,t.jsxs)("div",{className:"py-1.5","data-config-key":l,children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("span",{className:"text-sm text-muted-foreground shrink-0 min-w-[140px] inline-flex items-center gap-1.5",children:[e,S&&(0,t.jsx)(p.RestartRequiredBadge,{})]}),(0,t.jsx)(h.Input,{ref:L,type:c,value:E,onChange:e=>{D(e.target.value),R(null)},onKeyDown:e=>{"Enter"===e.key&&$(),"Escape"===e.key&&(D(k(n)),T(!1))},className:"max-w-[240px]",disabled:_,min:f,max:b}),u&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:u}),(0,t.jsx)(m.Button,{size:"sm",variant:"ghost",onClick:$,disabled:_,className:"h-7 w-7 p-0",children:(0,t.jsx)(s.Check,{className:"h-3.5 w-3.5"})}),(0,t.jsx)(m.Button,{size:"sm",variant:"ghost",onClick:()=>{D(k(n)),R(null),T(!1)},className:"h-7 w-7 p-0",children:(0,t.jsx)(d.X,{className:"h-3.5 w-3.5"})})]}),B&&(0,t.jsx)("p",{className:"text-xs text-destructive mt-1 ml-[148px]",children:B}),x&&!B&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground mt-1 ml-[148px]",children:x})]}):(0,t.jsxs)("div",{className:`py-1.5 group cursor-pointer rounded px-1 -mx-1 hover:bg-muted/50 transition-colors${C?" border-l-2 border-blue-500 pl-2":""}`,"data-config-key":l,onClick:()=>T(!0),children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("span",{className:"text-sm text-muted-foreground inline-flex items-center gap-1.5",children:[e,S&&(0,t.jsx)(p.RestartRequiredBadge,{})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[C&&(0,t.jsx)("span",{className:"text-[10px] font-medium text-blue-600 dark:text-blue-400",children:"modified"}),void 0!==w&&!F&&!C&&(0,t.jsxs)("button",{type:"button",onClick:K,className:"text-[10px] text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-0.5 opacity-0 group-hover:opacity-100",children:[(0,t.jsx)(r.RotateCcw,{className:"h-2.5 w-2.5"}),"reset"]}),v&&null!==n&&!C&&(0,t.jsxs)("button",{type:"button",onClick:O,title:`Clear — sets ${e} to ${j}`,className:"text-[10px] text-muted-foreground hover:text-destructive transition-colors inline-flex items-center gap-0.5 opacity-0 group-hover:opacity-100",children:[(0,t.jsx)(o.Trash2,{className:"h-2.5 w-2.5"}),"clear"]}),(0,t.jsx)("span",{className:"text-sm font-medium text-foreground",children:null===n?j:"$"===u?`$${n}`:u?`${n} ${u}`:String(n)}),(0,t.jsx)(i.Pencil,{className:"h-3 w-3 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity"})]})]}),x&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:x})]})}])},52387,e=>{"use strict";let t=(0,e.i(77379).default)("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["ExternalLink",0,t],52387)},76176,e=>{"use strict";let t={claude:"Claude Code",codex:"OpenAI Codex",gemini:"Gemini CLI"},a={claude:"Claude",codex:"Codex",gemini:"Gemini"},s={claude:["#7C2D12","#B54B2D","#E15B40","#F97316","#FDBA74"],codex:["#86198F","#A21CAF","#D946EF","#E879F9","#F5D0FE"],gemini:["#1E3A8A","#1D4ED8","#1C69FF","#60A5FA","#93C5FD"]},n=["#6b7280","#9ca3af","#4b5563","#374151"],i={claude:"orange",codex:"pink",gemini:"blue"},l={"routine.morning_routine":"Morning Routine","routine.evening_review":"Evening Review","routine.weekly_review":"Weekly Review","routine.monthly_review":"Monthly Review","routine.hourly_check":"Hourly Check","routine.roadmap_refresh":"Roadmap Refresh","message.dm":"Direct Messages","message.mention":"Mentions","dashboard.chat":"Dashboard Chat","agent.task":"Scheduled Tasks","calendar.change":"Calendar Events",gmail_classify:"Gmail Classification","github.pull_request.review_requested":"GitHub Review Requests","github.assigned":"GitHub Assignments","github.security_alert":"GitHub Security Alerts","github.workflow_run.failed":"GitHub CI Failures","wiki.ingest_url":"Wiki URL Ingest","wiki.compile":"Wiki Compile","wiki.ask":"Wiki Ask"};function r(e){let t;if(!e)return[];try{t=JSON.parse(e)}catch{return[]}if(!t||"object"!=typeof t)return[];let a=[];for(let[e,s]of Object.entries(t))s&&"object"==typeof s&&a.push({modelId:e,inputTokens:"number"==typeof s.inputTokens?s.inputTokens:0,outputTokens:"number"==typeof s.outputTokens?s.outputTokens:0,costUsd:"number"==typeof s.costUsd?s.costUsd:0});return a.sort((e,t)=>t.costUsd-e.costUsd)}function o(e){if(!e)return null;let t=e.toLowerCase();return t.includes("claude")||t.includes("sonnet")||t.includes("opus")||t.includes("haiku")?"claude":t.includes("gemini")?"gemini":t.includes("gpt")||t.includes("codex")||t.includes("o3")||t.includes("o4")?"codex":null}e.s(["BACKEND_BADGE_VARIANTS",0,i,"BACKEND_COLORS",0,{claude:"#E15B40",codex:"#D946EF",gemini:"#1C69FF"},"BACKEND_LABELS",0,t,"BACKEND_PROVIDER_LABELS",0,{claude:"Claude (Anthropic)",codex:"ChatGPT (OpenAI)",gemini:"Gemini (Google)"},"BACKEND_PROVIDER_SHORT",0,{claude:"Claude",codex:"ChatGPT",gemini:"Gemini"},"BACKEND_WEB_SEARCH_DESCRIPTIONS",0,{claude:"Lets the agent call Anthropic's built-in WebSearch tool.",codex:"Lets the agent call OpenAI's web_search tool. Works in safe (sandbox) mode — the tool runs at OpenAI, not as a local shell command.",gemini:"Lets the agent call Gemini's google_web_search tool."},"CHART_CATEGORY_PALETTE",0,["#3b82f6","#10b981","#f59e0b","#8b5cf6","#ec4899","#14b8a6","#f97316","#6366f1","#ef4444","#22c55e"],"assignModelColors",0,function(e){let t=new Map;for(let a of e){if(!a)continue;let e=o(a)??"other",s=t.get(e)??[];s.push(a),t.set(e,s)}let a={};for(let[e,i]of t){i.sort((e,t)=>e.localeCompare(t));let t="other"===e?n:s[e],l=i.length;i.forEach((e,s)=>{let n;n=l>=t.length?s%t.length:1===l?Math.floor(t.length/2):Math.floor((s+.5)*t.length/l),a[e]=t[n]})}return a},"detectBackendFromModel",0,o,"formatModelName",0,function(e){return e?e.replace(/^claude-/,"Claude ").replace(/^gpt-/,"GPT-").replace(/^gemini-/,"Gemini ").replace(/-/g," ").replace(/\bpreview\b/gi,"(preview)").replace(/\bpro\b/gi,"Pro").replace(/\bflash\b/gi,"Flash").replace(/\blite\b/gi,"Lite").replace(/\bmini\b/gi,"Mini").replace(/\bcodex\b/gi,"Codex").replace(/\bopus\b/gi,"Opus").replace(/\bsonnet\b/gi,"Sonnet").replace(/\bhaiku\b/gi,"Haiku").replace(/\s+/g," ").trim():"Not set"},"formatShortModelName",0,function(e){if(!e)return"unknown";if("opus"===e)return"Opus";if("sonnet"===e)return"Sonnet";let t=e.replace(/-\d{8,}$/,"").replace(/^claude-/,"").replace(/(\d+)-(\d+)(?![-\d])/g,"$1.$2").replace(/-/g," ");return e.startsWith("gpt-")&&(t=`GPT-${t.replace(/^gpt\s*/i,"")}`),e.startsWith("gemini-")&&(t=t.replace(/^gemini\s*/i,"Gemini ")),t.replace(/\bopus\b/gi,"Opus").replace(/\bsonnet\b/gi,"Sonnet").replace(/\bhaiku\b/gi,"Haiku").replace(/\bpro\b/gi,"Pro").replace(/\bflash\b/gi,"Flash").replace(/\blite\b/gi,"Lite").replace(/\bmini\b/gi,"Mini").replace(/\s+/g," ").trim()},"getBackendLabel",0,function(e){return t[e]},"getBackendShortLabel",0,function(e){return a[e]},"getProcessGroup",0,function(e){return e.startsWith("wiki.")?"Wiki":e.startsWith("message.")||e.startsWith("dashboard.")?"Conversation":e.startsWith("routine.")?"Routines":e.startsWith("git.")||e.startsWith("github.")?"Git & GitHub":e.startsWith("calendar.")||"gmail_classify"===e?"Integrations":"Tasks"},"getProcessLabel",0,function(e){return l[e]??e},"modelBadgeVariant",0,function(e){if(!e)return"gray";let t=o(e);return t?i[t]:"gray"},"parseModelUsage",0,r,"pickDisplayModel",0,function(e,t){let a=r(t);return a.length>0&&a[0]?a[0].modelId:e??null}])},59134,e=>{"use strict";let t=(0,e.i(77379).default)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);e.s(["RefreshCw",0,t],59134)},75750,e=>{"use strict";let t=(0,e.i(77379).default)("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["XCircle",0,t],75750)},24756,e=>{"use strict";var t=e.i(14260),a=e.i(65268);e.s(["useBackends",0,function(e){return(0,t.useQuery)({queryKey:["backends"],queryFn:()=>a.api.get("/backends"),enabled:e?.enabled??!0,staleTime:6e4})}])},70986,e=>{"use strict";var t=e.i(34416),a=e.i(91967),s=e.i(9413),n=e.i(36567),i=e.i(18731),l=e.i(22353),r=e.i(85565),o=e.i(90816),d=e.i(11207),c=e.i(54710),u="Collapsible",[m,x]=(0,s.createContextScope)(u),[h,p]=m(u),f=t.forwardRef((e,a)=>{let{__scopeCollapsible:s,open:i,defaultOpen:l,disabled:o,onOpenChange:m,...x}=e,[p,f]=(0,n.useControllableState)({prop:i,defaultProp:l??!1,onChange:m,caller:u});return(0,c.jsx)(h,{scope:s,disabled:o,contentId:(0,d.useId)(),open:p,onOpenToggle:t.useCallback(()=>f(e=>!e),[f]),children:(0,c.jsx)(r.Primitive.div,{"data-state":j(p),"data-disabled":o?"":void 0,...x,ref:a})})});f.displayName=u;var b="CollapsibleTrigger",g=t.forwardRef((e,t)=>{let{__scopeCollapsible:s,...n}=e,i=p(b,s);return(0,c.jsx)(r.Primitive.button,{type:"button","aria-controls":i.contentId,"aria-expanded":i.open||!1,"data-state":j(i.open),"data-disabled":i.disabled?"":void 0,disabled:i.disabled,...n,ref:t,onClick:(0,a.composeEventHandlers)(e.onClick,i.onOpenToggle)})});g.displayName=b;var y="CollapsibleContent",k=t.forwardRef((e,t)=>{let{forceMount:a,...s}=e,n=p(y,e.__scopeCollapsible);return(0,c.jsx)(o.Presence,{present:a||n.open,children:({present:e})=>(0,c.jsx)(v,{...s,ref:t,present:e})})});k.displayName=y;var v=t.forwardRef((e,a)=>{let{__scopeCollapsible:s,present:n,children:o,...d}=e,u=p(y,s),[m,x]=t.useState(n),h=t.useRef(null),f=(0,l.useComposedRefs)(a,h),b=t.useRef(0),g=b.current,k=t.useRef(0),v=k.current,C=u.open||m,w=t.useRef(C),N=t.useRef(void 0);return t.useEffect(()=>{let e=requestAnimationFrame(()=>w.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,i.useLayoutEffect)(()=>{let e=h.current;if(e){N.current=N.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";let t=e.getBoundingClientRect();b.current=t.height,k.current=t.width,w.current||(e.style.transitionDuration=N.current.transitionDuration,e.style.animationName=N.current.animationName),x(n)}},[u.open,n]),(0,c.jsx)(r.Primitive.div,{"data-state":j(u.open),"data-disabled":u.disabled?"":void 0,id:u.contentId,hidden:!C,...d,ref:f,style:{"--radix-collapsible-content-height":g?`${g}px`:void 0,"--radix-collapsible-content-width":v?`${v}px`:void 0,...e.style},children:C&&o})});function j(e){return e?"open":"closed"}e.s(["Collapsible",0,f,"CollapsibleContent",0,k,"CollapsibleTrigger",0,g],70986)},21682,e=>{"use strict";let t=(0,e.i(77379).default)("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);e.s(["Pencil",0,t],21682)},88175,e=>{"use strict";let t=(0,e.i(77379).default)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);e.s(["Download",0,t],88175)},2745,e=>{"use strict";let t=(0,e.i(77379).default)("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["ShieldCheck",0,t],2745)},76610,e=>{"use strict";let t=(0,e.i(77379).default)("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);e.s(["KeyRound",0,t],76610)},86923,e=>{"use strict";var t=e.i(54710),a=e.i(34416),s=e.i(95486),n=e.i(72740),i=e.i(21682),l=e.i(7663),r=e.i(75750),o=e.i(74490),d=e.i(79634),c=e.i(48467),u=e.i(20014),m=e.i(8652),x=e.i(10427),h=e.i(65268),p=e.i(24756),f=e.i(87040),b=e.i(76176),g=e.i(81471);let y={"message.dm":"DM response quality may degrade. Sonnet is recommended for important conversations.","message.mention":"Mention response quality may degrade. Sonnet is recommended.","dashboard.chat":"Dashboard chat response quality may degrade. Sonnet is recommended.","routine.morning_routine":"Long-form generation may produce shorter/rougher output with Haiku. Sonnet is recommended.","routine.evening_review":"Long-form generation may produce shorter/rougher output with Haiku. Sonnet is recommended.","routine.weekly_review":"Weekly reviews require reasoning depth. Haiku may produce less coherent output.","routine.monthly_review":"Monthly reviews require reasoning depth. Haiku may produce less coherent output.","agent.task":"Sonnet is recommended for complex task execution. Haiku may make rougher tool-use decisions."};function k(e,t,a){let s,n=(s=e.filter(e=>e.tier===t)).length>0?s:e;return a&&n.some(e=>e.modelId===a)?a:n[0]?.modelId??e[0]?.modelId??""}function v(e,t){return t?e.find(e=>e.modelId===t)?.label??(0,b.formatModelName)(t):"Disabled"}e.s(["BackendSettingsSection",0,function({onToast:e,sections:j=["processes"],processKeys:C,title:w="Process Routing",description:N}){let S=j.includes("processes"),M=(0,s.useQueryClient)(),{data:T,error:E,isLoading:D}=(0,p.useBackends)({enabled:S}),{data:_,error:A,isLoading:B}=(0,f.useProcessConfig)({enabled:S}),[R,L]=(0,a.useState)(null),[I,P]=(0,a.useState)(null),[F,K]=(0,a.useState)(!1),O=(0,a.useCallback)(async()=>{await Promise.all([M.invalidateQueries({queryKey:["backends"]}),M.invalidateQueries({queryKey:["process-config"]}),M.invalidateQueries({queryKey:["cost"]}),M.invalidateQueries({queryKey:["metrics"]})])},[M]),$=S?E??A:null;if($){let e=$ instanceof h.ApiError&&503===$.status;return(0,t.jsxs)(o.Card,{children:[(0,t.jsx)(o.CardHeader,{children:(0,t.jsx)(o.CardTitle,{children:"Process Routing"})}),(0,t.jsx)("p",{className:"max-w-prose text-sm text-muted-foreground",children:e?"Multi-backend tables are not available yet. Run migrations first.":$ instanceof Error?$.message:"Failed to load process routing."})]})}if(!S)return null;if(D||!T||B||!_)return(0,t.jsxs)(o.Card,{children:[(0,t.jsx)(o.CardHeader,{children:(0,t.jsx)(o.CardTitle,{children:"Process Routing"})}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading process routing…"})]});let q=new Map(T.backends.map(e=>[e.id,e])),H=T.backends.filter(e=>e.enabled),U=(C?_.configs.filter(e=>C.includes(e.processKey)):_.configs).reduce((e,t)=>{let a=(0,b.getProcessGroup)(t.processKey),s=e.find(e=>e.group===a);return s?s.configs.push(t):e.push({group:a,configs:[t]}),e},[]);async function V(){if(I){K(!0);try{let t=await h.api.put(`/process-config/${I.processKey}`,{mainBackend:I.mainBackend,mainModel:I.mainModel,fallbackBackend:I.fallbackBackend,fallbackModel:I.fallbackModel,maxTurns:I.maxTurns,maxBudgetUsd:I.maxBudgetUsd});await O(),t.warnings?.length?e("warning",`Saved — ${t.warnings.map(e=>e.message).join("; ")}`):e("success",`${(0,b.getProcessLabel)(I.processKey)} updated`),L(null),P(null)}catch(t){e("error",function(e){if(!(e instanceof h.ApiError))return e instanceof Error?e.message:"Request failed";let t=e.body,a="string"==typeof t?.error?t.error:null,s=Array.isArray(t?.processKeys)?t.processKeys.filter(e=>"string"==typeof e):[];switch(a){case"backend_in_use":return`This backend is still used by: ${s.join(", ")}. Reassign those processes first.`;case"default_backend":return"Reassign the default backend before disabling it.";case"main_backend_disabled":return"The selected main backend is disabled. Enable it first.";case"fallback_backend_disabled":return"The selected fallback backend is disabled. Enable it first.";case"fallback_same_as_main":return"Fallback backend must differ from the main backend.";case"fallback_incomplete":return"Fallback backend and fallback model must either both be set or both be disabled.";case"invalid_main_model":return"The selected main model does not belong to the chosen backend.";case"invalid_fallback_model":return"The selected fallback model does not belong to the chosen fallback backend.";case"multi_backend_unavailable":return"Multi-backend tables are not available yet. Run migrations first.";default:return e.message}}(t))}finally{K(!1)}}}return(0,t.jsxs)(o.Card,{children:[(0,t.jsx)(o.CardHeader,{className:"items-start",children:(0,t.jsxs)("div",{children:[(0,t.jsx)(o.CardTitle,{children:w}),(0,t.jsx)("p",{className:"mt-1 max-w-3xl text-sm text-muted-foreground",children:N??(0,t.jsxs)(t.Fragment,{children:["One row per process (event-handling pipeline). Each row shows the resolved main backend + model, the optional fallback that kicks in on ",(0,t.jsx)("em",{children:"decisive"})," main-backend failures (quota exhausted, auth broken, model unavailable, timeout — not ordinary rate limiting), and the per-run limits. Click ",(0,t.jsx)("em",{children:"Edit"}),"to override any of them. “Default” badges mean the value is inherited from the main backend’s preset defaults above."]})})]})}),(0,t.jsx)("div",{className:"space-y-3",children:U.map(e=>(0,t.jsxs)("div",{className:"space-y-3",children:[!C&&(0,t.jsx)("h3",{className:"px-1 text-xs font-semibold uppercase text-muted-foreground",children:e.group}),e.configs.map(e=>{var a;let s,o=q.get(e.mainBackend),h=e.fallbackBackend?q.get(e.fallbackBackend):null,p=R===e.processKey&&I,f=p?q.get(I.mainBackend)?.models??[]:[],j=p&&I.fallbackBackend?q.get(I.fallbackBackend)?.models??[]:[];return(0,t.jsxs)("div",{className:"rounded-xl border border-border p-4",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between",children:[(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsx)("p",{className:"text-base font-medium text-foreground",children:(0,b.getProcessLabel)(e.processKey)}),(0,t.jsxs)(c.Badge,{variant:"high"===e.defaultTier?"purple":"medium"===e.defaultTier?"blue":"default",children:["Default ",e.defaultTier]})]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:e.processKey}),(s=function(e,t,a){if("routine.morning_routine"===e&&"claude"===t){let e=a.find(e=>"high"===e.tier&&e.available&&!e.deprecated);return e?`Defaults to Sonnet to preserve Claude quota — ${e.label} depletes the 5h window much faster. If you want better instruction-following or more thorough day-plan output, switch Main Model to ${e.label}.`:null}return null}(e.processKey,e.mainBackend,o?.models??[]))?(0,t.jsx)(d.Alert,{variant:"info",className:"mt-2 text-xs",children:s}):null]}),(0,t.jsxs)("div",{className:"grid gap-3 text-sm text-muted-foreground md:grid-cols-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"Main"}),(0,t.jsx)("p",{children:o?(0,b.getBackendLabel)(o.id):e.mainBackend}),(0,t.jsx)("p",{children:o?v(o.models,e.mainModel):e.mainModel})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"Fallback"}),h&&e.fallbackModel?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{children:(0,b.getBackendLabel)(h.id)}),(0,t.jsx)("p",{children:v(h.models,e.fallbackModel)})]}):(0,t.jsx)("p",{children:"Disabled"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"Limits"}),(0,t.jsxs)("p",{children:[e.maxTurns," turns"]}),(0,t.jsxs)("p",{children:[(0,g.formatCurrency)(e.maxBudgetUsd)," soft budget"]})]})]})]}),(0,t.jsxs)(u.Button,{variant:"outline",onClick:()=>{L(e.processKey),P({processKey:e.processKey,defaultTier:e.defaultTier,mainBackend:e.mainBackend,mainModel:e.mainModel,fallbackBackend:e.fallbackBackend,fallbackModel:e.fallbackModel,maxTurns:e.maxTurns,maxBudgetUsd:e.maxBudgetUsd})},children:[(0,t.jsx)(i.Pencil,{className:"h-3.5 w-3.5"}),"Edit"]})]}),p&&I&&(0,t.jsxs)("div",{className:"mt-4 grid gap-4 rounded-xl border border-border/80 bg-muted/30 p-4 md:grid-cols-2",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Main backend"}),(0,t.jsxs)(x.Select,{value:I.mainBackend,onValueChange:e=>(function(e){let t=q.get(e);if(!t||!I)return;let a=I.fallbackBackend===e;P({...I,mainBackend:e,mainModel:k(t.models,I.defaultTier,I.mainModel),fallbackBackend:a?null:I.fallbackBackend,fallbackModel:a?null:I.fallbackModel})})(e),children:[(0,t.jsx)(x.SelectTrigger,{children:(0,t.jsx)(x.SelectValue,{placeholder:"Select backend"})}),(0,t.jsx)(x.SelectContent,{children:T.backends.map(e=>(0,t.jsx)(x.SelectItem,{value:e.id,disabled:!e.enabled,children:(0,b.getBackendLabel)(e.id)},e.id))})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Main model"}),(0,t.jsxs)(x.Select,{value:I.mainModel,onValueChange:e=>P(t=>t?{...t,mainModel:e}:t),children:[(0,t.jsx)(x.SelectTrigger,{children:(0,t.jsx)(x.SelectValue,{placeholder:"Select model"})}),(0,t.jsx)(x.SelectContent,{children:f.map(e=>(0,t.jsx)(x.SelectItem,{value:e.modelId,children:e.label},e.modelId))})]}),!!(a=I.mainModel)&&a.toLowerCase().includes("haiku")&&y[I.processKey]&&(0,t.jsx)(d.Alert,{variant:"warning",className:"mt-2 text-xs",children:y[I.processKey]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Fallback backend"}),(0,t.jsxs)(x.Select,{value:I.fallbackBackend??"__none__",onValueChange:e=>(function(e){if(!I)return;if(!e)return void P({...I,fallbackBackend:null,fallbackModel:null});let t=q.get(e);t&&P({...I,fallbackBackend:e,fallbackModel:k(t.models,I.defaultTier,I.fallbackModel)})})("__none__"===e?null:e),children:[(0,t.jsx)(x.SelectTrigger,{children:(0,t.jsx)(x.SelectValue,{placeholder:"Select backend"})}),(0,t.jsxs)(x.SelectContent,{children:[(0,t.jsx)(x.SelectItem,{value:"__none__",children:"Disabled"}),T.backends.map(e=>(0,t.jsx)(x.SelectItem,{value:e.id,disabled:!e.enabled||e.id===I.mainBackend,children:(0,b.getBackendLabel)(e.id)},e.id))]})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Fallback model"}),(0,t.jsxs)(x.Select,{disabled:!I.fallbackBackend,value:I.fallbackModel??"__none__",onValueChange:e=>P(t=>t?{...t,fallbackModel:"__none__"===e?null:e}:t),children:[(0,t.jsx)(x.SelectTrigger,{children:(0,t.jsx)(x.SelectValue,{placeholder:"Select model"})}),(0,t.jsxs)(x.SelectContent,{children:[(0,t.jsx)(x.SelectItem,{value:"__none__",children:"Disabled"}),j.map(e=>(0,t.jsx)(x.SelectItem,{value:e.modelId,children:e.label},e.modelId))]})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Max turns"}),(0,t.jsx)(m.Input,{type:"number",min:1,max:1e3,value:I.maxTurns,onChange:e=>P(t=>t?{...t,maxTurns:Number(e.target.value)||1}:t)}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Hard cap on agent turns per run for this process. One turn = one model response (possibly with tool calls). When reached, the run stops mid-task — raise this if you see “max turns” aborts."})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Soft budget (USD)"}),(0,t.jsx)(m.Input,{type:"number",min:0,max:1e4,step:"0.01",value:I.maxBudgetUsd,onChange:e=>P(t=>t?{...t,maxBudgetUsd:Number(e.target.value)||0}:t)}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Per-run spend target in USD. “Soft” because it’s checked between turns — a long single turn can overshoot slightly. Runs exceeding this are aborted. Set to 0 to disable and rely only on the turn cap."})]}),(0,t.jsxs)("div",{className:"md:col-span-2 flex items-center justify-between gap-3",children:[(0,t.jsxs)("p",{className:"max-w-xl text-xs text-muted-foreground",children:[(0,t.jsx)("strong",{children:"Fallback backend/model"})," is consulted only on decisive failures: quota exhaustion, auth breakage, model refusal, timeout, or unrecoverable provider errors. Transient 5xx and ordinary rate limits are retried on the main backend first."]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsxs)(u.Button,{variant:"outline",onClick:()=>{L(null),P(null)},children:[(0,t.jsx)(r.XCircle,{className:"h-4 w-4"}),"Cancel"]}),(0,t.jsxs)(u.Button,{onClick:V,disabled:F,children:[F?(0,t.jsx)(n.Loader2,{className:"h-4 w-4 animate-spin"}):(0,t.jsx)(l.Save,{className:"h-4 w-4"}),"Save Process"]})]})]})]})]},e.processKey)})]},e.group))}),H.length<2&&(0,t.jsx)(d.Alert,{variant:"warning",className:"mt-4 rounded-xl px-4 py-3 text-sm",children:"Enable another backend if you want fallback routing to be available for any process."})]})}])},93772,e=>{"use strict";var t=e.i(54710),a=e.i(34416),s=e.i(96263),n=e.i(88423),i=e.i(13451),l=e.i(36413),r=e.i(86923),o=e.i(72740),d=e.i(95486);e.i(18446);var c=e.i(9897),u=e.i(20014),m=e.i(10427),x=e.i(65268),h=e.i(76176),p=e.i(24756),f=e.i(17975),b=e.i(16995),g=e.i(85462);let y=["claude","codex","gemini"];function k({onToast:e}){let{data:s,refetch:i}=(0,p.useBackends)(),{data:l}=(0,n.useConfig)(),r=(0,d.useQueryClient)(),[v,j]=(0,a.useState)(null),[C,w]=(0,a.useState)({claude:{status:"idle"},codex:{status:"idle"},gemini:{status:"idle"}}),[N,S]=(0,a.useState)(null),[M,T]=(0,a.useState)(!1);(0,a.useEffect)(()=>{let e=!1;return(async()=>{try{let t=await x.api.get("/backends/advisor");if(e)return;S({enabled:t.enabled,model:t.model})}catch{e||S({enabled:!1,model:null})}})(),()=>{e=!0}},[]);let E=(0,a.useCallback)(async e=>{w(t=>({...t,[e]:{status:"checking"}}));try{let t=await x.api.post(`/backends/${e}/verify-install`);if(await i(),t.ok)w(a=>({...a,[e]:{status:"ok",version:t.version}}));else{let a=t.cliInstalled?t.timedOut?`${t.cliCommand} --version timed out`:t.stderr.trim()||t.stdout.trim()||"CLI failed to run":`${t.cliCommand} not found on PATH`;w(t=>({...t,[e]:{status:"error",error:a}}))}}catch(t){w(a=>({...a,[e]:{status:"error",error:t instanceof Error?t.message:"Verify install failed"}}))}},[i]),D=(0,a.useCallback)(async t=>{j(t);try{let a=await x.api.put("/backends/main",{backendId:t});await i(),await r.invalidateQueries({queryKey:["backends"]}),await r.invalidateQueries({queryKey:["integrations"]}),await r.invalidateQueries({queryKey:["health"]}),await r.invalidateQueries({queryKey:["agent-actions","native_unbound"]});let s=a?.nativeUnbound??[];if(s.length>0){let a=s.map(e=>e.key).join(", ");e("warning",`Main backend set to ${h.BACKEND_PROVIDER_LABELS[t]}. ${s.length} native integration${1===s.length?"":"s"} disabled (${a}). Re-configure on /connections.`)}else e("success",`Main backend set to ${h.BACKEND_PROVIDER_LABELS[t]}.`)}catch(t){e("error",t instanceof x.ApiError||t instanceof Error?t.message:"Failed to set main backend")}finally{j(null)}},[i,r,e]),_=(0,a.useCallback)(async t=>{let a=s?.backends.find(e=>e.id===t);if(!a)return;let n=!a.enabled;j(t);try{await x.api.post(`/backends/${t}/${n?"enable":"disable"}`),await i(),e("success",`${h.BACKEND_PROVIDER_LABELS[t]} ${n?"enabled":"disabled"}.`)}catch(t){e("error",t instanceof Error?t.message:"Failed to update backend")}finally{j(null)}},[s,i,e]),A=(0,a.useCallback)(async t=>{let a=s?.backends.find(e=>e.id===t);if(!a)return;let n=!a.webSearchEnabled;j(t);try{await x.api.post(`/backends/${t}/web-search`,{enabled:n}),await i()}catch(t){e("error",t instanceof Error?t.message:"Failed to update web search")}finally{j(null)}},[s,i,e]),B=(0,a.useCallback)(async t=>{T(!0);try{await x.api.put("/backends/advisor",{enabled:t.enabled,model:t.model}),S(t),e("success",`Advisor ${t.enabled?"enabled":"disabled"}.`)}catch(t){e("error",t instanceof Error?t.message:"Failed to save advisor")}finally{T(!1)}},[e]),R=s?.defaultBackend??null;return(0,t.jsxs)("section",{className:"space-y-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-lg font-semibold text-foreground",children:"Backends"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:"Install each backend’s CLI, verify authentication, and pick the main backend. The main backend runs every configurable process by default; per-process overrides live in the “Process configuration” card below."})]}),(0,t.jsx)(g.SubscriptionAuthWarning,{}),(0,t.jsx)("div",{className:"space-y-3",children:y.map(a=>{let n=s?.backends.find(e=>e.id===a),r=R===a,o=l?l[`${a}ExecutionPermissionMode`]:null;return(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(f.BackendCard,{backendId:a,mode:"settings",isMain:r,authStatus:n?.authStatus??"unknown",authStatusDetail:n?.authDetail??null,authFirstExpiredAt:n?.authFirstExpiredAt??null,authLastSuccessAt:n?.authLastSuccessAt??null,authNotificationCount:n?.authNotificationCount??0,cliInstalled:n?.cliInstalled??!0,enabled:n?.enabled??!1,webSearchEnabled:n?.webSearchEnabled??!1,webSearchSupported:n?.webSearchSupported??!1,permissionMode:o,busy:v===a,installCheck:C[a],onCliInstalled:()=>{i()},onVerifyInstall:()=>{E(a)},onToggleEnable:()=>{_(a)},onToggleWebSearch:()=>{A(a)}}),(0,t.jsx)(b.BackendApiKeyPanel,{backendId:a,onToast:e}),!r&&(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsxs)(u.Button,{size:"sm",variant:"outline",disabled:null!==v||!n?.cliInstalled,onClick:()=>{D(a)},children:["Set ",h.BACKEND_PROVIDER_SHORT[a]," as main"]})})]},a)})}),N&&(0,t.jsxs)("div",{className:"rounded-xl border border-border bg-card p-4 shadow-sm",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:"Advisor (Claude Agent SDK)"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"When enabled, the Claude Agent SDK’s server-side advisor tool can offer the agent a second-opinion model on long turns. Off by default — turn it on only when you want the added cost."})]}),(0,t.jsxs)(u.Button,{size:"sm",variant:N.enabled?"outline":"default",disabled:M,onClick:()=>{B(N.enabled?{enabled:!1,model:null}:{enabled:!0,model:N.model??c.ADVISOR_ALLOWED_MODELS[0]})},children:[M&&(0,t.jsx)(o.Loader2,{className:"mr-2 h-3.5 w-3.5 animate-spin"}),N.enabled?"Disable advisor":"Enable advisor"]})]}),N.enabled&&(0,t.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-2",children:[(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:"Model:"}),(0,t.jsxs)(m.Select,{value:N.model??c.ADVISOR_ALLOWED_MODELS[0],onValueChange:e=>{(0,c.isAdvisorModel)(e)&&B({enabled:!0,model:e})},disabled:M,children:[(0,t.jsx)(m.SelectTrigger,{className:"h-8 w-auto min-w-[12rem] text-xs",children:(0,t.jsx)(m.SelectValue,{})}),(0,t.jsx)(m.SelectContent,{children:c.ADVISOR_ALLOWED_MODELS.map(e=>(0,t.jsx)(m.SelectItem,{value:e,children:e},e))})]})]})]})]})}var v=e.i(81187),j=e.i(16047),C=e.i(2745),w=e.i(78406),N=e.i(74490),S=e.i(49681),M=e.i(70986),T=e.i(81471),E=e.i(36598);function D(e){let t=(0,E.internalToUi)(e.claudeExecutionPermissionMode),a=(0,E.internalToUi)(e.codexExecutionPermissionMode),s=(0,E.internalToUi)(e.geminiExecutionPermissionMode);return t===a&&a===s?t:null}let _=["claude","codex","gemini"];function A({onToast:e}){let{data:s}=(0,n.useConfig)(),[i,l]=(0,a.useState)(0);return s?(0,t.jsx)(B,{config:s,onToast:e,onApplied:()=>l(e=>e+1)},i):(0,t.jsx)(N.Card,{children:(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,t.jsx)(o.Loader2,{className:"h-4 w-4 animate-spin"})," Loading…"]})})}function B({config:e,onToast:s,onApplied:n}){let i=(0,d.useQueryClient)(),l=(0,a.useState)(()=>{let t;return{topLevel:t=D(e),overrides:null!==D(e)?{...E.EMPTY_OVERRIDES}:{claude:(0,E.internalToUi)(e.claudeExecutionPermissionMode),codex:(0,E.internalToUi)(e.codexExecutionPermissionMode),gemini:(0,E.internalToUi)(e.geminiExecutionPermissionMode)},forceAccordionOpen:null===t}})[0],[r,c]=(0,a.useState)(l.topLevel),[m,h]=(0,a.useState)(l.overrides),[p,f]=(0,a.useState)(l.forceAccordionOpen),[b,g]=(0,a.useState)(!1),y=null===r||(0,E.hasDivergentOverride)(r,m);async function k(){let e=(0,E.buildSetupModePayload)(r,m);if(null!==e){g(!0);try{await x.api.post("/setup/mode",e),await i.invalidateQueries({queryKey:["config"]}),s("success","Execution mode updated"),n()}catch(e){e instanceof x.ApiError||e instanceof Error?s("error",e.message):s("error","Failed to update execution mode")}finally{g(!1)}}}return(0,t.jsxs)(N.Card,{id:"execution-mode",children:[(0,t.jsx)(N.CardHeader,{className:"px-0 pt-0",children:(0,t.jsxs)(N.CardTitle,{className:"flex items-center gap-1.5 text-base",children:[(0,t.jsx)("span",{children:"Execution Mode"}),(0,t.jsx)(S.DocsHelpInline,{docId:"concepts/safety-and-execution",label:"Execution Mode"})]})}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Pick how freely the agent may run shell, file, and tool commands on your machine. Dangerous operations — recursive deletes, privilege escalation, and secret-file reads — remain blocked in both modes."}),(0,t.jsxs)("div",{className:"mt-4 space-y-3",children:[(0,t.jsx)(R,{icon:(0,t.jsx)(C.ShieldCheck,{className:"h-5 w-5"}),title:"Safe",badge:"Recommended",selected:"safe"===r,onSelect:()=>c("safe"),children:"Agent runs with strict permission checks and asks for confirmation before side-effectful actions. Best when you want the agent to stay narrow."}),(0,t.jsxs)(R,{icon:(0,t.jsx)(w.Unlock,{className:"h-5 w-5"}),title:"Allow",selected:"allow"===r,onSelect:()=>c("allow"),children:["Agent runs with the skills, plugins, and MCP servers installed in your CLI harness. File-type support depends on your harness; the daemon does not manage it.",(0,t.jsx)(I,{})]}),(0,t.jsxs)(M.Collapsible,{open:p,onOpenChange:f,children:[(0,t.jsx)(M.CollapsibleTrigger,{asChild:!0,children:(0,t.jsxs)("button",{type:"button",className:"flex w-full items-center justify-between rounded-md border border-border bg-muted/20 px-3 py-2 text-left text-xs text-muted-foreground hover:bg-muted/40",children:[(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsx)(j.ChevronDown,{className:(0,T.cn)("h-3.5 w-3.5 transition-transform",p&&"rotate-180")}),"Advanced — per-backend overrides",y&&(0,t.jsx)("span",{className:"rounded bg-amber-500/15 px-1.5 py-0.5 text-[10px] font-medium text-amber-700 dark:text-amber-300",children:"mixed"})]}),(0,t.jsx)("span",{className:"text-[11px]",children:p?"Hide":"Show"})]})}),(0,t.jsx)(M.CollapsibleContent,{className:"mt-2 space-y-2 rounded-md border border-border bg-background p-3",children:_.map(e=>(0,t.jsx)(L,{backend:e,topLevel:r,override:m[e],onChange:t=>h(a=>({...a,[e]:t}))},e))})]}),(0,t.jsx)("div",{className:"flex justify-end pt-2",children:(0,t.jsx)(u.Button,{onClick:k,disabled:!(0,E.canApply)(r,m)||b,children:b?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),"Saving…"]}):"Apply"})})]})]})}function R({icon:e,title:a,badge:s,selected:n,onSelect:i,children:l}){return(0,t.jsxs)("button",{type:"button",onClick:i,className:(0,T.cn)("block w-full rounded-lg border p-3 text-left transition-colors",n?"border-primary bg-primary/5 shadow-sm":"border-border hover:border-foreground/30"),children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 font-semibold text-foreground",children:[e,a,s&&(0,t.jsx)("span",{className:"rounded bg-primary/15 px-1.5 py-0.5 text-[10px] font-medium text-primary",children:s})]}),(0,t.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:l})]})}function L({backend:e,topLevel:a,override:s,onChange:n}){let i=s??a,l=null===i?"pick a top-level mode first":`runs as: ${i}`;return(0,t.jsxs)("div",{className:"rounded-md border border-border/60 px-3 py-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,t.jsxs)("div",{className:"text-sm",children:[(0,t.jsxs)("div",{className:"font-medium text-foreground",children:[h.BACKEND_PROVIDER_LABELS[e],(0,t.jsxs)("span",{className:"ml-1 text-xs text-muted-foreground",children:["(",h.BACKEND_PROVIDER_SHORT[e],")"]})]}),(0,t.jsx)("div",{className:"text-[11px] text-muted-foreground",children:l})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1 text-xs",children:[(0,t.jsx)(P,{active:null===s,label:"Follow",onClick:()=>n(null)}),(0,t.jsx)(P,{active:"safe"===s,label:"Safe",onClick:()=>n("safe")}),(0,t.jsx)(P,{active:"allow"===s,label:"Allow",onClick:()=>n("allow")})]})]}),"codex"===e&&"allow"===i&&(0,t.jsxs)("p",{className:"mt-2 flex items-start gap-1.5 text-[11px] text-amber-700 dark:text-amber-300",children:[(0,t.jsx)(v.AlertTriangle,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,t.jsx)("span",{children:"Codex Allow disables the daemon's absolute-block layer (sandbox-off). See the Allow card above."})]})]})}function I(){return(0,t.jsxs)("span",{className:"mt-3 flex items-start gap-2 rounded-md border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-xs text-amber-900 dark:text-amber-200",children:[(0,t.jsx)(v.AlertTriangle,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),(0,t.jsxs)("span",{className:"space-y-1",children:[(0,t.jsxs)("span",{className:"block",children:[(0,t.jsx)("span",{className:"font-semibold",children:"Codex caveat."})," Codex CLI runs Allow mode under"," ",(0,t.jsx)("code",{className:"rounded bg-black/10 px-1 font-mono text-[11px] dark:bg-white/10",children:"--dangerously-bypass-approvals-and-sandbox"}),", a binary sandbox-off switch. Codex has no per-command hook layer for the daemon to attach the absolute-block patterns to, so destructive shell commands (",(0,t.jsx)("code",{className:"rounded bg-black/10 px-1 font-mono text-[11px] dark:bg-white/10",children:"rm -rf"}),","," ",(0,t.jsx)("code",{className:"rounded bg-black/10 px-1 font-mono text-[11px] dark:bg-white/10",children:"eval $(curl …)"}),", secret-file reads) are ",(0,t.jsx)("span",{className:"font-semibold",children:"not"})," ","pre-blocked for Codex in Allow mode the way they are for Claude Code and Gemini CLI."]}),(0,t.jsx)("span",{className:"block",children:"Use the Advanced section below to keep Codex on Safe (its workspace-write sandbox still applies) unless you accept this gap."})]})]})}function P({active:e,label:a,onClick:s}){return(0,t.jsx)("button",{type:"button",onClick:s,className:(0,T.cn)("rounded-md border px-2 py-1 transition-colors",e?"border-primary bg-primary/10 text-foreground":"border-border text-muted-foreground hover:border-foreground/30"),children:a})}var F=e.i(88),K=e.i(94328);function O({title:e,defaultOpen:n=!1,children:i}){let[l,r]=(0,a.useState)(n);return(0,t.jsxs)(M.Collapsible,{open:l,onOpenChange:r,children:[(0,t.jsx)(M.CollapsibleTrigger,{asChild:!0,children:(0,t.jsxs)("button",{className:"flex w-full items-center gap-2 rounded-lg px-1 py-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground hover:bg-muted/50 hover:text-foreground transition-colors",children:[(0,t.jsx)(s.ChevronRight,{className:(0,T.cn)("h-3.5 w-3.5 shrink-0 transition-transform duration-200",l&&"rotate-90")}),e]})}),(0,t.jsx)(M.CollapsibleContent,{className:"space-y-3 pt-1",children:i})]})}e.s(["default",0,function(){let{data:e}=(0,n.useConfig)(),{df:a}=(0,n.useConfigDefaults)(),{toast:s,showToast:o}=(0,i.useSaveConfig)(),{deferSaveFor:d,dv:c,dirtyFields:u}=(0,l.useDirtyFields)();if(!e)return(0,t.jsx)("div",{className:"text-muted-foreground",children:"Loading..."});let m=d(e);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"text-2xl font-semibold text-foreground",children:"Models & Cost"}),(0,t.jsx)("p",{className:"mt-1 max-w-3xl text-sm text-muted-foreground",children:"AI backends, per-task routing, and execution limits. The backend cards are always visible — open the collapsible sections below when you need to tune individual processes or limits."})]}),(0,t.jsx)(K.SettingsToast,{toast:s}),(0,t.jsx)(k,{onToast:o}),(0,t.jsx)(A,{onToast:o}),(0,t.jsx)(r.BackendSettingsSection,{onToast:o,sections:["processes"]}),(0,t.jsx)(O,{title:"Execution limits",children:(0,t.jsxs)(F.ConfigSection,{title:"Execution limits",children:[(0,t.jsx)("p",{className:"pb-2 text-xs text-muted-foreground",children:"Concurrency and wall-clock limits that apply across every agent run, regardless of backend or tier."}),(0,t.jsx)(F.EditableField,{label:"Max Concurrent Sessions",value:c("maxConcurrentSessions",e.maxConcurrentSessions),configKey:"maxConcurrentSessions",type:"number",modified:u.has("maxConcurrentSessions"),defaultValue:a("maxConcurrentSessions"),description:"Total number of agent sessions allowed to run in parallel across all sources (DMs, routines, schedules). Additional requests are queued until a slot opens.",onSave:m}),(0,t.jsx)(F.EditableField,{label:"Max Reactive Sessions",value:c("maxReactiveSessions",e.maxReactiveSessions),configKey:"maxReactiveSessions",type:"number",modified:u.has("maxReactiveSessions"),defaultValue:a("maxReactiveSessions"),description:"Subset of the concurrent slots reserved for reactive work (incoming DMs and mentions). This guarantees routines never starve out messages you send right now — and vice versa for the remaining slots.",onSave:m}),(0,t.jsx)(F.EditableField,{label:"Execute Timeout",value:c("executeTimeoutMinutes",e.executeTimeoutMinutes),configKey:"executeTimeoutMinutes",type:"number",suffix:"min",min:1,max:1440,modified:u.has("executeTimeoutMinutes"),defaultValue:a("executeTimeoutMinutes"),description:"Maximum wall-clock time for a single agent execution. When exceeded the SDK stream is cancelled so retries don’t double-bill quota. Applies per attempt, not per retry chain.",onSave:m}),(0,t.jsx)(F.EditableField,{label:"Delegated Proxy Concurrency",value:c("delegatedProxyMaxConcurrent",e.delegatedProxyMaxConcurrent),configKey:"delegatedProxyMaxConcurrent",type:"number",min:1,max:64,modified:u.has("delegatedProxyMaxConcurrent"),defaultValue:a("delegatedProxyMaxConcurrent"),description:"Maximum simultaneous delegated-proxy invocations (Gmail/Calendar in delegated mode spawn a one-shot subprocess on the configured backend). Excess requests FIFO-queue with a 60-second wait timeout, then 503 with delegated_proxy_busy.",onSave:m})]})}),(0,t.jsx)(O,{title:"Session timeouts",children:(0,t.jsxs)(F.ConfigSection,{title:"Session timeouts",children:[(0,t.jsx)("p",{className:"pb-2 text-xs text-muted-foreground",children:"How long an idle conversation keeps its context before the next message starts fresh. Lower values save tokens on long-lived chats; higher values preserve continuity."}),(0,t.jsx)(F.EditableField,{label:"DM Timeout",value:c("sessionTimeoutDmMinutes",e.sessionTimeoutDmMinutes),configKey:"sessionTimeoutDmMinutes",type:"number",suffix:"min",modified:u.has("sessionTimeoutDmMinutes"),defaultValue:a("sessionTimeoutDmMinutes"),description:"Idle minutes before a direct-message session expires. Once expired, the next DM opens a new session without prior conversation history.",onSave:m}),(0,t.jsx)(F.EditableField,{label:"Channel Timeout",value:c("sessionTimeoutChannelMinutes",e.sessionTimeoutChannelMinutes),configKey:"sessionTimeoutChannelMinutes",type:"number",suffix:"min",modified:u.has("sessionTimeoutChannelMinutes"),defaultValue:a("sessionTimeoutChannelMinutes"),description:"Idle minutes before an @mention thread in a public channel expires. Usually shorter than DM timeout since channel context rotates faster.",onSave:m}),(0,t.jsx)(F.EditableField,{label:"Dashboard Timeout",value:c("sessionTimeoutDashboardMinutes",e.sessionTimeoutDashboardMinutes),configKey:"sessionTimeoutDashboardMinutes",type:"number",suffix:"min",modified:u.has("sessionTimeoutDashboardMinutes"),defaultValue:a("sessionTimeoutDashboardMinutes"),description:"Idle minutes before a dashboard Chat session expires. The session sidebar will still show it as a past conversation you can reopen.",onSave:m})]})}),(0,t.jsx)(O,{title:"Cost guardrails",children:(0,t.jsxs)(F.ConfigSection,{title:"Cost guardrails",children:[(0,t.jsx)("p",{className:"pb-2 text-xs text-muted-foreground",children:"Guardrails and alert thresholds for autonomous routine spend. The daily cap can skip lower-priority routines; the monthly cap only notifies. Reactive work such as DMs and mentions still runs."}),(0,t.jsx)(F.EditableField,{label:"Autonomous Daily Cost Cap",value:c("autonomousDailyCostCapUsd",e.autonomousDailyCostCapUsd),configKey:"autonomousDailyCostCapUsd",type:"number",suffix:"$",nullable:!0,emptyLabel:"Disabled",min:.01,modified:u.has("autonomousDailyCostCapUsd"),defaultValue:a("autonomousDailyCostCapUsd"),description:"Maximum daily USD spend for autonomous sessions before lower-priority routines are skipped. Leave blank to disable the cap.",onSave:m}),(0,t.jsx)(F.EditableField,{label:"Autonomous Monthly Cost Cap (alert only)",value:c("autonomousMonthlyCostCapUsd",e.autonomousMonthlyCostCapUsd),configKey:"autonomousMonthlyCostCapUsd",type:"number",suffix:"$",nullable:!0,emptyLabel:"Disabled",min:.01,modified:u.has("autonomousMonthlyCostCapUsd"),defaultValue:a("autonomousMonthlyCostCapUsd"),description:"Notification threshold for the rolling 30-day spend. Surfaces a warning at 80% and an error at 100% in the Notifications panel. No dispatcher enforcement — pair with the daily cap for hard guardrails.",onSave:m})]})})]})}],93772)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,58436,e=>{"use strict";var a=e.i(54710),t=e.i(34416),n=e.i(55575),s=e.i(72740),l=e.i(20014),i=e.i(8652),r=e.i(66127),o=e.i(81471);e.s(["DirectoryPickerField",0,function({id:e,value:d,onChange:c,title:u,placeholder:m="Choose a folder...",defaultPath:p,disabled:h=!1,className:b,inputClassName:g,buttonLabel:f="Choose"}){let[x,k]=(0,t.useState)(!1),[y,v]=(0,t.useState)(null),j=async()=>{k(!0),v(null);try{let e=await (0,r.pickDirectoryFromDesktop)({title:u,defaultPath:d.trim()||p});e&&c(e)}catch(e){v(e instanceof Error?e.message:"Folder picker is unavailable.")}finally{k(!1)}};return(0,a.jsxs)("div",{className:(0,o.cn)("space-y-1",b),children:[(0,a.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row",children:[(0,a.jsx)(i.Input,{id:e,value:d,onChange:e=>{c(e.target.value),v(null)},placeholder:m,className:(0,o.cn)("font-mono text-sm",g),disabled:h||x}),(0,a.jsxs)(l.Button,{type:"button",variant:"outline",onClick:j,disabled:h||x,className:"shrink-0 gap-2",children:[x?(0,a.jsx)(s.Loader2,{className:"h-4 w-4 animate-spin"}):(0,a.jsx)(n.FolderOpen,{className:"h-4 w-4"}),x?"Opening...":f]})]}),y&&(0,a.jsx)("p",{className:"text-xs text-destructive",children:y})]})}])},55575,e=>{"use strict";let a=(0,e.i(77379).default)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);e.s(["FolderOpen",0,a],55575)},66127,e=>{"use strict";var a=e.i(65268);async function t({title:e,defaultPath:n}){let s=await a.api.post("/system/pick-directory",{title:e,...n?{defaultPath:n}:{}});if("selected"===s.status&&s.path)return s.path;if("cancelled"===s.status)return null;throw Error(s.message??"Folder picker is unavailable.")}e.s(["pickDirectoryFromDesktop",0,t])},25795,e=>{"use strict";let a=(0,e.i(77379).default)("RotateCcw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);e.s(["RotateCcw",0,a],25795)},75750,e=>{"use strict";let a=(0,e.i(77379).default)("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["XCircle",0,a],75750)},76176,e=>{"use strict";let a={claude:"Claude Code",codex:"OpenAI Codex",gemini:"Gemini CLI"},t={claude:"Claude",codex:"Codex",gemini:"Gemini"},n={claude:["#7C2D12","#B54B2D","#E15B40","#F97316","#FDBA74"],codex:["#86198F","#A21CAF","#D946EF","#E879F9","#F5D0FE"],gemini:["#1E3A8A","#1D4ED8","#1C69FF","#60A5FA","#93C5FD"]},s=["#6b7280","#9ca3af","#4b5563","#374151"],l={claude:"orange",codex:"pink",gemini:"blue"},i={"routine.morning_routine":"Morning Routine","routine.evening_review":"Evening Review","routine.weekly_review":"Weekly Review","routine.monthly_review":"Monthly Review","routine.hourly_check":"Hourly Check","routine.roadmap_refresh":"Roadmap Refresh","message.dm":"Direct Messages","message.mention":"Mentions","dashboard.chat":"Dashboard Chat","agent.task":"Scheduled Tasks","calendar.change":"Calendar Events",gmail_classify:"Gmail Classification","github.pull_request.review_requested":"GitHub Review Requests","github.assigned":"GitHub Assignments","github.security_alert":"GitHub Security Alerts","github.workflow_run.failed":"GitHub CI Failures","wiki.ingest_url":"Wiki URL Ingest","wiki.compile":"Wiki Compile","wiki.ask":"Wiki Ask"};function r(e){let a;if(!e)return[];try{a=JSON.parse(e)}catch{return[]}if(!a||"object"!=typeof a)return[];let t=[];for(let[e,n]of Object.entries(a))n&&"object"==typeof n&&t.push({modelId:e,inputTokens:"number"==typeof n.inputTokens?n.inputTokens:0,outputTokens:"number"==typeof n.outputTokens?n.outputTokens:0,costUsd:"number"==typeof n.costUsd?n.costUsd:0});return t.sort((e,a)=>a.costUsd-e.costUsd)}function o(e){if(!e)return null;let a=e.toLowerCase();return a.includes("claude")||a.includes("sonnet")||a.includes("opus")||a.includes("haiku")?"claude":a.includes("gemini")?"gemini":a.includes("gpt")||a.includes("codex")||a.includes("o3")||a.includes("o4")?"codex":null}e.s(["BACKEND_BADGE_VARIANTS",0,l,"BACKEND_COLORS",0,{claude:"#E15B40",codex:"#D946EF",gemini:"#1C69FF"},"BACKEND_LABELS",0,a,"BACKEND_PROVIDER_LABELS",0,{claude:"Claude (Anthropic)",codex:"ChatGPT (OpenAI)",gemini:"Gemini (Google)"},"BACKEND_PROVIDER_SHORT",0,{claude:"Claude",codex:"ChatGPT",gemini:"Gemini"},"BACKEND_WEB_SEARCH_DESCRIPTIONS",0,{claude:"Lets the agent call Anthropic's built-in WebSearch tool.",codex:"Lets the agent call OpenAI's web_search tool. Works in safe (sandbox) mode — the tool runs at OpenAI, not as a local shell command.",gemini:"Lets the agent call Gemini's google_web_search tool."},"CHART_CATEGORY_PALETTE",0,["#3b82f6","#10b981","#f59e0b","#8b5cf6","#ec4899","#14b8a6","#f97316","#6366f1","#ef4444","#22c55e"],"assignModelColors",0,function(e){let a=new Map;for(let t of e){if(!t)continue;let e=o(t)??"other",n=a.get(e)??[];n.push(t),a.set(e,n)}let t={};for(let[e,l]of a){l.sort((e,a)=>e.localeCompare(a));let a="other"===e?s:n[e],i=l.length;l.forEach((e,n)=>{let s;s=i>=a.length?n%a.length:1===i?Math.floor(a.length/2):Math.floor((n+.5)*a.length/i),t[e]=a[s]})}return t},"detectBackendFromModel",0,o,"formatModelName",0,function(e){return e?e.replace(/^claude-/,"Claude ").replace(/^gpt-/,"GPT-").replace(/^gemini-/,"Gemini ").replace(/-/g," ").replace(/\bpreview\b/gi,"(preview)").replace(/\bpro\b/gi,"Pro").replace(/\bflash\b/gi,"Flash").replace(/\blite\b/gi,"Lite").replace(/\bmini\b/gi,"Mini").replace(/\bcodex\b/gi,"Codex").replace(/\bopus\b/gi,"Opus").replace(/\bsonnet\b/gi,"Sonnet").replace(/\bhaiku\b/gi,"Haiku").replace(/\s+/g," ").trim():"Not set"},"formatShortModelName",0,function(e){if(!e)return"unknown";if("opus"===e)return"Opus";if("sonnet"===e)return"Sonnet";let a=e.replace(/-\d{8,}$/,"").replace(/^claude-/,"").replace(/(\d+)-(\d+)(?![-\d])/g,"$1.$2").replace(/-/g," ");return e.startsWith("gpt-")&&(a=`GPT-${a.replace(/^gpt\s*/i,"")}`),e.startsWith("gemini-")&&(a=a.replace(/^gemini\s*/i,"Gemini ")),a.replace(/\bopus\b/gi,"Opus").replace(/\bsonnet\b/gi,"Sonnet").replace(/\bhaiku\b/gi,"Haiku").replace(/\bpro\b/gi,"Pro").replace(/\bflash\b/gi,"Flash").replace(/\blite\b/gi,"Lite").replace(/\bmini\b/gi,"Mini").replace(/\s+/g," ").trim()},"getBackendLabel",0,function(e){return a[e]},"getBackendShortLabel",0,function(e){return t[e]},"getProcessGroup",0,function(e){return e.startsWith("wiki.")?"Wiki":e.startsWith("message.")||e.startsWith("dashboard.")?"Conversation":e.startsWith("routine.")?"Routines":e.startsWith("git.")||e.startsWith("github.")?"Git & GitHub":e.startsWith("calendar.")||"gmail_classify"===e?"Integrations":"Tasks"},"getProcessLabel",0,function(e){return i[e]??e},"modelBadgeVariant",0,function(e){if(!e)return"gray";let a=o(e);return a?l[a]:"gray"},"parseModelUsage",0,r,"pickDisplayModel",0,function(e,a){let t=r(a);return t.length>0&&t[0]?t[0].modelId:e??null}])},24756,e=>{"use strict";var a=e.i(14260),t=e.i(65268);e.s(["useBackends",0,function(e){return(0,a.useQuery)({queryKey:["backends"],queryFn:()=>t.api.get("/backends"),enabled:e?.enabled??!0,staleTime:6e4})}])},70986,e=>{"use strict";var a=e.i(34416),t=e.i(91967),n=e.i(9413),s=e.i(36567),l=e.i(18731),i=e.i(22353),r=e.i(85565),o=e.i(90816),d=e.i(11207),c=e.i(54710),u="Collapsible",[m,p]=(0,n.createContextScope)(u),[h,b]=m(u),g=a.forwardRef((e,t)=>{let{__scopeCollapsible:n,open:l,defaultOpen:i,disabled:o,onOpenChange:m,...p}=e,[b,g]=(0,s.useControllableState)({prop:l,defaultProp:i??!1,onChange:m,caller:u});return(0,c.jsx)(h,{scope:n,disabled:o,contentId:(0,d.useId)(),open:b,onOpenToggle:a.useCallback(()=>g(e=>!e),[g]),children:(0,c.jsx)(r.Primitive.div,{"data-state":j(b),"data-disabled":o?"":void 0,...p,ref:t})})});g.displayName=u;var f="CollapsibleTrigger",x=a.forwardRef((e,a)=>{let{__scopeCollapsible:n,...s}=e,l=b(f,n);return(0,c.jsx)(r.Primitive.button,{type:"button","aria-controls":l.contentId,"aria-expanded":l.open||!1,"data-state":j(l.open),"data-disabled":l.disabled?"":void 0,disabled:l.disabled,...s,ref:a,onClick:(0,t.composeEventHandlers)(e.onClick,l.onOpenToggle)})});x.displayName=f;var k="CollapsibleContent",y=a.forwardRef((e,a)=>{let{forceMount:t,...n}=e,s=b(k,e.__scopeCollapsible);return(0,c.jsx)(o.Presence,{present:t||s.open,children:({present:e})=>(0,c.jsx)(v,{...n,ref:a,present:e})})});y.displayName=k;var v=a.forwardRef((e,t)=>{let{__scopeCollapsible:n,present:s,children:o,...d}=e,u=b(k,n),[m,p]=a.useState(s),h=a.useRef(null),g=(0,i.useComposedRefs)(t,h),f=a.useRef(0),x=f.current,y=a.useRef(0),v=y.current,C=u.open||m,w=a.useRef(C),_=a.useRef(void 0);return a.useEffect(()=>{let e=requestAnimationFrame(()=>w.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,l.useLayoutEffect)(()=>{let e=h.current;if(e){_.current=_.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";let a=e.getBoundingClientRect();f.current=a.height,y.current=a.width,w.current||(e.style.transitionDuration=_.current.transitionDuration,e.style.animationName=_.current.animationName),p(s)}},[u.open,s]),(0,c.jsx)(r.Primitive.div,{"data-state":j(u.open),"data-disabled":u.disabled?"":void 0,id:u.contentId,hidden:!C,...d,ref:g,style:{"--radix-collapsible-content-height":x?`${x}px`:void 0,"--radix-collapsible-content-width":v?`${v}px`:void 0,...e.style},children:C&&o})});function j(e){return e?"open":"closed"}e.s(["Collapsible",0,g,"CollapsibleContent",0,y,"CollapsibleTrigger",0,x],70986)},90925,e=>{"use strict";let a=(0,e.i(77379).default)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);e.s(["Trash2",0,a],90925)},21682,e=>{"use strict";let a=(0,e.i(77379).default)("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);e.s(["Pencil",0,a],21682)},86923,e=>{"use strict";var a=e.i(54710),t=e.i(34416),n=e.i(95486),s=e.i(72740),l=e.i(21682),i=e.i(7663),r=e.i(75750),o=e.i(74490),d=e.i(79634),c=e.i(48467),u=e.i(20014),m=e.i(8652),p=e.i(10427),h=e.i(65268),b=e.i(24756),g=e.i(87040),f=e.i(76176),x=e.i(81471);let k={"message.dm":"DM response quality may degrade. Sonnet is recommended for important conversations.","message.mention":"Mention response quality may degrade. Sonnet is recommended.","dashboard.chat":"Dashboard chat response quality may degrade. Sonnet is recommended.","routine.morning_routine":"Long-form generation may produce shorter/rougher output with Haiku. Sonnet is recommended.","routine.evening_review":"Long-form generation may produce shorter/rougher output with Haiku. Sonnet is recommended.","routine.weekly_review":"Weekly reviews require reasoning depth. Haiku may produce less coherent output.","routine.monthly_review":"Monthly reviews require reasoning depth. Haiku may produce less coherent output.","agent.task":"Sonnet is recommended for complex task execution. Haiku may make rougher tool-use decisions."};function y(e,a,t){let n,s=(n=e.filter(e=>e.tier===a)).length>0?n:e;return t&&s.some(e=>e.modelId===t)?t:s[0]?.modelId??e[0]?.modelId??""}function v(e,a){return a?e.find(e=>e.modelId===a)?.label??(0,f.formatModelName)(a):"Disabled"}e.s(["BackendSettingsSection",0,function({onToast:e,sections:j=["processes"],processKeys:C,title:w="Process Routing",description:_}){let N=j.includes("processes"),S=(0,n.useQueryClient)(),{data:B,error:M,isLoading:T}=(0,b.useBackends)({enabled:N}),{data:R,error:A,isLoading:D}=(0,g.useProcessConfig)({enabled:N}),[E,F]=(0,t.useState)(null),[I,L]=(0,t.useState)(null),[P,K]=(0,t.useState)(!1),O=(0,t.useCallback)(async()=>{await Promise.all([S.invalidateQueries({queryKey:["backends"]}),S.invalidateQueries({queryKey:["process-config"]}),S.invalidateQueries({queryKey:["cost"]}),S.invalidateQueries({queryKey:["metrics"]})])},[S]),H=N?M??A:null;if(H){let e=H instanceof h.ApiError&&503===H.status;return(0,a.jsxs)(o.Card,{children:[(0,a.jsx)(o.CardHeader,{children:(0,a.jsx)(o.CardTitle,{children:"Process Routing"})}),(0,a.jsx)("p",{className:"max-w-prose text-sm text-muted-foreground",children:e?"Multi-backend tables are not available yet. Run migrations first.":H instanceof Error?H.message:"Failed to load process routing."})]})}if(!N)return null;if(T||!B||D||!R)return(0,a.jsxs)(o.Card,{children:[(0,a.jsx)(o.CardHeader,{children:(0,a.jsx)(o.CardTitle,{children:"Process Routing"})}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading process routing…"})]});let G=new Map(B.backends.map(e=>[e.id,e])),q=B.backends.filter(e=>e.enabled),W=(C?R.configs.filter(e=>C.includes(e.processKey)):R.configs).reduce((e,a)=>{let t=(0,f.getProcessGroup)(a.processKey),n=e.find(e=>e.group===t);return n?n.configs.push(a):e.push({group:t,configs:[a]}),e},[]);async function U(){if(I){K(!0);try{let a=await h.api.put(`/process-config/${I.processKey}`,{mainBackend:I.mainBackend,mainModel:I.mainModel,fallbackBackend:I.fallbackBackend,fallbackModel:I.fallbackModel,maxTurns:I.maxTurns,maxBudgetUsd:I.maxBudgetUsd});await O(),a.warnings?.length?e("warning",`Saved — ${a.warnings.map(e=>e.message).join("; ")}`):e("success",`${(0,f.getProcessLabel)(I.processKey)} updated`),F(null),L(null)}catch(a){e("error",function(e){if(!(e instanceof h.ApiError))return e instanceof Error?e.message:"Request failed";let a=e.body,t="string"==typeof a?.error?a.error:null,n=Array.isArray(a?.processKeys)?a.processKeys.filter(e=>"string"==typeof e):[];switch(t){case"backend_in_use":return`This backend is still used by: ${n.join(", ")}. Reassign those processes first.`;case"default_backend":return"Reassign the default backend before disabling it.";case"main_backend_disabled":return"The selected main backend is disabled. Enable it first.";case"fallback_backend_disabled":return"The selected fallback backend is disabled. Enable it first.";case"fallback_same_as_main":return"Fallback backend must differ from the main backend.";case"fallback_incomplete":return"Fallback backend and fallback model must either both be set or both be disabled.";case"invalid_main_model":return"The selected main model does not belong to the chosen backend.";case"invalid_fallback_model":return"The selected fallback model does not belong to the chosen fallback backend.";case"multi_backend_unavailable":return"Multi-backend tables are not available yet. Run migrations first.";default:return e.message}}(a))}finally{K(!1)}}}return(0,a.jsxs)(o.Card,{children:[(0,a.jsx)(o.CardHeader,{className:"items-start",children:(0,a.jsxs)("div",{children:[(0,a.jsx)(o.CardTitle,{children:w}),(0,a.jsx)("p",{className:"mt-1 max-w-3xl text-sm text-muted-foreground",children:_??(0,a.jsxs)(a.Fragment,{children:["One row per process (event-handling pipeline). Each row shows the resolved main backend + model, the optional fallback that kicks in on ",(0,a.jsx)("em",{children:"decisive"})," main-backend failures (quota exhausted, auth broken, model unavailable, timeout — not ordinary rate limiting), and the per-run limits. Click ",(0,a.jsx)("em",{children:"Edit"}),"to override any of them. “Default” badges mean the value is inherited from the main backend’s preset defaults above."]})})]})}),(0,a.jsx)("div",{className:"space-y-3",children:W.map(e=>(0,a.jsxs)("div",{className:"space-y-3",children:[!C&&(0,a.jsx)("h3",{className:"px-1 text-xs font-semibold uppercase text-muted-foreground",children:e.group}),e.configs.map(e=>{var t;let n,o=G.get(e.mainBackend),h=e.fallbackBackend?G.get(e.fallbackBackend):null,b=E===e.processKey&&I,g=b?G.get(I.mainBackend)?.models??[]:[],j=b&&I.fallbackBackend?G.get(I.fallbackBackend)?.models??[]:[];return(0,a.jsxs)("div",{className:"rounded-xl border border-border p-4",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between",children:[(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsx)("p",{className:"text-base font-medium text-foreground",children:(0,f.getProcessLabel)(e.processKey)}),(0,a.jsxs)(c.Badge,{variant:"high"===e.defaultTier?"purple":"medium"===e.defaultTier?"blue":"default",children:["Default ",e.defaultTier]})]}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:e.processKey}),(n=function(e,a,t){if("routine.morning_routine"===e&&"claude"===a){let e=t.find(e=>"high"===e.tier&&e.available&&!e.deprecated);return e?`Defaults to Sonnet to preserve Claude quota — ${e.label} depletes the 5h window much faster. If you want better instruction-following or more thorough day-plan output, switch Main Model to ${e.label}.`:null}return null}(e.processKey,e.mainBackend,o?.models??[]))?(0,a.jsx)(d.Alert,{variant:"info",className:"mt-2 text-xs",children:n}):null]}),(0,a.jsxs)("div",{className:"grid gap-3 text-sm text-muted-foreground md:grid-cols-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"font-medium text-foreground",children:"Main"}),(0,a.jsx)("p",{children:o?(0,f.getBackendLabel)(o.id):e.mainBackend}),(0,a.jsx)("p",{children:o?v(o.models,e.mainModel):e.mainModel})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"font-medium text-foreground",children:"Fallback"}),h&&e.fallbackModel?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{children:(0,f.getBackendLabel)(h.id)}),(0,a.jsx)("p",{children:v(h.models,e.fallbackModel)})]}):(0,a.jsx)("p",{children:"Disabled"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"font-medium text-foreground",children:"Limits"}),(0,a.jsxs)("p",{children:[e.maxTurns," turns"]}),(0,a.jsxs)("p",{children:[(0,x.formatCurrency)(e.maxBudgetUsd)," soft budget"]})]})]})]}),(0,a.jsxs)(u.Button,{variant:"outline",onClick:()=>{F(e.processKey),L({processKey:e.processKey,defaultTier:e.defaultTier,mainBackend:e.mainBackend,mainModel:e.mainModel,fallbackBackend:e.fallbackBackend,fallbackModel:e.fallbackModel,maxTurns:e.maxTurns,maxBudgetUsd:e.maxBudgetUsd})},children:[(0,a.jsx)(l.Pencil,{className:"h-3.5 w-3.5"}),"Edit"]})]}),b&&I&&(0,a.jsxs)("div",{className:"mt-4 grid gap-4 rounded-xl border border-border/80 bg-muted/30 p-4 md:grid-cols-2",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"Main backend"}),(0,a.jsxs)(p.Select,{value:I.mainBackend,onValueChange:e=>(function(e){let a=G.get(e);if(!a||!I)return;let t=I.fallbackBackend===e;L({...I,mainBackend:e,mainModel:y(a.models,I.defaultTier,I.mainModel),fallbackBackend:t?null:I.fallbackBackend,fallbackModel:t?null:I.fallbackModel})})(e),children:[(0,a.jsx)(p.SelectTrigger,{children:(0,a.jsx)(p.SelectValue,{placeholder:"Select backend"})}),(0,a.jsx)(p.SelectContent,{children:B.backends.map(e=>(0,a.jsx)(p.SelectItem,{value:e.id,disabled:!e.enabled,children:(0,f.getBackendLabel)(e.id)},e.id))})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"Main model"}),(0,a.jsxs)(p.Select,{value:I.mainModel,onValueChange:e=>L(a=>a?{...a,mainModel:e}:a),children:[(0,a.jsx)(p.SelectTrigger,{children:(0,a.jsx)(p.SelectValue,{placeholder:"Select model"})}),(0,a.jsx)(p.SelectContent,{children:g.map(e=>(0,a.jsx)(p.SelectItem,{value:e.modelId,children:e.label},e.modelId))})]}),!!(t=I.mainModel)&&t.toLowerCase().includes("haiku")&&k[I.processKey]&&(0,a.jsx)(d.Alert,{variant:"warning",className:"mt-2 text-xs",children:k[I.processKey]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"Fallback backend"}),(0,a.jsxs)(p.Select,{value:I.fallbackBackend??"__none__",onValueChange:e=>(function(e){if(!I)return;if(!e)return void L({...I,fallbackBackend:null,fallbackModel:null});let a=G.get(e);a&&L({...I,fallbackBackend:e,fallbackModel:y(a.models,I.defaultTier,I.fallbackModel)})})("__none__"===e?null:e),children:[(0,a.jsx)(p.SelectTrigger,{children:(0,a.jsx)(p.SelectValue,{placeholder:"Select backend"})}),(0,a.jsxs)(p.SelectContent,{children:[(0,a.jsx)(p.SelectItem,{value:"__none__",children:"Disabled"}),B.backends.map(e=>(0,a.jsx)(p.SelectItem,{value:e.id,disabled:!e.enabled||e.id===I.mainBackend,children:(0,f.getBackendLabel)(e.id)},e.id))]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"Fallback model"}),(0,a.jsxs)(p.Select,{disabled:!I.fallbackBackend,value:I.fallbackModel??"__none__",onValueChange:e=>L(a=>a?{...a,fallbackModel:"__none__"===e?null:e}:a),children:[(0,a.jsx)(p.SelectTrigger,{children:(0,a.jsx)(p.SelectValue,{placeholder:"Select model"})}),(0,a.jsxs)(p.SelectContent,{children:[(0,a.jsx)(p.SelectItem,{value:"__none__",children:"Disabled"}),j.map(e=>(0,a.jsx)(p.SelectItem,{value:e.modelId,children:e.label},e.modelId))]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"Max turns"}),(0,a.jsx)(m.Input,{type:"number",min:1,max:1e3,value:I.maxTurns,onChange:e=>L(a=>a?{...a,maxTurns:Number(e.target.value)||1}:a)}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"Hard cap on agent turns per run for this process. One turn = one model response (possibly with tool calls). When reached, the run stops mid-task — raise this if you see “max turns” aborts."})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"Soft budget (USD)"}),(0,a.jsx)(m.Input,{type:"number",min:0,max:1e4,step:"0.01",value:I.maxBudgetUsd,onChange:e=>L(a=>a?{...a,maxBudgetUsd:Number(e.target.value)||0}:a)}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"Per-run spend target in USD. “Soft” because it’s checked between turns — a long single turn can overshoot slightly. Runs exceeding this are aborted. Set to 0 to disable and rely only on the turn cap."})]}),(0,a.jsxs)("div",{className:"md:col-span-2 flex items-center justify-between gap-3",children:[(0,a.jsxs)("p",{className:"max-w-xl text-xs text-muted-foreground",children:[(0,a.jsx)("strong",{children:"Fallback backend/model"})," is consulted only on decisive failures: quota exhaustion, auth breakage, model refusal, timeout, or unrecoverable provider errors. Transient 5xx and ordinary rate limits are retried on the main backend first."]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsxs)(u.Button,{variant:"outline",onClick:()=>{F(null),L(null)},children:[(0,a.jsx)(r.XCircle,{className:"h-4 w-4"}),"Cancel"]}),(0,a.jsxs)(u.Button,{onClick:U,disabled:P,children:[P?(0,a.jsx)(s.Loader2,{className:"h-4 w-4 animate-spin"}):(0,a.jsx)(i.Save,{className:"h-4 w-4"}),"Save Process"]})]})]})]})]},e.processKey)})]},e.group))}),q.length<2&&(0,a.jsx)(d.Alert,{variant:"warning",className:"mt-4 rounded-xl px-4 py-3 text-sm",children:"Enable another backend if you want fallback routing to be available for any process."})]})}])}]);
|