@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
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[27727,a=>{"use strict";var b=a.i(39752),c=a.i(48558);a.s(["EmptyState",0,function({icon:a,title:d,description:e,className:f,children:g}){return(0,b.jsxs)("div",{className:(0,c.cn)("flex flex-col items-center justify-center py-16 text-muted-foreground",f),children:[(0,b.jsx)(a,{className:"mb-3 h-10 w-10 opacity-40"}),(0,b.jsx)("p",{className:"text-sm font-medium",children:d}),e&&(0,b.jsx)("p",{className:"mt-1 max-w-prose text-xs text-muted-foreground/70",children:e}),g]})}])},95024,a=>{"use strict";let b=(0,a.i(5423).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"}]]);a.s(["Save",0,b],95024)},30400,a=>{"use strict";var b=a.i(39752),c=a.i(48558);let d=(0,a.i(42261).cva)("rounded-xl border p-5 shadow-[0_1px_3px_rgb(0_0_0/0.04)]",{variants:{tone:{default:"border-border bg-card",warning:"border-amber-200 bg-amber-50/50 dark:border-amber-900 dark:bg-amber-950/30",success:"border-emerald-200 bg-emerald-50/50 dark:border-emerald-900 dark:bg-emerald-950/30",error:"border-red-200 bg-red-50/50 dark:border-red-900 dark:bg-red-950/30"},interactive:{true:"transition-shadow duration-150 hover:shadow-[0_4px_6px_rgb(0_0_0/0.06)]",false:""}},defaultVariants:{tone:"default",interactive:!1}});a.s(["Card",0,function({className:a,tone:e,interactive:f,...g}){return(0,b.jsx)("div",{className:(0,c.cn)(d({tone:e,interactive:f}),a),...g})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{className:(0,c.cn)("mb-3 flex items-center justify-between",a),...d})},"CardStatLabel",0,function({className:a,...d}){return(0,b.jsx)("h3",{className:(0,c.cn)("text-sm font-medium text-muted-foreground",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("h3",{className:(0,c.cn)("text-lg font-semibold text-foreground",a),...d})},"CardValue",0,function({className:a,...d}){return(0,b.jsx)("div",{className:(0,c.cn)("text-3xl font-bold text-foreground",a),...d})}])},96336,a=>{"use strict";let b=(0,a.i(5423).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"}]]);a.s(["Trash2",0,b],96336)},43179,a=>{"use strict";let b=(0,a.i(5423).default)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",0,b],43179)},7037,a=>{"use strict";let b=(0,a.i(5423).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"}]]);a.s(["Pencil",0,b],7037)},11307,a=>{"use strict";let b=(0,a.i(5423).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"}]]);a.s(["FolderOpen",0,b],11307)},55406,a=>{"use strict";var b=a.i(59974);async function c({title:a,defaultPath:d}){let e=await b.api.post("/system/pick-directory",{title:a,...d?{defaultPath:d}:{}});if("selected"===e.status&&e.path)return e.path;if("cancelled"===e.status)return null;throw Error(e.message??"Folder picker is unavailable.")}a.s(["pickDirectoryFromDesktop",0,c])},70297,a=>{"use strict";let b=(0,a.i(5423).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"}]]);a.s(["RotateCcw",0,b],70297)},91534,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(11307),e=a.i(92241),f=a.i(21218),g=a.i(8212),h=a.i(55406),i=a.i(48558);a.s(["DirectoryPickerField",0,function({id:a,value:j,onChange:k,title:l,placeholder:m="Choose a folder...",defaultPath:n,disabled:o=!1,className:p,inputClassName:q,buttonLabel:r="Choose"}){let[s,t]=(0,c.useState)(!1),[u,v]=(0,c.useState)(null),w=async()=>{t(!0),v(null);try{let a=await (0,h.pickDirectoryFromDesktop)({title:l,defaultPath:j.trim()||n});a&&k(a)}catch(a){v(a instanceof Error?a.message:"Folder picker is unavailable.")}finally{t(!1)}};return(0,b.jsxs)("div",{className:(0,i.cn)("space-y-1",p),children:[(0,b.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row",children:[(0,b.jsx)(g.Input,{id:a,value:j,onChange:a=>{k(a.target.value),v(null)},placeholder:m,className:(0,i.cn)("font-mono text-sm",q),disabled:o||s}),(0,b.jsxs)(f.Button,{type:"button",variant:"outline",onClick:w,disabled:o||s,className:"shrink-0 gap-2",children:[s?(0,b.jsx)(e.Loader2,{className:"h-4 w-4 animate-spin"}):(0,b.jsx)(d.FolderOpen,{className:"h-4 w-4"}),s?"Opening...":r]})]}),u&&(0,b.jsx)("p",{className:"text-xs text-destructive",children:u})]})}])},86807,a=>{"use strict";var b=a.i(39752),c=a.i(48558);a.s(["ConnectionsSectionHeader",0,function({title:a,description:d,healthy:e,total:f,attention:g,actions:h}){let i=f>0&&e===f,j=f>0&&0===e;return(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("div",{className:"flex items-baseline justify-between gap-3",children:[(0,b.jsx)("h1",{className:"text-2xl font-semibold text-foreground",children:a}),(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[f>0&&(0,b.jsxs)("span",{className:(0,c.cn)("text-xs font-medium tabular-nums",i?"text-emerald-600 dark:text-emerald-400":j?"text-muted-foreground":"text-amber-600 dark:text-amber-400"),children:[e,"/",f," connected"]}),h]})]}),d&&(0,b.jsx)("p",{className:"max-w-3xl text-sm text-muted-foreground",children:d}),g&&(0,b.jsx)("p",{className:"text-xs text-amber-600 dark:text-amber-400",children:g})]})}])},95827,a=>{"use strict";var b=a.i(39752),c=a.i(7384),d=a.i(30400),e=a.i(48558);let f={connected:{variant:"green",label:"Connected"},configured:{variant:"amber",label:"Configured"},connecting:{variant:"amber",label:"Connecting…"},"needs-setup":{variant:"gray",label:"Not Configured"},error:{variant:"red",label:"Error"},disabled:{variant:"gray",label:"Disabled"}};a.s(["ConnectionCard",0,function({name:a,icon:g,status:h,error:i,metadata:j,children:k,className:l}){let m=f[h];return(0,b.jsxs)(d.Card,{tone:"connected"===h?"success":"error"===h?"error":"default",className:(0,e.cn)("relative",l),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:g}),(0,b.jsx)("h3",{className:"text-sm font-medium text-foreground",children:a})]}),(0,b.jsx)(c.Badge,{variant:m.variant,children:m.label})]}),i&&"connecting"!==h&&(0,b.jsx)("p",{className:"mb-2 text-xs text-red-600 dark:text-red-400",children:i}),j&&j.length>0&&(0,b.jsx)("div",{className:"mb-3 space-y-0.5",children:j.map(a=>(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:a.label}),(0,b.jsx)("span",{className:"text-foreground",children:a.value})]},a.label))}),k]})},"deriveConfiguredStatus",0,function(a){return a?"configured":"needs-setup"},"deriveIntegrationStatus",0,function(a){return a&&a.configured?a.error?"error":a.connected?"connected":"configured":"needs-setup"},"deriveMessagingStatus",0,function(a){return a&&"not_configured"!==a.runtimeState?"connecting"===a.runtimeState?"connecting":"error"===a.runtimeState?"error":"ok"===a.runtimeState?"connected":"configured":"needs-setup"},"messagingMetadata",0,function(a){if(a)return[{label:"Owner configured",value:a.ownerConfigured?"yes":"no"},{label:"Owner channel known",value:a.ownerChannelKnown?"yes":"no"},{label:"Reminder eligible",value:a.notificationEligible?"yes":"no"},{label:"Last inbound",value:a.lastInboundAt??"—"}]}])},55140,a=>{"use strict";let b=(0,a.i(5423).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"}]]);a.s(["KeyRound",0,b],55140)},7385,a=>{"use strict";let b=(0,a.i(5423).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"}]]);a.s(["XCircle",0,b],7385)},50891,a=>{"use strict";let b=(0,a.i(5423).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"}]]);a.s(["ShieldCheck",0,b],50891)},95097,a=>{"use strict";var b=a.i(62588),c=a.i(59974);a.s(["useProcessConfig",0,function(a){return(0,b.useQuery)({queryKey:["process-config"],queryFn:()=>c.api.get("/process-config"),enabled:a?.enabled??!0,staleTime:6e4})}])},39293,a=>{"use strict";let b=(0,a.i(5423).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"}]]);a.s(["RefreshCw",0,b],39293)},40091,a=>{"use strict";let b={claude:"Claude Code",codex:"OpenAI Codex",gemini:"Gemini CLI"},c={claude:"Claude",codex:"Codex",gemini:"Gemini"},d={claude:"orange",codex:"pink",gemini:"blue"},e={"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","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"};function f(a){let b;if(!a)return[];try{b=JSON.parse(a)}catch{return[]}if(!b||"object"!=typeof b)return[];let c=[];for(let[a,d]of Object.entries(b))d&&"object"==typeof d&&c.push({modelId:a,inputTokens:"number"==typeof d.inputTokens?d.inputTokens:0,outputTokens:"number"==typeof d.outputTokens?d.outputTokens:0,costUsd:"number"==typeof d.costUsd?d.costUsd:0});return c.sort((a,b)=>b.costUsd-a.costUsd)}function g(a){if(!a)return null;let b=a.toLowerCase();return b.includes("claude")||b.includes("sonnet")||b.includes("opus")||b.includes("haiku")?"claude":b.includes("gemini")?"gemini":b.includes("gpt")||b.includes("codex")||b.includes("o3")||b.includes("o4")?"codex":null}a.s(["BACKEND_BADGE_VARIANTS",0,d,"BACKEND_LABELS",0,b,"BACKEND_PROVIDER_LABELS",0,{claude:"Claude (Anthropic)",codex:"ChatGPT (OpenAI)",gemini:"Gemini (Google)"},"BACKEND_PROVIDER_SHORT",0,{claude:"Claude",codex:"ChatGPT",gemini:"Gemini"},"detectBackendFromModel",0,g,"formatModelName",0,function(a){return a?a.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(a){if(!a)return"unknown";if("opus"===a)return"Opus";if("sonnet"===a)return"Sonnet";let b=a.replace(/-\d{8,}$/,"").replace(/^claude-/,"").replace(/(\d+)-(\d+)(?![-\d])/g,"$1.$2").replace(/-/g," ");return a.startsWith("gpt-")&&(b=`GPT-${b.replace(/^gpt\s*/i,"")}`),a.startsWith("gemini-")&&(b=b.replace(/^gemini\s*/i,"Gemini ")),b.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(a){return b[a]},"getBackendShortLabel",0,function(a){return c[a]},"getProcessLabel",0,function(a){return e[a]??a},"modelBadgeVariant",0,function(a){if(!a)return"gray";let b=g(a);return b?d[b]:"gray"},"parseModelUsage",0,f,"pickDisplayModel",0,function(a,b){let c=f(b);return c.length>0&&c[0]?c[0].modelId:a??null}])},80196,a=>{"use strict";let b=(0,a.i(5423).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"}]]);a.s(["Bot",0,b],80196)},33165,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(81130),e=a.i(80196),f=a.i(92241),g=a.i(7037),h=a.i(95024),i=a.i(7385),j=a.i(30400),k=a.i(21218),l=a.i(7384),m=a.i(29629),n=a.i(47696),o=a.i(59974),p=a.i(74794),q=a.i(95097),r=a.i(40091);a.s(["ProcessModelCard",0,function({processKey:a,title:s="AI Model",description:t}){let u=(0,d.useQueryClient)(),{data:v}=(0,p.useBackends)(),{data:w}=(0,q.useProcessConfig)(),[x,y]=(0,c.useState)(!1),[z,A]=(0,c.useState)(null),[B,C]=(0,c.useState)(null),[D,E]=(0,c.useState)(!1),[F,G]=(0,c.useState)(null),H=w?.configs.find(b=>b.processKey===a),I=new Map((v?.backends??[]).map(a=>[a.id,a])),J=(v?.backends??[]).filter(a=>a.enabled);if(!v||!w||!H)return null;let K=I.get(H.mainBackend),L=K?.models.find(a=>a.modelId===H.mainModel)?.label??(0,r.formatModelName)(H.mainModel),M=z?I.get(z):null,N=M?.models??[];async function O(){if(z&&B){E(!0),G(null);try{await o.api.put(`/process-config/${a}`,{mainBackend:z,mainModel:B,fallbackBackend:H.fallbackBackend,fallbackModel:H.fallbackModel,maxTurns:H.maxTurns,maxBudgetUsd:H.maxBudgetUsd}),await u.invalidateQueries({queryKey:["process-config"]}),G({type:"success",message:"Saved"}),y(!1)}catch(b){let a=b instanceof o.ApiError?b.body:null;G({type:"error",message:"string"==typeof a?.error?a.error:b instanceof Error?b.message:"Save failed"})}finally{E(!1)}}}return(0,b.jsxs)(j.Card,{children:[(0,b.jsxs)(j.CardHeader,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(e.Bot,{className:"h-4 w-4 text-muted-foreground"}),(0,b.jsx)(j.CardTitle,{className:"text-base",children:s}),"user"===H.updatedBy&&(0,b.jsx)(l.Badge,{variant:"blue",className:"text-xs",children:"Custom"})]}),!x&&(0,b.jsxs)(k.Button,{variant:"ghost",size:"sm",onClick:function(){A(H.mainBackend),C(H.mainModel),G(null),y(!0)},className:"h-8",children:[(0,b.jsx)(g.Pencil,{className:"h-3.5 w-3.5"}),"Edit"]})]}),!x&&(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[(0,b.jsx)(l.Badge,{variant:r.BACKEND_BADGE_VARIANTS[H.mainBackend],children:(0,r.getBackendLabel)(H.mainBackend)}),(0,b.jsx)("span",{className:"text-muted-foreground",children:L}),(0,b.jsx)(l.Badge,{variant:"high"===H.defaultTier?"purple":"medium"===H.defaultTier?"blue":"default",className:"text-xs",children:H.defaultTier})]}),t&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:t})]}),x&&(0,b.jsxs)("div",{className:"mt-1 space-y-3",children:[(0,b.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:"Backend"}),(0,b.jsxs)(n.Select,{value:z??"",onValueChange:a=>(function(a){var b,c;let d,e=I.get(a);if(!e)return;A(a);let f=(b=e.models,c=H.defaultTier,(d=b.filter(a=>a.tier===c)).length>0?d:b);C(f[0]?.modelId??e.models[0]?.modelId??"")})(a),children:[(0,b.jsx)(n.SelectTrigger,{children:(0,b.jsx)(n.SelectValue,{})}),(0,b.jsx)(n.SelectContent,{children:J.map(a=>(0,b.jsx)(n.SelectItem,{value:a.id,children:(0,r.getBackendLabel)(a.id)},a.id))})]})]}),(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:"Model"}),(0,b.jsxs)(n.Select,{value:B??"",onValueChange:a=>C(a),children:[(0,b.jsx)(n.SelectTrigger,{children:(0,b.jsx)(n.SelectValue,{})}),(0,b.jsx)(n.SelectContent,{children:N.map(a=>(0,b.jsx)(n.SelectItem,{value:a.modelId,children:a.label},a.modelId))})]})]})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsxs)(k.Button,{variant:"outline",size:"sm",onClick:function(){y(!1),A(null),C(null)},disabled:D,children:[(0,b.jsx)(i.XCircle,{className:"h-3.5 w-3.5"}),"Cancel"]}),(0,b.jsxs)(k.Button,{size:"sm",onClick:()=>{O()},disabled:D||!B,children:[D?(0,b.jsx)(f.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,b.jsx)(h.Save,{className:"h-3.5 w-3.5"}),"Save"]})]})]}),F&&(0,b.jsx)(m.Alert,{variant:"success"===F.type?"success":"error",className:"mt-3",children:F.message})]})}])},87759,a=>{"use strict";let b=(0,a.i(5423).default)("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);a.s(["Play",0,b],87759)},21283,a=>{"use strict";var b=a.i(62588),c=a.i(8753),d=a.i(81130),e=a.i(59974);let f=["repositories"],g=a=>[...f,a],h=a=>[...g(a),"triggers"],i=a=>[...g(a),"management"];function j(a){return!!(a.githubOwner&&a.githubRepo)}a.s(["observationSourcesForRepo",0,function(a){let b=[];if(a.localPath&&b.push(`git:${a.localPath}`),j(a)){let c=`${a.githubOwner}/${a.githubRepo}`;b.push(`github:notification:${c}`),b.push(`github:workflow:${c}`)}return b},"repositoryDisplayName",0,function(a){if(a.displayName)return a.displayName;if(j(a))return`${a.githubOwner}/${a.githubRepo}`;if(a.localPath){let b=a.localPath.replace(/[\\/]+$/g,"").split(/[\\/]+/).filter(Boolean);return b[b.length-1]??a.localPath}return a.slug},"repositoryHasGithub",0,j,"repositoryHasLocal",0,function(a){return!!a.localPath},"useCreateRepoTrigger",0,function(){let a=(0,d.useQueryClient)();return(0,c.useMutation)({mutationFn:({repositoryId:a,body:b})=>e.api.post(`/repositories/${encodeURIComponent(a)}/triggers`,b),onSuccess:(b,c)=>{a.invalidateQueries({queryKey:h(c.repositoryId)})}})},"useCreateRepository",0,function(){let a=(0,d.useQueryClient)();return(0,c.useMutation)({mutationFn:a=>e.api.post("/repositories",a),onSuccess:()=>{a.invalidateQueries({queryKey:f})}})},"useDeleteRepoTrigger",0,function(){let a=(0,d.useQueryClient)();return(0,c.useMutation)({mutationFn:({repositoryId:a,triggerId:b})=>e.api.delete(`/repositories/${encodeURIComponent(a)}/triggers/${encodeURIComponent(b)}`),onSuccess:(b,c)=>{a.invalidateQueries({queryKey:h(c.repositoryId)})}})},"useDeleteRepository",0,function(){let a=(0,d.useQueryClient)();return(0,c.useMutation)({mutationFn:a=>e.api.delete(`/repositories/${encodeURIComponent(a)}`),onSuccess:()=>{a.invalidateQueries({queryKey:f})}})},"useFireRepoTrigger",0,function(){return(0,c.useMutation)({mutationFn:({repositoryId:a,triggerId:b})=>e.api.post(`/repositories/${encodeURIComponent(a)}/triggers/${encodeURIComponent(b)}/run`,{})})},"useLinkGithub",0,function(){let a=(0,d.useQueryClient)();return(0,c.useMutation)({mutationFn:({id:a,owner:b,repo:c,account:d})=>e.api.post(`/repositories/${encodeURIComponent(a)}/link-github`,{owner:b,repo:c,account:d}),onSuccess:(b,c)=>{a.invalidateQueries({queryKey:f}),a.invalidateQueries({queryKey:g(c.id)})}})},"useLinkLocal",0,function(){let a=(0,d.useQueryClient)();return(0,c.useMutation)({mutationFn:({id:a,localPath:b})=>e.api.post(`/repositories/${encodeURIComponent(a)}/link-local`,{localPath:b}),onSuccess:(b,c)=>{a.invalidateQueries({queryKey:f}),a.invalidateQueries({queryKey:g(c.id)})}})},"useRefreshRepositoryArchitecture",0,function(){let a=(0,d.useQueryClient)();return(0,c.useMutation)({mutationFn:a=>e.api.post(`/repositories/${encodeURIComponent(a)}/management/refresh-architecture`,{}),onSuccess:async(b,c)=>{try{await a.refetchQueries({queryKey:i(c)})}catch{}}})},"useRepositories",0,function(a){return(0,b.useQuery)({queryKey:a?[...f,a]:[...f],queryFn:()=>e.api.get("/repositories",function(a){if(!a)return;let b={};return void 0!==a.hasGithub&&(b.has_github=a.hasGithub?"1":"0"),void 0!==a.hasLocal&&(b.has_local=a.hasLocal?"1":"0"),void 0!==a.localOnly&&(b.local_only=a.localOnly?"1":"0"),a.account&&(b.account=a.account),Object.keys(b).length>0?b:void 0}(a)),staleTime:3e4})},"useRepositoryManagement",0,function(a){return(0,b.useQuery)({queryKey:a?i(a):[...f,"missing","management"],queryFn:()=>e.api.get(`/repositories/${encodeURIComponent(a)}/management`),enabled:!!a,staleTime:15e3,refetchInterval:a=>{let b=a.state.data;return!!b?.architectureRefresh&&3e3}})},"useRepositoryTriggers",0,function(a){return(0,b.useQuery)({queryKey:a?h(a):[...f,"missing","triggers"],queryFn:()=>e.api.get(`/repositories/${encodeURIComponent(a)}/triggers`),enabled:!!a,staleTime:15e3})},"useRunRepoManagementInit",0,function(){let a=(0,d.useQueryClient)();return(0,c.useMutation)({mutationFn:a=>e.api.post(`/repositories/${encodeURIComponent(a)}/management/init`,{}),onSuccess:async(b,c)=>{try{await a.refetchQueries({queryKey:i(c)})}catch{}}})},"useRunRepoManagementScan",0,function(){let a=(0,d.useQueryClient)();return(0,c.useMutation)({mutationFn:a=>e.api.post(`/repositories/${encodeURIComponent(a)}/management/scan`,{}),onSuccess:async(b,c)=>{try{await a.refetchQueries({queryKey:i(c)})}catch{}}})},"useSetRepositoryManagement",0,function(){let a=(0,d.useQueryClient)();return(0,c.useMutation)({mutationFn:({id:a,enabled:b})=>e.api.put(`/repositories/${encodeURIComponent(a)}/management`,{enabled:b}),onSuccess:(b,c)=>{a.invalidateQueries({queryKey:i(c.id)})}})},"useTestRepoTrigger",0,function(){return(0,c.useMutation)({mutationFn:({repositoryId:a,triggerId:b,eventType:c,payload:d})=>e.api.post(`/repositories/${encodeURIComponent(a)}/triggers/${encodeURIComponent(b)}/test`,{eventType:c,payload:d})})},"useUpdateRepoTrigger",0,function(){let a=(0,d.useQueryClient)();return(0,c.useMutation)({mutationFn:({repositoryId:a,triggerId:b,body:c})=>e.api.patch(`/repositories/${encodeURIComponent(a)}/triggers/${encodeURIComponent(b)}`,c),onSuccess:(b,c)=>{a.invalidateQueries({queryKey:h(c.repositoryId)})}})},"useUpdateRepository",0,function(){let a=(0,d.useQueryClient)();return(0,c.useMutation)({mutationFn:({id:a,body:b})=>e.api.patch(`/repositories/${encodeURIComponent(a)}`,b),onSuccess:(b,c)=>{a.invalidateQueries({queryKey:f}),a.invalidateQueries({queryKey:g(c.id)})}})}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_0pwd-nz._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/dashboard/src/components/shared/empty-state.tsx","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/save.ts","../../../../../../packages/dashboard/src/components/ui/card.tsx","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/trash-2.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/plus.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/pencil.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/folder-open.ts","../../../../../../packages/dashboard/src/lib/directory-picker.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/rotate-ccw.ts","../../../../../../packages/dashboard/src/components/directory-picker-field.tsx","../../../../../../packages/dashboard/src/components/connections/section-header.tsx","../../../../../../packages/dashboard/src/components/connections/connection-card.tsx","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/key-round.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/circle-x.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/shield-check.ts","../../../../../../packages/dashboard/src/lib/hooks/use-process-config.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/refresh-cw.ts","../../../../../../packages/dashboard/src/lib/backend-ui.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/bot.ts","../../../../../../packages/dashboard/src/components/connections/process-model-card.tsx","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/play.ts","../../../../../../packages/dashboard/src/lib/hooks/use-repositories.ts"],"sourcesContent":["import type { LucideIcon } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\ninterface EmptyStateProps {\n icon: LucideIcon;\n title: string;\n description?: string;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport function EmptyState({\n icon: Icon,\n title,\n description,\n className,\n children,\n}: EmptyStateProps) {\n return (\n <div\n className={cn(\n \"flex flex-col items-center justify-center py-16 text-muted-foreground\",\n className,\n )}\n >\n <Icon className=\"mb-3 h-10 w-10 opacity-40\" />\n <p className=\"text-sm font-medium\">{title}</p>\n {description && (\n <p className=\"mt-1 max-w-prose text-xs text-muted-foreground/70\">{description}</p>\n )}\n {children}\n </div>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Save\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/save\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Save = createLucideIcon('Save', [\n [\n 'path',\n {\n 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',\n key: '1c8476',\n },\n ],\n ['path', { d: 'M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7', key: '1ydtos' }],\n ['path', { d: 'M7 3v4a1 1 0 0 0 1 1h7', key: 't51u73' }],\n]);\n\nexport default Save;\n","import { cn } from \"@/lib/utils\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport type { HTMLAttributes } from \"react\";\n\nconst cardVariants = cva(\n \"rounded-xl border p-5 shadow-[0_1px_3px_rgb(0_0_0/0.04)]\",\n {\n variants: {\n tone: {\n default: \"border-border bg-card\",\n warning:\n \"border-amber-200 bg-amber-50/50 dark:border-amber-900 dark:bg-amber-950/30\",\n success:\n \"border-emerald-200 bg-emerald-50/50 dark:border-emerald-900 dark:bg-emerald-950/30\",\n error:\n \"border-red-200 bg-red-50/50 dark:border-red-900 dark:bg-red-950/30\",\n },\n interactive: {\n true: \"transition-shadow duration-150 hover:shadow-[0_4px_6px_rgb(0_0_0/0.06)]\",\n false: \"\",\n },\n },\n defaultVariants: { tone: \"default\", interactive: false },\n },\n);\n\nexport interface CardProps\n extends HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {}\n\nexport function Card({ className, tone, interactive, ...props }: CardProps) {\n return (\n <div className={cn(cardVariants({ tone, interactive }), className)} {...props} />\n );\n}\n\nexport function CardHeader({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn(\"mb-3 flex items-center justify-between\", className)} {...props} />;\n}\n\nexport function CardTitle({ className, ...props }: HTMLAttributes<HTMLHeadingElement>) {\n return (\n <h3\n className={cn(\"text-lg font-semibold text-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport function CardStatLabel({\n className,\n ...props\n}: HTMLAttributes<HTMLHeadingElement>) {\n return (\n <h3\n className={cn(\"text-sm font-medium text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport function CardValue({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn(\"text-3xl font-bold text-foreground\", className)} {...props} />;\n}\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Trash2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/trash-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Trash2 = createLucideIcon('Trash2', [\n ['path', { d: 'M3 6h18', key: 'd0wm0j' }],\n ['path', { d: 'M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6', key: '4alrt4' }],\n ['path', { d: 'M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2', key: 'v07s0e' }],\n ['line', { x1: '10', x2: '10', y1: '11', y2: '17', key: '1uufr5' }],\n ['line', { x1: '14', x2: '14', y1: '11', y2: '17', key: 'xtxkd' }],\n]);\n\nexport default Trash2;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('Plus', [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n]);\n\nexport default Plus;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/pencil\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Pencil = createLucideIcon('Pencil', [\n [\n 'path',\n {\n 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',\n key: '1a8usu',\n },\n ],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n]);\n\nexport default Pencil;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name FolderOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/folder-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FolderOpen = createLucideIcon('FolderOpen', [\n [\n 'path',\n {\n 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',\n key: 'usdka0',\n },\n ],\n]);\n\nexport default FolderOpen;\n","import { api } from \"@/lib/api-client\";\nimport type { DirectoryPickerResponse } from \"@/lib/api-types\";\n\nexport async function pickDirectoryFromDesktop({\n title,\n defaultPath,\n}: {\n title: string;\n defaultPath?: string;\n}): Promise<string | null> {\n const response = await api.post<DirectoryPickerResponse>(\n \"/system/pick-directory\",\n {\n title,\n ...(defaultPath ? { defaultPath } : {}),\n },\n );\n\n if (response.status === \"selected\" && response.path) {\n return response.path;\n }\n if (response.status === \"cancelled\") {\n return null;\n }\n throw new Error(response.message ?? \"Folder picker is unavailable.\");\n}\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name RotateCcw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/rotate-ccw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RotateCcw = createLucideIcon('RotateCcw', [\n ['path', { d: 'M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8', key: '1357e3' }],\n ['path', { d: 'M3 3v5h5', key: '1xhq8a' }],\n]);\n\nexport default RotateCcw;\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { FolderOpen, Loader2 } from \"lucide-react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { pickDirectoryFromDesktop } from \"@/lib/directory-picker\";\nimport { cn } from \"@/lib/utils\";\n\nexport function DirectoryPickerField({\n id,\n value,\n onChange,\n title,\n placeholder = \"Choose a folder...\",\n defaultPath,\n disabled = false,\n className,\n inputClassName,\n buttonLabel = \"Choose\",\n}: {\n id?: string;\n value: string;\n onChange: (value: string) => void;\n title: string;\n placeholder?: string;\n defaultPath?: string;\n disabled?: boolean;\n className?: string;\n inputClassName?: string;\n buttonLabel?: string;\n}) {\n const [picking, setPicking] = useState(false);\n const [pickerError, setPickerError] = useState<string | null>(null);\n\n const handlePick = async () => {\n setPicking(true);\n setPickerError(null);\n try {\n const selected = await pickDirectoryFromDesktop({\n title,\n defaultPath: value.trim() || defaultPath,\n });\n if (selected) onChange(selected);\n } catch (err) {\n setPickerError(\n err instanceof Error ? err.message : \"Folder picker is unavailable.\",\n );\n } finally {\n setPicking(false);\n }\n };\n\n return (\n <div className={cn(\"space-y-1\", className)}>\n <div className=\"flex flex-col gap-2 sm:flex-row\">\n <Input\n id={id}\n value={value}\n onChange={(e) => {\n onChange(e.target.value);\n setPickerError(null);\n }}\n placeholder={placeholder}\n className={cn(\"font-mono text-sm\", inputClassName)}\n disabled={disabled || picking}\n />\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handlePick}\n disabled={disabled || picking}\n className=\"shrink-0 gap-2\"\n >\n {picking ? (\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n ) : (\n <FolderOpen className=\"h-4 w-4\" />\n )}\n {picking ? \"Opening...\" : buttonLabel}\n </Button>\n </div>\n {pickerError && (\n <p className=\"text-xs text-destructive\">{pickerError}</p>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface ConnectionsSectionHeaderProps {\n title: string;\n description?: ReactNode;\n /** Number of entries that are live/healthy. */\n healthy: number;\n /** Total entries in this section. */\n total: number;\n /** Optional short note about the remainder, e.g. \"WhatsApp needs re-pairing\". */\n attention?: string | null;\n /** Optional right-aligned action element (e.g. an \"Add\" button). */\n actions?: ReactNode;\n}\n\nexport function ConnectionsSectionHeader({\n title,\n description,\n healthy,\n total,\n attention,\n actions,\n}: ConnectionsSectionHeaderProps) {\n const allHealthy = total > 0 && healthy === total;\n const noneHealthy = total > 0 && healthy === 0;\n\n return (\n <div className=\"space-y-1\">\n <div className=\"flex items-baseline justify-between gap-3\">\n <h1 className=\"text-2xl font-semibold text-foreground\">{title}</h1>\n <div className=\"flex items-center gap-3\">\n {total > 0 && (\n <span\n className={cn(\n \"text-xs font-medium tabular-nums\",\n allHealthy\n ? \"text-emerald-600 dark:text-emerald-400\"\n : noneHealthy\n ? \"text-muted-foreground\"\n : \"text-amber-600 dark:text-amber-400\",\n )}\n >\n {healthy}/{total} connected\n </span>\n )}\n {actions}\n </div>\n </div>\n {description && (\n <p className=\"max-w-3xl text-sm text-muted-foreground\">{description}</p>\n )}\n {attention && (\n <p className=\"text-xs text-amber-600 dark:text-amber-400\">\n {attention}\n </p>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Card } from \"@/components/ui/card\";\nimport { cn } from \"@/lib/utils\";\nimport type {\n IntegrationStatus as HealthIntegrationStatus,\n MessagingHealthStatus,\n} from \"@/lib/api-types\";\n\n// ── Status types ──\n\nexport type ConnectionStatus =\n | \"connected\"\n | \"configured\"\n | \"connecting\"\n | \"needs-setup\"\n | \"error\"\n | \"disabled\";\n\nconst STATUS_BADGE: Record<ConnectionStatus, { variant: \"green\" | \"red\" | \"gray\" | \"amber\"; label: string }> = {\n connected: { variant: \"green\", label: \"Connected\" },\n configured: { variant: \"amber\", label: \"Configured\" },\n connecting: { variant: \"amber\", label: \"Connecting…\" },\n \"needs-setup\": { variant: \"gray\", label: \"Not Configured\" },\n error: { variant: \"red\", label: \"Error\" },\n disabled: { variant: \"gray\", label: \"Disabled\" },\n};\n\nfunction cardTone(status: ConnectionStatus) {\n if (status === \"connected\") return \"success\" as const;\n if (status === \"error\") return \"error\" as const;\n return \"default\" as const;\n}\n\n// ── Status derivation helpers ──\n\n/** Derive card status from the health API's integration status object. */\nexport function deriveIntegrationStatus(\n s: HealthIntegrationStatus | undefined,\n): ConnectionStatus {\n if (!s) return \"needs-setup\";\n if (!s.configured) return \"needs-setup\";\n if (s.error) return \"error\";\n if (s.connected) return \"connected\";\n return \"configured\";\n}\n\n/** Derive card status from the health API's messaging status object. */\nexport function deriveMessagingStatus(\n s: MessagingHealthStatus | undefined,\n): ConnectionStatus {\n if (!s) return \"needs-setup\";\n if (s.runtimeState === \"not_configured\") return \"needs-setup\";\n if (s.runtimeState === \"connecting\") return \"connecting\";\n if (s.runtimeState === \"error\") return \"error\";\n if (s.runtimeState === \"ok\") return \"connected\";\n return \"configured\";\n}\n\n/** Derive card status from a simple boolean config flag (e.g. GitHub). */\nexport function deriveConfiguredStatus(configured: boolean): ConnectionStatus {\n return configured ? \"configured\" : \"needs-setup\";\n}\n\n/** Build the standard metadata lines for a messaging channel card. */\nexport function messagingMetadata(status: MessagingHealthStatus | undefined) {\n if (!status) return undefined;\n return [\n { label: \"Owner configured\", value: status.ownerConfigured ? \"yes\" : \"no\" },\n { label: \"Owner channel known\", value: status.ownerChannelKnown ? \"yes\" : \"no\" },\n { label: \"Reminder eligible\", value: status.notificationEligible ? \"yes\" : \"no\" },\n { label: \"Last inbound\", value: status.lastInboundAt ?? \"—\" },\n ];\n}\n\n// ── ConnectionCard component ──\n\nexport interface ConnectionCardProps {\n name: string;\n icon: ReactNode;\n status: ConnectionStatus;\n /** Error message from health API. */\n error?: string | null;\n /** Key-value metadata lines shown below the header. */\n metadata?: Array<{ label: string; value: string }>;\n /** Expandable config/setup content. */\n children?: ReactNode;\n className?: string;\n}\n\nexport function ConnectionCard({\n name,\n icon,\n status,\n error,\n metadata,\n children,\n className,\n}: ConnectionCardProps) {\n const badge = STATUS_BADGE[status];\n\n return (\n <Card tone={cardTone(status)} className={cn(\"relative\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between mb-2\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground\">{icon}</span>\n <h3 className=\"text-sm font-medium text-foreground\">{name}</h3>\n </div>\n <Badge variant={badge.variant}>{badge.label}</Badge>\n </div>\n\n {/* Error from health API — suppressed during in-progress connecting state so\n transient auth/pairing messages don't render as red errors. */}\n {error && status !== \"connecting\" && (\n <p className=\"mb-2 text-xs text-red-600 dark:text-red-400\">{error}</p>\n )}\n\n {/* Metadata */}\n {metadata && metadata.length > 0 && (\n <div className=\"mb-3 space-y-0.5\">\n {metadata.map((m) => (\n <div key={m.label} className=\"flex items-center justify-between text-xs\">\n <span className=\"text-muted-foreground\">{m.label}</span>\n <span className=\"text-foreground\">{m.value}</span>\n </div>\n ))}\n </div>\n )}\n\n {/* Children */}\n {children}\n </Card>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name KeyRound\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/key-round\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst KeyRound = createLucideIcon('KeyRound', [\n [\n 'path',\n {\n 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',\n key: '1s6t7t',\n },\n ],\n ['circle', { cx: '16.5', cy: '7.5', r: '.5', fill: 'currentColor', key: 'w0ekpg' }],\n]);\n\nexport default KeyRound;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name CircleX\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/circle-x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleX = createLucideIcon('CircleX', [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'm15 9-6 6', key: '1uzhvr' }],\n ['path', { d: 'm9 9 6 6', key: 'z0biqf' }],\n]);\n\nexport default CircleX;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ShieldCheck\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/shield-check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ShieldCheck = createLucideIcon('ShieldCheck', [\n [\n 'path',\n {\n 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',\n key: 'oel41y',\n },\n ],\n ['path', { d: 'm9 12 2 2 4-4', key: 'dzmm74' }],\n]);\n\nexport default ShieldCheck;\n","\"use client\";\n\nimport { useQuery } from \"@tanstack/react-query\";\nimport { api } from \"@/lib/api-client\";\nimport type { ProcessConfigResponse } from \"@/lib/api-types\";\n\nexport function useProcessConfig(options?: { enabled?: boolean }) {\n return useQuery({\n queryKey: [\"process-config\"],\n queryFn: () => api.get<ProcessConfigResponse>(\"/process-config\"),\n enabled: options?.enabled ?? true,\n staleTime: 60_000,\n });\n}\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name RefreshCw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/refresh-cw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RefreshCw = createLucideIcon('RefreshCw', [\n ['path', { d: 'M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8', key: 'v9h5vc' }],\n ['path', { d: 'M21 3v5h-5', key: '1q7to0' }],\n ['path', { d: 'M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16', key: '3uifl3' }],\n ['path', { d: 'M8 16H3v5', key: '1cv678' }],\n]);\n\nexport default RefreshCw;\n","import type { BackendId } from \"@aitne/shared\";\n\nexport const BACKEND_LABELS: Record<BackendId, string> = {\n claude: \"Claude Code\",\n codex: \"OpenAI Codex\",\n gemini: \"Gemini CLI\",\n};\n\nconst BACKEND_SHORT_LABELS: Record<BackendId, string> = {\n claude: \"Claude\",\n codex: \"Codex\",\n gemini: \"Gemini\",\n};\n\n/**\n * Provider-friendly labels for backend / API-key UIs. Users think in\n * terms of \"I have an Anthropic API key\", not \"I have a Claude Code\n * API key\" — so surfaces that name the upstream provider (setup\n * wizard backend step, /settings/models API-key panel) should prefer\n * this set over BACKEND_LABELS (which names the CLI product).\n */\nexport const BACKEND_PROVIDER_LABELS: Record<BackendId, string> = {\n claude: \"Claude (Anthropic)\",\n codex: \"ChatGPT (OpenAI)\",\n gemini: \"Gemini (Google)\",\n};\n\n/** Short provider name used in compact badges (e.g. \"ChatGPT\" not \"OpenAI Codex\"). */\nexport const BACKEND_PROVIDER_SHORT: Record<BackendId, string> = {\n claude: \"Claude\",\n codex: \"ChatGPT\",\n gemini: \"Gemini\",\n};\n\n/**\n * Primary brand color per backend, chosen to match each vendor's actual\n * app-icon hue so charts read as \"that's the Claude backend\" at a glance.\n * - Claude — the warm red-orange of the Anthropic macOS icon.\n * - Codex (ChatGPT) — ChatGPT's icon is white, so we use a bright\n * pink-leaning fuchsia (slightly purple-tinted pink).\n * - Gemini — the vivid Google Blue anchoring the Gemini spark gradient.\n */\nexport const BACKEND_COLORS: Record<BackendId, string> = {\n claude: \"#E15B40\", // Anthropic app-icon red-orange\n codex: \"#D946EF\", // bright fuchsia (pink with purple tint)\n gemini: \"#1C69FF\", // vivid Google Blue\n};\n\n/**\n * A small palette of distinct shades per backend family. Used to\n * differentiate individual models within the same backend on charts\n * like the Model Breakdown pie — the eye can still group Claude/Codex/\n * Gemini by hue family, but each model gets its own readable shade.\n *\n * Each palette is ordered dark→light and contains the primary brand\n * color in the middle, so a single-model render picks the brand color\n * and small groups (2–4 models) get colors spread across the palette\n * via `assignModelColors` for maximum contrast.\n */\nexport const BACKEND_MODEL_PALETTES: Record<BackendId, string[]> = {\n // Anthropic red-orange / coral family.\n claude: [\"#7C2D12\", \"#B54B2D\", \"#E15B40\", \"#F97316\", \"#FDBA74\"],\n // OpenAI-ish pink-purple / fuchsia family.\n codex: [\"#86198F\", \"#A21CAF\", \"#D946EF\", \"#E879F9\", \"#F5D0FE\"],\n // Google blue family.\n gemini: [\"#1E3A8A\", \"#1D4ED8\", \"#1C69FF\", \"#60A5FA\", \"#93C5FD\"],\n};\n\nconst OTHER_MODEL_PALETTE = [\"#6b7280\", \"#9ca3af\", \"#4b5563\", \"#374151\"];\n\n/**\n * Qualitative palette for categorical charts (e.g. event-type breakdown)\n * where bars have no intrinsic backend affiliation but should be visually\n * distinguishable from each other.\n */\nexport const CHART_CATEGORY_PALETTE: string[] = [\n \"#3b82f6\", // blue\n \"#10b981\", // emerald\n \"#f59e0b\", // amber\n \"#8b5cf6\", // violet\n \"#ec4899\", // pink\n \"#14b8a6\", // teal\n \"#f97316\", // orange\n \"#6366f1\", // indigo\n \"#ef4444\", // red\n \"#22c55e\", // green\n];\n\nexport const BACKEND_BADGE_VARIANTS: Record<BackendId, \"orange\" | \"pink\" | \"blue\"> = {\n claude: \"orange\",\n codex: \"pink\",\n gemini: \"blue\",\n};\n\nconst PROCESS_LABELS: Record<string, string> = {\n \"routine.morning_routine\": \"Morning Routine\",\n \"routine.evening_review\": \"Evening Review\",\n \"routine.weekly_review\": \"Weekly Review\",\n \"routine.monthly_review\": \"Monthly Review\",\n \"routine.hourly_check\": \"Hourly Check\",\n \"message.dm\": \"Direct Messages\",\n \"message.mention\": \"Mentions\",\n \"dashboard.chat\": \"Dashboard Chat\",\n \"agent.task\": \"Scheduled Tasks\",\n \"calendar.change\": \"Calendar Events\",\n \"gmail_classify\": \"Gmail Classification\",\n \"github.pull_request.review_requested\": \"GitHub Review Requests\",\n \"github.assigned\": \"GitHub Assignments\",\n \"github.security_alert\": \"GitHub Security Alerts\",\n \"github.workflow_run.failed\": \"GitHub CI Failures\",\n};\n\nexport function getBackendLabel(backendId: BackendId): string {\n return BACKEND_LABELS[backendId];\n}\n\nexport function getBackendShortLabel(backendId: BackendId): string {\n return BACKEND_SHORT_LABELS[backendId];\n}\n\nexport function getProcessLabel(processKey: string): string {\n return PROCESS_LABELS[processKey] ?? processKey;\n}\n\nexport function formatModelName(modelId: string | null | undefined): string {\n if (!modelId) return \"Not set\";\n\n return modelId\n .replace(/^claude-/, \"Claude \")\n .replace(/^gpt-/, \"GPT-\")\n .replace(/^gemini-/, \"Gemini \")\n .replace(/-/g, \" \")\n .replace(/\\bpreview\\b/gi, \"(preview)\")\n .replace(/\\bpro\\b/gi, \"Pro\")\n .replace(/\\bflash\\b/gi, \"Flash\")\n .replace(/\\blite\\b/gi, \"Lite\")\n .replace(/\\bmini\\b/gi, \"Mini\")\n .replace(/\\bcodex\\b/gi, \"Codex\")\n .replace(/\\bopus\\b/gi, \"Opus\")\n .replace(/\\bsonnet\\b/gi, \"Sonnet\")\n .replace(/\\bhaiku\\b/gi, \"Haiku\")\n .replace(/\\s+/g, \" \")\n .trim();\n}\n\n/**\n * Compact model label for badge display (e.g. \"Opus 4.7\", \"GPT-5.5\").\n * Handles both legacy short forms (\"opus\") and full IDs (\"claude-opus-4-6\").\n */\nexport function formatShortModelName(modelId: string | null | undefined): string {\n if (!modelId) return \"unknown\";\n\n // Legacy short forms from old DB rows\n if (modelId === \"opus\") return \"Opus\";\n if (modelId === \"sonnet\") return \"Sonnet\";\n\n let s = modelId\n .replace(/-\\d{8,}$/, \"\") // drop date suffix (e.g. -20251001)\n .replace(/^claude-/, \"\") // \"claude-opus-4-6\" → \"opus-4-6\"\n .replace(/(\\d+)-(\\d+)(?![-\\d])/g, \"$1.$2\") // version: \"4-6\" → \"4.6\"\n .replace(/-/g, \" \"); // remaining dashes → spaces\n\n // Apply prefix branding after dashes are resolved\n if (modelId.startsWith(\"gpt-\")) s = `GPT-${s.replace(/^gpt\\s*/i, \"\")}`;\n if (modelId.startsWith(\"gemini-\")) s = s.replace(/^gemini\\s*/i, \"Gemini \");\n\n return s\n .replace(/\\bopus\\b/gi, \"Opus\")\n .replace(/\\bsonnet\\b/gi, \"Sonnet\")\n .replace(/\\bhaiku\\b/gi, \"Haiku\")\n .replace(/\\bpro\\b/gi, \"Pro\")\n .replace(/\\bflash\\b/gi, \"Flash\")\n .replace(/\\blite\\b/gi, \"Lite\")\n .replace(/\\bmini\\b/gi, \"Mini\")\n .replace(/\\s+/g, \" \")\n .trim();\n}\n\n/** Badge variant for a model string, resolved via backend detection. */\nexport function modelBadgeVariant(modelId: string | null | undefined): \"orange\" | \"pink\" | \"blue\" | \"gray\" {\n if (!modelId) return \"gray\";\n const backend = detectBackendFromModel(modelId);\n return backend ? BACKEND_BADGE_VARIANTS[backend] : \"gray\";\n}\n\n/**\n * Parsed entry from `agent_actions.model_usage_json` — what the SDK actually\n * billed per underlying model. The SDK can silently route a request for one\n * model to a sibling (e.g. opus-4-7 → opus-4-6[1m]); this struct surfaces\n * that, so the dashboard can show the real model and matching cost.\n */\nexport interface BilledModelEntry {\n modelId: string;\n inputTokens: number;\n outputTokens: number;\n costUsd: number;\n}\n\n/**\n * Parse the JSON-encoded modelUsage map. Returns entries sorted by costUsd\n * desc so the dominant model is first (the one a single-row badge should\n * use). Returns an empty array on malformed input.\n */\nexport function parseModelUsage(json: string | null | undefined): BilledModelEntry[] {\n if (!json) return [];\n let raw: unknown;\n try {\n raw = JSON.parse(json);\n } catch {\n return [];\n }\n if (!raw || typeof raw !== \"object\") return [];\n\n const entries: BilledModelEntry[] = [];\n for (const [modelId, value] of Object.entries(raw)) {\n if (!value || typeof value !== \"object\") continue;\n const v = value as Record<string, unknown>;\n entries.push({\n modelId,\n inputTokens: typeof v.inputTokens === \"number\" ? v.inputTokens : 0,\n outputTokens: typeof v.outputTokens === \"number\" ? v.outputTokens : 0,\n costUsd: typeof v.costUsd === \"number\" ? v.costUsd : 0,\n });\n }\n return entries.sort((a, b) => b.costUsd - a.costUsd);\n}\n\n/**\n * Return the model id the dashboard should badge for a row. Prefers the\n * dominant entry from `model_usage_json` (the SDK-billed model — what\n * actually drove the cost). Falls back to `model_used` (the requested\n * model) when modelUsage is missing or empty.\n */\nexport function pickDisplayModel(\n modelUsed: string | null | undefined,\n modelUsageJson: string | null | undefined,\n): string | null {\n const entries = parseModelUsage(modelUsageJson);\n if (entries.length > 0 && entries[0]) {\n return entries[0].modelId;\n }\n return modelUsed ?? null;\n}\n\nexport function detectBackendFromModel(modelId: string): BackendId | null {\n if (!modelId) return null;\n const lower = modelId.toLowerCase();\n if (\n lower.includes(\"claude\") ||\n lower.includes(\"sonnet\") ||\n lower.includes(\"opus\") ||\n lower.includes(\"haiku\")\n ) {\n return \"claude\";\n }\n if (lower.includes(\"gemini\")) return \"gemini\";\n if (\n lower.includes(\"gpt\") ||\n lower.includes(\"codex\") ||\n lower.includes(\"o3\") ||\n lower.includes(\"o4\")\n ) {\n return \"codex\";\n }\n return null;\n}\n\n/**\n * Assign a distinct color to each model. Models are grouped by backend\n * and sorted by name for stable assignment across renders; within each\n * group, colors are spread across `BACKEND_MODEL_PALETTES` so that small\n * groups (e.g. 2 Claude models) use non-adjacent palette slots and read\n * as clearly different shades, rather than two neighbouring darks.\n *\n * - 1 model → the brand-color slot (palette midpoint)\n * - 2 models → slots at ~1/4 and ~3/4 of the palette (dark + light)\n * - 3 models → evenly spaced across the palette\n * - 4+ models → spread evenly, wrapping if the group exceeds the palette\n */\nexport function assignModelColors(models: string[]): Record<string, string> {\n const byBackend = new Map<BackendId | \"other\", string[]>();\n for (const model of models) {\n if (!model) continue;\n const backend = detectBackendFromModel(model) ?? \"other\";\n const bucket = byBackend.get(backend) ?? [];\n bucket.push(model);\n byBackend.set(backend, bucket);\n }\n\n const result: Record<string, string> = {};\n for (const [backend, list] of byBackend) {\n list.sort((a, b) => a.localeCompare(b));\n const palette =\n backend === \"other\" ? OTHER_MODEL_PALETTE : BACKEND_MODEL_PALETTES[backend];\n const n = list.length;\n list.forEach((model, i) => {\n let idx: number;\n if (n >= palette.length) {\n // Group larger than the palette — wrap around.\n idx = i % palette.length;\n } else if (n === 1) {\n // Single model → use the brand-color slot (palette midpoint).\n idx = Math.floor(palette.length / 2);\n } else {\n // Small group → spread across the palette so shades are distinct.\n idx = Math.floor(((i + 0.5) * palette.length) / n);\n }\n result[model] = palette[idx]!;\n });\n }\n return result;\n}\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Bot\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/bot\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Bot = createLucideIcon('Bot', [\n ['path', { d: 'M12 8V4H8', key: 'hb8ula' }],\n ['rect', { width: '16', height: '12', x: '4', y: '8', rx: '2', key: 'enze0r' }],\n ['path', { d: 'M2 14h2', key: 'vft8re' }],\n ['path', { d: 'M20 14h2', key: '4cs60a' }],\n ['path', { d: 'M15 13v2', key: '1xurst' }],\n ['path', { d: 'M9 13v2', key: 'rq6x2g' }],\n]);\n\nexport default Bot;\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { Bot, Loader2, Pencil, Save, XCircle } from \"lucide-react\";\nimport type { BackendId, BackendModel } from \"@aitne/shared\";\nimport { Card, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Button } from \"@/components/ui/button\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Alert } from \"@/components/ui/alert\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { ApiError, api } from \"@/lib/api-client\";\nimport { useBackends } from \"@/lib/hooks/use-backends\";\nimport { useProcessConfig } from \"@/lib/hooks/use-process-config\";\nimport {\n BACKEND_BADGE_VARIANTS,\n formatModelName,\n getBackendLabel,\n} from \"@/lib/backend-ui\";\n\ninterface ProcessModelCardProps {\n processKey: string;\n title?: string;\n description?: string;\n}\n\nfunction getModelsForTier(models: BackendModel[], tier: \"lite\" | \"medium\" | \"high\"): BackendModel[] {\n const tierModels = models.filter((m) => m.tier === tier);\n return tierModels.length > 0 ? tierModels : models;\n}\n\nexport function ProcessModelCard({\n processKey,\n title = \"AI Model\",\n description,\n}: ProcessModelCardProps) {\n const queryClient = useQueryClient();\n const { data: backendsData } = useBackends();\n const { data: processConfigData } = useProcessConfig();\n\n const [editing, setEditing] = useState(false);\n const [draftBackend, setDraftBackend] = useState<BackendId | null>(null);\n const [draftModel, setDraftModel] = useState<string | null>(null);\n const [saving, setSaving] = useState(false);\n const [feedback, setFeedback] = useState<{\n type: \"success\" | \"error\";\n message: string;\n } | null>(null);\n\n const configOrUndef = processConfigData?.configs.find((c) => c.processKey === processKey);\n const backendMap = new Map((backendsData?.backends ?? []).map((b) => [b.id, b]));\n const enabledBackends = (backendsData?.backends ?? []).filter((b) => b.enabled);\n\n if (!backendsData || !processConfigData || !configOrUndef) {\n return null;\n }\n\n // Narrowed reference — TS tracks this as non-undefined after the guard above.\n const config = configOrUndef;\n\n const currentBackend = backendMap.get(config.mainBackend);\n const currentModelLabel =\n currentBackend?.models.find((m) => m.modelId === config.mainModel)?.label ??\n formatModelName(config.mainModel);\n\n const draftBackendData = draftBackend ? backendMap.get(draftBackend) : null;\n const availableModels = draftBackendData?.models ?? [];\n\n function beginEdit() {\n setDraftBackend(config.mainBackend);\n setDraftModel(config.mainModel);\n setFeedback(null);\n setEditing(true);\n }\n\n function cancelEdit() {\n setEditing(false);\n setDraftBackend(null);\n setDraftModel(null);\n }\n\n function handleBackendChange(nextId: BackendId) {\n const backend = backendMap.get(nextId);\n if (!backend) return;\n setDraftBackend(nextId);\n const tierModels = getModelsForTier(backend.models, config.defaultTier);\n setDraftModel(tierModels[0]?.modelId ?? backend.models[0]?.modelId ?? \"\");\n }\n\n async function save() {\n if (!draftBackend || !draftModel) return;\n setSaving(true);\n setFeedback(null);\n try {\n await api.put(`/process-config/${processKey}`, {\n mainBackend: draftBackend,\n mainModel: draftModel,\n fallbackBackend: config.fallbackBackend,\n fallbackModel: config.fallbackModel,\n maxTurns: config.maxTurns,\n maxBudgetUsd: config.maxBudgetUsd,\n });\n await queryClient.invalidateQueries({ queryKey: [\"process-config\"] });\n setFeedback({ type: \"success\", message: \"Saved\" });\n setEditing(false);\n } catch (err) {\n const body =\n err instanceof ApiError ? (err.body as Record<string, unknown> | null) : null;\n const message =\n typeof body?.error === \"string\"\n ? body.error\n : err instanceof Error\n ? err.message\n : \"Save failed\";\n setFeedback({ type: \"error\", message });\n } finally {\n setSaving(false);\n }\n }\n\n return (\n <Card>\n <CardHeader>\n <div className=\"flex items-center gap-2\">\n <Bot className=\"h-4 w-4 text-muted-foreground\" />\n <CardTitle className=\"text-base\">{title}</CardTitle>\n {config.updatedBy === \"user\" && (\n <Badge variant=\"blue\" className=\"text-xs\">\n Custom\n </Badge>\n )}\n </div>\n {!editing && (\n <Button variant=\"ghost\" size=\"sm\" onClick={beginEdit} className=\"h-8\">\n <Pencil className=\"h-3.5 w-3.5\" />\n Edit\n </Button>\n )}\n </CardHeader>\n\n {!editing && (\n <div className=\"space-y-2\">\n <div className=\"flex flex-wrap items-center gap-2 text-sm\">\n <Badge variant={BACKEND_BADGE_VARIANTS[config.mainBackend]}>\n {getBackendLabel(config.mainBackend)}\n </Badge>\n <span className=\"text-muted-foreground\">{currentModelLabel}</span>\n <Badge\n variant={\n config.defaultTier === \"high\"\n ? \"purple\"\n : config.defaultTier === \"medium\"\n ? \"blue\"\n : \"default\"\n }\n className=\"text-xs\"\n >\n {config.defaultTier}\n </Badge>\n </div>\n {description && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n </div>\n )}\n\n {editing && (\n <div className=\"mt-1 space-y-3\">\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <div className=\"space-y-1.5\">\n <p className=\"text-xs font-medium text-muted-foreground\">Backend</p>\n <Select\n value={draftBackend ?? \"\"}\n onValueChange={(v) => handleBackendChange(v as BackendId)}\n >\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {enabledBackends.map((b) => (\n <SelectItem key={b.id} value={b.id}>\n {getBackendLabel(b.id)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"space-y-1.5\">\n <p className=\"text-xs font-medium text-muted-foreground\">Model</p>\n <Select\n value={draftModel ?? \"\"}\n onValueChange={(v) => setDraftModel(v)}\n >\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {availableModels.map((m) => (\n <SelectItem key={m.modelId} value={m.modelId}>\n {m.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n <div className=\"flex justify-end gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={cancelEdit}\n disabled={saving}\n >\n <XCircle className=\"h-3.5 w-3.5\" />\n Cancel\n </Button>\n <Button\n size=\"sm\"\n onClick={() => { void save(); }}\n disabled={saving || !draftModel}\n >\n {saving ? (\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n ) : (\n <Save className=\"h-3.5 w-3.5\" />\n )}\n Save\n </Button>\n </div>\n </div>\n )}\n\n {feedback && (\n <Alert\n variant={feedback.type === \"success\" ? \"success\" : \"error\"}\n className=\"mt-3\"\n >\n {feedback.message}\n </Alert>\n )}\n </Card>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Play\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/play\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Play = createLucideIcon('Play', [\n ['polygon', { points: '6 3 20 12 6 21 6 3', key: '1oa8hb' }],\n]);\n\nexport default Play;\n","\"use client\";\n\nimport { useQuery, useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { api } from \"@/lib/api-client\";\n\n// ── DTO mirrors of the daemon's repositories-store.ts ──\n\nexport type RepositoryClassification = \"project\" | \"repo-only\";\nexport type RepositoryCategory =\n | \"work\"\n | \"personal\"\n | \"research\"\n | \"client\"\n | \"other\";\nexport type RepositoryPollPriority = \"high\" | \"normal\";\nexport type TriggerWorkdirMode = \"temp\" | \"local-clone\";\nexport type TriggerBackend = \"claude\" | \"codex\" | \"gemini\";\nexport type LastScanStatus = \"ok\" | \"failed\" | \"skipped_no_activity\" | null;\n\nexport interface RepositoryDTO {\n id: string;\n githubOwner: string | null;\n githubRepo: string | null;\n githubAccount: string | null;\n localPath: string | null;\n localOnly: boolean;\n displayName: string | null;\n classification: RepositoryClassification;\n category: RepositoryCategory;\n pollPriority: RepositoryPollPriority;\n pollIntervalSec: number | null;\n slug: string;\n createdAt: number;\n updatedAt: number;\n}\n\nexport interface RepositoryTriggerDTO {\n id: string;\n repositoryId: string;\n name: string;\n enabled: boolean;\n eventType: string;\n filters: Record<string, unknown>;\n backend: TriggerBackend;\n model: string;\n workdirMode: TriggerWorkdirMode;\n prompt: string;\n instructionMd: string | null;\n lastFiredAt: number | null;\n fireCount: number;\n createdAt: number;\n updatedAt: number;\n}\n\nexport interface RepositoryManagementDTO {\n repositoryId: string;\n enabled: boolean;\n initCompletedAt: number | null;\n lastScanAt: number | null;\n lastScanStatus: LastScanStatus;\n scanFailureCount: number;\n createdAt?: number;\n updatedAt?: number;\n}\n\nexport interface ArchitectureRefreshState {\n scheduleId: number;\n status: \"pending\" | \"running\";\n}\n\nexport interface RepositoryManagementResponse {\n management: RepositoryManagementDTO;\n architectureRefresh: ArchitectureRefreshState | null;\n}\n\nexport interface RepositoryCreateInput {\n githubOwner?: string | null;\n githubRepo?: string | null;\n githubAccount?: string | null;\n localPath?: string | null;\n localOnly?: boolean;\n displayName?: string | null;\n classification?: RepositoryClassification;\n category?: RepositoryCategory;\n pollPriority?: RepositoryPollPriority;\n pollIntervalSec?: number | null;\n}\n\nexport type RepositoryUpdateInput = RepositoryCreateInput;\n\nexport interface RepositoryTriggerCreateInput {\n name: string;\n enabled?: boolean;\n eventType: string;\n filters?: Record<string, unknown>;\n backend: TriggerBackend;\n model: string;\n workdirMode: TriggerWorkdirMode;\n prompt: string;\n instructionMd?: string | null;\n}\n\nexport type RepositoryTriggerUpdateInput = Partial<RepositoryTriggerCreateInput>;\n\nexport interface RepositoryRunInput {\n backend: TriggerBackend;\n model: string;\n workdirMode: TriggerWorkdirMode;\n prompt: string;\n instructionMd?: string;\n timeoutMinutes?: number;\n}\n\nexport interface RepositoryManagementRunResult {\n status: \"completed\" | \"scheduled\" | \"skipped_no_activity\";\n correlationId: string;\n result?: \"written\" | \"exists\";\n overviewPath?: string;\n journalPath?: string;\n commitCount?: number;\n prEvents?: number;\n workflowEvents?: number;\n readmeCopiedTo?: string | null;\n architectureScheduleId?: number | null;\n}\n\nexport interface ArchitectureRefreshResult {\n status: \"scheduled\";\n scheduleId: number;\n correlationId: string;\n readmeCopiedTo: string | null;\n}\n\nexport interface RepositoryFilters {\n hasGithub?: boolean;\n hasLocal?: boolean;\n localOnly?: boolean;\n account?: string;\n}\n\nconst REPOS_KEY = [\"repositories\"] as const;\nconst repoKey = (id: string) => [...REPOS_KEY, id] as const;\nconst triggersKey = (id: string) => [...repoKey(id), \"triggers\"] as const;\nconst managementKey = (id: string) => [...repoKey(id), \"management\"] as const;\n\nfunction buildQuery(filters?: RepositoryFilters): Record<string, string | number> | undefined {\n if (!filters) return undefined;\n const out: Record<string, string | number> = {};\n if (filters.hasGithub !== undefined) out.has_github = filters.hasGithub ? \"1\" : \"0\";\n if (filters.hasLocal !== undefined) out.has_local = filters.hasLocal ? \"1\" : \"0\";\n if (filters.localOnly !== undefined) out.local_only = filters.localOnly ? \"1\" : \"0\";\n if (filters.account) out.account = filters.account;\n return Object.keys(out).length > 0 ? out : undefined;\n}\n\n// ── Repositories ──\n\nexport function useRepositories(filters?: RepositoryFilters) {\n return useQuery({\n queryKey: filters ? [...REPOS_KEY, filters] : [...REPOS_KEY],\n queryFn: () =>\n api.get<{ repositories: RepositoryDTO[] }>(\n \"/repositories\",\n buildQuery(filters),\n ),\n staleTime: 30_000,\n });\n}\n\nexport function useRepository(id: string | null | undefined) {\n return useQuery({\n queryKey: id ? repoKey(id) : [...REPOS_KEY, \"missing\"],\n queryFn: () => api.get<{ repository: RepositoryDTO }>(`/repositories/${encodeURIComponent(id!)}`),\n enabled: Boolean(id),\n staleTime: 30_000,\n });\n}\n\nexport function useCreateRepository() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (body: RepositoryCreateInput) =>\n api.post<{ repository: RepositoryDTO }>(\"/repositories\", body),\n onSuccess: () => {\n void qc.invalidateQueries({ queryKey: REPOS_KEY });\n },\n });\n}\n\nexport function useUpdateRepository() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: ({ id, body }: { id: string; body: RepositoryUpdateInput }) =>\n api.patch<{ repository: RepositoryDTO }>(\n `/repositories/${encodeURIComponent(id)}`,\n body,\n ),\n onSuccess: (_data, vars) => {\n void qc.invalidateQueries({ queryKey: REPOS_KEY });\n void qc.invalidateQueries({ queryKey: repoKey(vars.id) });\n },\n });\n}\n\nexport function useDeleteRepository() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (id: string) =>\n api.delete<{ status: \"deleted\" }>(`/repositories/${encodeURIComponent(id)}`),\n onSuccess: () => {\n void qc.invalidateQueries({ queryKey: REPOS_KEY });\n },\n });\n}\n\nexport function useLinkGithub() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: ({\n id,\n owner,\n repo,\n account,\n }: {\n id: string;\n owner: string;\n repo: string;\n account?: string;\n }) =>\n api.post<{ repository: RepositoryDTO }>(\n `/repositories/${encodeURIComponent(id)}/link-github`,\n { owner, repo, account },\n ),\n onSuccess: (_data, vars) => {\n void qc.invalidateQueries({ queryKey: REPOS_KEY });\n void qc.invalidateQueries({ queryKey: repoKey(vars.id) });\n },\n });\n}\n\nexport function useLinkLocal() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: ({ id, localPath }: { id: string; localPath: string }) =>\n api.post<{ repository: RepositoryDTO }>(\n `/repositories/${encodeURIComponent(id)}/link-local`,\n { localPath },\n ),\n onSuccess: (_data, vars) => {\n void qc.invalidateQueries({ queryKey: REPOS_KEY });\n void qc.invalidateQueries({ queryKey: repoKey(vars.id) });\n },\n });\n}\n\nexport function useRunRepository() {\n return useMutation({\n mutationFn: ({ id, body }: { id: string; body: RepositoryRunInput }) =>\n api.post<{ status: \"scheduled\"; correlationId: string }>(\n `/repositories/${encodeURIComponent(id)}/run`,\n body,\n ),\n });\n}\n\n// ── Repository triggers ──\n\nexport function useRepositoryTriggers(repositoryId: string | null | undefined) {\n return useQuery({\n queryKey: repositoryId ? triggersKey(repositoryId) : [...REPOS_KEY, \"missing\", \"triggers\"],\n queryFn: () =>\n api.get<{ triggers: RepositoryTriggerDTO[] }>(\n `/repositories/${encodeURIComponent(repositoryId!)}/triggers`,\n ),\n enabled: Boolean(repositoryId),\n staleTime: 15_000,\n });\n}\n\nexport function useCreateRepoTrigger() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: ({\n repositoryId,\n body,\n }: {\n repositoryId: string;\n body: RepositoryTriggerCreateInput;\n }) =>\n api.post<{ trigger: RepositoryTriggerDTO }>(\n `/repositories/${encodeURIComponent(repositoryId)}/triggers`,\n body,\n ),\n onSuccess: (_data, vars) => {\n void qc.invalidateQueries({ queryKey: triggersKey(vars.repositoryId) });\n },\n });\n}\n\nexport function useUpdateRepoTrigger() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: ({\n repositoryId,\n triggerId,\n body,\n }: {\n repositoryId: string;\n triggerId: string;\n body: RepositoryTriggerUpdateInput;\n }) =>\n api.patch<{ trigger: RepositoryTriggerDTO }>(\n `/repositories/${encodeURIComponent(repositoryId)}/triggers/${encodeURIComponent(triggerId)}`,\n body,\n ),\n onSuccess: (_data, vars) => {\n void qc.invalidateQueries({ queryKey: triggersKey(vars.repositoryId) });\n },\n });\n}\n\nexport function useDeleteRepoTrigger() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: ({\n repositoryId,\n triggerId,\n }: {\n repositoryId: string;\n triggerId: string;\n }) =>\n api.delete<{ status: \"deleted\" }>(\n `/repositories/${encodeURIComponent(repositoryId)}/triggers/${encodeURIComponent(triggerId)}`,\n ),\n onSuccess: (_data, vars) => {\n void qc.invalidateQueries({ queryKey: triggersKey(vars.repositoryId) });\n },\n });\n}\n\nexport function useTestRepoTrigger() {\n return useMutation({\n mutationFn: ({\n repositoryId,\n triggerId,\n eventType,\n payload,\n }: {\n repositoryId: string;\n triggerId: string;\n eventType?: string;\n payload?: Record<string, unknown>;\n }) =>\n api.post<{ matched: boolean; trigger: RepositoryTriggerDTO; eventType: string }>(\n `/repositories/${encodeURIComponent(repositoryId)}/triggers/${encodeURIComponent(triggerId)}/test`,\n { eventType, payload },\n ),\n });\n}\n\nexport function useFireRepoTrigger() {\n return useMutation({\n mutationFn: ({\n repositoryId,\n triggerId,\n }: {\n repositoryId: string;\n triggerId: string;\n }) =>\n api.post<{ status: \"scheduled\"; correlationId: string }>(\n `/repositories/${encodeURIComponent(repositoryId)}/triggers/${encodeURIComponent(triggerId)}/run`,\n {},\n ),\n });\n}\n\n// ── Repository management ──\n\nexport function useRepositoryManagement(repositoryId: string | null | undefined) {\n return useQuery({\n queryKey: repositoryId ? managementKey(repositoryId) : [...REPOS_KEY, \"missing\", \"management\"],\n queryFn: () =>\n api.get<RepositoryManagementResponse>(\n `/repositories/${encodeURIComponent(repositoryId!)}/management`,\n ),\n enabled: Boolean(repositoryId),\n staleTime: 15_000,\n // Poll while an architecture-refresh agent run is pending or running so\n // the dashboard can re-enable buttons promptly when it completes. Idle\n // state stays event-driven (mutation invalidates the key on click).\n refetchInterval: (query) => {\n const data = query.state.data;\n return data?.architectureRefresh ? 3000 : false;\n },\n });\n}\n\nexport function useSetRepositoryManagement() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: ({ id, enabled }: { id: string; enabled: boolean }) =>\n api.put<{ management: RepositoryManagementDTO }>(\n `/repositories/${encodeURIComponent(id)}/management`,\n { enabled },\n ),\n onSuccess: (_data, vars) => {\n void qc.invalidateQueries({ queryKey: managementKey(vars.id) });\n },\n });\n}\n\nexport function useRunRepoManagementInit() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (id: string) =>\n api.post<RepositoryManagementRunResult>(\n `/repositories/${encodeURIComponent(id)}/management/init`,\n {},\n ),\n // Awaiting the refetch ensures the management query latches onto\n // `architectureRefresh != null` before `mutateAsync` resolves, so the\n // UI's \"busy\" state hands off cleanly from `isPending` to the polled\n // in-flight flag without a re-enable flicker. The refetch is best-\n // effort: a transient GET failure must not turn a successful mutation\n // into a perceived failure, so we swallow it — the next poll tick\n // (every 3 s while the row is in-flight) recovers state.\n onSuccess: async (_data, id) => {\n try {\n await qc.refetchQueries({ queryKey: managementKey(id) });\n } catch {\n /* refetch is best-effort; polling will recover state */\n }\n },\n });\n}\n\nexport function useRefreshRepositoryArchitecture() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (id: string) =>\n api.post<ArchitectureRefreshResult>(\n `/repositories/${encodeURIComponent(id)}/management/refresh-architecture`,\n {},\n ),\n onSuccess: async (_data, id) => {\n try {\n await qc.refetchQueries({ queryKey: managementKey(id) });\n } catch {\n /* refetch is best-effort; polling will recover state */\n }\n },\n });\n}\n\nexport function useRunRepoManagementScan() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (id: string) =>\n api.post<RepositoryManagementRunResult>(\n `/repositories/${encodeURIComponent(id)}/management/scan`,\n {},\n ),\n onSuccess: async (_data, id) => {\n try {\n await qc.refetchQueries({ queryKey: managementKey(id) });\n } catch {\n /* refetch is best-effort; polling will recover state */\n }\n },\n });\n}\n\n// ── Helpers ──\n\nexport function repositoryHasGithub(repo: RepositoryDTO): boolean {\n return Boolean(repo.githubOwner && repo.githubRepo);\n}\n\nexport function repositoryHasLocal(repo: RepositoryDTO): boolean {\n return Boolean(repo.localPath);\n}\n\nexport function repositoryDisplayName(repo: RepositoryDTO): string {\n if (repo.displayName) return repo.displayName;\n if (repositoryHasGithub(repo)) return `${repo.githubOwner}/${repo.githubRepo}`;\n if (repo.localPath) {\n const parts = repo.localPath.replace(/[\\\\/]+$/g, \"\").split(/[\\\\/]+/).filter(Boolean);\n return parts[parts.length - 1] ?? repo.localPath;\n }\n return repo.slug;\n}\n\n/** Source prefixes for the observations API tail per repository. */\nexport function observationSourcesForRepo(repo: RepositoryDTO): string[] {\n const sources: string[] = [];\n if (repo.localPath) sources.push(`git:${repo.localPath}`);\n if (repositoryHasGithub(repo)) {\n const slug = `${repo.githubOwner}/${repo.githubRepo}`;\n sources.push(`github:notification:${slug}`);\n sources.push(`github:workflow:${slug}`);\n }\n return sources;\n}\n"],"names":["EmptyState","icon","Icon","title","description","className","children","cardVariants","variants","tone","default","warning","success","error","interactive","true","false","defaultVariants","Card","props","CardHeader","CardTitle","CardStatLabel","CardValue","pickDirectoryFromDesktop","defaultPath","response","post","status","path","Error","message","DirectoryPickerField","id","value","onChange","placeholder","disabled","inputClassName","buttonLabel","picking","setPicking","pickerError","setPickerError","handlePick","selected","trim","err","e","target","type","variant","onClick","ConnectionsSectionHeader","healthy","total","attention","actions","allHealthy","noneHealthy","STATUS_BADGE","connected","label","configured","connecting","cardTone","deriveIntegrationStatus","s","deriveMessagingStatus","runtimeState","deriveConfiguredStatus","messagingMetadata","undefined","ownerConfigured","ownerChannelKnown","notificationEligible","lastInboundAt","ConnectionCard","name","metadata","badge","length","map","m","useProcessConfig","options","queryKey","queryFn","get","enabled","staleTime","BACKEND_LABELS","claude","codex","gemini","BACKEND_SHORT_LABELS","BACKEND_PROVIDER_LABELS","BACKEND_PROVIDER_SHORT","BACKEND_COLORS","BACKEND_MODEL_PALETTES","OTHER_MODEL_PALETTE","CHART_CATEGORY_PALETTE","BACKEND_BADGE_VARIANTS","PROCESS_LABELS","getBackendLabel","backendId","getBackendShortLabel","getProcessLabel","processKey","formatModelName","modelId","replace","formatShortModelName","startsWith","modelBadgeVariant","backend","detectBackendFromModel","parseModelUsage","json","raw","JSON","parse","entries","Object","v","push","inputTokens","outputTokens","costUsd","sort","a","b","pickDisplayModel","modelUsed","modelUsageJson","lower","toLowerCase","includes","assignModelColors","models","byBackend","Map","model","bucket","set","result","list","localeCompare","palette","n","forEach","i","idx","Math","floor","getModelsForTier","tier","tierModels","filter","ProcessModelCard","queryClient","data","backendsData","processConfigData","editing","setEditing","draftBackend","setDraftBackend","draftModel","setDraftModel","saving","setSaving","feedback","setFeedback","configOrUndef","configs","find","c","backendMap","backends","enabledBackends","config","currentBackend","mainBackend","currentModelLabel","mainModel","draftBackendData","availableModels","beginEdit","cancelEdit","handleBackendChange","nextId","defaultTier","save","put","fallbackBackend","fallbackModel","maxTurns","maxBudgetUsd","invalidateQueries","body","updatedBy","size","onValueChange","REPOS_KEY","repoKey","triggersKey","managementKey","buildQuery","filters","out","hasGithub","has_github","hasLocal","has_local","localOnly","local_only","account","keys","useRepositories","useRepository","encodeURIComponent","Boolean","useCreateRepository","qc","mutationFn","onSuccess","useUpdateRepository","patch","_data","vars","useDeleteRepository","delete","useLinkGithub","owner","repo","useLinkLocal","localPath","useRunRepository","useRepositoryTriggers","repositoryId","useCreateRepoTrigger","useUpdateRepoTrigger","triggerId","useDeleteRepoTrigger","useTestRepoTrigger","eventType","payload","useFireRepoTrigger","useRepositoryManagement","refetchInterval","query","state","architectureRefresh","useSetRepositoryManagement","useRunRepoManagementInit","refetchQueries","useRefreshRepositoryArchitecture","useRunRepoManagementScan","repositoryHasGithub","githubOwner","githubRepo","repositoryHasLocal","repositoryDisplayName","displayName","parts","split","slug","observationSourcesForRepo","sources"],"mappings":"wDACA,EAAA,EAAA,CAAA,CAAA,2BAUO,SAAoB,AAAXA,CACdC,KAAMC,CAAI,OACVC,CAAK,aACLC,CAAW,WACXC,CAAS,UACTC,CAAQ,CACQ,EAChB,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CACCD,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,wEACAA,aAGF,CAAA,EAAA,EAAA,GAAA,EAACH,EAAAA,CAAKG,UAAU,8BAChB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEA,UAAU,+BAAuBF,IACnCC,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEC,UAAU,6DAAqDD,IAEnEE,IAGP,4BCpBM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAO,CAAP,SAAO,OAAA,EAAiB,MAAQ,CAAA,CAAA,AACpC,CAAA,AACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AACA,CAAA,AACE,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AACH,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AACP,CAAA,CACF,CAAA,AACA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAA6C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAAA,AAC1E,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAA0B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CACxD,CAAA,CAAA,iECvBD,EAAA,EAAA,CAAA,CAAA,OAIA,IAAMC,EAAe,CAAA,EAHrB,AAGqB,EAHrB,CAAA,CAAA,OAGqB,GAAG,AAAH,EACnB,2DACA,CACEC,SAAU,CACRC,KAAM,CACJC,QAAS,wBACTC,QACE,6EACFC,QACE,qFACFC,MACE,oEACJ,EACAC,YAAa,CACXC,KAAM,0EACNC,MAAO,EACT,CACF,EACAC,gBAAiB,CAAER,KAAM,UAAWK,aAAa,CAAM,CACzD,iBAOK,SAASI,AAAK,WAAEb,CAAS,MAAEI,CAAI,aAAEK,CAAW,CAAE,GAAGK,EAAkB,EACxE,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAId,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAACE,EAAa,MAAEE,cAAMK,CAAY,GAAIT,GAAa,GAAGc,CAAK,EAEjF,iBAEO,SAASC,AAAW,WAAEf,CAAS,CAAE,GAAGc,EAAuC,EAChF,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAId,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,yCAA0CA,GAAa,GAAGc,CAAK,EAC3F,oBAWO,SAASG,AAAc,WAC5BjB,CAAS,CACT,GAAGc,EACgC,EACnC,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CACCd,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,4CAA6CA,GAC1D,GAAGc,CAAK,EAGf,gBAnBO,SAASE,AAAU,WAAEhB,CAAS,CAAE,GAAGc,EAA2C,EACnF,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CACCd,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,wCAAyCA,GACtD,GAAGc,CAAK,EAGf,gBAcO,SAASI,AAAU,WAAElB,CAAS,CAAE,GAAGc,EAAuC,EAC/E,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAId,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,qCAAsCA,GAAa,GAAGc,CAAK,EACvF,4BClDM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAS,CAAT,CAAA,CAAA,OAAS,OAAA,EAAiB,QAAU,CAAA,CAAA,AACxC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CACxC,AADwC,CACvC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAAyC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAAA,AACtE,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAAsC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAAA,AACnE,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAE,CAAA,CAAA,CAAI,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAI,CAAM,CAAA,CAAA,CAAA,CAAA,EAAA,CAAI,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAAA,AAClE,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAE,CAAA,CAAA,CAAI,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAI,CAAM,CAAA,CAAA,CAAA,CAAA,EAAA,CAAI,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,OAAA,CAAS,CAAA,CAClE,CAAA,CAAA,kDCNK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAO,CAAP,SAAO,OAAA,EAAiB,MAAQ,CAAA,CAAA,AACpC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAAA,AACzC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAC1C,CAAA,CAAA,+CCHK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,AAAT,CAAA,CAAA,CAAA,OAAS,OAAA,EAAiB,QAAU,CAAA,CAAA,AACxC,CAAA,AACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AACA,CACE,AADF,CACK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AACH,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AACP,CAAA,CACF,CAAA,AACA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAE,AAAF,EAAK,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAC3C,CAAA,CAAA,iDCTK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAa,CAAb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAa,OAAA,EAAiB,YAAc,CAAA,CAAA,AAChD,CAAA,AACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AACA,CAAA,AACE,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AACH,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AACP,CAAA,CACF,CACD,CAAA,CAAA,sDCrBD,IAAA,EAAA,EAAA,CAAA,CAAA,OAGO,eAAeK,EAAyB,OAC7CrB,CAAK,CACLsB,aAAW,CAIZ,EACC,IAAMC,EAAW,MAAM,EAAA,GAAG,CAACC,IAAI,CAC7B,yBACA,OACExB,EACA,GAAIsB,EAAc,CAAEA,aAAY,EAAI,CAAC,CAAC,AACxC,GAGF,GAAwB,aAApBC,EAASE,MAAM,EAAmBF,EAASG,IAAI,CACjD,CADmD,MAC5CH,EAASG,IAAI,CAEtB,GAAwB,aAAa,CAAjCH,EAASE,MAAM,CACjB,OAAO,IAET,OAAM,AAAIE,MAAMJ,EAASK,OAAO,EAAI,gCACtC,+DCZM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAY,CAAZ,CAAA,CAAA,CAAA,CAAA,CAAA,IAAY,OAAA,EAAiB,WAAa,CAAA,CAAA,AAC9C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAAqD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAAA,AAClF,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAC1C,CAAA,CAAA,sECdD,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,qCAEO,SAASC,AAAqB,IACnCC,CAAE,CACFC,OAAK,UACLC,CAAQ,OACRhC,CAAK,aACLiC,EAAc,oBAAoB,aAClCX,CAAW,UACXY,GAAW,CAAK,WAChBhC,CAAS,gBACTiC,CAAc,aACdC,EAAc,QAAQ,CAYvB,EACC,GAAM,CAACC,EAASC,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACjC,CAACC,EAAaC,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAgB,MAExDC,EAAa,UACjBH,GAAW,GACXE,EAAe,MACf,GAAI,CACF,IAAME,EAAW,MAAM,CAAA,EAAA,EAAA,wBAAA,AAAwB,EAAC,OAC9C1C,EACAsB,YAAaS,EAAMY,IAAI,IAAMrB,CAC/B,GACIoB,GAAUV,EAASU,EACzB,CAAE,MAAOE,EAAK,CACZJ,EACEI,aAAejB,MAAQiB,EAAIhB,OAAO,CAAG,gCAEzC,QAAU,CACRU,GAAW,EACb,CACF,EAEA,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIpC,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,YAAaA,aAC9B,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,4CACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJ4B,GAAIA,EACJC,MAAOA,EACPC,SAAWa,AAAD,IACRb,EAASa,EAAEC,MAAM,CAACf,KAAK,EACvBS,EAAe,KACjB,EACAP,YAAaA,EACb/B,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,oBAAqBiC,GACnCD,SAAUA,GAAYG,IAExB,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CACLU,KAAK,SACLC,QAAQ,UACRC,QAASR,EACTP,SAAUA,GAAYG,EACtBnC,UAAU,2BAETmC,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAACnC,UAAU,yBAEnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAACA,UAAU,YAEvBmC,EAAU,aAAeD,QAG7BG,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAErC,UAAU,oCAA4BqC,MAIjD,6CCpFA,EAAA,EAAA,CAAA,CAAA,yCAeO,SAASW,AAAyB,CACvClD,OAAK,CACLC,aAAW,SACXkD,CAAO,CACPC,OAAK,WACLC,CAAS,SACTC,CAAO,CACuB,EAC9B,IAAMC,EAAaH,EAAQ,GAAKD,IAAYC,EACtCI,EAAcJ,EAAQ,GAAiB,IAAZD,EAEjC,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIjD,UAAU,sBACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,sDACb,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,kDAA0CF,IACxD,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIE,UAAU,oCACZkD,EAAQ,GACP,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CACClD,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,mCACAqD,EACI,yCACAC,EACE,wBACA,gDAGPL,EAAQ,IAAEC,EAAM,gBAGpBE,QAGJrD,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEC,UAAU,mDAA2CD,IAEzDoD,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEnD,UAAU,sDACVmD,MAKX,6CC1DA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAgBA,IAAMI,EAAyG,CAC7GC,UAAW,CAAEV,QAAS,QAASW,MAAO,WAAY,EAClDC,WAAY,CAAEZ,QAAS,QAASW,MAAO,YAAa,EACpDE,WAAY,CAAEb,QAAS,QAASW,MAAO,aAAc,EACrD,cAAe,CAAEX,QAAS,OAAQW,MAAO,gBAAiB,EAC1DjD,MAAO,CAAEsC,QAAS,MAAOW,MAAO,OAAQ,EACxCzB,SAAU,CAAEc,QAAS,OAAQW,MAAO,UAAW,CACjD,0BAgEO,SAASe,AAAe,CAC7BC,MAAI,MACJ7E,CAAI,CACJ2B,QAAM,OACNf,CAAK,UACLkE,CAAQ,UACRzE,CAAQ,WACRD,CAAS,CACW,EACpB,IAAM2E,EAAQpB,CAAY,CAAChC,EAAO,CAElC,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,IAAI,CAAA,CAACnB,KAzEO,AAAXmB,AAAJ,CAyEcqC,YAzEc,GAAO,UAC/BrC,AAAW,SAAS,CAwEDA,EAxEQ,QACxB,UAuEyBvB,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,WAAYA,aAEtD,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,mDACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKA,UAAU,iCAAyBJ,IACzC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGI,UAAU,+CAAuCyE,OAEvD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC3B,QAAS6B,EAAM7B,OAAO,UAAG6B,EAAMlB,KAAK,MAK5CjD,GAAoB,eAAXe,GACR,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEvB,UAAU,uDAA+CQ,IAI7DkE,GAAYA,EAASE,MAAM,CAAG,GAC7B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI5E,UAAU,4BACZ0E,EAASG,GAAG,CAAEC,AAAD,GACZ,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAkB9E,UAAU,sDAC3B,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKA,UAAU,iCAAyB8E,EAAErB,KAAK,GAChD,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKzD,UAAU,2BAAmB8E,EAAEjD,KAAK,KAFlCiD,EAAErB,KAAK,KAStBxD,IAGP,6BA1EO,SAASgE,AAAuBP,CAAmB,EACxD,OAAOA,EAAa,aAAe,aACrC,8BAzBO,SAASG,AACdC,CAAsC,SAEtC,AAAKA,GAAG,AACHA,CADD,CACGJ,UAAU,CACbI,CADe,CACbtD,KAAK,CAAS,AADM,CACb,OACTsD,EAAEN,SAAS,CAAS,CAAP,WACV,aAJQ,aAKjB,4BAGO,SACLM,AADcC,CACsB,SAEpC,AAAKD,GAAG,AACe,CADnB,iBACqC,CAArCA,EAAEE,IAA0C,QAA9B,CACK,cAAc,CAAjCF,EAAEE,YAAY,CAA0B,aACrB,SAAS,CAA5BF,EAAEE,YAAY,CAAqB,QAChB,MAAM,CAAzBF,EAAEE,YAAY,CAAkB,YAC7B,aALQ,aAMjB,wBAQO,SAASE,AAAkB3C,CAAyC,EACzE,GAAKA,CAAD,CACJ,MADa,AACN,CACL,CAAEkC,KAFgBU,CAET,mBAAoBtC,MAAON,EAAO6C,eAAe,CAAG,MAAQ,IAAK,EAC1E,CAAEX,MAAO,sBAAuB5B,MAAON,EAAO8C,iBAAiB,CAAG,MAAQ,IAAK,EAC/E,CAAEZ,MAAO,oBAAqB5B,MAAON,EAAO+C,oBAAoB,CAAG,MAAQ,IAAK,EAChF,CAAEb,MAAO,eAAgB5B,MAAON,EAAOgD,aAAa,EAAI,GAAI,EAC7D,AACH,4BC9DM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,AAAX,CAAA,CAAA,CAAA,CAAA,CAAA,KAAW,OAAA,EAAiB,UAAY,CAAA,CAAA,AAC5C,CAAA,AACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AACA,CAAA,AACE,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACH,AADG,CACH,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AACP,CAAA,CACF,CAAA,AACA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,AAAV,CAAY,CAAA,CAAA,CAAI,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAI,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CACnF,CAAA,CAAA,mDCTK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,AAAV,CAAA,CAAA,CAAA,CAAA,MAAU,OAAA,EAAiB,SAAW,CAAA,CAAA,AAC1C,CAAC,QAAU,CAAA,CAAA,AAAE,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAI,CAAA,CAAA,IAAA,CAAM,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAM,GAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,AACzD,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAAA,AAC1C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAC1C,CAAA,CAAA,kDCJK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAc,CAAd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAc,OAAA,EAAiB,aAAe,CAAA,CAAA,AAClD,CAAA,AACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AACA,CAAA,AACE,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AACH,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AACP,CAAA,CACF,CAAA,AACA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAC/C,CAAA,CAAA,uDCpBD,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,iCAGO,SAASQ,AAAiBC,CAA+B,EAC9D,MAAO,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,CACdC,SAAU,CAAC,iBAAiB,CAC5BC,QAAS,IAAM,EAAA,GAAG,CAACC,GAAG,CAAwB,mBAC9CC,QAASJ,GAASI,UAAW,EAC7BC,UAAW,GACb,EACF,4BCAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,AAAZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAY,OAAA,EAAiB,WAAa,CAAA,CAAA,AAC9C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAAsD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAAA,AACnF,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAE,AAAF,EAAK,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAAA,AAC3C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAAuD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CACpF,AADoF,CACnF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAC3C,CAAA,CAAA,qDChBM,IAAMC,EAA4C,CACvDC,OAAQ,cACRC,MAAO,eACPC,OAAQ,YACV,EAEMC,EAAkD,CACtDH,OAAQ,SACRC,MAAO,QACPC,OAAQ,QACV,EA4EaQ,EAAwE,CACnFV,OAAQ,SACRC,MAAO,OACPC,OAAQ,MACV,EAEMS,EAAyC,CAC7C,0BAA2B,kBAC3B,yBAA0B,iBAC1B,wBAAyB,gBACzB,yBAA0B,iBAC1B,uBAAwB,eACxB,aAAc,kBACd,kBAAmB,WACnB,iBAAkB,iBAClB,aAAc,kBACd,kBAAmB,kBACnB,eAAkB,uBAClB,uCAAwC,yBACxC,kBAAmB,qBACnB,wBAAyB,yBACzB,6BAA8B,oBAChC,EA6FO,SAASc,EAAgBC,CAA+B,MAEzDC,EADJ,GAAI,CAACD,EAAM,MAAO,EAAE,CAEpB,GAAI,CACFC,EAAMC,KAAKC,KAAK,CAACH,EACnB,CAAE,KAAM,CACN,MAAO,EAAE,AACX,CACA,GAAI,CAACC,GAAsB,UAAf,OAAOA,EAAkB,MAAO,EAAE,CAE9C,IAAMG,EAA8B,EAAE,CACtC,IAAK,GAAM,CAACZ,EAAS5E,EAAM,GAAIyF,OAAOD,OAAO,CAACH,GACvCrF,EAD6C,CACnB,UAAjB,AAA2B,OAApBA,GAErBwF,EAAQG,IAAI,CAAC,SACXf,EACAgB,YAAa,AAAyB,iBAAlBF,EAAEE,WAAW,CAAgBF,EAAEE,WAAW,CAAG,EACjEC,aAAwC,UAA1B,OAAOH,EAAEG,YAAY,CAAgBH,EAAEG,YAAY,CAAG,EACpEC,QAA8B,UAArB,OALD9F,AAKQ0F,EAAEI,OAAO,CAAgBJ,EAAEI,OAAO,CAAG,CACvD,GAEF,OAAON,EAAQO,IAAI,CAAC,CAACC,EAAGC,IAAMA,EAAEH,OAAO,CAAGE,EAAEF,OAAO,CACrD,CAmBO,SAASZ,EAAuBN,CAAe,EACpD,GAAI,CAACA,EAAS,OAAO,KACrB,IAAMyB,EAAQzB,EAAQ0B,WAAW,UACjC,AACED,EAAME,QAAQ,CAAC,WACfF,EAAME,QAAQ,CAAC,WACfF,EAAME,QAAQ,CAAC,SACfF,EAAME,QAAQ,CAAC,SAER,CADP,QAGEF,EAAME,QAAQ,CAAC,UAAkB,CAAP,QAE5BF,EAAME,QAAQ,CAAC,QACfF,EAAME,QAAQ,CAAC,UACfF,EAAME,QAAQ,CAAC,OACfF,EAAME,QAAQ,CAAC,MAER,CADP,OAGK,IACT,oFApPkE,CAChE7C,OAAQ,qBACRC,MAAO,mBACPC,OAAQ,iBACV,6BAGiE,CAC/DF,OAAQ,SACRC,MAAO,UACPC,OAAQ,QACV,mDA4FO,SAASe,AAAgBC,CAAkC,SAChE,AAAKA,EAEEA,EAFH,AAGDC,KAHW,EAGJ,CAAC,WAAY,WACpBA,OAAO,CAAC,QAAS,QACjBA,OAAO,CAAC,WAAY,WACpBA,OAAO,CAAC,KAAM,KACdA,OAAO,CAAC,gBAAiB,aACzBA,OAAO,CAAC,YAAa,OACrBA,OAAO,CAAC,cAAe,SACvBA,OAAO,CAAC,aAAc,QACtBA,OAAO,CAAC,aAAc,QACtBA,OAAO,CAAC,cAAe,SACvBA,OAAO,CAAC,aAAc,QACtBA,OAAO,CAAC,eAAgB,UACxBA,OAAO,CAAC,cAAe,SACvBA,OAAO,CAAC,OAAQ,KAChBjE,IAAI,GAjBc,SAkBvB,2BAMO,SAASkE,AAAqBF,CAAkC,EACrE,GAAI,CAACA,EAAS,MAAO,UAGrB,GAAIA,AAAY,WAAQ,MAAO,OAC/B,GAAgB,WAAZA,EAAsB,MAAO,SAEjC,IAAI3C,EAAI2C,EACLC,OAAO,CAAC,WAAY,IAAuB,AAC3CA,OAAO,CAAC,WAAY,IAAwB,AAC5CA,OAAO,CAAC,KAFuE,mBAE9C,CAD4C,QAE7EA,AAD2C,OACpC,CAAC,KAAM,KAMjB,CAN+C,MADwB,AAInED,EAAQG,UAAU,CAAC,SAHoD,CAG3C9C,EAAI,CAAC,IAAI,EAAEA,EAAE4C,OAAO,CAAC,WAAY,IAAA,CAAA,AAAK,EAClED,EAAQG,UAAU,CAAC,aAAY9C,EAAIA,EAAE4C,OAAO,CAAC,cAAe,UAAA,EAEzD5C,EACJ4C,OAAO,CAAC,aAAc,QACtBA,OAAO,CAAC,eAAgB,UACxBA,OAAO,CAAC,cAAe,SACvBA,OAAO,CAAC,YAAa,OACrBA,OAAO,CAAC,cAAe,SACvBA,OAAO,CAAC,aAAc,QACtBA,OAAO,CAAC,aAAc,QACtBA,OAAO,CAAC,OAAQ,KAChBjE,IAAI,EACT,sBAhEO,SAAS0D,AAAgBC,CAAoB,EAClD,OAAOd,CAAc,CAACc,EAAU,AAClC,2BAEO,SAASC,AAAqBD,CAAoB,EACvD,OAAOV,CAAoB,CAACU,EAC9B,AADwC,sBAGjC,SAASE,AAAgBC,CAAkB,EAChD,OAAOL,CAAc,CAACK,EAAW,EAAIA,CACvC,wBAyDO,SAASM,AAAkBJ,CAAkC,EAClE,GAAI,CAACA,EAAS,MAAO,OACrB,IAAMK,EAAUC,EAAuBN,GACvC,OAAOK,EAAUb,CAAsB,CAACa,EAAQ,CAAG,MACrD,6CAkDO,SACLkB,AADcD,CACsB,CACpCE,CAAyC,EAEzC,IAAMZ,EAAUL,EAAgBiB,UAChC,AAAIZ,EAAQzC,MAAM,CAAG,GAAKyC,CAAO,CAAC,EAAE,CAC3BA,CAD6B,AACtB,CAAC,EAAE,CAACZ,OAAO,CAEpBuB,GAAa,IACtB,4BCrOM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAM,UAAA,OAAA,EAAiB,KAAO,CAAA,CAAA,AAClC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAAA,AAC1C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,AAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAO,KAAM,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,EAAG,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAI,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAAA,AAC9E,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAE,AAAF,EAAK,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAAA,AACxC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,AAAL,QAAK,CAAU,CAAA,CAAA,AACzC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAAA,AACzC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAE,AAAF,EAAK,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CACzC,CAAA,CAAA,gEClBD,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,MAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,MAEA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAOA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,iCAiBO,SAAS0B,AAAiB,YAC/BnD,CAAU,OACVzG,EAAQ,UAAU,aAClBC,CAAW,CACW,EACtB,IAAM4J,EAAc,CAAA,EAAA,EAAA,cAAc,AAAd,IACd,CAAEC,KAAMC,CAAY,CAAE,CAAG,CAAA,EAAA,EAAA,WAAA,AAAW,IACpC,CAAED,KAAME,CAAiB,CAAE,CAAG,CAAA,EAAA,EAAA,gBAAA,AAAgB,IAE9C,CAACC,EAASC,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACjC,CAACC,EAAcC,EAAgB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAmB,MAC7D,CAACC,EAAYC,EAAc,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAgB,MACtD,CAACC,EAAQC,EAAU,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAC/B,CAACC,EAAUC,EAAY,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAG9B,MAEJC,EAAgBX,GAAmBY,QAAQC,KAAK,AAACC,GAAMA,EAAErE,UAAU,GAAKA,GACxEsE,EAAa,IAAIrC,IAAI,CAACqB,GAAciB,UAAY,EAAA,AAAE,EAAEjG,GAAG,CAAC,AAACiD,GAAM,CAACA,EAAElG,EAAE,CAAEkG,EAAE,GACxEiD,EAAkB,CAAClB,GAAciB,UAAY,EAAE,AAAF,EAAIrB,MAAM,CAAE3B,AAAD,GAAOA,EAAE1C,OAAO,EAE9E,GAAI,CAACyE,GAAgB,CAACC,GAAqB,CAACW,EAC1C,OAAO,KAMT,CAP2D,GAOrDQ,EAAiBJ,EAAW1F,GAAG,CAAC6F,AAFvBP,EAE8BS,WAAW,EAClDC,EACJF,GAAgB3C,OAAOqC,KAAK,AAAC7F,GAAMA,EAAE2B,OAAO,GAAKuE,EAAOI,SAAS,GAAG3H,OACpE,CAAA,EAAA,EAAA,eAAA,AAAe,EAACuH,EAAOI,SAAS,EAE5BC,EAAmBpB,EAAeY,EAAW1F,GAAG,CAAC8E,GAAgB,KACjEqB,EAAkBD,GAAkB/C,QAAU,EAAE,CAuBtD,eAAesD,IACb,GAAI,AAAC3B,GAAiBE,GACtBG,EAAU,IACVE,EAAY,CAFsB,CAAb,IAGrB,GAAI,CACF,MAAM,EAAA,GAAG,CAACqB,GAAG,CAAC,CAAC,gBAAgB,EAAEtF,EAAAA,CAAY,CAAE,CAC7C2E,YAAajB,EACbmB,UAAWjB,EACX2B,gBAAiBd,EAAOc,eAAe,CACvCC,cAAef,EAAOe,aAAa,CACnCC,SAAUhB,EAAOgB,QAAQ,CACzBC,aAAcjB,EAAOiB,YAAY,AACnC,GACA,MAAMtC,EAAYuC,iBAAiB,CAAC,CAAEjH,SAAU,CAAC,iBAAiB,AAAC,GACnEuF,EAAY,CAAE3H,KAAM,UAAWnB,QAAS,OAAQ,GAChDsI,GAAW,EACb,CAAE,MAAOtH,EAAK,CACZ,IAAMyJ,EACJzJ,aAAe,EAAA,QAAQ,CAAIA,EAAIyJ,IAAI,CAAsC,KAO3E3B,EAAY,CAAE3H,KAAM,QAASnB,QALJ,UAAvB,OAAOyK,GAAM3L,MACT2L,EAAK3L,KAAK,CACVkC,aAAejB,MACbiB,EAAIhB,OAAO,CACX,aAC6B,EACvC,QAAU,CACR4I,GAAU,EACZ,EACF,CAEA,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,IAAI,CAAA,WACH,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,UAAU,CAAA,WACT,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAItK,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,GAAG,CAAA,CAACA,UAAU,kCACf,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAACA,UAAU,qBAAaF,IACZ,SAArBkL,EAAOoB,SAAS,EACf,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACtJ,QAAQ,OAAO9C,UAAU,mBAAU,cAK7C,CAAC+J,GACA,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CAACjH,QAAQ,QAAQuJ,KAAK,KAAKtJ,QAjE1C,CAiEmDwI,QAjE1CA,EACPrB,EAAgBc,EAAOE,WAAW,EAClCd,EAAcY,EAAOI,SAAS,EAC9BZ,EAAY,MACZR,GAAW,EACb,EA4D8DhK,UAAU,gBAC9D,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAACA,UAAU,gBAAgB,aAMvC,CAAC+J,GACA,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI/J,UAAU,sBACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,sDACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC8C,QAAS,EAAA,sBAAsB,CAACkI,EAAOE,WAAW,CAAC,UACvD,CAAA,EAAA,EAAA,eAAA,AAAe,EAACF,EAAOE,WAAW,IAErC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKlL,UAAU,iCAAyBmL,IACzC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJrI,QACyB,SAAvBkI,EAAOW,WAAW,CACd,SACuB,WAAvBX,EAAOW,WAAW,CAChB,OACA,UAER3L,UAAU,mBAETgL,EAAOW,WAAW,MAGtB5L,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEC,UAAU,yCAAiCD,OAKnDgK,GACC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI/J,UAAU,2BACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,sCACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,wBACb,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEA,UAAU,qDAA4C,YACzD,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CACL6B,MAAOoI,GAAgB,GACvBqC,cAAe,AAAC/E,GAAMkE,CA5FpC,SAA6BC,AAApBD,CAAqC,UAC5C,MAAM3E,EAAU+D,EAAW1F,GAAG,CAACuG,GAC/B,GAAI,CAAC5E,EAAS,OACdoD,EAAgBwB,GAChB,IAAMlC,GA3DgBlB,EA2DcxB,EAAQwB,EA3DA,IA2DzBgB,AAA+B,CA3DJC,EA2DMyB,EAAOW,AA3DmB,WA2DR,CAzDjEnC,CADDA,EAAalB,EAAOmB,MAAM,CAAC,AAAC3E,GAAMA,EAAEyE,IAAI,GAAKA,IACjC3E,MAAM,CAAG,EAAI4E,EAAalB,GA0D1C8B,EAAcZ,CAAU,CAAC,EAAE,EAAE/C,SAAWK,EAAQwB,MAAM,CAAC,EAAE,EAAE7B,SAAW,IACxE,EAsFwDc,aAE1C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,UACZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAAA,KAEd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,UACXwD,EAAgBlG,GAAG,CAAC,AAACiD,GACpB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAYjG,MAAOiG,EAAElG,EAAE,UAC/B,CAAA,EAAA,EAAA,eAAA,AAAe,EAACkG,EAAElG,EAAE,GADNkG,EAAElG,EAAE,WAO7B,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI5B,UAAU,wBACb,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEA,UAAU,qDAA4C,UACzD,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CACL6B,MAAOsI,GAAc,GACrBmC,cAAe,AAAC/E,GAAM6C,EAAc7C,aAEpC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,UACZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAAA,KAEd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,UACX+D,EAAgBzG,GAAG,CAAC,AAACC,GACpB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAiBjD,MAAOiD,EAAE2B,OAAO,UACzC3B,EAAErB,KAAK,EADOqB,EAAE2B,OAAO,cAQpC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIzG,UAAU,mCACb,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CACL8C,QAAQ,UACRuJ,KAAK,KACLtJ,QAvIZ,CAuIqByI,QAvIZA,EACPxB,GAAW,GACXE,EAAgB,MAChBE,EAAc,KAChB,EAoIYpI,SAAUqI,YAEV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAACrK,UAAU,gBAAgB,YAGrC,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CACLqM,KAAK,KACLtJ,QAAS,KAAa6I,GAAQ,EAC9B5J,SAAUqI,GAAU,CAACF,YAEpBE,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAACrK,UAAU,6BAEnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAACA,UAAU,gBAChB,gBAOTuK,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJzH,QAASyH,AAAkB,cAAT1H,IAAI,CAAiB,UAAY,QACnD7C,UAAU,gBAETuK,EAAS7I,OAAO,KAK3B,4BC3OM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,AAAP,CAAA,SAAO,OAAA,EAAiB,MAAQ,CAAA,CAAA,AACpC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,AAAE,OAAQ,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAC5D,CAAA,CAAA,gDCbD,IAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,MAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAyIA,IAAM6K,EAAY,CAAC,eAAe,CAC5BC,EAAU,AAAC5K,GAAe,IAAI2K,EAAW3K,EAAG,CAC5C6K,EAAc,AAAC7K,GAAe,IAAI4K,EAAQ5K,GAAK,WAAW,CAC1D8K,EAAgB,AAAC9K,GAAe,IAAI4K,EAAQ5K,GAAK,aAAa,CA2U7D,SAASkO,EAAoBxB,CAAmB,EACrD,OAAOb,EAAQa,EAAKyB,WAAW,EAAIzB,EAAK0B,UAAAA,AAAU,CACpD,oCAiBO,SAASO,AAA0BjC,CAAmB,EAC3D,IAAMkC,EAAoB,EAAE,CAE5B,GADIlC,EAAKE,SAAS,EAAEgC,EAAQhJ,IAAI,CAAC,CAAC,IAAI,EAAE8G,EAAKE,SAAS,CAAA,CAAE,EACpDsB,EAAoBxB,GAAO,CAC7B,IAAMgC,EAAO,CAAA,EAAGhC,EAAKyB,WAAW,CAAC,CAAC,EAAEzB,EAAK0B,UAAU,CAAA,CAAE,CACrDQ,EAAQhJ,IAAI,CAAC,CAAC,oBAAoB,EAAE8I,EAAAA,CAAM,EAC1CE,EAAQhJ,IAAI,CAAC,CAAC,gBAAgB,EAAE8I,EAAAA,CAAM,CACxC,CACA,OAAOE,CACT,4BApBO,SAASN,AAAsB5B,CAAmB,EACvD,GAAIA,EAAK6B,WAAW,CAAE,OAAO7B,EAAK6B,WAAW,CAC7C,GAAIL,EAAoBxB,GAAO,MAAO,CAAA,EAAGA,EAAKyB,WAAW,CAAC,CAAC,EAAEzB,EAAK0B,UAAU,CAAA,CAAE,CAC9E,GAAI1B,EAAKE,SAAS,CAAE,CAClB,IAAM4B,EAAQ9B,EAAKE,SAAS,CAAC9H,OAAO,CAAC,WAAY,IAAI2J,KAAK,CAAC,UAAU5G,MAAM,CAACgE,SAC5E,OAAO2C,CAAK,CAACA,EAAMxL,MAAM,CAAG,EAAE,EAAI0J,EAAKE,SAAS,AAClD,CACA,OAAOF,EAAKgC,IAAI,AAClB,mDAZO,SAASL,AAAmB3B,CAAmB,EACpD,OAAOb,CAAQa,EAAKE,SAAS,AAC/B,2BAzMO,SAASI,EACd,IAAMjB,EAAK,CAAA,EAAA,EAAA,cAAA,AAAc,IACzB,MAAO,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,CACjBC,WAAY,CAAC,cACXe,CAAY,CACZxC,MAAI,CAIL,GACC,EAAA,GAAG,CAAC7K,IAAI,CACN,CAAC,cAAc,EAAEkM,mBAAmBmB,GAAc,SAAS,CAAC,CAC5DxC,GAEJ0B,UAAW,CAACG,EAAOC,KACZN,EAAGzB,iBAAiB,CAAC,CAAEjH,SAAUwH,EAAYwB,EAAKU,YAAY,CAAE,EACvE,CACF,EACF,0BAvHO,SAASjB,EACd,IAAMC,EAAK,CAAA,EAAA,EAAA,cAAA,AAAc,IACzB,MAAO,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,CACjBC,WAAY,AAACzB,GACX,EAAA,GAAG,CAAC7K,IAAI,CAAgC,gBAAiB6K,GAC3D0B,UAAW,KACJF,EAAGzB,iBAAiB,CAAC,CAAEjH,SAAUsH,CAAU,EAClD,CACF,EACF,2BAsIO,SAASwC,EACd,IAAMpB,EAAK,CAAA,EAAA,EAAA,cAAA,AAAc,IACzB,MAAO,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,CACjBC,WAAY,CAAC,cACXe,CAAY,WACZG,CAAS,CAIV,GACC,EAAA,GAAG,CAACX,MAAM,CACR,CAAC,cAAc,EAAEX,mBAAmBmB,GAAc,UAAU,EAAEnB,mBAAmBsB,GAAAA,CAAY,EAEjGjB,UAAW,CAACG,EAAOC,KACZN,EAAGzB,iBAAiB,CAAC,CAAEjH,SAAUwH,EAAYwB,EAAKU,YAAY,CAAE,EACvE,CACF,EACF,0BAtIO,SAAST,EACd,IAAMP,EAAK,CAAA,EAAA,EAAA,cAAA,AAAc,IACzB,MAAO,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,CACjBC,WAAY,AAAChM,GACX,EAAA,GAAG,CAACuM,MAAM,CAAwB,CAAC,cAAc,EAAEX,mBAAmB5L,GAAAA,CAAK,EAC7EiM,UAAW,KACJF,EAAGzB,iBAAiB,CAAC,CAAEjH,SAAUsH,CAAU,EAClD,CACF,EACF,yBAmJO,SAAS4C,EACd,MAAO,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,CACjBvB,WAAY,CAAC,cACXe,CAAY,WACZG,CAAS,CAIV,GACC,EAAA,GAAG,CAACxN,IAAI,CACN,CAAC,cAAc,EAAEkM,mBAAmBmB,GAAc,UAAU,EAAEnB,mBAAmBsB,GAAW,IAAI,CAAC,CACjG,CAAC,EAEP,EACF,oBA/JO,SAASV,EACd,IAAMT,EAAK,CAAA,EAAA,EAAA,cAAA,AAAc,IACzB,MAAO,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,CACjBC,WAAY,CAAC,IACXhM,CAAE,OACFyM,CAAK,MACLC,CAAI,CACJlB,SAAO,CAMR,GACC,EAAA,GAAG,CAAC9L,IAAI,CACN,CAAC,cAAc,EAAEkM,mBAAmB5L,GAAI,YAAY,CAAC,CACrD,OAAEyM,OAAOC,UAAMlB,CAAQ,GAE3BS,UAAW,CAACG,EAAOC,KACZN,EAAGzB,iBAAiB,CAAC,CAAEjH,SAAUsH,CAAU,GAC3CoB,EAAGzB,iBAAiB,CAAC,CAAEjH,SAAUuH,EAAQyB,EAAKrM,EAAE,CAAE,EACzD,CACF,EACF,mBAEO,SAAS2M,EACd,IAAMZ,EAAK,CAAA,EAAA,EAAA,cAAA,AAAc,IACzB,MAAO,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,CACjBC,WAAY,CAAC,IAAEhM,CAAE,WAAE4M,CAAS,CAAqC,GAC/D,EAAA,GAAG,CAAClN,IAAI,CACN,CAAC,cAAc,EAAEkM,mBAAmB5L,GAAI,WAAW,CAAC,CACpD,WAAE4M,CAAU,GAEhBX,UAAW,CAACG,EAAOC,KACZN,EAAGzB,iBAAiB,CAAC,CAAEjH,SAAUsH,CAAU,GAC3CoB,EAAGzB,iBAAiB,CAAC,CAAEjH,SAAUuH,EAAQyB,EAAKrM,EAAE,CAAE,EACzD,CACF,EACF,uCAuLO,SAASgO,EACd,IAAMjC,EAAK,CAAA,EAAA,EAAA,cAAA,AAAc,IACzB,MAAO,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,CACjBC,WAAY,AAAChM,GACX,EAAA,GAAG,CAACN,IAAI,CACN,CAAC,cAAc,EAAEkM,mBAAmB5L,GAAI,gCAAgC,CAAC,CACzE,CAAC,GAELiM,UAAW,MAAOG,EAAOpM,KACvB,GAAI,CACF,MAAM+L,EAAGgC,cAAc,CAAC,CAAE1K,SAAUyH,EAAc9K,EAAI,EACxD,CAAE,KAAM,CAER,CACF,CACF,EACF,sBAvSO,SAAyBgL,AAAhBU,CAA2C,EACzD,MAAO,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,CACdrI,SAAU2H,EAAU,IAAIL,EAAWK,EAAQ,CAAG,IAAIL,EAAU,CAC5DrH,QAAS,IACP,EAAA,GAAG,CAACC,GAAG,CACL,gBACAwH,AAlBR,SAASA,AAAWC,CAA2B,EAC7C,GAAI,CAACA,EAAS,OAAOzI,AACrB,IAAM0I,EAAuC,CAAC,EAK9C,OAJ0B1I,SAAtByI,EAAQE,SAAS,GAAgBD,EAAIE,UAAU,CAAGH,EAAQE,SAAS,CAAG,IAAM,GAAA,OACvD3I,IAArByI,EAAQI,QAAQ,GAAgBH,EAAII,SAAS,CAAGL,EAAQI,QAAQ,CAAG,IAAM,GAAA,OACnD7I,IAAtByI,EAAQM,SAAS,GAAgBL,EAAIM,UAAU,CAAGP,EAAQM,SAAS,CAAG,IAAM,GAAA,EAC5EN,EAAQQ,OAAO,GAAEP,EAAIO,OAAO,CAAGR,EAAQQ,OAAO,AAAPA,EACpC9F,OAAO+F,IAAI,CAACR,GAAKjI,MAAM,CAAG,EAAIiI,OAAM1I,CAC7C,EAUmByI,IAEfvH,UAAW,GACb,EACF,8BAmNO,SAAS+J,AAAwBT,CAAuC,EAC7E,MAAO,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,CACd1J,SAAU0J,EAAejC,EAAciC,GAAgB,IAAIpC,EAAW,UAAW,aAAa,CAC9FrH,QAAS,IACP,EAAA,GAAG,CAACC,GAAG,CACL,CAAC,cAAc,EAAEqI,mBAAmBmB,GAAe,WAAW,CAAC,EAEnEvJ,SAASqI,CAAQkB,EACjBtJ,UAAW,KAIXgK,gBAAiB,AAACC,IAChB,IAAM1F,EAAO0F,EAAMC,KAAK,CAAC3F,IAAI,CAC7B,QAAOA,GAAM4F,qBAAsB,GACrC,CACF,EACF,CAHgD,2BA7HzC,SAASd,AAAsBC,CAAuC,EAC3E,MAAO,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,CACd1J,SAAU0J,EAAelC,EAAYkC,GAAgB,IAAIpC,EAAW,UAAW,WAAW,CAC1FrH,QAAS,IACP,EAAA,GAAG,CAACC,GAAG,CACL,CAAC,cAAc,EAAEqI,mBAAmBmB,GAAe,SAAS,CAAC,EAEjEvJ,SAASqI,CAAQkB,EACjBtJ,UAAW,IACb,EACF,+BAsIO,SAASqK,EACd,IAAM/B,EAAK,CAAA,EAAA,EAAA,cAAA,AAAc,IACzB,MAAO,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,CACjBC,WAAY,AAAChM,GACX,EAAA,GAAG,CAACN,IAAI,CACN,CAAC,cAAc,EAAEkM,mBAAmB5L,GAAI,gBAAgB,CAAC,CACzD,CAAC,GASLiM,UAAW,MAAOG,EAAOpM,KACvB,GAAI,CACF,MAAM+L,EAAGgC,cAAc,CAAC,CAAE1K,SAAUyH,EAAc9K,EAAI,EACxD,CAAE,KAAM,CAER,CACF,CACF,EACF,+BAoBO,SAASiO,EACd,IAAMlC,EAAK,CAAA,EAAA,EAAA,cAAA,AAAc,IACzB,MAAO,CAAA,EAAA,EAAA,WAAW,AAAX,EAAY,CACjBC,WAAY,AAAChM,GACX,EAAA,GAAG,CAACN,IAAI,CACN,CAAC,cAAc,EAAEkM,mBAAmB5L,GAAI,gBAAgB,CAAC,CACzD,CAAC,GAELiM,UAAW,MAAOG,EAAOpM,KACvB,GAAI,CACF,MAAM+L,EAAGgC,cAAc,CAAC,CAAE1K,SAAUyH,EAAc9K,EAAI,EACxD,CAAE,KAAM,CAER,CACF,CACF,EACF,iCAzEO,SAAS6N,EACd,IAAM9B,EAAK,CAAA,EAAA,EAAA,cAAA,AAAc,IACzB,MAAO,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,CACjBC,WAAY,CAAC,IAAEhM,CAAE,CAAEwD,SAAO,CAAoC,GAC5D,EAAA,GAAG,CAACyG,GAAG,CACL,CAAC,cAAc,EAAE2B,mBAAmB5L,GAAI,WAAW,CAAC,CACpD,CAAEwD,SAAQ,GAEdyI,UAAW,CAACG,EAAOC,KACZN,EAAGzB,iBAAiB,CAAC,CAAEjH,SAAUyH,EAAcuB,EAAKrM,EAAE,CAAE,EAC/D,CACF,EACF,yBArEO,SAASoN,EACd,MAAO,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,CACjBpB,WAAY,CAAC,CACXe,cAAY,CACZG,WAAS,WACTG,CAAS,SACTC,CAAO,CAMR,GACC,EAAA,GAAG,CAAC5N,IAAI,CACN,CAAC,cAAc,EAAEkM,mBAAmBmB,GAAc,UAAU,EAAEnB,mBAAmBsB,GAAW,KAAK,CAAC,CAClG,CAAEG,oBAAWC,CAAQ,EAE3B,EACF,2BA3DO,SAASL,EACd,IAAMlB,EAAK,CAAA,EAAA,EAAA,cAAc,AAAd,IACX,MAAO,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,CACjBC,WAAY,CAAC,cACXe,CAAY,CACZG,WAAS,MACT3C,CAAI,CAKL,GACC,EAAA,GAAG,CAAC4B,KAAK,CACP,CAAC,cAAc,EAAEP,mBAAmBmB,GAAc,UAAU,EAAEnB,mBAAmBsB,GAAAA,CAAY,CAC7F3C,GAEJ0B,UAAW,CAACG,EAAOC,KACZN,EAAGzB,iBAAiB,CAAC,CAAEjH,SAAUwH,EAAYwB,EAAKU,YAAY,CAAE,EACvE,CACF,EACF,0BAlIO,SAASb,EACd,IAAMH,EAAK,CAAA,EAAA,EAAA,cAAA,AAAc,IACzB,MAAO,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,CACjBC,WAAY,CAAC,IAAEhM,CAAE,MAAEuK,CAAI,CAA+C,GACpE,EAAA,GAAG,CAAC4B,KAAK,CACP,CAAC,cAAc,EAAEP,mBAAmB5L,GAAAA,CAAK,CACzCuK,GAEJ0B,UAAW,CAACG,EAAOC,KACZN,EAAGzB,iBAAiB,CAAC,CAAEjH,SAAUsH,CAAU,GAC3CoB,EAAGzB,iBAAiB,CAAC,CAAEjH,SAAUuH,EAAQyB,EAAKrM,EAAE,CAAE,EACzD,CACF,EACF","ignoreList":[1,3,4,5,6,8,12,13,14,16,18,20]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[74794,a=>{"use strict";var b=a.i(62588),c=a.i(59974);a.s(["useBackends",0,function(a){return(0,b.useQuery)({queryKey:["backends"],queryFn:()=>c.api.get("/backends"),enabled:a?.enabled??!0,staleTime:6e4})}])},57216,a=>{"use strict";var b=a.i(34542),c=a.i(59653),d=a.i(95819),e=a.i(47427),f=a.i(18867),g=a.i(80303),h=a.i(30419),i=a.i(73490),j=a.i(55277),k=a.i(39752),l="Collapsible",[m,n]=(0,d.createContextScope)(l),[o,p]=m(l),q=b.forwardRef((a,c)=>{let{__scopeCollapsible:d,open:f,defaultOpen:g,disabled:i,onOpenChange:m,...n}=a,[p,q]=(0,e.useControllableState)({prop:f,defaultProp:g??!1,onChange:m,caller:l});return(0,k.jsx)(o,{scope:d,disabled:i,contentId:(0,j.useId)(),open:p,onOpenToggle:b.useCallback(()=>q(a=>!a),[q]),children:(0,k.jsx)(h.Primitive.div,{"data-state":w(p),"data-disabled":i?"":void 0,...n,ref:c})})});q.displayName=l;var r="CollapsibleTrigger",s=b.forwardRef((a,b)=>{let{__scopeCollapsible:d,...e}=a,f=p(r,d);return(0,k.jsx)(h.Primitive.button,{type:"button","aria-controls":f.contentId,"aria-expanded":f.open||!1,"data-state":w(f.open),"data-disabled":f.disabled?"":void 0,disabled:f.disabled,...e,ref:b,onClick:(0,c.composeEventHandlers)(a.onClick,f.onOpenToggle)})});s.displayName=r;var t="CollapsibleContent",u=b.forwardRef((a,b)=>{let{forceMount:c,...d}=a,e=p(t,a.__scopeCollapsible);return(0,k.jsx)(i.Presence,{present:c||e.open,children:({present:a})=>(0,k.jsx)(v,{...d,ref:b,present:a})})});u.displayName=t;var v=b.forwardRef((a,c)=>{let{__scopeCollapsible:d,present:e,children:i,...j}=a,l=p(t,d),[m,n]=b.useState(e),o=b.useRef(null),q=(0,g.useComposedRefs)(c,o),r=b.useRef(0),s=r.current,u=b.useRef(0),v=u.current,x=l.open||m,y=b.useRef(x),z=b.useRef(void 0);return b.useEffect(()=>{let a=requestAnimationFrame(()=>y.current=!1);return()=>cancelAnimationFrame(a)},[]),(0,f.useLayoutEffect)(()=>{let a=o.current;if(a){z.current=z.current||{transitionDuration:a.style.transitionDuration,animationName:a.style.animationName},a.style.transitionDuration="0s",a.style.animationName="none";let b=a.getBoundingClientRect();r.current=b.height,u.current=b.width,y.current||(a.style.transitionDuration=z.current.transitionDuration,a.style.animationName=z.current.animationName),n(e)}},[l.open,e]),(0,k.jsx)(h.Primitive.div,{"data-state":w(l.open),"data-disabled":l.disabled?"":void 0,id:l.contentId,hidden:!x,...j,ref:q,style:{"--radix-collapsible-content-height":s?`${s}px`:void 0,"--radix-collapsible-content-width":v?`${v}px`:void 0,...a.style},children:x&&i})});function w(a){return a?"open":"closed"}a.s(["Collapsible",0,q,"CollapsibleContent",0,u,"CollapsibleTrigger",0,s],57216)},39293,a=>{"use strict";let b=(0,a.i(5423).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"}]]);a.s(["RefreshCw",0,b],39293)},48033,a=>{"use strict";let b=(0,a.i(5423).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"}]]);a.s(["Lock",0,b],48033)},91534,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(11307),e=a.i(92241),f=a.i(21218),g=a.i(8212),h=a.i(55406),i=a.i(48558);a.s(["DirectoryPickerField",0,function({id:a,value:j,onChange:k,title:l,placeholder:m="Choose a folder...",defaultPath:n,disabled:o=!1,className:p,inputClassName:q,buttonLabel:r="Choose"}){let[s,t]=(0,c.useState)(!1),[u,v]=(0,c.useState)(null),w=async()=>{t(!0),v(null);try{let a=await (0,h.pickDirectoryFromDesktop)({title:l,defaultPath:j.trim()||n});a&&k(a)}catch(a){v(a instanceof Error?a.message:"Folder picker is unavailable.")}finally{t(!1)}};return(0,b.jsxs)("div",{className:(0,i.cn)("space-y-1",p),children:[(0,b.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row",children:[(0,b.jsx)(g.Input,{id:a,value:j,onChange:a=>{k(a.target.value),v(null)},placeholder:m,className:(0,i.cn)("font-mono text-sm",q),disabled:o||s}),(0,b.jsxs)(f.Button,{type:"button",variant:"outline",onClick:w,disabled:o||s,className:"shrink-0 gap-2",children:[s?(0,b.jsx)(e.Loader2,{className:"h-4 w-4 animate-spin"}):(0,b.jsx)(d.FolderOpen,{className:"h-4 w-4"}),s?"Opening...":r]})]}),u&&(0,b.jsx)("p",{className:"text-xs text-destructive",children:u})]})}])},35571,a=>{"use strict";let b=(0,a.i(5423).default)("BookText",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}],["path",{d:"M8 11h8",key:"vwpz6n"}],["path",{d:"M8 7h6",key:"1f0q6e"}]]);a.s(["BookText",0,b],35571)},86807,a=>{"use strict";var b=a.i(39752),c=a.i(48558);a.s(["ConnectionsSectionHeader",0,function({title:a,description:d,healthy:e,total:f,attention:g,actions:h}){let i=f>0&&e===f,j=f>0&&0===e;return(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("div",{className:"flex items-baseline justify-between gap-3",children:[(0,b.jsx)("h1",{className:"text-2xl font-semibold text-foreground",children:a}),(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[f>0&&(0,b.jsxs)("span",{className:(0,c.cn)("text-xs font-medium tabular-nums",i?"text-emerald-600 dark:text-emerald-400":j?"text-muted-foreground":"text-amber-600 dark:text-amber-400"),children:[e,"/",f," connected"]}),h]})]}),d&&(0,b.jsx)("p",{className:"max-w-3xl text-sm text-muted-foreground",children:d}),g&&(0,b.jsx)("p",{className:"text-xs text-amber-600 dark:text-amber-400",children:g})]})}])},95827,a=>{"use strict";var b=a.i(39752),c=a.i(7384),d=a.i(30400),e=a.i(48558);let f={connected:{variant:"green",label:"Connected"},configured:{variant:"amber",label:"Configured"},connecting:{variant:"amber",label:"Connecting…"},"needs-setup":{variant:"gray",label:"Not Configured"},error:{variant:"red",label:"Error"},disabled:{variant:"gray",label:"Disabled"}};a.s(["ConnectionCard",0,function({name:a,icon:g,status:h,error:i,metadata:j,children:k,className:l}){let m=f[h];return(0,b.jsxs)(d.Card,{tone:"connected"===h?"success":"error"===h?"error":"default",className:(0,e.cn)("relative",l),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:g}),(0,b.jsx)("h3",{className:"text-sm font-medium text-foreground",children:a})]}),(0,b.jsx)(c.Badge,{variant:m.variant,children:m.label})]}),i&&"connecting"!==h&&(0,b.jsx)("p",{className:"mb-2 text-xs text-red-600 dark:text-red-400",children:i}),j&&j.length>0&&(0,b.jsx)("div",{className:"mb-3 space-y-0.5",children:j.map(a=>(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:a.label}),(0,b.jsx)("span",{className:"text-foreground",children:a.value})]},a.label))}),k]})},"deriveConfiguredStatus",0,function(a){return a?"configured":"needs-setup"},"deriveIntegrationStatus",0,function(a){return a&&a.configured?a.error?"error":a.connected?"connected":"configured":"needs-setup"},"deriveMessagingStatus",0,function(a){return a&&"not_configured"!==a.runtimeState?"connecting"===a.runtimeState?"connecting":"error"===a.runtimeState?"error":"ok"===a.runtimeState?"connected":"configured":"needs-setup"},"messagingMetadata",0,function(a){if(a)return[{label:"Owner configured",value:a.ownerConfigured?"yes":"no"},{label:"Owner channel known",value:a.ownerChannelKnown?"yes":"no"},{label:"Reminder eligible",value:a.notificationEligible?"yes":"no"},{label:"Last inbound",value:a.lastInboundAt??"—"}]}])},50891,a=>{"use strict";let b=(0,a.i(5423).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"}]]);a.s(["ShieldCheck",0,b],50891)},18093,40715,a=>{"use strict";var b=a.i(5423);let c=(0,b.default)("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);a.s(["Eye",0,c],18093);let d=(0,b.default)("EyeOff",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);a.s(["EyeOff",0,d],40715)},91340,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(21218),e=a.i(8212),f=a.i(91534);a.s(["ExternalObsidianVaultSettings",0,function({vaultPath:a,vaultName:g,onSave:h}){let[i,j]=(0,c.useState)(a),[k,l]=(0,c.useState)(g),[m,n]=(0,c.useState)(null);(0,c.useEffect)(()=>{j(a)},[a]),(0,c.useEffect)(()=>{l(g)},[g]);let o=async()=>{n("save");try{let a=i.trim(),b=k.trim()||(a.split(/[\\/]+/).filter(Boolean).at(-1)??"");await h({externalObsidianVaultPath:a,externalObsidianVaultName:b})}finally{n(null)}},p=!!(a||g),q=async()=>{n("clear");try{await h({externalObsidianVaultPath:null,externalObsidianVaultName:null}),j(""),l("")}finally{n(null)}};return(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("label",{className:"text-sm text-muted-foreground shrink-0 min-w-[80px]",children:"Path"}),(0,b.jsx)(f.DirectoryPickerField,{value:i,onChange:j,title:"Choose external Obsidian vault directory",placeholder:"Choose an external Obsidian vault folder",defaultPath:a||void 0,inputClassName:"max-w-[480px]"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("label",{className:"text-sm text-muted-foreground shrink-0 min-w-[80px]",children:"Vault Name"}),(0,b.jsx)(e.Input,{value:k,onChange:a=>l(a.target.value),placeholder:"MyVault",className:"max-w-[240px]"})]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Use Choose to pick a local folder. Absolute local paths still work, including cloud-synced locations such as iCloud Drive, Dropbox, OneDrive, or Google Drive. Use Clear to remove the integration; both fields are nulled together to avoid the “path set without a name” error state."})]}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(d.Button,{size:"sm",onClick:o,disabled:null!==m,children:"save"===m?"Saving...":"Save External Vault Settings"}),p&&(0,b.jsx)(d.Button,{size:"sm",variant:"outline",onClick:q,disabled:null!==m,children:"clear"===m?"Clearing...":"Clear"})]}),p&&(0,b.jsxs)("div",{className:"text-xs text-muted-foreground space-y-0.5 pt-1",children:[(0,b.jsxs)("p",{children:["Current path:"," ",(0,b.jsx)("code",{className:"text-foreground",children:a||"(not set)"})]}),(0,b.jsxs)("p",{children:["Current vault name:"," ",(0,b.jsx)("code",{className:"text-foreground",children:g||"(not set)"})]})]})]})},"PrimaryPlatformField",0,function({health:a,value:e,defaultValue:f,modified:g,onSave:h}){let i=Object.entries(a?.messaging??{}).filter(([a,b])=>"dashboard"!==a&&b.configured&&b.ownerConfigured).map(([a])=>a),[j,k]=(0,c.useState)(e),[l,m]=(0,c.useState)(!1);(0,c.useEffect)(()=>{k(e)},[e]);let n=j!==e,o=e&&!i.includes(e),p=async()=>{m(!0);try{await h("primaryPlatform",j)}finally{m(!1)}};return(0,b.jsxs)("div",{className:"space-y-2 py-2 border-b",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("label",{className:"text-sm font-medium",children:["Fallback Primary Platform",g&&(0,b.jsx)("span",{className:"ml-2 text-xs text-amber-600",children:"(unsaved)"})]}),void 0!==f&&(0,b.jsxs)("span",{className:"text-xs text-muted-foreground",children:["default: ",f||"(empty)"]})]}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[i.map(a=>(0,b.jsx)(d.Button,{variant:j===a?"default":"outline",size:"sm",disabled:l,onClick:()=>k(a),className:"capitalize",children:a},a)),o&&(0,b.jsxs)(d.Button,{variant:j===e?"default":"outline",size:"sm",disabled:l,onClick:()=>k(e),className:"capitalize opacity-60",title:"Current value — not currently configured with an owner ID",children:[e," (not configured)"]}),0===i.length&&!o&&(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:"Configure a messaging app with an owner ID first."})]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Last-resort destination used when no default reminder destinations are selected above and no per-request override is supplied. Only messaging apps with a configured owner ID appear here."}),(0,b.jsx)("div",{children:(0,b.jsx)(d.Button,{size:"sm",variant:"outline",disabled:!n||l,onClick:p,children:l?"Applying...":"Apply"})})]})}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_0rspzax._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/dashboard/src/lib/hooks/use-backends.ts","../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-collapsible%401.1.12_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.14__%40types_10a2c6d0ac3bcc7422bd3020fe61e076/node_modules/%40radix-ui/react-collapsible/dist/index.mjs","../../../../../../packages/dashboard/src/components/ui/collapsible.tsx","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/refresh-cw.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/lock.ts","../../../../../../packages/dashboard/src/components/directory-picker-field.tsx","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/book-text.ts","../../../../../../packages/dashboard/src/components/connections/section-header.tsx","../../../../../../packages/dashboard/src/components/connections/connection-card.tsx","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/shield-check.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/eye-off.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/eye.ts","../../../../../../packages/dashboard/src/components/settings/composite-fields.tsx"],"sourcesContent":["\"use client\";\n\nimport { useQuery } from \"@tanstack/react-query\";\nimport { api } from \"@/lib/api-client\";\nimport type { BackendsResponse } from \"@/lib/api-types\";\n\nexport function useBackends(options?: { enabled?: boolean }) {\n return useQuery({\n queryKey: [\"backends\"],\n queryFn: () => api.get<BackendsResponse>(\"/backends\"),\n enabled: options?.enabled ?? true,\n staleTime: 60_000,\n });\n}\n","\"use client\";\n\n// src/collapsible.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar COLLAPSIBLE_NAME = \"Collapsible\";\nvar [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);\nvar [CollapsibleProvider, useCollapsibleContext] = createCollapsibleContext(COLLAPSIBLE_NAME);\nvar Collapsible = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeCollapsible,\n open: openProp,\n defaultOpen,\n disabled,\n onOpenChange,\n ...collapsibleProps\n } = props;\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: COLLAPSIBLE_NAME\n });\n return /* @__PURE__ */ jsx(\n CollapsibleProvider,\n {\n scope: __scopeCollapsible,\n disabled,\n contentId: useId(),\n open,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(open),\n \"data-disabled\": disabled ? \"\" : void 0,\n ...collapsibleProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nCollapsible.displayName = COLLAPSIBLE_NAME;\nvar TRIGGER_NAME = \"CollapsibleTrigger\";\nvar CollapsibleTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeCollapsible, ...triggerProps } = props;\n const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-controls\": context.contentId,\n \"aria-expanded\": context.open || false,\n \"data-state\": getState(context.open),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n disabled: context.disabled,\n ...triggerProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nCollapsibleTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"CollapsibleContent\";\nvar CollapsibleContent = React.forwardRef(\n (props, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: ({ present }) => /* @__PURE__ */ jsx(CollapsibleContentImpl, { ...contentProps, ref: forwardedRef, present }) });\n }\n);\nCollapsibleContent.displayName = CONTENT_NAME;\nvar CollapsibleContentImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeCollapsible, present, children, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);\n const [isPresent, setIsPresent] = React.useState(present);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const heightRef = React.useRef(0);\n const height = heightRef.current;\n const widthRef = React.useRef(0);\n const width = widthRef.current;\n const isOpen = context.open || isPresent;\n const isMountAnimationPreventedRef = React.useRef(isOpen);\n const originalStylesRef = React.useRef(void 0);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n useLayoutEffect(() => {\n const node = ref.current;\n if (node) {\n originalStylesRef.current = originalStylesRef.current || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName\n };\n node.style.transitionDuration = \"0s\";\n node.style.animationName = \"none\";\n const rect = node.getBoundingClientRect();\n heightRef.current = rect.height;\n widthRef.current = rect.width;\n if (!isMountAnimationPreventedRef.current) {\n node.style.transitionDuration = originalStylesRef.current.transitionDuration;\n node.style.animationName = originalStylesRef.current.animationName;\n }\n setIsPresent(present);\n }\n }, [context.open, present]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n id: context.contentId,\n hidden: !isOpen,\n ...contentProps,\n ref: composedRefs,\n style: {\n [`--radix-collapsible-content-height`]: height ? `${height}px` : void 0,\n [`--radix-collapsible-content-width`]: width ? `${width}px` : void 0,\n ...props.style\n },\n children: isOpen && children\n }\n );\n});\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root = Collapsible;\nvar Trigger = CollapsibleTrigger;\nvar Content = CollapsibleContent;\nexport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n Content,\n Root,\n Trigger,\n createCollapsibleScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nexport const Collapsible = CollapsiblePrimitive.Root;\nexport const CollapsibleTrigger = CollapsiblePrimitive.Trigger;\nexport const CollapsibleContent = CollapsiblePrimitive.Content;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name RefreshCw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/refresh-cw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RefreshCw = createLucideIcon('RefreshCw', [\n ['path', { d: 'M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8', key: 'v9h5vc' }],\n ['path', { d: 'M21 3v5h-5', key: '1q7to0' }],\n ['path', { d: 'M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16', key: '3uifl3' }],\n ['path', { d: 'M8 16H3v5', key: '1cv678' }],\n]);\n\nexport default RefreshCw;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Lock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/lock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Lock = createLucideIcon('Lock', [\n ['rect', { width: '18', height: '11', x: '3', y: '11', rx: '2', ry: '2', key: '1w4ew1' }],\n ['path', { d: 'M7 11V7a5 5 0 0 1 10 0v4', key: 'fwvmzm' }],\n]);\n\nexport default Lock;\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { FolderOpen, Loader2 } from \"lucide-react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { pickDirectoryFromDesktop } from \"@/lib/directory-picker\";\nimport { cn } from \"@/lib/utils\";\n\nexport function DirectoryPickerField({\n id,\n value,\n onChange,\n title,\n placeholder = \"Choose a folder...\",\n defaultPath,\n disabled = false,\n className,\n inputClassName,\n buttonLabel = \"Choose\",\n}: {\n id?: string;\n value: string;\n onChange: (value: string) => void;\n title: string;\n placeholder?: string;\n defaultPath?: string;\n disabled?: boolean;\n className?: string;\n inputClassName?: string;\n buttonLabel?: string;\n}) {\n const [picking, setPicking] = useState(false);\n const [pickerError, setPickerError] = useState<string | null>(null);\n\n const handlePick = async () => {\n setPicking(true);\n setPickerError(null);\n try {\n const selected = await pickDirectoryFromDesktop({\n title,\n defaultPath: value.trim() || defaultPath,\n });\n if (selected) onChange(selected);\n } catch (err) {\n setPickerError(\n err instanceof Error ? err.message : \"Folder picker is unavailable.\",\n );\n } finally {\n setPicking(false);\n }\n };\n\n return (\n <div className={cn(\"space-y-1\", className)}>\n <div className=\"flex flex-col gap-2 sm:flex-row\">\n <Input\n id={id}\n value={value}\n onChange={(e) => {\n onChange(e.target.value);\n setPickerError(null);\n }}\n placeholder={placeholder}\n className={cn(\"font-mono text-sm\", inputClassName)}\n disabled={disabled || picking}\n />\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handlePick}\n disabled={disabled || picking}\n className=\"shrink-0 gap-2\"\n >\n {picking ? (\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n ) : (\n <FolderOpen className=\"h-4 w-4\" />\n )}\n {picking ? \"Opening...\" : buttonLabel}\n </Button>\n </div>\n {pickerError && (\n <p className=\"text-xs text-destructive\">{pickerError}</p>\n )}\n </div>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name BookText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/book-text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst BookText = createLucideIcon('BookText', [\n [\n 'path',\n {\n d: 'M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20',\n key: 'k3hazp',\n },\n ],\n ['path', { d: 'M8 11h8', key: 'vwpz6n' }],\n ['path', { d: 'M8 7h6', key: '1f0q6e' }],\n]);\n\nexport default BookText;\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface ConnectionsSectionHeaderProps {\n title: string;\n description?: ReactNode;\n /** Number of entries that are live/healthy. */\n healthy: number;\n /** Total entries in this section. */\n total: number;\n /** Optional short note about the remainder, e.g. \"WhatsApp needs re-pairing\". */\n attention?: string | null;\n /** Optional right-aligned action element (e.g. an \"Add\" button). */\n actions?: ReactNode;\n}\n\nexport function ConnectionsSectionHeader({\n title,\n description,\n healthy,\n total,\n attention,\n actions,\n}: ConnectionsSectionHeaderProps) {\n const allHealthy = total > 0 && healthy === total;\n const noneHealthy = total > 0 && healthy === 0;\n\n return (\n <div className=\"space-y-1\">\n <div className=\"flex items-baseline justify-between gap-3\">\n <h1 className=\"text-2xl font-semibold text-foreground\">{title}</h1>\n <div className=\"flex items-center gap-3\">\n {total > 0 && (\n <span\n className={cn(\n \"text-xs font-medium tabular-nums\",\n allHealthy\n ? \"text-emerald-600 dark:text-emerald-400\"\n : noneHealthy\n ? \"text-muted-foreground\"\n : \"text-amber-600 dark:text-amber-400\",\n )}\n >\n {healthy}/{total} connected\n </span>\n )}\n {actions}\n </div>\n </div>\n {description && (\n <p className=\"max-w-3xl text-sm text-muted-foreground\">{description}</p>\n )}\n {attention && (\n <p className=\"text-xs text-amber-600 dark:text-amber-400\">\n {attention}\n </p>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Card } from \"@/components/ui/card\";\nimport { cn } from \"@/lib/utils\";\nimport type {\n IntegrationStatus as HealthIntegrationStatus,\n MessagingHealthStatus,\n} from \"@/lib/api-types\";\n\n// ── Status types ──\n\nexport type ConnectionStatus =\n | \"connected\"\n | \"configured\"\n | \"connecting\"\n | \"needs-setup\"\n | \"error\"\n | \"disabled\";\n\nconst STATUS_BADGE: Record<ConnectionStatus, { variant: \"green\" | \"red\" | \"gray\" | \"amber\"; label: string }> = {\n connected: { variant: \"green\", label: \"Connected\" },\n configured: { variant: \"amber\", label: \"Configured\" },\n connecting: { variant: \"amber\", label: \"Connecting…\" },\n \"needs-setup\": { variant: \"gray\", label: \"Not Configured\" },\n error: { variant: \"red\", label: \"Error\" },\n disabled: { variant: \"gray\", label: \"Disabled\" },\n};\n\nfunction cardTone(status: ConnectionStatus) {\n if (status === \"connected\") return \"success\" as const;\n if (status === \"error\") return \"error\" as const;\n return \"default\" as const;\n}\n\n// ── Status derivation helpers ──\n\n/** Derive card status from the health API's integration status object. */\nexport function deriveIntegrationStatus(\n s: HealthIntegrationStatus | undefined,\n): ConnectionStatus {\n if (!s) return \"needs-setup\";\n if (!s.configured) return \"needs-setup\";\n if (s.error) return \"error\";\n if (s.connected) return \"connected\";\n return \"configured\";\n}\n\n/** Derive card status from the health API's messaging status object. */\nexport function deriveMessagingStatus(\n s: MessagingHealthStatus | undefined,\n): ConnectionStatus {\n if (!s) return \"needs-setup\";\n if (s.runtimeState === \"not_configured\") return \"needs-setup\";\n if (s.runtimeState === \"connecting\") return \"connecting\";\n if (s.runtimeState === \"error\") return \"error\";\n if (s.runtimeState === \"ok\") return \"connected\";\n return \"configured\";\n}\n\n/** Derive card status from a simple boolean config flag (e.g. GitHub). */\nexport function deriveConfiguredStatus(configured: boolean): ConnectionStatus {\n return configured ? \"configured\" : \"needs-setup\";\n}\n\n/** Build the standard metadata lines for a messaging channel card. */\nexport function messagingMetadata(status: MessagingHealthStatus | undefined) {\n if (!status) return undefined;\n return [\n { label: \"Owner configured\", value: status.ownerConfigured ? \"yes\" : \"no\" },\n { label: \"Owner channel known\", value: status.ownerChannelKnown ? \"yes\" : \"no\" },\n { label: \"Reminder eligible\", value: status.notificationEligible ? \"yes\" : \"no\" },\n { label: \"Last inbound\", value: status.lastInboundAt ?? \"—\" },\n ];\n}\n\n// ── ConnectionCard component ──\n\nexport interface ConnectionCardProps {\n name: string;\n icon: ReactNode;\n status: ConnectionStatus;\n /** Error message from health API. */\n error?: string | null;\n /** Key-value metadata lines shown below the header. */\n metadata?: Array<{ label: string; value: string }>;\n /** Expandable config/setup content. */\n children?: ReactNode;\n className?: string;\n}\n\nexport function ConnectionCard({\n name,\n icon,\n status,\n error,\n metadata,\n children,\n className,\n}: ConnectionCardProps) {\n const badge = STATUS_BADGE[status];\n\n return (\n <Card tone={cardTone(status)} className={cn(\"relative\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between mb-2\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground\">{icon}</span>\n <h3 className=\"text-sm font-medium text-foreground\">{name}</h3>\n </div>\n <Badge variant={badge.variant}>{badge.label}</Badge>\n </div>\n\n {/* Error from health API — suppressed during in-progress connecting state so\n transient auth/pairing messages don't render as red errors. */}\n {error && status !== \"connecting\" && (\n <p className=\"mb-2 text-xs text-red-600 dark:text-red-400\">{error}</p>\n )}\n\n {/* Metadata */}\n {metadata && metadata.length > 0 && (\n <div className=\"mb-3 space-y-0.5\">\n {metadata.map((m) => (\n <div key={m.label} className=\"flex items-center justify-between text-xs\">\n <span className=\"text-muted-foreground\">{m.label}</span>\n <span className=\"text-foreground\">{m.value}</span>\n </div>\n ))}\n </div>\n )}\n\n {/* Children */}\n {children}\n </Card>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ShieldCheck\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/shield-check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ShieldCheck = createLucideIcon('ShieldCheck', [\n [\n 'path',\n {\n 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',\n key: 'oel41y',\n },\n ],\n ['path', { d: 'm9 12 2 2 4-4', key: 'dzmm74' }],\n]);\n\nexport default ShieldCheck;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name EyeOff\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/eye-off\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst EyeOff = createLucideIcon('EyeOff', [\n [\n 'path',\n {\n d: 'M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49',\n key: 'ct8e1f',\n },\n ],\n ['path', { d: 'M14.084 14.158a3 3 0 0 1-4.242-4.242', key: '151rxh' }],\n [\n 'path',\n {\n d: 'M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143',\n key: '13bj9a',\n },\n ],\n ['path', { d: 'm2 2 20 20', key: '1ooewy' }],\n]);\n\nexport default EyeOff;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Eye\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/eye\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Eye = createLucideIcon('Eye', [\n [\n 'path',\n {\n d: 'M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0',\n key: '1nclc0',\n },\n ],\n ['circle', { cx: '12', cy: '12', r: '3', key: '1v7zrd' }],\n]);\n\nexport default Eye;\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { DirectoryPickerField } from \"@/components/directory-picker-field\";\nimport type { HealthResponse } from \"@/lib/api-types\";\nimport type { SaveFieldFn } from \"@/lib/hooks/use-save-config\";\n\nfunction basenameFromPath(path: string): string {\n const parts = path.split(/[\\\\/]+/).filter(Boolean);\n return parts.at(-1) ?? \"\";\n}\n\nexport function PrimaryPlatformField({\n health,\n value,\n defaultValue,\n modified,\n onSave,\n}: {\n health: HealthResponse | undefined;\n value: string;\n defaultValue?: string;\n modified?: boolean;\n onSave: SaveFieldFn;\n}) {\n const available = Object.entries(health?.messaging ?? {})\n .filter(\n ([platform, status]) =>\n platform !== \"dashboard\" &&\n status.configured &&\n status.ownerConfigured,\n )\n .map(([platform]) => platform);\n\n const [draft, setDraft] = useState<string>(value);\n const [saving, setSaving] = useState(false);\n\n useEffect(() => {\n setDraft(value);\n }, [value]);\n\n const hasChanges = draft !== value;\n const currentUnavailable = value && !available.includes(value);\n\n const handleSave = async () => {\n setSaving(true);\n try {\n await onSave(\"primaryPlatform\", draft);\n } finally {\n setSaving(false);\n }\n };\n\n return (\n <div className=\"space-y-2 py-2 border-b\">\n <div className=\"flex items-center justify-between\">\n <label className=\"text-sm font-medium\">\n Fallback Primary Platform\n {modified && (\n <span className=\"ml-2 text-xs text-amber-600\">(unsaved)</span>\n )}\n </label>\n {defaultValue !== undefined && (\n <span className=\"text-xs text-muted-foreground\">\n default: {defaultValue || \"(empty)\"}\n </span>\n )}\n </div>\n <div className=\"flex flex-wrap gap-2\">\n {available.map((platform) => (\n <Button\n key={platform}\n variant={draft === platform ? \"default\" : \"outline\"}\n size=\"sm\"\n disabled={saving}\n onClick={() => setDraft(platform)}\n className=\"capitalize\"\n >\n {platform}\n </Button>\n ))}\n {currentUnavailable && (\n <Button\n variant={draft === value ? \"default\" : \"outline\"}\n size=\"sm\"\n disabled={saving}\n onClick={() => setDraft(value)}\n className=\"capitalize opacity-60\"\n title=\"Current value — not currently configured with an owner ID\"\n >\n {value} (not configured)\n </Button>\n )}\n {available.length === 0 && !currentUnavailable && (\n <span className=\"text-xs text-muted-foreground\">\n Configure a messaging app with an owner ID first.\n </span>\n )}\n </div>\n <p className=\"text-xs text-muted-foreground\">\n Last-resort destination used when no default reminder destinations are\n selected above and no per-request override is supplied. Only\n messaging apps with a configured owner ID appear here.\n </p>\n <div>\n <Button\n size=\"sm\"\n variant=\"outline\"\n disabled={!hasChanges || saving}\n onClick={handleSave}\n >\n {saving ? \"Applying...\" : \"Apply\"}\n </Button>\n </div>\n </div>\n );\n}\n\nexport function ExternalObsidianVaultSettings({\n vaultPath,\n vaultName,\n onSave,\n}: {\n vaultPath: string;\n vaultName: string;\n onSave: (updates: Record<string, string | null>) => Promise<void>;\n}) {\n const [path, setPath] = useState(vaultPath);\n const [name, setName] = useState(vaultName);\n const [saving, setSaving] = useState<\"save\" | \"clear\" | null>(null);\n\n useEffect(() => {\n setPath(vaultPath);\n }, [vaultPath]);\n useEffect(() => {\n setName(vaultName);\n }, [vaultName]);\n\n const handleSave = async () => {\n setSaving(\"save\");\n try {\n const trimmedPath = path.trim();\n const trimmedName =\n name.trim() || basenameFromPath(trimmedPath);\n await onSave({\n externalObsidianVaultPath: trimmedPath,\n externalObsidianVaultName: trimmedName,\n });\n } finally {\n setSaving(null);\n }\n };\n\n const configured = !!(vaultPath || vaultName);\n\n const handleClear = async () => {\n setSaving(\"clear\");\n try {\n await onSave({\n externalObsidianVaultPath: null,\n externalObsidianVaultName: null,\n });\n setPath(\"\");\n setName(\"\");\n } finally {\n setSaving(null);\n }\n };\n\n return (\n <div className=\"space-y-3\">\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2\">\n <label className=\"text-sm text-muted-foreground shrink-0 min-w-[80px]\">\n Path\n </label>\n <DirectoryPickerField\n value={path}\n onChange={setPath}\n title=\"Choose external Obsidian vault directory\"\n placeholder=\"Choose an external Obsidian vault folder\"\n defaultPath={vaultPath || undefined}\n inputClassName=\"max-w-[480px]\"\n />\n </div>\n <div className=\"flex items-center gap-2\">\n <label className=\"text-sm text-muted-foreground shrink-0 min-w-[80px]\">\n Vault Name\n </label>\n <Input\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder=\"MyVault\"\n className=\"max-w-[240px]\"\n />\n </div>\n <p className=\"text-xs text-muted-foreground\">\n Use Choose to pick a local folder. Absolute local paths still work,\n including cloud-synced locations\n such as iCloud Drive, Dropbox, OneDrive, or Google Drive. Use\n Clear to remove the integration; both fields are nulled together\n to avoid the “path set without a name” error state.\n </p>\n </div>\n\n <div className=\"flex flex-wrap gap-2\">\n <Button size=\"sm\" onClick={handleSave} disabled={saving !== null}>\n {saving === \"save\" ? \"Saving...\" : \"Save External Vault Settings\"}\n </Button>\n {configured && (\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={handleClear}\n disabled={saving !== null}\n >\n {saving === \"clear\" ? \"Clearing...\" : \"Clear\"}\n </Button>\n )}\n </div>\n\n {configured && (\n <div className=\"text-xs text-muted-foreground space-y-0.5 pt-1\">\n <p>\n Current path:{\" \"}\n <code className=\"text-foreground\">{vaultPath || \"(not set)\"}</code>\n </p>\n <p>\n Current vault name:{\" \"}\n <code className=\"text-foreground\">{vaultName || \"(not set)\"}</code>\n </p>\n </div>\n )}\n </div>\n );\n}\n"],"names":["useBackends","options","queryKey","queryFn","get","enabled","staleTime","COLLAPSIBLE_NAME","createCollapsibleContext","createCollapsibleScope","CollapsibleProvider","useCollapsibleContext","Collapsible","props","forwardedRef","__scopeCollapsible","open","openProp","defaultOpen","disabled","onOpenChange","collapsibleProps","setOpen","prop","defaultProp","onChange","caller","scope","contentId","onOpenToggle","prevOpen","children","div","getState","ref","displayName","TRIGGER_NAME","CollapsibleTrigger","triggerProps","context","button","type","onClick","CONTENT_NAME","CollapsibleContent","forceMount","contentProps","present","CollapsibleContentImpl","isPresent","setIsPresent","composedRefs","heightRef","height","current","widthRef","width","isOpen","isMountAnimationPreventedRef","originalStylesRef","rAF","requestAnimationFrame","cancelAnimationFrame","node","transitionDuration","style","animationName","rect","getBoundingClientRect","id","hidden","Root","Trigger","Content","DirectoryPickerField","value","title","placeholder","defaultPath","className","inputClassName","buttonLabel","picking","setPicking","pickerError","setPickerError","handlePick","selected","trim","err","Error","message","e","target","variant","ConnectionsSectionHeader","description","healthy","total","attention","actions","allHealthy","noneHealthy","STATUS_BADGE","connected","label","configured","connecting","error","cardTone","status","deriveIntegrationStatus","s","deriveMessagingStatus","runtimeState","deriveConfiguredStatus","messagingMetadata","undefined","ownerConfigured","ownerChannelKnown","notificationEligible","lastInboundAt","ConnectionCard","name","icon","metadata","badge","tone","length","map","m","basenameFromPath","path","parts","split","filter","Boolean","at","PrimaryPlatformField","health","defaultValue","modified","onSave","available","Object","entries","messaging","platform","draft","setDraft","saving","setSaving","hasChanges","currentUnavailable","includes","handleSave","size","ExternalObsidianVaultSettings","vaultPath","vaultName","setPath","setName","trimmedPath","trimmedName","externalObsidianVaultPath","externalObsidianVaultName","handleClear"],"mappings":"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A,CAAA,CAAA,CAAA,CAAA,CAAA,AACP,CAAA,CACF,CAAA,AACA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,AAAE,EAAG,CAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAC/C,CAAA,CAAA,iGET4B,MAAO,CAAA,GDAM,CAAA,2HCMtC,CAAA,ADAA,aCEW,GAAA,2DDRT,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,CAAA,EAAS,EAAA,OAAA,EAAiB,ECAI,CAAA,MDAM,CAAA,CAEtC,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,AACA,CAAA,AACE,ACDF,CDCK,ACAA,CDAA,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,CAAA,ACAA,CDAA,ACAA,CAAA,ADAA,CAAA,ACAA,CAAA,ADAA,CAAA,ACAA,CDAA,ACAA,CAAA,ADAA,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CDAA,ACAA,CAAA,ADAA,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CDAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CAAA,ACAA,CDAA,ACAA,CDAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA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","ignoreList":[1,3,4,6,9,10,11]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[92379,a=>{"use strict";var b=a.i(34542);let c=(0,b.createContext)(null);a.s(["DirtyFieldsProvider",0,function({children:a}){let[d,e]=(0,b.useState)(()=>new Map),[f,g]=(0,b.useState)(0),h=(0,b.useCallback)((a,b,c)=>{e(d=>{if(void 0!==c&&(b===c||Array.isArray(b)&&Array.isArray(c)&&b.length===c.length&&b.every((a,b)=>a===c[b]))){if(!d.has(a))return d;let b=new Map(d);return b.delete(a),b}let e=new Map(d);return e.set(a,b),e})},[]),i=(0,b.useCallback)(a=>{e(b=>{if(!b.has(a))return b;let c=new Map(b);return c.delete(a),c})},[]),j=(0,b.useCallback)(a=>{0!==a.length&&e(b=>{if(!a.some(a=>b.has(a)))return b;let c=new Map(b);for(let b of a)c.delete(b);return c})},[]),k=(0,b.useCallback)(()=>{e(new Map),g(a=>a+1)},[]),l=d.size>0,m=d.size,n=(0,b.useMemo)(()=>({dirtyFields:d,setDirty:h,clearDirty:i,clearDirtyKeys:j,discardAll:k,discardGeneration:f,isDirty:l,dirtyCount:m}),[d,h,i,j,k,f,l,m]);return(0,b.createElement)(c.Provider,{value:n},a)},"useDirtyFields",0,function(){let a=(0,b.useContext)(c);if(!a)throw Error("useDirtyFields must be used inside DirtyFieldsProvider");let{setDirty:d,dirtyFields:e}=a,f=(0,b.useCallback)(a=>async(b,c)=>{let e=a[b];d(b,c,e)},[d]),g=(0,b.useCallback)((a,b)=>e.has(a)?e.get(a):b,[e]);return{...a,deferSaveFor:f,dv:g}},"useDiscardGeneration",0,function(){let a=(0,b.useContext)(c);return a?.discardGeneration??0}])},82070,a=>{"use strict";a.s(["RESTART_REQUIRED_KEY_TUPLE",0,["apiPort","externalObsidianVaultName","externalObsidianVaultPath","externalObsidianWatch","primaryVaultPath","primaryVaultName","slackOwnerUserId","telegramOwnerChatId","discordOwnerUserId","whatsappEnabled","whatsappOwnerPhone","whatsappAuthDir","notionDatabaseIds","gmailPollIntervalSeconds","delegatedProbeIntervalMinutes","gitPollIntervalSeconds","githubPollIntervalSeconds","voiceTranscriptionEnabled","observationSummarizerEnabled","observationSummarizerConcurrency","observationSummarizerMaxCallsPerMinute","observationSummarizerQueueLimit","observationSummarizerTimeoutMs"]])},81020,a=>{"use strict";let b=(0,a.i(5423).default)("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);a.s(["Terminal",0,b],81020)},35571,a=>{"use strict";let b=(0,a.i(5423).default)("BookText",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}],["path",{d:"M8 11h8",key:"vwpz6n"}],["path",{d:"M8 7h6",key:"1f0q6e"}]]);a.s(["BookText",0,b],35571)},43169,a=>{"use strict";let b=(0,a.i(5423).default)("Repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]]);a.s(["Repeat",0,b],43169)},74345,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(62988),e=a.i(82508),f=a.i(5423);let g=(0,f.default)("User",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);var h=a.i(3504);let i=(0,f.default)("Cpu",[["rect",{width:"16",height:"16",x:"4",y:"4",rx:"2",key:"14l7u7"}],["rect",{width:"6",height:"6",x:"9",y:"9",rx:"1",key:"5aljv4"}],["path",{d:"M15 2v2",key:"13l42r"}],["path",{d:"M15 20v2",key:"15mkzm"}],["path",{d:"M2 15h2",key:"1gxd5l"}],["path",{d:"M2 9h2",key:"1bbxkp"}],["path",{d:"M20 15h2",key:"19e6y8"}],["path",{d:"M20 9h2",key:"19tzq7"}],["path",{d:"M9 2v2",key:"165o2o"}],["path",{d:"M9 20v2",key:"i2bqo8"}]]);var j=a.i(81020),k=a.i(35571);let l=(0,f.default)("SlidersHorizontal",[["line",{x1:"21",x2:"14",y1:"4",y2:"4",key:"obuewd"}],["line",{x1:"10",x2:"3",y1:"4",y2:"4",key:"1q6298"}],["line",{x1:"21",x2:"12",y1:"12",y2:"12",key:"1iu8h1"}],["line",{x1:"8",x2:"3",y1:"12",y2:"12",key:"ntss68"}],["line",{x1:"21",x2:"16",y1:"20",y2:"20",key:"14d8ph"}],["line",{x1:"12",x2:"3",y1:"20",y2:"20",key:"m0wm8r"}],["line",{x1:"14",x2:"14",y1:"2",y2:"6",key:"14e1ph"}],["line",{x1:"8",x2:"8",y1:"10",y2:"14",key:"1i6ji0"}],["line",{x1:"16",x2:"16",y1:"18",y2:"22",key:"1lctlv"}]]);var m=a.i(43169);let n=(0,f.default)("ClipboardList",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]]);var o=a.i(83997),p=a.i(29629),q=a.i(48558),r=a.i(92379);let s=[{href:"/settings",label:"Profile",icon:g,description:"Identity and time axis"},{href:"/settings/schedule",label:"Schedule",icon:h.Clock,description:"Hourly check, quiet hours, notifications"},{href:"/settings/routines",label:"Routines",icon:m.Repeat,description:"Per-cadence check rulebooks and custom cron routines"},{href:"/settings/self-learning",label:"Self-learning",icon:o.Sparkles,description:"Knowledge-map skill curation (Preview)"},{href:"/settings/management",label:"Management",icon:n,description:"Source-of-truth bindings and managed tasks"},{href:"/settings/journal",label:"Journal",icon:k.BookText,description:"Daily journal format template and export redaction rules"},{href:"/settings/models",label:"Models",icon:i,description:"Backends, routing, execution limits"},{href:"/settings/commands",label:"Commands",icon:j.Terminal,description:"Messaging shortcuts and custom prompts"},{href:"/settings/advanced",label:"Advanced",icon:l,description:"Safety, infrastructure, danger zone"}],t={"/settings":["agentDisplayName","character","primaryLanguage"],"/settings/schedule":["timezone","dayBoundaryHour","hourlyCheckEnabled","hourlyCheckIntervalMinutes","hourlyCheckActiveStartHour","hourlyCheckActiveEndHour","hourlyCheckMinObservations","maxNotificationsPerHour","maxNotificationsPerDay","quietHoursStart","quietHoursEnd","batchIntervalMinutes","defaultNotificationPlatforms","primaryPlatform"],"/settings/models":["maxConcurrentSessions","maxReactiveSessions","delegatedProxyMaxConcurrent","executeTimeoutMinutes","sessionTimeoutDmMinutes","sessionTimeoutChannelMinutes","sessionTimeoutDashboardMinutes","autonomousDailyCostCapUsd","autonomousMonthlyCostCapUsd"],"/settings/advanced":["disallowedTools","allowedToolsOverride","obsidianDebounceSeconds","schedulePollIntervalSeconds","gitPollIntervalSeconds","notionPollIntervalSeconds","calendarPollIntervalSeconds","gmailPollIntervalSeconds","historyInjectionMaxMessages","historyInjectionMaxTokens","dmStalenessStrict","apiPort","authProbeDisabled","authPreflightFreshnessMs"]};a.s(["SettingsNavigation",0,function(){let a=(0,e.usePathname)(),{dirtyFields:f}=(0,r.useDirtyFields)(),g=(0,c.useCallback)(a=>{let b=t[a];return b?b.filter(a=>f.has(a)).length:0},[f]);return(0,b.jsxs)("nav",{"aria-label":"Settings sections",className:"w-full md:w-60 md:shrink-0",children:[(0,b.jsx)("ul",{className:"flex flex-row gap-1 overflow-x-auto md:flex-col md:gap-0.5",children:s.map(c=>{let e="/settings"===c.href?a===c.href:a.startsWith(c.href),f=c.icon,h=g(c.href);return(0,b.jsx)("li",{children:(0,b.jsxs)(d.default,{href:c.href,"aria-current":e?"page":void 0,className:(0,q.cn)("group flex items-center gap-3 whitespace-nowrap rounded-lg px-3 py-2 text-sm transition-colors md:whitespace-normal",e?"bg-primary/10 text-primary font-medium":"text-muted-foreground hover:bg-accent hover:text-foreground"),children:[(0,b.jsx)(f,{className:"h-4 w-4 shrink-0"}),(0,b.jsxs)("span",{className:"flex-1",children:[(0,b.jsxs)("span",{className:"block",children:[c.label,h>0&&(0,b.jsx)("span",{className:"ml-1.5 inline-block h-2 w-2 rounded-full bg-blue-500",title:`${h} unsaved change${1!==h?"s":""}`})]}),(0,b.jsx)("span",{className:(0,q.cn)("hidden text-[11px] font-normal md:block",e?"text-primary/70":"text-muted-foreground/70 group-hover:text-muted-foreground"),children:c.description})]})]})},c.href)})}),(0,b.jsxs)("div",{className:"hidden md:block mt-4 px-3",children:[(0,b.jsx)("kbd",{className:"text-[10px] text-muted-foreground/60 font-mono",children:"⌘K"}),(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground/60 ml-1.5",children:"Search settings"})]})]})},"SettingsToast",0,function({toast:a}){return a?(0,b.jsx)(p.Alert,{variant:a.type,className:"rounded-lg px-4 py-2.5 text-sm",children:a.message}):null}],74345)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_0t-2u_i._.js.map
|