@aitne/dashboard 0.1.9 → 0.1.11
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 +7 -9
- package/.next/build-manifest.json +3 -3
- package/.next/diagnostics/route-bundle-stats.json +595 -643
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +57 -105
- package/.next/routes-manifest.json +30 -42
- 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/next-font-manifest.json +4 -2
- package/.next/server/app/_not-found/page/react-loadable-manifest.json +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/next-font-manifest.json +4 -2
- package/.next/server/app/activity/page/react-loadable-manifest.json +1 -1
- 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 +30 -27
- package/.next/server/app/activity.segments/_full.segment.rsc +30 -27
- 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 +3 -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/agents/[slug]/executions/page/next-font-manifest.json +4 -2
- package/.next/server/app/agents/[slug]/executions/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/agents/[slug]/executions/page.js.nft.json +1 -1
- package/.next/server/app/agents/[slug]/executions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/agents/[slug]/page/next-font-manifest.json +4 -2
- package/.next/server/app/agents/[slug]/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/agents/[slug]/page.js.nft.json +1 -1
- package/.next/server/app/agents/[slug]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/agents/page/next-font-manifest.json +4 -2
- package/.next/server/app/agents/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/agents/page.js.nft.json +1 -1
- package/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/.next/server/app/agents.html +1 -1
- package/.next/server/app/agents.rsc +18 -17
- package/.next/server/app/agents.segments/_full.segment.rsc +18 -17
- package/.next/server/app/agents.segments/_head.segment.rsc +4 -4
- package/.next/server/app/agents.segments/_index.segment.rsc +10 -10
- package/.next/server/app/agents.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/agents.segments/agents.segment.rsc +3 -3
- package/.next/server/app/analytics/page/next-font-manifest.json +4 -2
- package/.next/server/app/analytics/page/react-loadable-manifest.json +1 -1
- 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 +21 -20
- package/.next/server/app/analytics.segments/_full.segment.rsc +21 -20
- 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 +3 -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/browser/page/app-paths-manifest.json +3 -0
- package/.next/server/app/browser/page/next-font-manifest.json +8 -0
- package/.next/server/app/{settings/advanced → browser}/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/browser/page.js +15 -0
- package/.next/server/app/browser/page.js.nft.json +1 -0
- package/.next/server/app/browser/page_client-reference-manifest.js +3 -0
- package/.next/server/app/browser-tasks/[id]/page/next-font-manifest.json +4 -2
- package/.next/server/app/browser-tasks/[id]/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/browser-tasks/[id]/page.js.nft.json +1 -1
- package/.next/server/app/browser-tasks/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/browser-tasks/page/next-font-manifest.json +4 -2
- package/.next/server/app/browser-tasks/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/browser-tasks/page.js.nft.json +1 -1
- package/.next/server/app/browser-tasks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/browser-tasks.html +1 -1
- package/.next/server/app/browser-tasks.rsc +18 -17
- package/.next/server/app/browser-tasks.segments/_full.segment.rsc +18 -17
- package/.next/server/app/browser-tasks.segments/_head.segment.rsc +4 -4
- package/.next/server/app/browser-tasks.segments/_index.segment.rsc +10 -10
- package/.next/server/app/browser-tasks.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/browser-tasks.segments/browser-tasks/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/browser-tasks.segments/browser-tasks.segment.rsc +3 -3
- package/.next/server/app/browser.html +1 -0
- package/.next/server/app/browser.meta +15 -0
- package/.next/server/app/browser.rsc +27 -0
- package/.next/server/app/browser.segments/_full.segment.rsc +27 -0
- package/.next/server/app/browser.segments/_head.segment.rsc +6 -0
- package/.next/server/app/browser.segments/_index.segment.rsc +11 -0
- package/.next/server/app/browser.segments/_tree.segment.rsc +3 -0
- package/.next/server/app/browser.segments/browser/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/browser.segments/browser.segment.rsc +5 -0
- package/.next/server/app/chat/page/next-font-manifest.json +4 -2
- package/.next/server/app/chat/page/react-loadable-manifest.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 +18 -17
- package/.next/server/app/chat.segments/_full.segment.rsc +18 -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 +3 -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/next-font-manifest.json +4 -2
- package/.next/server/app/connections/calendar/page/react-loadable-manifest.json +1 -1
- 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 +19 -18
- package/.next/server/app/connections/calendar.segments/_full.segment.rsc +19 -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 +3 -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/next-font-manifest.json +4 -2
- package/.next/server/app/connections/journal/page/react-loadable-manifest.json +1 -1
- 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 +18 -17
- package/.next/server/app/connections/journal.segments/_full.segment.rsc +18 -17
- 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 +3 -2
- package/.next/server/app/connections/journal.segments/connections/journal/__PAGE__.segment.rsc +3 -3
- 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/mail/page/next-font-manifest.json +4 -2
- package/.next/server/app/connections/mail/page/react-loadable-manifest.json +1 -1
- 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 +19 -18
- package/.next/server/app/connections/mail.segments/_full.segment.rsc +19 -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 +3 -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/next-font-manifest.json +4 -2
- package/.next/server/app/connections/mcp/page/react-loadable-manifest.json +1 -1
- 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 +19 -18
- package/.next/server/app/connections/mcp.segments/_full.segment.rsc +19 -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 +3 -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/next-font-manifest.json +4 -2
- package/.next/server/app/connections/messaging/page/react-loadable-manifest.json +1 -1
- 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 +19 -18
- package/.next/server/app/connections/messaging.segments/_full.segment.rsc +19 -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 +3 -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/notes/page/app-paths-manifest.json +3 -0
- package/.next/server/app/connections/notes/page/next-font-manifest.json +8 -0
- package/.next/server/app/{settings/backends → connections/notes}/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/connections/{knowledge → notes}/page.js +6 -6
- package/.next/server/app/{settings/schedule → connections/notes}/page.js.nft.json +1 -1
- package/.next/server/app/connections/notes/page_client-reference-manifest.js +3 -0
- package/.next/server/app/connections/notes.html +1 -0
- package/.next/server/app/connections/{knowledge.meta → notes.meta} +3 -3
- package/.next/server/app/connections/notes.rsc +28 -0
- package/.next/server/app/connections/notes.segments/_full.segment.rsc +28 -0
- package/.next/server/app/connections/notes.segments/_head.segment.rsc +6 -0
- package/.next/server/app/connections/notes.segments/_index.segment.rsc +11 -0
- package/.next/server/app/connections/notes.segments/_tree.segment.rsc +3 -0
- package/.next/server/app/connections/notes.segments/connections/notes/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/connections/notes.segments/connections/notes.segment.rsc +5 -0
- package/.next/server/app/connections/notes.segments/connections.segment.rsc +5 -0
- package/.next/server/app/connections/page/next-font-manifest.json +4 -2
- package/.next/server/app/connections/page/react-loadable-manifest.json +1 -1
- 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/next-font-manifest.json +4 -2
- package/.next/server/app/connections/repositories/page/react-loadable-manifest.json +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 +23 -21
- package/.next/server/app/connections/repositories.segments/_full.segment.rsc +23 -21
- 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 +3 -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/next-font-manifest.json +4 -2
- package/.next/server/app/connections/routines/page/react-loadable-manifest.json +1 -1
- 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 +18 -17
- package/.next/server/app/connections/routines.segments/_full.segment.rsc +18 -17
- 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 +3 -2
- package/.next/server/app/connections/routines.segments/connections/routines/__PAGE__.segment.rsc +3 -3
- 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 +17 -16
- package/.next/server/app/connections.segments/_full.segment.rsc +17 -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 +3 -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/next-font-manifest.json +4 -2
- package/.next/server/app/conversations/[id]/page/react-loadable-manifest.json +1 -1
- 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/next-font-manifest.json +4 -2
- package/.next/server/app/conversations/page/react-loadable-manifest.json +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 +16 -15
- package/.next/server/app/conversations.segments/_full.segment.rsc +16 -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 +3 -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/next-font-manifest.json +4 -2
- package/.next/server/app/docs/[[...slug]]/page/react-loadable-manifest.json +1 -1
- 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/next-font-manifest.json +4 -2
- package/.next/server/app/finance/page/react-loadable-manifest.json +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 +18 -17
- package/.next/server/app/finance.segments/_full.segment.rsc +18 -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 +3 -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/next-font-manifest.json +4 -2
- package/.next/server/app/git/page/react-loadable-manifest.json +1 -1
- 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 +18 -17
- package/.next/server/app/git.segments/_full.segment.rsc +18 -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 +3 -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/next-font-manifest.json +4 -2
- package/.next/server/app/health/page/react-loadable-manifest.json +1 -1
- 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 +18 -17
- package/.next/server/app/health.segments/_full.segment.rsc +18 -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 +3 -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 +18 -17
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/index.segments/_full.segment.rsc +18 -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 +3 -2
- package/.next/server/app/knowledge/page/next-font-manifest.json +4 -2
- package/.next/server/app/knowledge/page/react-loadable-manifest.json +1 -1
- 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 +19 -18
- package/.next/server/app/knowledge.segments/_full.segment.rsc +19 -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 +3 -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/next-font-manifest.json +4 -2
- package/.next/server/app/page/react-loadable-manifest.json +1 -1
- 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/next-font-manifest.json +4 -2
- package/.next/server/app/reading/page/react-loadable-manifest.json +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 +18 -17
- package/.next/server/app/reading.segments/_full.segment.rsc +18 -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 +3 -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/next-font-manifest.json +4 -2
- package/.next/server/app/schedule/page/react-loadable-manifest.json +1 -1
- 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 +18 -17
- package/.next/server/app/schedule.segments/_full.segment.rsc +18 -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 +3 -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/commands/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/commands/page/react-loadable-manifest.json +1 -1
- 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 +19 -18
- package/.next/server/app/settings/commands.segments/_full.segment.rsc +19 -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 +3 -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/danger-zone/page/app-paths-manifest.json +3 -0
- package/.next/server/app/settings/danger-zone/page/next-font-manifest.json +8 -0
- package/.next/server/app/{connections/knowledge → settings/danger-zone}/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/{routines → danger-zone}/page.js +6 -6
- package/.next/server/app/settings/{connections → danger-zone}/page.js.nft.json +1 -1
- package/.next/server/app/settings/danger-zone/page_client-reference-manifest.js +3 -0
- package/.next/server/app/settings/danger-zone.html +1 -0
- package/.next/server/app/settings/{connections.meta → danger-zone.meta} +3 -3
- package/.next/server/app/settings/danger-zone.rsc +28 -0
- package/.next/server/app/settings/danger-zone.segments/_full.segment.rsc +28 -0
- package/.next/server/app/settings/danger-zone.segments/_head.segment.rsc +6 -0
- package/.next/server/app/settings/danger-zone.segments/_index.segment.rsc +11 -0
- package/.next/server/app/settings/danger-zone.segments/_tree.segment.rsc +3 -0
- package/.next/server/app/settings/danger-zone.segments/settings/danger-zone/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/settings/danger-zone.segments/settings/danger-zone.segment.rsc +5 -0
- package/.next/server/app/settings/danger-zone.segments/settings.segment.rsc +5 -0
- package/.next/server/app/settings/hours/page/app-paths-manifest.json +3 -0
- package/.next/server/app/settings/hours/page/next-font-manifest.json +8 -0
- package/.next/server/app/settings/{connections → hours}/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/{schedule → hours}/page.js +6 -6
- package/.next/server/app/settings/{backends → hours}/page.js.nft.json +1 -1
- package/.next/server/app/settings/hours/page_client-reference-manifest.js +3 -0
- package/.next/server/app/settings/hours.html +1 -0
- package/.next/server/app/settings/{journal.meta → hours.meta} +3 -3
- package/.next/server/app/settings/hours.rsc +28 -0
- package/.next/server/app/settings/hours.segments/_full.segment.rsc +28 -0
- package/.next/server/app/settings/hours.segments/_head.segment.rsc +6 -0
- package/.next/server/app/settings/hours.segments/_index.segment.rsc +11 -0
- package/.next/server/app/settings/hours.segments/_tree.segment.rsc +3 -0
- package/.next/server/app/settings/hours.segments/settings/hours/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/settings/hours.segments/settings/hours.segment.rsc +5 -0
- package/.next/server/app/settings/hours.segments/settings.segment.rsc +5 -0
- package/.next/server/app/settings/infrastructure/page/app-paths-manifest.json +3 -0
- package/.next/server/app/settings/infrastructure/page/next-font-manifest.json +8 -0
- package/.next/server/app/settings/infrastructure/page/react-loadable-manifest.json +8 -0
- package/.next/server/app/settings/infrastructure/page.js +16 -0
- package/.next/server/app/settings/{messaging → infrastructure}/page.js.nft.json +1 -1
- package/.next/server/app/settings/infrastructure/page_client-reference-manifest.js +3 -0
- package/.next/server/app/settings/infrastructure.html +1 -0
- package/.next/server/app/settings/infrastructure.meta +16 -0
- package/.next/server/app/settings/infrastructure.rsc +28 -0
- package/.next/server/app/settings/infrastructure.segments/_full.segment.rsc +28 -0
- package/.next/server/app/settings/infrastructure.segments/_head.segment.rsc +6 -0
- package/.next/server/app/settings/infrastructure.segments/_index.segment.rsc +11 -0
- package/.next/server/app/settings/infrastructure.segments/_tree.segment.rsc +3 -0
- package/.next/server/app/settings/infrastructure.segments/settings/infrastructure/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/settings/infrastructure.segments/settings/infrastructure.segment.rsc +5 -0
- package/.next/server/app/settings/infrastructure.segments/settings.segment.rsc +5 -0
- package/.next/server/app/settings/integrations/browser-history/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/integrations/browser-history/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/integrations/browser-history/page.js.nft.json +1 -1
- package/.next/server/app/settings/integrations/browser-history/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed/b4/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/integrations/browser-history-managed/b4/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed/b4/page.js.nft.json +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed/b4/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed/b4.html +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed/b4.rsc +19 -18
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/_full.segment.rsc +19 -18
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings/integrations/browser-history-managed/b4/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings/integrations/browser-history-managed/b4.segment.rsc +3 -3
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings/integrations/browser-history-managed.segment.rsc +3 -3
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings/integrations.segment.rsc +3 -3
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/integrations/browser-history-managed/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/integrations/browser-history-managed/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed/page.js.nft.json +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed.html +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed.rsc +19 -18
- package/.next/server/app/settings/integrations/browser-history-managed.segments/_full.segment.rsc +19 -18
- package/.next/server/app/settings/integrations/browser-history-managed.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/integrations/browser-history-managed.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/integrations/browser-history-managed.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings/integrations/browser-history-managed.segments/settings/integrations/browser-history-managed/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/integrations/browser-history-managed.segments/settings/integrations/browser-history-managed.segment.rsc +3 -3
- package/.next/server/app/settings/integrations/browser-history-managed.segments/settings/integrations.segment.rsc +3 -3
- package/.next/server/app/settings/integrations/browser-history-managed.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/integrations/browser-history.html +1 -1
- package/.next/server/app/settings/integrations/browser-history.rsc +19 -18
- package/.next/server/app/settings/integrations/browser-history.segments/_full.segment.rsc +19 -18
- package/.next/server/app/settings/integrations/browser-history.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/integrations/browser-history.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/integrations/browser-history.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings/integrations/browser-history.segments/settings/integrations/browser-history/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/integrations/browser-history.segments/settings/integrations/browser-history.segment.rsc +3 -3
- package/.next/server/app/settings/integrations/browser-history.segments/settings/integrations.segment.rsc +3 -3
- package/.next/server/app/settings/integrations/browser-history.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/lessons/page/app-paths-manifest.json +3 -0
- package/.next/server/app/settings/lessons/page/next-font-manifest.json +8 -0
- package/.next/server/app/settings/lessons/page/react-loadable-manifest.json +8 -0
- package/.next/server/app/settings/{journal → lessons}/page.js +6 -6
- package/.next/server/app/settings/{journal → lessons}/page.js.nft.json +1 -1
- package/.next/server/app/settings/lessons/page_client-reference-manifest.js +3 -0
- package/.next/server/app/settings/lessons.html +1 -0
- package/.next/server/app/settings/{backends.meta → lessons.meta} +3 -3
- package/.next/server/app/settings/lessons.rsc +28 -0
- package/.next/server/app/settings/lessons.segments/_full.segment.rsc +28 -0
- package/.next/server/app/settings/lessons.segments/_head.segment.rsc +6 -0
- package/.next/server/app/settings/lessons.segments/_index.segment.rsc +11 -0
- package/.next/server/app/settings/lessons.segments/_tree.segment.rsc +3 -0
- package/.next/server/app/settings/lessons.segments/settings/lessons/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/settings/lessons.segments/settings/lessons.segment.rsc +5 -0
- package/.next/server/app/settings/lessons.segments/settings.segment.rsc +5 -0
- package/.next/server/app/settings/management/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/management/page/react-loadable-manifest.json +1 -1
- 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 +19 -18
- package/.next/server/app/settings/management.segments/_full.segment.rsc +19 -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 +3 -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/models/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/models/page/react-loadable-manifest.json +1 -1
- 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 +19 -18
- package/.next/server/app/settings/models.segments/_full.segment.rsc +19 -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 +3 -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/next-font-manifest.json +4 -2
- package/.next/server/app/settings/page/react-loadable-manifest.json +1 -1
- 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/safety/page/app-paths-manifest.json +3 -0
- package/.next/server/app/settings/safety/page/next-font-manifest.json +8 -0
- package/.next/server/app/settings/safety/page/react-loadable-manifest.json +8 -0
- package/.next/server/app/settings/{advanced → safety}/page.js +6 -6
- package/.next/server/app/settings/{processes → safety}/page.js.nft.json +1 -1
- package/.next/server/app/settings/safety/page_client-reference-manifest.js +3 -0
- package/.next/server/app/settings/safety.html +1 -0
- package/.next/server/app/settings/{advanced.meta → safety.meta} +3 -3
- package/.next/server/app/settings/safety.rsc +28 -0
- package/.next/server/app/settings/safety.segments/_full.segment.rsc +28 -0
- package/.next/server/app/settings/safety.segments/_head.segment.rsc +6 -0
- package/.next/server/app/settings/safety.segments/_index.segment.rsc +11 -0
- package/.next/server/app/settings/safety.segments/_tree.segment.rsc +3 -0
- package/.next/server/app/settings/safety.segments/settings/safety/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/settings/safety.segments/settings/safety.segment.rsc +5 -0
- package/.next/server/app/settings/safety.segments/settings.segment.rsc +5 -0
- package/.next/server/app/settings/self-learning/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/self-learning/page/react-loadable-manifest.json +1 -1
- 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 +19 -18
- package/.next/server/app/settings/self-learning.segments/_full.segment.rsc +19 -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 +3 -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/next-font-manifest.json +4 -2
- package/.next/server/app/settings/wiki/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/wiki/page.js.nft.json +1 -1
- package/.next/server/app/settings/wiki/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/wiki/timeline/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/wiki/timeline/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/wiki/timeline/page.js.nft.json +1 -1
- package/.next/server/app/settings/wiki/timeline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/wiki/timeline.html +1 -1
- package/.next/server/app/settings/wiki/timeline.rsc +17 -16
- package/.next/server/app/settings/wiki/timeline.segments/_full.segment.rsc +17 -16
- package/.next/server/app/settings/wiki/timeline.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/wiki/timeline.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/wiki/timeline.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings/wiki/timeline.segments/settings/wiki/timeline/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings/wiki/timeline.segments/settings/wiki/timeline.segment.rsc +3 -3
- package/.next/server/app/settings/wiki/timeline.segments/settings/wiki.segment.rsc +3 -3
- package/.next/server/app/settings/wiki/timeline.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/wiki.html +1 -1
- package/.next/server/app/settings/wiki.rsc +19 -18
- package/.next/server/app/settings/wiki.segments/_full.segment.rsc +19 -18
- package/.next/server/app/settings/wiki.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/wiki.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/wiki.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings/wiki.segments/settings/wiki/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/wiki.segments/settings/wiki.segment.rsc +3 -3
- package/.next/server/app/settings/wiki.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +19 -18
- package/.next/server/app/settings.segments/_full.segment.rsc +19 -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 +3 -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/next-font-manifest.json +4 -2
- package/.next/server/app/setup/page/react-loadable-manifest.json +1 -1
- 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 +18 -17
- package/.next/server/app/setup.segments/_full.segment.rsc +18 -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 +3 -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/next-font-manifest.json +4 -2
- package/.next/server/app/trip/page/react-loadable-manifest.json +1 -1
- 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 +18 -17
- package/.next/server/app/trip.segments/_full.segment.rsc +18 -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 +3 -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/next-font-manifest.json +4 -2
- package/.next/server/app/wiki/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/wiki/page.js.nft.json +1 -1
- package/.next/server/app/wiki/page_client-reference-manifest.js +1 -1
- package/.next/server/app/wiki/timeline/page/next-font-manifest.json +4 -2
- package/.next/server/app/wiki/timeline/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/wiki/timeline/page.js.nft.json +1 -1
- package/.next/server/app/wiki/timeline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/wiki/timeline.html +1 -1
- package/.next/server/app/wiki/timeline.rsc +18 -17
- package/.next/server/app/wiki/timeline.segments/_full.segment.rsc +18 -17
- package/.next/server/app/wiki/timeline.segments/_head.segment.rsc +4 -4
- package/.next/server/app/wiki/timeline.segments/_index.segment.rsc +10 -10
- package/.next/server/app/wiki/timeline.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/wiki/timeline.segments/wiki/timeline/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/wiki/timeline.segments/wiki/timeline.segment.rsc +3 -3
- package/.next/server/app/wiki/timeline.segments/wiki.segment.rsc +3 -3
- package/.next/server/app/wiki.html +1 -1
- package/.next/server/app/wiki.rsc +18 -17
- package/.next/server/app/wiki.segments/_full.segment.rsc +18 -17
- package/.next/server/app/wiki.segments/_head.segment.rsc +4 -4
- package/.next/server/app/wiki.segments/_index.segment.rsc +10 -10
- package/.next/server/app/wiki.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/wiki.segments/wiki/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/wiki.segments/wiki.segment.rsc +3 -3
- package/.next/server/app-paths-manifest.json +7 -9
- package/.next/server/chunks/0z~i_next_dist_esm_build_templates_app-route_0o_o_hp.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__02gp4s0._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0gckkni._.js +1 -1
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_connections_notes_page_actions_04zn1-i.js +3 -0
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_danger-zone_page_actions_0mp3gc-.js +3 -0
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_lessons_page_actions_0_yqadq.js +3 -0
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_safety_page_actions_05rsfax.js +3 -0
- package/.next/server/chunks/ssr/0juq_dashboard_src_app_settings_integrations_browser-history_page_tsx_0.30t~j._.js +1 -1
- package/.next/server/chunks/ssr/0x9-__next-internal_server_app_settings_infrastructure_page_actions_0u8fwic.js +3 -0
- package/.next/server/chunks/ssr/0x9-_src_app_settings_integrations_browser-history-managed_b4_page_tsx_03zkdyv._.js +1 -1
- package/.next/server/chunks/ssr/0x9-_src_app_settings_integrations_browser-history-managed_page_tsx_0q.v5ph._.js +1 -1
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0-xf3nq.js +1 -1
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_05t.o5v.js +4 -0
- package/.next/server/chunks/ssr/{0z~i_next_dist_esm_build_templates_app-page_0~yic40.js → 0z~i_next_dist_esm_build_templates_app-page_07tjgqy.js} +3 -3
- package/.next/server/chunks/ssr/{0z~i_next_dist_esm_build_templates_app-page_0dgjd77.js → 0z~i_next_dist_esm_build_templates_app-page_08-8pml.js} +3 -3
- package/.next/server/chunks/ssr/{0z~i_next_dist_esm_build_templates_app-page_0~l1-oo.js → 0z~i_next_dist_esm_build_templates_app-page_0_hw.~x.js} +3 -3
- package/.next/server/chunks/ssr/{0z~i_next_dist_esm_build_templates_app-page_0i5nfg6.js → 0z~i_next_dist_esm_build_templates_app-page_0gja0sp.js} +3 -3
- package/.next/server/chunks/ssr/{0z~i_next_dist_esm_build_templates_app-page_0rzk_wb.js → 0z~i_next_dist_esm_build_templates_app-page_0h7ji04.js} +3 -3
- package/.next/server/chunks/ssr/{0z~i_next_dist_esm_build_templates_app-page_0i3pbzc.js → 0z~i_next_dist_esm_build_templates_app-page_0xk7dvj.js} +3 -3
- package/.next/server/chunks/ssr/{[root-of-the-server]__0.oq_nd._.js → [root-of-the-server]__064iw-m._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0bcu47h._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0dz8grn._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0e3togs._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0own5qk._.js +7 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__0k4~6v4._.js → [root-of-the-server]__0p.rqkz._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0twuzim._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0v.2-w_._.js +9 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__0hxae6t._.js → [root-of-the-server]__0x90fri._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__0ku1mlh._.js → [root-of-the-server]__0znkqrs._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__138v34b._.js → [root-of-the-server]__12ocbb6._.js} +2 -2
- package/.next/server/chunks/ssr/_0-fa0e6._.js +3 -0
- package/.next/server/chunks/ssr/_0-fv_sr._.js +1 -1
- package/.next/server/chunks/ssr/_0.83~vc._.js +3 -0
- package/.next/server/chunks/ssr/_0.buz~z._.js +3 -0
- package/.next/server/chunks/ssr/_00m~lu3._.js +3 -0
- package/.next/server/chunks/ssr/_00yd82b._.js +3 -0
- package/.next/server/chunks/ssr/_01u8_20._.js +1 -1
- package/.next/server/chunks/ssr/_02-~4_x._.js +3 -0
- package/.next/server/chunks/ssr/_03ylkmo._.js +1 -1
- package/.next/server/chunks/ssr/_042qll3._.js +3 -0
- package/.next/server/chunks/ssr/_05-nasq._.js +3 -0
- package/.next/server/chunks/ssr/_052c-d8._.js +1 -1
- package/.next/server/chunks/ssr/_05etcnw._.js +3 -0
- package/.next/server/chunks/ssr/_06pfh8i._.js +3 -0
- package/.next/server/chunks/ssr/_07y8~wo._.js +3 -0
- package/.next/server/chunks/ssr/_0837jo1._.js +1 -1
- package/.next/server/chunks/ssr/_095g5nv._.js +3 -0
- package/.next/server/chunks/ssr/_0_59iz5._.js +3 -0
- package/.next/server/chunks/ssr/_0_mohhy._.js +3 -0
- package/.next/server/chunks/ssr/_0_qa7ix._.js +3 -0
- package/.next/server/chunks/ssr/_0a0gitj._.js +3 -0
- package/.next/server/chunks/ssr/_0bbgll1._.js +3 -0
- package/.next/server/chunks/ssr/_0bsns8f._.js +3 -0
- package/.next/server/chunks/ssr/_0cus~q3._.js +3 -0
- package/.next/server/chunks/ssr/_0cwcz17._.js +1 -1
- package/.next/server/chunks/ssr/_0do3r93._.js +3 -0
- package/.next/server/chunks/ssr/_0eoqkp.._.js +3 -0
- package/.next/server/chunks/ssr/_0fse1qi._.js +3 -0
- package/.next/server/chunks/ssr/_0g7_r5i._.js +1 -1
- package/.next/server/chunks/ssr/_0h-mq6i._.js +3 -0
- package/.next/server/chunks/ssr/_0h7l~qt._.js +3 -0
- package/.next/server/chunks/ssr/_0hojxqy._.js +1 -1
- package/.next/server/chunks/ssr/_0jlpcde._.js +3 -0
- package/.next/server/chunks/ssr/_0kn1u4v._.js +3 -0
- package/.next/server/chunks/ssr/_0l7uzol._.js +3 -0
- package/.next/server/chunks/ssr/_0m~vcd.._.js +3 -0
- package/.next/server/chunks/ssr/_0n2_n8d._.js +3 -0
- package/.next/server/chunks/ssr/_0p4ugyq._.js +3 -0
- package/.next/server/chunks/ssr/_0pbcc~c._.js +3 -0
- package/.next/server/chunks/ssr/_0q6ga5s._.js +3 -0
- package/.next/server/chunks/ssr/_0rcvmzk._.js +3 -0
- package/.next/server/chunks/ssr/_0tl98en._.js +1 -1
- package/.next/server/chunks/ssr/_0vtof91._.js +3 -0
- package/.next/server/chunks/ssr/_0wj-xi-._.js +1 -1
- package/.next/server/chunks/ssr/_0y-w3is._.js +3 -0
- package/.next/server/chunks/ssr/_0ys19k1._.js +3 -0
- package/.next/server/chunks/ssr/_0zegd8c._.js +3 -0
- package/.next/server/chunks/ssr/_0zskdhg._.js +3 -0
- package/.next/server/chunks/ssr/_0~5jogr._.js +3 -0
- package/.next/server/chunks/ssr/_10t~mm1._.js +5 -0
- package/.next/server/chunks/ssr/_12yrbbd._.js +3 -0
- package/.next/server/chunks/ssr/_12~voz0._.js +3 -0
- package/.next/server/chunks/ssr/_13x8vt3._.js +3 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_0hiwu9~._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard__next-internal_server_app_browser_page_actions_09ozuw5.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard__next-internal_server_app_settings_hours_page_actions_090o.uf.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_08ni3k2._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_0dzu4m3._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_0l-df62._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_0somi_b._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_0uxs9-.._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_0wg3sud._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_0yi7124._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_0zhdaa4._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_13g~g03._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_activity_loading_tsx_0rzsqef._.js +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_agents_[slug]_page_tsx_038yph.._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_agents_page_tsx_0simg3k._.js +2 -2
- package/.next/server/chunks/ssr/packages_dashboard_src_app_analytics_page_tsx_0tb_amd._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_browser-tasks_[id]_page_tsx_0.80q8e._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_chat_page_tsx_0i0_8pw._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_connections_mcp_page_tsx_0lc.low._.js +2 -2
- 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_git_page_tsx_0ah19-6._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_knowledge_page_tsx_0uf4..4._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_page_tsx_0.p6n1a._.js +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_settings_commands_page_tsx_0nacqrh._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_hours_page_tsx_0shgzxo._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_infrastructure_page_tsx_0c9oi1c._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_management_page_tsx_09mnin5._.js +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_page_tsx_13_rdav._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_self-learning_page_tsx_0noj6fo._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_wiki_page_tsx_0..1tkb._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_setup_page_tsx_06k3via._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_components_0c08h~y._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_components_agents_AgentEditor_tsx_1379k-6._.js +2 -2
- package/.next/server/chunks/ssr/packages_dashboard_src_components_connections_integration-card_tsx_0yh1a-~._.js +2 -2
- 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_logs_event-row_tsx_0gwfgqo._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_components_mail_gmail-card_tsx_0kpway8._.js +1 -1
- package/.next/server/chunks/ssr/packages_shared_dist_index_0kuvow-.js +1 -1
- package/.next/server/edge/chunks/[root-of-the-server]__0iap10r._.js +1 -1
- package/.next/server/middleware/middleware-manifest.json +29 -5
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/middleware-manifest.json +29 -5
- package/.next/server/next-font-manifest.js +1 -1
- package/.next/server/next-font-manifest.json +51 -2
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/{buq5uD5wcoRL2KUVTM1i7 → 4Wu33OvzutxPxXUu1PWPC}/_clientMiddlewareManifest.js +24 -0
- package/.next/static/chunks/0-sq9td.e1huw.js +1 -0
- package/.next/static/chunks/0-~s5n1hsw0xz.css +1 -0
- package/.next/static/chunks/0.1mo3ft90qg_.js +1 -0
- package/.next/static/chunks/0.eu.rxoo07x6.js +1 -0
- package/.next/static/chunks/0147tjztlthxv.js +1 -0
- package/.next/static/chunks/01~5c-.ttg~hv.js +1 -0
- package/.next/static/chunks/02jrxwgg0c4jp.js +1 -0
- package/.next/static/chunks/02tb-nh0a2y6t.js +1 -0
- package/.next/static/chunks/03ndokpk6o0.5.js +1 -0
- package/.next/static/chunks/03qz~hx5zgr~d.js +1 -0
- package/.next/static/chunks/042u~0qpgty0o.js +10 -0
- package/.next/static/chunks/050-z9-4lo_4l.js +1 -0
- package/.next/static/chunks/051m0t~qz1jvu.js +1 -0
- package/.next/static/chunks/0755mii5h~0jr.js +1 -0
- package/.next/static/chunks/07_-k85izz7.j.js +1 -0
- package/.next/static/chunks/07qdiaq4h1bev.js +1 -0
- package/.next/static/chunks/07w_f8nwejvtm.js +1 -0
- package/.next/static/chunks/087m534nojkn2.js +1 -0
- package/.next/static/chunks/08tuvmjn9p090.js +1 -0
- package/.next/static/chunks/09k746-3cizz1.js +19 -0
- package/.next/static/chunks/09sekcnc01we8.js +1 -0
- package/.next/static/chunks/0_-a6t77lnxg4.js +1 -0
- package/.next/static/chunks/0_b4esx30vjxq.js +1 -0
- package/.next/static/chunks/0_r~att41ue.r.js +1 -0
- package/.next/static/chunks/0cj6iorqj7he_.js +1 -0
- package/.next/static/chunks/0c~_onh_gv7zj.js +1 -0
- package/.next/static/chunks/0d13hqow~d37h.js +1 -0
- package/.next/static/chunks/0drk956_8nbwg.js +1 -0
- package/.next/static/chunks/0e-txs97b3.x9.js +1 -0
- package/.next/static/chunks/0ezl44_wv~csn.js +1 -0
- package/.next/static/chunks/0g-eqp3qwkojl.js +1 -0
- package/.next/static/chunks/0h5rf~pu59~hu.js +1 -0
- package/.next/static/chunks/0i8.oj~1w~u~..js +1 -0
- package/.next/static/chunks/0iichp621kqto.js +1 -0
- package/.next/static/chunks/{0afrwc5vvwfx4.js → 0iscxmienbk2m.js} +1 -1
- package/.next/static/chunks/0iv9k-z7~xtww.js +1 -0
- package/.next/static/chunks/0k6jf41ge3u~8.js +1 -0
- package/.next/static/chunks/0k9-e5pear~t4.js +3 -0
- package/.next/static/chunks/0kib-9vm23r0j.js +1 -0
- package/.next/static/chunks/0kj.5xdofdrz7.js +1 -0
- package/.next/static/chunks/0lbnukk03a8nv.js +1 -0
- package/.next/static/chunks/0m8e4hy-r8y-4.js +1 -0
- package/.next/static/chunks/{0ndazhatbfzo7.js → 0mkryl3ctt_xh.js} +1 -1
- package/.next/static/chunks/0mxp..4l7j1dn.js +1 -0
- package/.next/static/chunks/0o61x2xdye~o2.js +1 -0
- package/.next/static/chunks/0os-c6-aqwq4d.js +1 -0
- package/.next/static/chunks/0pxjn_pm269cw.js +1 -0
- package/.next/static/chunks/0qyxjj5z_is.d.js +1 -0
- package/.next/static/chunks/0s.cyrhyscm8x.js +1 -0
- package/.next/static/chunks/0wvyy~m_e1q5c.js +3 -0
- package/.next/static/chunks/0x96~upcinv2_.js +1 -0
- package/.next/static/chunks/0zo_ws6shrfnh.js +1 -0
- package/.next/static/chunks/0~kj3qxs7kx58.js +1 -0
- package/.next/static/chunks/10rtk-h9y-705.js +2 -0
- package/.next/static/chunks/115_4xjsk0jzh.js +1 -0
- package/.next/static/chunks/12zmqqk8p-b.~.js +1 -0
- package/.next/static/chunks/135nkfxk7so9p.js +1 -0
- package/.next/static/chunks/153z3m3.a2ubk.js +5 -0
- package/.next/static/chunks/15fpord4hyosp.js +1 -0
- package/.next/static/chunks/15~h2wegwdbf4.js +1 -0
- package/.next/static/chunks/16-i4p1ipmpts.js +1 -0
- package/.next/static/chunks/171j55n_9gyxb.js +1 -0
- package/.next/static/chunks/17c6~kld51ls5.js +11 -0
- package/.next/static/chunks/17tv5jbg2hiup.js +1 -0
- package/.next/static/chunks/187a-majiuj8r.js +1 -0
- package/.next/static/media/fraunces-latin-ext-wght-normal.08-a-oz-atsnn.woff2 +0 -0
- package/.next/static/media/fraunces-latin-wght-normal.0l9v6sgnyeoq8.woff2 +0 -0
- package/.next/static/media/fraunces-vietnamese-wght-normal.05ntv1..6v~z7.woff2 +0 -0
- package/.next/static/media/instrument-sans-latin-ext-wght-normal.0td0--1m0lec9.woff2 +0 -0
- package/.next/static/media/instrument-sans-latin-wght-normal.10bj0-z630vnn.woff2 +0 -0
- package/.next/types/routes.d.ts +8 -10
- package/.next/types/validator.ts +36 -54
- package/package.json +4 -2
- package/.next/server/app/connections/knowledge/page/app-paths-manifest.json +0 -3
- package/.next/server/app/connections/knowledge/page/next-font-manifest.json +0 -6
- package/.next/server/app/connections/knowledge/page.js.nft.json +0 -1
- package/.next/server/app/connections/knowledge/page_client-reference-manifest.js +0 -3
- package/.next/server/app/connections/knowledge.html +0 -1
- package/.next/server/app/connections/knowledge.rsc +0 -27
- package/.next/server/app/connections/knowledge.segments/_full.segment.rsc +0 -27
- package/.next/server/app/connections/knowledge.segments/_head.segment.rsc +0 -6
- package/.next/server/app/connections/knowledge.segments/_index.segment.rsc +0 -11
- package/.next/server/app/connections/knowledge.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/connections/knowledge.segments/connections/knowledge/__PAGE__.segment.rsc +0 -9
- package/.next/server/app/connections/knowledge.segments/connections/knowledge.segment.rsc +0 -5
- package/.next/server/app/connections/knowledge.segments/connections.segment.rsc +0 -5
- package/.next/server/app/settings/advanced/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/advanced/page/next-font-manifest.json +0 -6
- package/.next/server/app/settings/advanced/page.js.nft.json +0 -1
- package/.next/server/app/settings/advanced/page_client-reference-manifest.js +0 -3
- package/.next/server/app/settings/advanced.html +0 -1
- package/.next/server/app/settings/advanced.rsc +0 -27
- package/.next/server/app/settings/advanced.segments/_full.segment.rsc +0 -27
- package/.next/server/app/settings/advanced.segments/_head.segment.rsc +0 -6
- package/.next/server/app/settings/advanced.segments/_index.segment.rsc +0 -11
- package/.next/server/app/settings/advanced.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/settings/advanced.segments/settings/advanced/__PAGE__.segment.rsc +0 -9
- package/.next/server/app/settings/advanced.segments/settings/advanced.segment.rsc +0 -5
- package/.next/server/app/settings/advanced.segments/settings.segment.rsc +0 -5
- package/.next/server/app/settings/backends/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/backends/page/next-font-manifest.json +0 -6
- package/.next/server/app/settings/backends/page.js +0 -17
- package/.next/server/app/settings/backends/page_client-reference-manifest.js +0 -3
- package/.next/server/app/settings/backends.html +0 -1
- package/.next/server/app/settings/backends.rsc +0 -24
- package/.next/server/app/settings/backends.segments/_full.segment.rsc +0 -24
- package/.next/server/app/settings/backends.segments/_head.segment.rsc +0 -6
- package/.next/server/app/settings/backends.segments/_index.segment.rsc +0 -11
- package/.next/server/app/settings/backends.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/settings/backends.segments/settings/backends/__PAGE__.segment.rsc +0 -6
- package/.next/server/app/settings/backends.segments/settings/backends.segment.rsc +0 -5
- package/.next/server/app/settings/backends.segments/settings.segment.rsc +0 -5
- package/.next/server/app/settings/connections/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/connections/page/next-font-manifest.json +0 -6
- package/.next/server/app/settings/connections/page.js +0 -17
- package/.next/server/app/settings/connections/page_client-reference-manifest.js +0 -3
- package/.next/server/app/settings/connections.html +0 -1
- package/.next/server/app/settings/connections.rsc +0 -24
- package/.next/server/app/settings/connections.segments/_full.segment.rsc +0 -24
- package/.next/server/app/settings/connections.segments/_head.segment.rsc +0 -6
- package/.next/server/app/settings/connections.segments/_index.segment.rsc +0 -11
- package/.next/server/app/settings/connections.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/settings/connections.segments/settings/connections/__PAGE__.segment.rsc +0 -6
- package/.next/server/app/settings/connections.segments/settings/connections.segment.rsc +0 -5
- package/.next/server/app/settings/connections.segments/settings.segment.rsc +0 -5
- package/.next/server/app/settings/journal/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/journal/page/next-font-manifest.json +0 -6
- package/.next/server/app/settings/journal/page/react-loadable-manifest.json +0 -8
- package/.next/server/app/settings/journal/page_client-reference-manifest.js +0 -3
- package/.next/server/app/settings/journal.html +0 -1
- package/.next/server/app/settings/journal.rsc +0 -27
- package/.next/server/app/settings/journal.segments/_full.segment.rsc +0 -27
- package/.next/server/app/settings/journal.segments/_head.segment.rsc +0 -6
- package/.next/server/app/settings/journal.segments/_index.segment.rsc +0 -11
- package/.next/server/app/settings/journal.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/settings/journal.segments/settings/journal/__PAGE__.segment.rsc +0 -9
- package/.next/server/app/settings/journal.segments/settings/journal.segment.rsc +0 -5
- package/.next/server/app/settings/journal.segments/settings.segment.rsc +0 -5
- package/.next/server/app/settings/messaging/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/messaging/page/next-font-manifest.json +0 -6
- package/.next/server/app/settings/messaging/page/react-loadable-manifest.json +0 -8
- package/.next/server/app/settings/messaging/page.js +0 -17
- package/.next/server/app/settings/messaging/page_client-reference-manifest.js +0 -3
- package/.next/server/app/settings/messaging.html +0 -1
- package/.next/server/app/settings/messaging.meta +0 -16
- package/.next/server/app/settings/messaging.rsc +0 -24
- package/.next/server/app/settings/messaging.segments/_full.segment.rsc +0 -24
- package/.next/server/app/settings/messaging.segments/_head.segment.rsc +0 -6
- package/.next/server/app/settings/messaging.segments/_index.segment.rsc +0 -11
- package/.next/server/app/settings/messaging.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/settings/messaging.segments/settings/messaging/__PAGE__.segment.rsc +0 -6
- package/.next/server/app/settings/messaging.segments/settings/messaging.segment.rsc +0 -5
- package/.next/server/app/settings/messaging.segments/settings.segment.rsc +0 -5
- package/.next/server/app/settings/processes/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/processes/page/next-font-manifest.json +0 -6
- package/.next/server/app/settings/processes/page/react-loadable-manifest.json +0 -8
- package/.next/server/app/settings/processes/page.js +0 -17
- package/.next/server/app/settings/processes/page_client-reference-manifest.js +0 -3
- package/.next/server/app/settings/processes.html +0 -1
- package/.next/server/app/settings/processes.meta +0 -16
- package/.next/server/app/settings/processes.rsc +0 -24
- package/.next/server/app/settings/processes.segments/_full.segment.rsc +0 -24
- package/.next/server/app/settings/processes.segments/_head.segment.rsc +0 -6
- package/.next/server/app/settings/processes.segments/_index.segment.rsc +0 -11
- package/.next/server/app/settings/processes.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/settings/processes.segments/settings/processes/__PAGE__.segment.rsc +0 -6
- package/.next/server/app/settings/processes.segments/settings/processes.segment.rsc +0 -5
- package/.next/server/app/settings/processes.segments/settings.segment.rsc +0 -5
- package/.next/server/app/settings/routines/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/routines/page/build-manifest.json +0 -18
- package/.next/server/app/settings/routines/page/next-font-manifest.json +0 -6
- package/.next/server/app/settings/routines/page/react-loadable-manifest.json +0 -8
- package/.next/server/app/settings/routines/page/server-reference-manifest.json +0 -4
- package/.next/server/app/settings/routines/page.js.nft.json +0 -1
- package/.next/server/app/settings/routines/page_client-reference-manifest.js +0 -3
- package/.next/server/app/settings/routines.html +0 -1
- package/.next/server/app/settings/routines.meta +0 -16
- package/.next/server/app/settings/routines.rsc +0 -27
- package/.next/server/app/settings/routines.segments/_full.segment.rsc +0 -27
- package/.next/server/app/settings/routines.segments/_head.segment.rsc +0 -6
- package/.next/server/app/settings/routines.segments/_index.segment.rsc +0 -11
- package/.next/server/app/settings/routines.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/settings/routines.segments/settings/routines/__PAGE__.segment.rsc +0 -9
- package/.next/server/app/settings/routines.segments/settings/routines.segment.rsc +0 -5
- package/.next/server/app/settings/routines.segments/settings.segment.rsc +0 -5
- package/.next/server/app/settings/schedule/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/schedule/page/build-manifest.json +0 -18
- package/.next/server/app/settings/schedule/page/next-font-manifest.json +0 -6
- package/.next/server/app/settings/schedule/page/react-loadable-manifest.json +0 -8
- package/.next/server/app/settings/schedule/page/server-reference-manifest.json +0 -4
- package/.next/server/app/settings/schedule/page_client-reference-manifest.js +0 -3
- package/.next/server/app/settings/schedule.html +0 -1
- package/.next/server/app/settings/schedule.meta +0 -16
- package/.next/server/app/settings/schedule.rsc +0 -27
- package/.next/server/app/settings/schedule.segments/_full.segment.rsc +0 -27
- package/.next/server/app/settings/schedule.segments/_head.segment.rsc +0 -6
- package/.next/server/app/settings/schedule.segments/_index.segment.rsc +0 -11
- package/.next/server/app/settings/schedule.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/settings/schedule.segments/settings/schedule/__PAGE__.segment.rsc +0 -9
- package/.next/server/app/settings/schedule.segments/settings/schedule.segment.rsc +0 -5
- package/.next/server/app/settings/schedule.segments/settings.segment.rsc +0 -5
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_connections_knowledge_page_actions_06w7ski.js +0 -3
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_advanced_page_actions_0x06bjx.js +0 -3
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_backends_page_actions_0z3vipu.js +0 -3
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_connections_page_actions_0n0b1rb.js +0 -3
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_journal_page_actions_0_.h.-y.js +0 -3
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_messaging_page_actions_0czehcp.js +0 -3
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_processes_page_actions_0zbumx3.js +0 -3
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_routines_page_actions_0-37ia4.js +0 -3
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_schedule_page_actions_045j4zv.js +0 -3
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0s6jb_7.js +0 -4
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0wu80v6.js +0 -4
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_113c8xj.js +0 -4
- package/.next/server/chunks/ssr/[root-of-the-server]__0.tf.7i._.js +0 -7
- package/.next/server/chunks/ssr/[root-of-the-server]__00ch_ms._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__00s5z4o._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0j8z8rh._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0kcivrd._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0t-9jvt._.js +0 -3
- package/.next/server/chunks/ssr/_0-3uzu1._.js +0 -3
- package/.next/server/chunks/ssr/_0.yhrky._.js +0 -3
- package/.next/server/chunks/ssr/_0.zct4p._.js +0 -3
- package/.next/server/chunks/ssr/_03bq.de._.js +0 -3
- package/.next/server/chunks/ssr/_03qiunv._.js +0 -3
- package/.next/server/chunks/ssr/_03~tfh5._.js +0 -3
- package/.next/server/chunks/ssr/_04kt9.8._.js +0 -3
- package/.next/server/chunks/ssr/_05jfize._.js +0 -3
- package/.next/server/chunks/ssr/_06_m-vp._.js +0 -3
- package/.next/server/chunks/ssr/_06pec-y._.js +0 -9
- package/.next/server/chunks/ssr/_07fm8yg._.js +0 -3
- package/.next/server/chunks/ssr/_095u19_._.js +0 -3
- package/.next/server/chunks/ssr/_0_qwmiz._.js +0 -3
- package/.next/server/chunks/ssr/_0b--0p5._.js +0 -3
- package/.next/server/chunks/ssr/_0bz7.8y._.js +0 -3
- package/.next/server/chunks/ssr/_0bzj8lx._.js +0 -3
- package/.next/server/chunks/ssr/_0cvy_5o._.js +0 -3
- package/.next/server/chunks/ssr/_0da0k2u._.js +0 -3
- package/.next/server/chunks/ssr/_0erbggi._.js +0 -3
- package/.next/server/chunks/ssr/_0e~4oah._.js +0 -3
- package/.next/server/chunks/ssr/_0gp2p2l._.js +0 -3
- package/.next/server/chunks/ssr/_0ibeuw6._.js +0 -3
- package/.next/server/chunks/ssr/_0ixicrb._.js +0 -3
- package/.next/server/chunks/ssr/_0jbimd_._.js +0 -3
- package/.next/server/chunks/ssr/_0jg6hy0._.js +0 -3
- package/.next/server/chunks/ssr/_0klzava._.js +0 -3
- package/.next/server/chunks/ssr/_0mbbas-._.js +0 -3
- package/.next/server/chunks/ssr/_0n.cr_p._.js +0 -3
- package/.next/server/chunks/ssr/_0n5nlcq._.js +0 -3
- package/.next/server/chunks/ssr/_0nnu1fp._.js +0 -3
- package/.next/server/chunks/ssr/_0pg6_56._.js +0 -3
- package/.next/server/chunks/ssr/_0pigg8p._.js +0 -3
- package/.next/server/chunks/ssr/_0q8o~q1._.js +0 -3
- package/.next/server/chunks/ssr/_0qu5la9._.js +0 -3
- package/.next/server/chunks/ssr/_0r1lb0f._.js +0 -3
- package/.next/server/chunks/ssr/_0r9.4nv._.js +0 -3
- package/.next/server/chunks/ssr/_0s4udmt._.js +0 -3
- package/.next/server/chunks/ssr/_0vn~fot._.js +0 -3
- package/.next/server/chunks/ssr/_0x._qd7._.js +0 -3
- package/.next/server/chunks/ssr/_0yh7rb_._.js +0 -3
- package/.next/server/chunks/ssr/_0zz58.-._.js +0 -5
- package/.next/server/chunks/ssr/_0~62r4-._.js +0 -3
- package/.next/server/chunks/ssr/_12u1eq4._.js +0 -3
- package/.next/server/chunks/ssr/_12~0n.1._.js +0 -3
- package/.next/server/chunks/ssr/_139rl~~._.js +0 -3
- package/.next/server/chunks/ssr/node_modules__pnpm_0ehnn5t._.js +0 -3
- package/.next/server/chunks/ssr/packages_dashboard_src_0ylj~og._.js +0 -3
- package/.next/server/chunks/ssr/packages_dashboard_src_app_connections_knowledge_page_tsx_027jwd3._.js +0 -3
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_advanced_page_tsx_0o~_885._.js +0 -3
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_routines_page_tsx_0wcgtqz._.js +0 -27
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_schedule_page_tsx_0b8zr2l._.js +0 -3
- package/.next/static/chunks/0-7buty0ytvtv.js +0 -1
- package/.next/static/chunks/0.42rv-zt_0x9.js +0 -1
- package/.next/static/chunks/00bnu7r6428v0.js +0 -5
- package/.next/static/chunks/00w3emoohg-8r.js +0 -1
- package/.next/static/chunks/0105cq0xp5_hx.js +0 -1
- package/.next/static/chunks/01eo9jrlkjy03.js +0 -3
- package/.next/static/chunks/01v7jn283j2tm.js +0 -1
- package/.next/static/chunks/04l41qp5lpt_e.js +0 -1
- package/.next/static/chunks/04ufv2_7i_b6..js +0 -1
- package/.next/static/chunks/053f~_moi~csx.js +0 -2
- package/.next/static/chunks/05z4egti~pj9t.js +0 -1
- package/.next/static/chunks/08ql4siwtlgpn.js +0 -1
- package/.next/static/chunks/08wmxlql_xq.d.js +0 -1
- package/.next/static/chunks/0_31fedlksujg.js +0 -1
- package/.next/static/chunks/0eaf903zc7v~5.js +0 -1
- package/.next/static/chunks/0flms4gevti3_.js +0 -1
- package/.next/static/chunks/0gj-lf~wlbr8e.js +0 -1
- package/.next/static/chunks/0gurc-kqffso6.js +0 -1
- package/.next/static/chunks/0gyst06ap~-n~.js +0 -19
- package/.next/static/chunks/0g~py-0sje~1m.js +0 -1
- package/.next/static/chunks/0hk8v-849puw8.js +0 -1
- package/.next/static/chunks/0hlvfkk1o66wf.js +0 -1
- package/.next/static/chunks/0hog4tqr3.skm.js +0 -10
- package/.next/static/chunks/0igwe6jdxslbt.js +0 -1
- package/.next/static/chunks/0ikm~jl5uiw6-.js +0 -1
- package/.next/static/chunks/0jffu_yb.90.i.js +0 -1
- package/.next/static/chunks/0m04i2v9cb~qe.js +0 -1
- package/.next/static/chunks/0mjh8s01-3c7z.css +0 -1
- package/.next/static/chunks/0n3b0fpsgml2x.js +0 -1
- package/.next/static/chunks/0n6_wx41s~.c6.js +0 -1
- package/.next/static/chunks/0obgpq3wenu4s.js +0 -11
- package/.next/static/chunks/0p.w04inifyq..js +0 -1
- package/.next/static/chunks/0qqty6t-yyty4.js +0 -3
- package/.next/static/chunks/0q~dvm61tpf3~.js +0 -1
- package/.next/static/chunks/0rt76ki54i~hm.js +0 -1
- package/.next/static/chunks/0scggusqhhid7.js +0 -1
- package/.next/static/chunks/0t9rda60_m-vk.js +0 -1
- package/.next/static/chunks/0u9qsqnsm-skj.js +0 -1
- package/.next/static/chunks/0urw8_v9f97en.js +0 -1
- package/.next/static/chunks/0vcwfsuf878wc.js +0 -1
- package/.next/static/chunks/0vktbjh2e4xpg.js +0 -1
- package/.next/static/chunks/0ws8mq3rp~572.js +0 -1
- package/.next/static/chunks/0x..-zi0av524.js +0 -1
- package/.next/static/chunks/0xsb_r_t_1r-u.js +0 -1
- package/.next/static/chunks/0yh77irip2zjn.js +0 -1
- package/.next/static/chunks/0ym9.va55pvtp.js +0 -1
- package/.next/static/chunks/0ytubabo8p3y0.js +0 -1
- package/.next/static/chunks/0z8eq-9fm5tni.js +0 -1
- package/.next/static/chunks/0zaa6zhrjsaik.js +0 -1
- package/.next/static/chunks/0zimhqr6r4xlz.js +0 -1
- package/.next/static/chunks/1121be2-kv8g~.js +0 -1
- package/.next/static/chunks/1257_06cutyq_.js +0 -1
- package/.next/static/chunks/12ee4r9-orwi8.js +0 -1
- package/.next/static/chunks/13kdqs0pmjqy5.js +0 -1
- package/.next/static/chunks/13tf0oa.w743m.js +0 -1
- package/.next/static/chunks/159r5abwjgz~a.js +0 -25
- package/.next/static/chunks/15pljj6~je.kw.js +0 -1
- package/.next/static/chunks/16s5r16k361sd.js +0 -1
- package/.next/static/chunks/16tqshshex~qk.js +0 -1
- package/.next/static/chunks/1763zl5q3pn~0.js +0 -1
- package/.next/static/chunks/17846-azlpszq.js +0 -1
- package/.next/static/chunks/17ncd9sikwfzz.js +0 -1
- /package/.next/server/app/{connections/knowledge → browser}/page/build-manifest.json +0 -0
- /package/.next/server/app/{connections/knowledge → browser}/page/server-reference-manifest.json +0 -0
- /package/.next/server/app/{settings/advanced → connections/notes}/page/build-manifest.json +0 -0
- /package/.next/server/app/{settings/advanced → connections/notes}/page/server-reference-manifest.json +0 -0
- /package/.next/server/app/settings/{backends → danger-zone}/page/build-manifest.json +0 -0
- /package/.next/server/app/settings/{backends → danger-zone}/page/server-reference-manifest.json +0 -0
- /package/.next/server/app/settings/{connections → hours}/page/build-manifest.json +0 -0
- /package/.next/server/app/settings/{connections → hours}/page/server-reference-manifest.json +0 -0
- /package/.next/server/app/settings/{journal → infrastructure}/page/build-manifest.json +0 -0
- /package/.next/server/app/settings/{journal → infrastructure}/page/server-reference-manifest.json +0 -0
- /package/.next/server/app/settings/{messaging → lessons}/page/build-manifest.json +0 -0
- /package/.next/server/app/settings/{messaging → lessons}/page/server-reference-manifest.json +0 -0
- /package/.next/server/app/settings/{processes → safety}/page/build-manifest.json +0 -0
- /package/.next/server/app/settings/{processes → safety}/page/server-reference-manifest.json +0 -0
- /package/.next/static/{buq5uD5wcoRL2KUVTM1i7 → 4Wu33OvzutxPxXUu1PWPC}/_buildManifest.js +0 -0
- /package/.next/static/{buq5uD5wcoRL2KUVTM1i7 → 4Wu33OvzutxPxXUu1PWPC}/_ssgManifest.js +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,32077,e=>{"use strict";var t=e.i(54710),a=e.i(34416),n=e.i(99758),s=e.i(16047),r=e.i(59134),i=e.i(36451),o=e.i(48467),l=e.i(20014),d=e.i(79634),c=e.i(74490),u=e.i(10427),h=e.i(70986),m=e.i(24756),g=e.i(88423),p=e.i(75187),x=e.i(67490),f=e.i(90826),b=e.i(95486),v=e.i(65268),y=e.i(81471);e.i(18446);var k=e.i(5957),j=e.i(38082);let N={search:"Search",read:"Read",draft:"Drafts",update_draft:"Update drafts",send:"Send",forward:"Forward",delete:"Archive / delete",label:"Labels",create_label:"Create labels",read_attachment:"Read attachments",batch:"Batch operations",list_events:"List events",get_event:"Read event",create_event:"Create event",update_event:"Update event",delete_event:"Delete event",respond_to_event:"RSVP",respond_event:"RSVP",suggest_time:"Suggest time",list_calendars:"List calendars",get_availability:"Check availability",batch_read:"Batch read"};function w(e){let t=N[e];return void 0!==t?t:e.split("_").map(e=>0===e.length?e:e[0].toUpperCase()+e.slice(1)).join(" ")}function C(e){return e.userManagedConnector?[...j.RUNTIME_AVAILABLE_BACKEND_IDS]:Object.keys(e.backendConnectors)}function A(e){return e.userManagedConnector?[...k.NATIVE_CONNECTOR_BACKEND_IDS]:Object.keys(e.backendConnectors)}let T="__auto__";function $(e){let t=Date.parse(e.endsWith("Z")||/[+-]\d{2}:\d{2}$/.test(e)?e:e.replace(" ","T")+"Z");return Number.isNaN(t)?null:t}function M(e){return 0===e?"$0":e<.01?"<$0.01":`$${e.toFixed(2)}`}function S(e,t){if("gmail"!==e||t<=1)return null;let a=t-1;return`Delegated mode supports one Google account. Your other ${a} Gmail ${1===a?"account":"accounts"} will be disabled (tokens kept — re-enable by switching back to direct).`}let B={gmail:{presentClause:"Gmail OAuth tokens are still in the keychain",absentClause:"Gmail has no OAuth tokens yet",setupPhrase:"the 5-step Google Cloud setup"},google_calendar:{presentClause:"Google Calendar OAuth tokens are still in the keychain",absentClause:"Google Calendar has no OAuth tokens yet",setupPhrase:"the 5-step Google Cloud setup"},notion:{presentClause:"The Notion API key is still in the keychain",absentClause:"Notion has no API key in the keychain yet",setupPhrase:"creating a Notion internal integration, pasting the key, and sharing each database with the integration"},git:{presentClause:"Git direct mode uses the local git CLI and watched repository list",absentClause:"Git direct mode needs watched repositories before it can poll",setupPhrase:"adding at least one watched repository"},github:{presentClause:"GitHub direct mode uses the local gh CLI",absentClause:"GitHub direct mode needs gh auth login outside the daemon",setupPhrase:"authenticating the gh CLI and optionally adding watched repositories"},outlook_mail:{presentClause:"The Outlook BYOA client config is still in the keychain",absentClause:"Outlook has no BYOA client config in the keychain yet",setupPhrase:"registering a Microsoft Identity (Azure) app and authenticating each Outlook mailbox"},outlook_calendar:{presentClause:"The Outlook BYOA client config is still in the keychain (shared with Outlook Mail)",absentClause:"Outlook Calendar has no BYOA client config to reuse yet",setupPhrase:"registering a Microsoft Identity (Azure) app via the Outlook Mail card"},browser_history:{presentClause:"Browser history consent is already accepted on this device",absentClause:"Browser history consent has not been accepted yet",setupPhrase:"accepting the on-device browser history consent latch"}};function P(e){let t=e.directSetup?.credentialKeys??[];if(0===t.length)return null;let a=B[e.key],n=t.join(" + ");return{secretKeys:t,optionDescription:`Deletes ${n} from the keychain after the mode flip. Reverting to direct later will require ${a.setupPhrase}. Asks for a second confirmation.`,confirmTitle:`Purge ${e.displayName} credentials?`,confirmDescription:`This removes ${n} from the keychain. To restore direct mode later you will need to redo ${a.setupPhrase}.`}}var _=e.i(72740),D=e.i(43477),O=e.i(76176);function I(e){let{open:a,onOpenChange:n,descriptor:s,currentMode:r,currentBackend:i,targetMode:o,targetBackend:c,onTargetBackendChange:h,directCredentialsPresent:m,gmailAccountCount:g,tokenHandling:p,onTokenHandlingChange:x,onConfirm:f,isPending:b,error:v}=e,y=function(e){try{return function(e,t){let{mode:a,backend:n}=e,{toMode:s,toBackend:r}=t;if(a===s)return"delegated"===a&&r&&r!==n?{kind:"delegated-backend-change",toBackend:r}:{kind:"no-op"};if("native"===s){if(!r)throw Error("toBackend required for native flip");return"direct"!==a&&"delegated"!==a&&"disabled"!==a?{kind:"to-native",fromMode:"disabled",toBackend:r}:{kind:"to-native",fromMode:a,toBackend:r}}if("native"===a){if("direct"===s)return{kind:"native-to-direct",needsOauthSetup:!e.directCredentialsPresent};if("delegated"===s){if(!r)throw Error("toBackend required for native→delegated");return{kind:"native-to-delegated",toBackend:r}}return{kind:"native-to-disabled"}}if("direct"===a&&"delegated"===s){if(!r)throw Error("toBackend required for direct→delegated");return{kind:"direct-to-delegated",toBackend:r}}if("delegated"===a&&"direct"===s)return{kind:"delegated-to-direct",needsOauthSetup:!e.directCredentialsPresent};if("disabled"===a){if("delegated"===s){if(!r)throw Error("toBackend required for delegated flip");return{kind:"enable-from-disabled",to:"delegated",toBackend:r}}return{kind:"enable-from-disabled",to:"direct"}}return{kind:"disable-from-active"}}(e.from,{toMode:e.to.mode,toBackend:e.to.backend})}catch{return null}}({from:{mode:r,backend:i,directCredentialsPresent:m},to:{mode:o,backend:c}}),k=C(s),j="delegated"===o&&k.length>1,N="direct"===r&&"delegated"===o&&m&&null!==s.directSetup;return(0,t.jsx)(D.Sheet,{open:a,onOpenChange:n,children:(0,t.jsx)(D.SheetContent,{children:(0,t.jsxs)("div",{className:"flex h-full flex-col",children:[(0,t.jsx)(D.SheetHeader,{children:(0,t.jsx)(D.SheetTitle,{children:function(e,t){if(!t||"no-op"===t.kind)return`${e} — no change`;if("direct-to-delegated"===t.kind)return`Delegate ${e} to ${t.toBackend}?`;if("delegated-to-direct"===t.kind)return`Switch ${e} to direct mode?`;if("delegated-backend-change"===t.kind)return`Change ${e} delegate to ${t.toBackend}?`;if("enable-from-disabled"===t.kind){let a="direct"===t.to?"direct":`delegated to ${t.toBackend??"?"}`;return`Enable ${e} (${a})?`}return"to-native"===t.kind?`Switch ${e} to native (${t.toBackend})?`:"native-to-direct"===t.kind?`Switch ${e} to direct mode?`:"native-to-delegated"===t.kind?`Switch ${e} to delegated (${t.toBackend})?`:(t.kind,`Disable ${e}?`)}(s.displayName,y)})}),(0,t.jsxs)("div",{className:"mt-4 min-h-0 flex-1 space-y-4 overflow-y-auto px-1",children:[j&&(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",children:"Backend"}),(0,t.jsxs)(u.Select,{value:c??k[0],onValueChange:e=>h?.(e),disabled:b,children:[(0,t.jsx)(u.SelectTrigger,{className:"h-8 text-xs",children:(0,t.jsx)(u.SelectValue,{})}),(0,t.jsx)(u.SelectContent,{children:k.map(e=>{let a=(0,O.isUiPreviewOnlyBackend)(e);return(0,t.jsxs)(u.SelectItem,{value:e,disabled:a,children:[e,a?O.UI_PREVIEW_ONLY_BADGE_SUFFIX:""]},e)})})]})]}),y&&(0,t.jsx)(L,{action:y,descriptor:s,gmailAccountCount:g}),N&&(0,t.jsx)(G,{value:p,onChange:x,disabled:b,purgeDescription:P(s)?.optionDescription}),v&&(0,t.jsx)(d.Alert,{variant:"error",children:v})]}),(0,t.jsxs)("div",{className:"mt-6 flex items-center justify-end gap-2 border-t border-border pt-4",children:[(0,t.jsx)(l.Button,{variant:"outline",size:"sm",onClick:()=>n(!1),disabled:b,children:"Cancel"}),(0,t.jsxs)(l.Button,{variant:y?.kind==="disable-from-active"?"destructive":"default",size:"sm",onClick:()=>void f(),disabled:b||null===y||"no-op"===y.kind,children:[b&&(0,t.jsx)(_.Loader2,{className:"mr-1.5 h-3.5 w-3.5 animate-spin"}),function(e){if(!e)return"Apply";switch(e.kind){case"direct-to-delegated":case"enable-from-disabled":return"Apply";case"delegated-to-direct":case"native-to-direct":return e.needsOauthSetup?"Continue to setup":"Resume direct mode";case"delegated-backend-change":return"Change delegate";case"disable-from-active":case"native-to-disabled":return"Disable";case"to-native":return"Switch to native";case"native-to-delegated":return"Switch to delegated";case"no-op":return"—"}}(y)]})]})]})})})}function L({action:e,descriptor:a,gmailAccountCount:n}){var s,r,i,o,l,c,u;if("direct-to-delegated"===e.kind){let s=function(e,t,a){let n=[];"gmail"===e&&n.push({message:"Mail poller stops observing Gmail — receipts, travel, and Kindle classifiers will not run against new messages.",reversible:!0},{message:"Local FTS5 search on Gmail messages is unavailable. The agent searches through its backend connector instead.",reversible:!0},{message:"Only one Google account is reachable at a time. Additional Gmail accounts will be disabled.",reversible:!0}),"google_calendar"===e&&n.push({message:"Calendar poller stops running. Event awareness drops from 5-minute to hourly granularity.",reversible:!0},{message:"15-minute imminent-event alerts are unavailable — the agent learns about new events on the next hourly check.",reversible:!0}),"notion"===e&&n.push({message:"Notion poller stops observing database edits. Recent-edit awareness shifts from per-poll to inline notion-search inside the hourly check, with reduced recall on less-typed databases.",reversible:!0},{message:"Structured property filter on database queries is unavailable. The agent falls back to semantic notion-search plus client-side filtering — fine for small databases, awkward for >100-row workspaces.",reversible:!0},{message:"Native page archive is unavailable. The agent uses workarounds (status-property update, or move-to-trash-page) and DMs you naming the workaround taken.",reversible:!0}),"git"===e&&n.push({message:"GitWatcher stops polling directly. Git lifecycle checks move to a scheduled backend session, so detection is bounded by the delegated cadence and backend quota.",reversible:!0},{message:"Daemon-side project document updates no longer run from direct classifier output. The delegated session must inspect the repo and update context through the project-doc API.",reversible:!0}),"github"===e&&n.push({message:"GitHubPoller stops polling notifications and workflow runs directly. The delegated session uses gh read-only checks on its cadence instead.",reversible:!0},{message:"Review requests, CI failures, assignments, and security alerts may arrive later because they depend on the delegated cron tick.",reversible:!0}),"outlook_mail"===e&&n.push({message:"Mail poller stops observing Outlook accounts; receipts, travel, and Kindle classifiers will not run against new Outlook messages.",reversible:!0},{message:"Local FTS5 search on Outlook messages is unavailable. The agent searches through whichever Outlook MCP / connector you have wired up on the selected backend.",reversible:!0},{message:`You must register an Outlook / Microsoft Graph MCP server on the ${t} backend before the agent can send, read, or label Outlook mail. The daemon does not proxy this integration.`,reversible:!1}),"outlook_calendar"===e&&n.push({message:"On-demand Outlook calendar reads via /api/calendar/outlook return 410. Calendar awareness depends entirely on the MCP / connector you configure on the selected backend.",reversible:!0},{message:`You must register an Outlook / Microsoft Graph MCP server on the ${t} backend that exposes calendar reads/writes. The daemon does not proxy this integration.`,reversible:!1});let s=a.backendConnectors[t];if(s&&"gmail"===e)for(let e of["send","forward","delete","read_attachment"].filter(e=>!s.optionalCapabilities.includes(e)))n.push({message:`${w(e)} is unavailable on this backend — the agent will draft but not ${function(e){switch(e){case"send":return"send";case"forward":return"forward";case"delete":return"archive or delete";case"read_attachment":return"read attachments";default:return e}}(e)}.`,reversible:!0});return n}(a.key,e.toBackend,a),r=S(a.key,n);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(d.Alert,{variant:"warning",children:[(0,t.jsx)("p",{className:"font-medium",children:"You will lose these direct-mode features"}),(0,t.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"All losses are reversible — OAuth tokens stay in the keychain by default so switching back is frictionless."})]}),r&&(0,t.jsx)(d.Alert,{variant:"warning",children:r}),(0,t.jsx)("ul",{className:"space-y-1.5 text-sm",children:s.map((e,a)=>(0,t.jsxs)("li",{className:"flex items-start gap-2",children:[(0,t.jsx)("span",{className:"mt-1 inline-block h-1.5 w-1.5 shrink-0 rounded-full bg-amber-500"}),(0,t.jsx)("span",{className:"text-muted-foreground",children:e.message})]},a))})]})}if("delegated-to-direct"===e.kind){let n,i=(a.state.deniedTools?.length??0)>0;return(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(d.Alert,{variant:e.needsOauthSetup?"warning":"success",children:(0,t.jsx)("p",{className:"text-sm",children:(s=a.key,r=!e.needsOauthSetup,n=B[s],r?`${n.presentClause}. Switching back re-enables polling with no re-consent step.`:`${n.absentClause}. Switching to direct will walk through ${n.setupPhrase}.`)})}),i&&(0,t.jsx)(d.Alert,{variant:"info",children:(0,t.jsx)("p",{className:"text-sm",children:"Your tool deny list will be retained but is inactive in direct mode. Re-enabling delegated mode restores it."})})]})}if("delegated-backend-change"===e.kind)return(0,t.jsx)(d.Alert,{variant:"info",children:(0,t.jsxs)("p",{className:"text-sm",children:["The integration stays delegated — only the backend changes to"," ",(0,t.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:e.toBackend}),". Skills and task-flow variants re-materialize on the next session."]})});if("enable-from-disabled"===e.kind)return(0,t.jsx)(d.Alert,{variant:"info",children:(0,t.jsx)("p",{className:"text-sm",children:"direct"===e.to?"The integration will poll the service directly. You may need to complete OAuth setup.":`The integration will delegate to the ${e.toBackend} backend connector.`})});if("disable-from-active"===e.kind)return(0,t.jsx)(d.Alert,{variant:"warning",children:(0,t.jsx)("p",{className:"text-sm",children:"The daemon stops observing this integration. Any poller associated with it pauses; the agent's session templates drop the skill / task-flow body that depends on it. Re-enabling is one click — credentials stay in the keychain."})});if("to-native"===e.kind){let s,r,c,u,h,m=(i=e.fromMode,o=e.toBackend,s=[],r=a.displayName,"direct"===i&&(s.push({message:`The daemon's background poller for ${r} stops. The agent fetches via ${o}'s native connector during DM and hourly_check turns instead.`,reversible:!0}),s.push({message:"Local FTS5 search / classifier passes (receipts, travel, Kindle for mail; calendar reconcile for events) stop running. Direct-mode data already in the DB stays searchable; new data lands as in-turn observations only.",reversible:!0}),s.push({message:`Your direct-mode credentials for ${r} stay in the keychain (dormant) so a future flip back to direct re-uses them without re-consent. Delete them explicitly via the direct→delegated "Purge from keychain" flow if you want them gone.`,reversible:!0})),"delegated"===i&&(s.push({message:"The delegated-sync worker stops ticking on its cadence. Observations land at hourly_check granularity instead, fetched by the main DM session itself.",reversible:!0}),s.push({message:"Per-call proxy cost shifts from the (cheap) lite-tier delegated model to your main DM session's medium tier — typically ~20–30× more expensive per fetch.",reversible:!0})),"disabled"===i&&s.push({message:"The integration becomes reachable from hourly_check and DM again — currently it is silent. No background poller runs; the agent fetches in-turn.",reversible:!0}),s.push({message:`${o} must already have its ${r} connector configured (e.g. claude.ai/connections, ~/.codex MCP entry, or ~/.gemini extension). The daemon does not see ${r} credentials.`,reversible:!1}),s.push({message:"Switching the main backend later automatically disables this row (an explicit binding, not a routing rule). You'll be asked to re-configure on the new backend.",reversible:!0}),s),g="direct"===e.fromMode?S(a.key,n):null,p=(u=Math.round((.39-(c=.014*("delegated"===(l=e.fromMode))))*365),h=c>0?Math.round(.39/c):null,{fromDailyUsd:c,toDailyUsd:.39,yearlyDeltaUsd:u,multiplier:h,fromLabel:"delegated"===l?"delegated worker":"direct"===l?"direct poller (no LLM tokens)":"disabled (no fetch at all)"});return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(d.Alert,{variant:"info",children:[(0,t.jsxs)("p",{className:"text-sm font-medium",children:["Native mode — the agent fetches ",a.displayName," in-turn via ",e.toBackend,"'s connector. No background poller, no delegated worker."]}),(0,t.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"We run a live capability probe before committing the flip so a missing connector capability surfaces here, not at the next DM / hourly_check turn."})]}),g&&(0,t.jsx)(d.Alert,{variant:"warning",children:g}),(0,t.jsxs)("div",{className:"rounded-md border border-amber-300/60 bg-amber-50/60 p-3 text-xs dark:border-amber-700/50 dark:bg-amber-950/30",children:[(0,t.jsx)("p",{className:"font-medium text-amber-800 dark:text-amber-200",children:"Estimated cost shift (typical workload)"}),(0,t.jsxs)("p",{className:"mt-1 text-amber-900/80 dark:text-amber-100/80",children:["From ",p.fromLabel," ",(0,t.jsxs)("code",{className:"rounded bg-amber-100 px-1 py-0.5 font-mono text-[11px] dark:bg-amber-900/50",children:["≈ ",M(p.fromDailyUsd),"/day"]})," ","→ native MCP on ",e.toBackend," ",(0,t.jsxs)("code",{className:"rounded bg-amber-100 px-1 py-0.5 font-mono text-[11px] dark:bg-amber-900/50",children:["≈ ",M(p.toDailyUsd),"/day"]}),null!==p.multiplier&&(0,t.jsxs)(t.Fragment,{children:[" ","— roughly"," ",(0,t.jsxs)("strong",{children:[p.multiplier,"×"]})," more per integration"]}),"."]}),(0,t.jsxs)("p",{className:"mt-1 text-[11px] text-amber-900/70 dark:text-amber-100/70",children:["Marginal ~$",p.yearlyDeltaUsd,"/year per integration at typical volume. Native is recommended when the alternative is leaving the integration disabled — not as a free upgrade from delegated."]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-2 text-xs font-medium text-muted-foreground",children:"What changes"}),(0,t.jsx)("ul",{className:"space-y-1.5 text-sm",children:m.map((e,a)=>(0,t.jsxs)("li",{className:"flex items-start gap-2",children:[(0,t.jsx)("span",{className:`mt-1 inline-block h-1.5 w-1.5 shrink-0 rounded-full ${e.reversible?"bg-amber-500":"bg-red-500"}`}),(0,t.jsx)("span",{className:"text-muted-foreground",children:e.message})]},a))})]})]})}if("native-to-direct"===e.kind){let n;return(0,t.jsx)(d.Alert,{variant:e.needsOauthSetup?"warning":"success",children:(0,t.jsx)("p",{className:"text-sm",children:(c=a.key,u=!e.needsOauthSetup,n=B[c],u?`${n.presentClause} from a previous direct-mode setup. Switching back re-enables polling without re-consent.`:`${n.absentClause} — native mode left credential management to the backend. Switching to direct will walk through ${n.setupPhrase}.`)})})}return"native-to-delegated"===e.kind?(0,t.jsx)(d.Alert,{variant:"info",children:(0,t.jsxs)("p",{className:"text-sm",children:["The agent stops calling ",a.displayName," directly through the main backend. Instead, the daemon proxies through"," ",(0,t.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:e.toBackend})," ","and the delegated-sync worker resumes its cadence — observations land server-side again."]})}):"native-to-disabled"===e.kind?(0,t.jsx)(d.Alert,{variant:"warning",children:(0,t.jsxs)("p",{className:"text-sm",children:["The agent loses awareness of ",a.displayName,". No background poller, no in-turn fetch — the hourly check and DM flow drop the integration from their actionable steps. Re-enabling is one click; no data is destroyed."]})}):null}function G({value:e,onChange:a,disabled:n,purgeDescription:s}){return(0,t.jsxs)("div",{className:"rounded-md border border-border bg-muted/30 p-3",children:[(0,t.jsx)("p",{className:"mb-2 text-sm font-medium",children:"Direct-mode credential handling"}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(q,{checked:"keep"===e,disabled:n,onSelect:()=>a("keep"),label:"Keep dormant (recommended)",description:"Credentials stay in the keychain. Reverting to direct is a one-click flip with no re-consent step."}),(0,t.jsx)(q,{checked:"purge"===e,disabled:n,onSelect:()=>a("purge"),label:"Purge from keychain",description:s??"Deletes the direct-mode credentials after the mode flip. Reverting to direct later will require redoing the original setup. Asks for a second confirmation."})]})]})}function q({checked:e,disabled:a,onSelect:n,label:s,description:r}){return(0,t.jsxs)("label",{className:`flex cursor-pointer items-start gap-2 rounded-md border p-2 text-xs transition ${e?"border-primary bg-primary/5":"border-border hover:bg-muted/50"} ${a?"pointer-events-none opacity-50":""}`,children:[(0,t.jsx)("input",{type:"radio",name:"token-handling",className:"mt-0.5",checked:e,disabled:a,onChange:n}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:s}),(0,t.jsx)("p",{className:"mt-0.5 text-muted-foreground",children:r})]})]})}function R({currentMode:e,descriptor:n,onSelectMode:r,delegatedBackendCount:i,mainBackend:o,disabled:l=!1,groupId:d}){let[c,u]=(0,a.useState)(()=>new Set),m=d??`mode-explainer-${n.key}`,g=A(n),p=null!=o&&g.includes(o),x=n.supportedModes.includes("native")?o?p?null:`Your main backend (${o}) ships no native connector for ${n.displayName}.`:"Set a main backend first — native binds to it.":null;return(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:"Mode"}),(0,t.jsx)("ul",{className:"space-y-2",children:n.supportedModes.map(a=>{let d=function(e,t,a=null){let n=t.displayName;if("direct"===e)return{title:"Direct",brief:`The daemon talks to ${n} itself using credentials you provide.`,details:[`Lowest token cost — your conversation backend (Claude / Codex / Gemini) does not pay tokens to fetch ${n} data; the daemon makes the API call directly and hands results to the agent.`,`Built-in safety guardrails apply: the daemon classifies destructive operations (send / delete / overwrite) and routes them through approval flows before they reach ${n}.`,function(e){switch(e){case"gmail":case"google_calendar":return"Requires a Google Cloud OAuth credential — upload the credentials JSON and complete the browser consent step on this screen before the daemon can poll.";case"notion":return"Requires a Notion internal-integration API key — paste it in this app and share each target database with the integration in Notion.";case"git":return"Requires the local git CLI plus a watched-repository list — no credential is stored in this app; the daemon reads the repos with your existing git config.";case"github":return"Requires the local gh CLI authenticated outside the daemon (gh auth login) — no credential is stored in this app; the daemon shells out to gh.";case"outlook_mail":case"outlook_calendar":return"Requires a Microsoft Identity (Azure BYOA) client config plus a per-account MSAL sign-in for each Outlook mailbox.";case"browser_history":return"Requires accepting the on-device browser history consent latch — no external credential is stored; the daemon reads local browser history databases directly."}}(t.key),"Local observers stay on — receipts, travel, calendar-imminent alerts, and FTS5 search continue to run."],footnote:"Recommended when you have the credentials ready and want the lowest token cost."};if("delegated"===e)return{title:"Delegated",brief:`Reuse Claude Code / Gemini CLI / Codex's existing connectors (MCP, plugin, or built-in connector) to reach ${n}.`,details:[`When the agent needs ${n} data, the daemon invokes the chosen CLI (Claude Code / Codex / Gemini) which calls ${n} through its already-configured connector. A small per-call token cost is incurred each time the CLI is invoked.`,`Concrete flow: your main DM agent (e.g. Claude) is asked to read ${n}; it calls this app's API; the daemon invokes the chosen CLI (e.g. Gemini CLI) which uses its already-configured connector to talk to ${n}; the result flows back through the daemon to your main agent.`,`Effective when the backend that handles your DM conversation differs from the backend that has the ${n} connector — for example, a Claude Code main agent borrowing Gemini CLI's Gmail connector to save on Claude tokens or to leverage a connector you already configured there.`,"No extra credentials live in this app — auth is whatever Claude / Codex / Gemini already had configured (claude.ai/connections, ~/.codex MCP entries, ~/.gemini extensions).","Daemon-side safety guardrails run more loosely here because the actual API call happens inside the CLI, not on the daemon. Per-tool deny-lists still apply on the proxy layer."],footnote:"Recommended when you want one backend to handle conversation and another to handle integration access, or when you do not want to manage GCP / Notion credentials yourself."};if("native"===e){let e=function(e){switch(e){case"claude":return"Claude";case"codex":return"Codex";case"gemini":return"Gemini";case"opencode":return"OpenCode";default:return"your main backend"}}(a);return{title:`Native — via ${e}`,brief:`Your DM agent (${e}) reaches ${n} directly through its own connector — no background polling and no daemon-side proxy.`,details:[`Pick this when you already use ${e}'s ${n} connector for ad-hoc work and just want the agent's hourly check and DM replies to use the same connector instead of the daemon. No background poller runs, no delegated worker ticks, no per-call proxy hop — the agent fetches in-turn when it needs ${n}.`,'Token cost moves from the (cheap) delegated worker to your main DM session. Reads sit on the same prompt as the rest of the turn, which raises the medium-tier token bill — typically by an order of magnitude per integration vs. delegated. Worth it when you would otherwise leave the integration "Disabled" and lose hourly-check awareness entirely.',`${e} must already have its ${n} connector configured (e.g. claude.ai/connections for Claude, an MCP entry for Codex, an extension for Gemini). The daemon never sees your ${n} credentials; auth and revocation live in ${e}.`,"Daemon-side safety guardrails (destructive-op confirmation, deny-lists) still cover the absolute-block layer. Per-tool deny lists do NOT apply here — the call never crosses the daemon proxy, so deny enforcement is whatever your backend allows.","If you switch the main backend later, this row is automatically flipped to Disabled and you'll be asked to re-configure. Native is an explicit binding to the backend, not a routing rule."],footnote:`Recommended when ${e} already has the ${n} connector wired up and you want the agent to use it for hourly check / DM, instead of either running a background poller or leaving the integration disabled.`}}return{title:"Disabled",brief:`The daemon does not observe or act on ${n} at all.`,details:[`The agent loses awareness of ${n} entirely — no observers, no skill body, no task-flow guidance. It will not bring up ${n} data on its own.`,`Pick this when the backend you DM with already has ${n} access through its own connectors and you do not need cross-backend delegation. Your agent can still answer ad-hoc questions about ${n} via that backend's native tools, but the daemon will not orchestrate it.`,`Pick this when you simply do not use ${n}.`,"Switching back to direct or delegated later is one click; no data is destroyed."],footnote:"Recommended when this integration is not relevant to you, or your main backend already covers it natively."}}(a,n,o??null),g=a===e,p=c.has(a),f="delegated"===a&&0===i,b="native"===a&&null!==x,v=l||f||b;return(0,t.jsxs)("li",{className:(0,y.cn)("rounded-md border transition-colors",g?"border-primary bg-primary/5":"border-border bg-card",v&&"opacity-60"),children:[(0,t.jsxs)("label",{className:(0,y.cn)("flex cursor-pointer items-start gap-3 p-3",v&&"cursor-not-allowed"),children:[(0,t.jsx)("input",{type:"radio",name:m,className:"mt-1 h-4 w-4 shrink-0",checked:g,disabled:v,onChange:()=>{v||g||r(a)},"aria-label":`Set mode to ${d.title}`}),(0,t.jsxs)("div",{className:"flex-1 space-y-1",children:[(0,t.jsx)("p",{className:"text-sm font-medium text-foreground",children:d.title}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:d.brief}),f&&(0,t.jsx)("p",{className:"text-xs text-amber-700 dark:text-amber-400",children:"No backend connector is registered for this integration — Delegated mode cannot be activated."}),b&&x&&(0,t.jsx)("p",{className:"text-xs text-amber-700 dark:text-amber-400",children:x})]})]}),(0,t.jsxs)(h.Collapsible,{open:p,onOpenChange:e=>{u(t=>{let n=new Set(t);return e?n.add(a):n.delete(a),n})},children:[(0,t.jsxs)(h.CollapsibleTrigger,{type:"button",className:"group flex w-full items-center gap-1 border-t border-border/50 px-3 py-1.5 text-left text-[11px] font-medium text-muted-foreground hover:bg-muted/40 hover:text-foreground","aria-label":`Toggle details for ${d.title} mode`,children:[(0,t.jsx)(s.ChevronDown,{className:(0,y.cn)("h-3 w-3 transition-transform",p&&"rotate-180")}),p?"Hide details":"Show details"]}),(0,t.jsx)(h.CollapsibleContent,{children:(0,t.jsxs)("div",{className:"space-y-2 px-3 pb-3 pt-1 text-xs leading-relaxed",children:[(0,t.jsx)("ul",{className:"list-disc space-y-1.5 pl-5 text-muted-foreground",children:d.details.map((e,a)=>(0,t.jsx)("li",{children:e},a))}),d.footnote&&(0,t.jsx)("p",{className:"rounded bg-muted/50 px-2 py-1 text-[11px] italic text-foreground/80",children:d.footnote})]})})]})]},a)})})]})}var E=e.i(96263),F=e.i(40974),U=e.i(10628);function Y(e){let t=new Set,a=[];for(let n of e.split(/\r?\n/)){let e=n.trim();e&&(t.has(e)||(t.add(e),a.push(e)))}return a}let K={gmail:{codex:{heading:"Gmail (delegated to Codex) — pre-populated entries:",entries:[{tool:"send_email",parenNote:"sending a freshly-composed message",verdict:"strictly destructive"},{tool:"delete_emails",parenNote:"move to Trash — the connector's only delete primitive",verdict:"strictly destructive"},{tool:"archive_emails",parenNote:"archive",verdict:'recoverable from "All Mail" but easy to lose track of'},{tool:"apply_labels_to_emails",verdict:"mutating; can hide threads"}]},claude:{heading:"Gmail (delegated to Claude) — the hosted Gmail connector is draft-only (no send / delete / archive). The only mutating ops are label changes:",entries:[{tool:"label_message",verdict:"mutating"},{tool:"label_thread",verdict:"mutating"}]}},google_calendar:{codex:{heading:"Google Calendar — pre-populated entries:",entries:[{tool:"delete_event",verdict:"strictly destructive"},{tool:"update_event",parenNote:"edits to existing events",verdict:"mutating; not strictly destructive but easy to undo wrong"}]},claude:{heading:"Google Calendar — pre-populated entries:",entries:[{tool:"delete_event",verdict:"strictly destructive"},{tool:"update_event",parenNote:"edits to existing events",verdict:"mutating; not strictly destructive but easy to undo wrong"}]}}};function z({integrationKey:e,delegatedBackend:a}){let n=K[e]?.[a];return(0,t.jsxs)(c.Card,{className:"bg-amber-50/40 dark:bg-amber-950/20",children:[(0,t.jsx)("h4",{className:"text-sm font-semibold",children:"Your destructive-action floor"}),(0,t.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:"By default, the wizard pre-populated the destructive tools below into your deny list. The agent can still read, search, and draft — it just can't send, archive, or delete unless you remove the corresponding entry."}),n&&(0,t.jsxs)("div",{className:"mt-3 space-y-2 text-xs",children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:n.heading}),n.preamble&&(0,t.jsx)("p",{className:"text-muted-foreground",children:n.preamble}),(0,t.jsx)("ul",{className:"ml-4 list-disc space-y-1 text-muted-foreground",children:n.entries.map(e=>(0,t.jsxs)("li",{children:[(0,t.jsx)("code",{className:"font-mono text-[11px] text-foreground",children:e.tool}),e.parenNote&&(0,t.jsxs)("span",{children:[" (",e.parenNote,")"]}),(0,t.jsx)("span",{children:" — "}),(0,t.jsx)("em",{children:e.verdict})]},e.tool))})]}),(0,t.jsxs)("div",{className:"mt-3 space-y-2 text-xs text-muted-foreground",children:[(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-medium text-foreground",children:"Why these defaults?"})," ","The list errs conservative on purpose: the floor here is what keeps the CLAUDE.md"," ",(0,t.jsx)("em",{children:'"destructive ops require user confirmation"'})," ","invariant intact on a fresh install. If you want the agent to archive freely, remove ",(0,t.jsx)("code",{className:"font-mono",children:"archive_emails"}),". If you trust it to update calendar events, remove"," ",(0,t.jsx)("code",{className:"font-mono",children:"update_event"}),". The strictly-destructive entries (",(0,t.jsx)("code",{className:"font-mono",children:"send_email"}),","," ",(0,t.jsx)("code",{className:"font-mono",children:"delete_emails"}),","," ",(0,t.jsx)("code",{className:"font-mono",children:"delete_event"}),") are the ones we recommend keeping."]}),(0,t.jsxs)("p",{children:["Tool names are bare — no ",(0,t.jsx)("code",{className:"font-mono",children:"mcp__*"})," ","prefix, no leading underscore (the daemon prepends the connector's namespace before forwarding). They match the connector you've delegated to: Codex Gmail uses ",(0,t.jsx)("code",{className:"font-mono",children:"send_email"}),"/",(0,t.jsx)("code",{className:"font-mono",children:"delete_emails"}),"/etc., Claude Gmail uses ",(0,t.jsx)("code",{className:"font-mono",children:"label_message"}),"/",(0,t.jsx)("code",{className:"font-mono",children:"label_thread"}),"/etc. Patterns support ",(0,t.jsx)("code",{className:"font-mono",children:"*"})," as a suffix — for example, ",(0,t.jsx)("code",{className:"font-mono",children:"delete_*"})," matches everything that starts with ",(0,t.jsx)("code",{className:"font-mono",children:"delete_"}),"."]}),(0,t.jsx)("p",{children:"Anything you deny here is rejected at the daemon, regardless of which path the agent takes (direct API, cross-backend proxy, or same-backend native MCP)."})]})]})}function V({integrationKey:e,descriptor:s,delegatedBackend:r,deniedTools:i,currentMode:u}){let[h,m]=(0,a.useState)(i??[]),[g,p]=(0,a.useState)(!1),[f,b]=(0,a.useState)(null),[y,k]=(0,a.useState)(!1),j=(0,x.usePatchIntegration)();(0,a.useEffect)(()=>{let e=[...i??[]];m(t=>!function(e,t){if(e.length!==t.length)return!1;let a=new Set(e);for(let e of t)if(!a.has(e))return!1;return!0}(t,e)?g?t:e:(p(!1),t))},[i,r]),(0,a.useEffect)(()=>{b(null),k(!1)},[r]);let N=(0,a.useMemo)(()=>(function(e,t,a){if(!t)return null;let n=e.backendConnectors[t];if(!n)return null;let s=new Set(a??[]),r=new Set(n.requiredCapabilities),i=new Set,o=[];for(let e of n.optionalCapabilities){if(i.has(e))continue;i.add(e);let t=[...n.capabilityTools[e]??[]],a=t.length>0&&t.every(e=>s.has(e));o.push({capability:e,label:w(e),tools:t,required:r.has(e),denied:a})}for(let e of n.requiredCapabilities){if(i.has(e))continue;i.add(e);let t=[...n.capabilityTools[e]??[]];o.push({capability:e,label:w(e),tools:t,required:!0,denied:!1})}let l=new Set;for(let e of Object.values(n.capabilityTools))for(let t of e)l.add(t);return{rows:o,staleDeniedTools:(a??[]).filter(e=>!l.has(e)),softEnforcement:"claude"!==t}})(s,r,h),[s,r,h]);if("delegated"!==u||!N)return null;let C=N.rows.filter(e=>!e.required),A=N.rows.filter(e=>e.required),T=async()=>{b(null),k(!1);try{await j.mutateAsync({key:e,body:{mode:"delegated",delegatedBackend:r,deniedTools:[...h]}}),p(!1),k(!0),window.setTimeout(()=>k(!1),1500)}catch(e){b(function(e){if(e instanceof v.ApiError){let t=e.body;if(t?.error==="unknown_tool")return t.message??`Unknown tool: ${t.tool??"?"}`;if(t?.error==="denial_breaks_required_capability"){let e=t.remainingTools?.join(", ")??"?";return t.message??`Denying these tools breaks required capability '${t.capability??"?"}'. Keep at least one of: ${e}.`}return t?.message??e.message}return e instanceof Error?e.message:"Unexpected error"}(e))}},$="codex"===r?"codex":null,M=C.filter(e=>e.denied).length;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(z,{integrationKey:e,delegatedBackend:r}),(0,t.jsxs)(c.Card,{children:[(0,t.jsxs)("div",{className:"mb-2 flex flex-wrap items-center justify-between gap-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("h4",{className:"text-sm font-medium",children:"Tool permissions"}),M>0&&(0,t.jsxs)(o.Badge,{variant:"amber",className:"h-5 px-1.5 text-[10px]",children:[M," off"]})]}),$&&(0,t.jsx)(U.TooltipProvider,{children:(0,t.jsxs)(U.Tooltip,{children:[(0,t.jsx)(U.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)(o.Badge,{variant:"amber",className:"cursor-help gap-1",children:["Limited enforcement (",$,")"]})}),(0,t.jsx)(U.TooltipContent,{children:(0,t.jsx)("p",{className:"max-w-xs text-xs",children:'Codex doesn\'t expose a per-tool block at the binary level. The agent reads a "denied tools" note in its prompt and is asked to obey it — weaker than the SDK-level block Claude and Gemini provide. Switch to a Claude- or Gemini-backed delegation if you need hard enforcement.'})})]})})]}),(0,t.jsx)("p",{className:"mb-3 text-xs text-muted-foreground",children:"Turn off connector tools the agent should never use for this integration. Required capabilities (search, read, …) can't be disabled — to drop them, switch the integration out of delegated mode."}),0===C.length?(0,t.jsx)("p",{className:"text-xs italic text-muted-foreground",children:"This connector has no optional capabilities to manage."}):(0,t.jsx)("div",{className:"space-y-1",children:C.map(e=>(0,t.jsx)(W,{row:e,onToggle:()=>{e.required||(m(function(e,t,a){let n=new Set(e);if(a)for(let e of t.tools)n.add(e);else for(let e of t.tools)n.delete(e);return[...n]}(h,e,!e.denied)),p(!0),b(null),k(!1))}},e.capability))}),A.length>0&&(0,t.jsx)(X,{rows:A}),N.staleDeniedTools.length>0&&(0,t.jsx)(d.Alert,{variant:"warning",className:"mt-3",children:(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsxs)("p",{className:"text-xs font-medium",children:[N.staleDeniedTools.length," stale entr",1===N.staleDeniedTools.length?"y":"ies"," from a previous backend"]}),(0,t.jsx)("ul",{className:"font-mono text-[11px]",children:N.staleDeniedTools.map(e=>(0,t.jsx)("li",{className:"break-all",children:e},e))}),(0,t.jsxs)("p",{className:"text-[11px] text-muted-foreground",children:[`These names don't match any tool in ${r}'s`,"connector. The agent ignores them already; click Clean up to drop them from the saved list."]})]}),(0,t.jsx)(l.Button,{variant:"outline",size:"sm",className:"h-7 shrink-0 px-2 text-xs",onClick:()=>{if(0===N.staleDeniedTools.length)return;let e=new Set(N.staleDeniedTools);m(h.filter(t=>!e.has(t))),p(!0),b(null),k(!1)},children:"Clean up"})]})}),f&&(0,t.jsx)(d.Alert,{variant:"error",className:"mt-3 whitespace-pre-line",children:(0,t.jsx)("p",{className:"text-xs",children:f})}),(g||y)&&(0,t.jsxs)("div",{className:"mt-3 flex items-center justify-end gap-2",children:[y&&!g&&(0,t.jsxs)("span",{className:"flex items-center gap-1 text-xs text-emerald-600 dark:text-emerald-400",children:[(0,t.jsx)(n.Check,{className:"h-3 w-3"})," Saved"]}),g&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(l.Button,{variant:"ghost",size:"sm",className:"h-7 px-2 text-xs",onClick:()=>{m(i??[]),p(!1),b(null),k(!1)},disabled:j.isPending,children:"Revert"}),(0,t.jsx)(l.Button,{size:"sm",className:"h-7 px-3 text-xs",onClick:()=>void T(),disabled:j.isPending,children:j.isPending?"Applying…":"Apply"})]})]}),(0,t.jsx)(H,{draft:h,onChange:e=>{m(e),p(!0),b(null),k(!1)}})]})]})}function H({draft:e,onChange:n}){let[r,i]=(0,a.useState)(!1),[o,l]=(0,a.useState)(e.join("\n"));return(0,a.useEffect)(()=>{let t=Y(o);t.length===e.length&&t.every((t,a)=>t===e[a])||l(e.join("\n"))},[e]),(0,t.jsxs)("div",{className:"mt-4 border-t pt-3",children:[(0,t.jsxs)("button",{type:"button",className:"flex w-full items-center justify-between text-xs text-muted-foreground hover:text-foreground",onClick:()=>i(e=>!e),"aria-expanded":r,children:[(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsx)("span",{className:"font-medium",children:"Advanced — raw deny list"}),(0,t.jsxs)("span",{className:"text-[10px]",children:["(",e.length," ",1===e.length?"entry":"entries",")"]})]}),r?(0,t.jsx)(s.ChevronDown,{className:"h-3 w-3"}):(0,t.jsx)(E.ChevronRight,{className:"h-3 w-3"})]}),r&&(0,t.jsxs)("div",{className:"mt-2 space-y-2",children:[(0,t.jsxs)("p",{className:"text-[11px] text-muted-foreground",children:["One tool pattern per line. Suffix glob support: ",(0,t.jsx)("code",{className:"font-mono",children:"delete_*"})," ","matches every tool starting with ",(0,t.jsx)("code",{className:"font-mono",children:"delete_"}),". The list is enforced uniformly across direct, cross-backend proxy, and same-backend native MCP paths."]}),(0,t.jsx)("textarea",{value:o,onChange:e=>{var t;l(t=e.target.value),n(Y(t))},spellCheck:!1,rows:Math.max(4,Math.min(12,o.split("\n").length+1)),className:"w-full rounded-md border border-input bg-background p-2 font-mono text-[11px] text-foreground focus:outline-none focus:ring-2 focus:ring-ring",placeholder:"send_email\ndelete_emails\narchive_*"})]})]})}function W({row:e,onToggle:n}){let[r,i]=(0,a.useState)(!1),l=!e.denied;return(0,t.jsxs)("div",{className:(0,y.cn)("rounded-md border p-2 text-xs transition",l?"border-border":"border-dashed border-border/70 bg-muted/20"),children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("input",{id:`perm-${e.capability}`,type:"checkbox",className:"cursor-pointer",checked:l,onChange:n}),(0,t.jsxs)("label",{htmlFor:`perm-${e.capability}`,className:"flex-1 cursor-pointer",children:[(0,t.jsx)("span",{className:"font-medium text-foreground",children:e.label}),e.denied&&(0,t.jsx)(o.Badge,{variant:"amber",className:"ml-2 h-4 px-1 text-[10px]",children:"off"})]}),e.tools.length>0&&(0,t.jsxs)("button",{type:"button",className:"flex shrink-0 items-center gap-0.5 rounded px-1 py-0.5 text-[10px] text-muted-foreground hover:bg-muted/40 hover:text-foreground",onClick:()=>i(e=>!e),"aria-expanded":r,"aria-label":r?`Hide tools for ${e.label}`:`Show tools for ${e.label}`,children:[r?(0,t.jsx)(s.ChevronDown,{className:"h-3 w-3"}):(0,t.jsx)(E.ChevronRight,{className:"h-3 w-3"}),e.tools.length," tool",1===e.tools.length?"":"s"]})]}),r&&e.tools.length>0&&(0,t.jsx)("ul",{className:"ml-6 mt-1 font-mono text-[10px] text-muted-foreground",children:e.tools.map(e=>(0,t.jsx)("li",{className:"break-all",children:e},e))})]})}function X({rows:e}){let[r,i]=(0,a.useState)(!1);return(0,t.jsxs)("div",{className:"mt-3 border-t pt-2",children:[(0,t.jsxs)("button",{type:"button",className:"flex w-full items-center justify-between text-xs text-muted-foreground hover:text-foreground",onClick:()=>i(e=>!e),"aria-expanded":r,children:[(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsx)(F.Lock,{className:"h-3 w-3"})," Required capabilities (",e.length,")"]}),r?(0,t.jsx)(s.ChevronDown,{className:"h-3 w-3"}):(0,t.jsx)(E.ChevronRight,{className:"h-3 w-3"})]}),r&&(0,t.jsxs)("ul",{className:"mt-2 space-y-1",children:[e.map(e=>(0,t.jsxs)("li",{className:"flex items-center gap-1.5 text-[11px] text-muted-foreground",children:[(0,t.jsx)(n.Check,{className:"h-3 w-3 text-muted-foreground/70"}),(0,t.jsx)("span",{className:"font-medium text-foreground",children:e.label}),e.tools.length>0&&(0,t.jsxs)("span",{className:"font-mono text-[10px]",children:["· ",e.tools.join(", ")]})]},e.capability)),(0,t.jsx)("li",{className:"pt-1 text-[10px] italic text-muted-foreground",children:"To drop these, switch this integration out of delegated mode."})]})]})}function Q({name:e,badge:a,children:n}){return(0,t.jsxs)(c.Card,{children:[(0,t.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,t.jsx)("h3",{className:"text-sm font-medium",children:e}),a]}),n]})}function Z(e){if(e instanceof v.ApiError){let t=e.body;if(t?.error==="missing_variants"){let e=[...t.missingSkills??[],...t.missingTaskFlows??[]],a="native"===t.mode?"native":"delegated";return`Missing variant file(s) for ${a} mode:
|
|
2
|
-
${e.join("\n")}`}if(t?.error==="backend_not_supported_native"){let e=t.supportedNativeBackends?.join(", ")??"—";return`${t.message??"Backend has no native connector."} Supported native backends: ${e}.`}return t?.error==="native_backend_mismatches_main"?t.message??`Native mode must bind to the current main backend (${t.mainBackend??"?"}).`:t?.message??e.message}return e instanceof Error?e.message:"Unexpected error"}function J({descriptor:e,backend:a,mode:n}){let s=a?function(e,t){switch(e){case"claude":return`Claude Code: register an MCP server via \`claude mcp add\` or wire up a connector at claude.ai/connections that exposes ${t}.`;case"codex":return`Codex: add an MCP server entry to your Codex configuration that exposes ${t} so the connector surfaces in Codex's tool list.`;case"gemini":return`Gemini CLI: install an MCP extension that exposes ${t} (e.g. \`gemini mcp add\` or a \`~/.gemini/extensions/<name>/\` directory).`;case"opencode":return`OpenCode: configure an MCP server for ${t} once OpenCode runtime support is enabled.`}}(a,e.displayName):null;return(0,t.jsxs)(d.Alert,{variant:"info",children:[(0,t.jsxs)("p",{className:"text-xs font-medium",children:["User-managed connector — the daemon does not poll, proxy, or store credentials for ",e.displayName,"."]}),(0,t.jsxs)("p",{className:"mt-1 text-xs",children:["native"===n?"Native":"Delegated"," mode requires you to register an MCP server or connector on the ",a??"selected"," backend that gives it access to"," ",e.displayName,". The agent uses those tools directly; no capability probe runs and no daemon-side proxy is exposed."]}),s&&(0,t.jsx)("p",{className:"mt-1 text-[11px] text-muted-foreground",children:s})]})}function ee({integrationKey:e,entry:c,descriptor:u,featureMatrix:m}){let g=m.filter(e=>e.present).length,p=m.length,f=c.lastProbeAt?new Date(c.lastProbeAt).toLocaleString():null,b=c.delegatedBackend;b&&u.backendConnectors[b];let k=(0,x.useIntegrationProbeLive)(),[j,N]=(0,a.useState)(null);if(u.userManagedConnector)return(0,t.jsx)(J,{descriptor:u,backend:b,mode:"delegated"});let w=async()=>{if(b){N(null);try{await k.mutateAsync({key:e,backend:b,liveProbe:!0})}catch(e){if(e instanceof v.ApiError){let t=e.body;t?.error==="live_probe_unsupported"?N(t.message??"Live probe not yet supported on this backend."):N(t?.message??e.message)}else N(e instanceof Error?e.message:"Unexpected error")}}};return(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground",children:[(0,t.jsxs)("span",{children:["Tool namespace"," ",(0,t.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:c.toolNamespace??"?"})]}),(0,t.jsxs)("span",{children:["Capabilities"," ",(0,t.jsxs)("span",{className:"text-foreground",children:[g,"/",p]})]}),(0,t.jsxs)("span",{children:["Probe"," ",(0,t.jsx)("span",{className:"text-foreground",children:f??"defaults (no live probe yet)"})]}),(0,t.jsxs)(l.Button,{variant:"ghost",size:"sm",className:"h-6 gap-1 px-2 text-[11px]",onClick:()=>void w(),disabled:k.isPending||!b,"aria-label":"Re-probe connector",children:[(0,t.jsx)(r.RefreshCw,{className:(0,y.cn)("h-3 w-3",k.isPending&&"animate-spin")}),k.isPending?"Probing…":"Re-probe"]})]}),j&&(0,t.jsx)(d.Alert,{variant:"error",children:(0,t.jsx)("p",{className:"text-xs",children:j})}),p>0&&(0,t.jsxs)(h.Collapsible,{children:[(0,t.jsxs)(h.CollapsibleTrigger,{className:"group flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",children:[(0,t.jsx)(s.ChevronDown,{className:"h-3 w-3 transition-transform group-data-[state=open]:rotate-180"}),"Feature matrix"]}),(0,t.jsx)(h.CollapsibleContent,{children:(0,t.jsx)("ul",{className:"mt-2 grid grid-cols-1 gap-0.5 sm:grid-cols-2",children:m.map(e=>(0,t.jsxs)("li",{className:(0,y.cn)("flex items-center gap-1.5 text-xs",!e.present&&"text-muted-foreground/70"),children:[e.present?(0,t.jsx)(n.Check,{className:"h-3 w-3 text-emerald-500"}):(0,t.jsx)(i.X,{className:"h-3 w-3 text-muted-foreground"}),(0,t.jsx)("span",{children:e.label}),e.required&&!e.present&&(0,t.jsx)(o.Badge,{variant:"red",className:"h-4 px-1 text-[10px]",children:"required"})]},e.capability))})})]})]})}function et({integrationKey:e,entry:c,descriptor:u,featureMatrix:m,mainBackend:g}){let p=m.filter(e=>e.present).length,f=m.length,b=c.lastProbeAt?new Date(c.lastProbeAt).toLocaleString():null,k=c.nativeBackend,j=(0,x.useIntegrationProbeLive)(),[N,w]=(0,a.useState)(null);if(u.userManagedConnector)return(0,t.jsx)(J,{descriptor:u,backend:k,mode:"native"});let C=null!==k&&null!==g&&k!==g,A=async()=>{if(k){w(null);try{await j.mutateAsync({key:e,backend:k,liveProbe:!0})}catch(e){if(e instanceof v.ApiError){let t=e.body;t?.error==="live_probe_unsupported"?w(t.message??"Live probe not yet supported on this backend."):w(t?.message??e.message)}else w(e instanceof Error?e.message:"Unexpected error")}}};return(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(d.Alert,{variant:"info",children:(0,t.jsxs)("p",{className:"text-xs",children:["Native mode — the agent fetches ",u.displayName," via"," ",(0,t.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:k??"?"}),"'s connector during DM and hourly_check turns. The daemon does not poll, does not proxy, and does not store"," ",u.displayName," credentials. Destructive operations still require user confirmation via the absolute-block layer."]})}),C&&(0,t.jsx)(d.Alert,{variant:"warning",children:(0,t.jsxs)("p",{className:"text-xs",children:["This row is bound to"," ",(0,t.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:k})," ","but the current main backend is"," ",(0,t.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:g}),". The next session refresh will cascade this row to disabled — re-configure on the new main backend."]})}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground",children:[(0,t.jsxs)("span",{children:["Tool namespace"," ",(0,t.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:c.toolNamespace??"?"})]}),f>0&&(0,t.jsxs)("span",{children:["Capabilities"," ",(0,t.jsxs)("span",{className:"text-foreground",children:[p,"/",f]})]}),(0,t.jsxs)("span",{children:["Probe"," ",(0,t.jsx)("span",{className:"text-foreground",children:b??"defaults (no live probe yet)"})]}),(0,t.jsxs)(l.Button,{variant:"ghost",size:"sm",className:"h-6 gap-1 px-2 text-[11px]",onClick:()=>void A(),disabled:j.isPending||!k,"aria-label":"Re-probe connector",children:[(0,t.jsx)(r.RefreshCw,{className:(0,y.cn)("h-3 w-3",j.isPending&&"animate-spin")}),j.isPending?"Probing…":"Re-probe"]})]}),N&&(0,t.jsx)(d.Alert,{variant:"error",children:(0,t.jsx)("p",{className:"text-xs",children:N})}),f>0&&(0,t.jsxs)(h.Collapsible,{children:[(0,t.jsxs)(h.CollapsibleTrigger,{className:"group flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",children:[(0,t.jsx)(s.ChevronDown,{className:"h-3 w-3 transition-transform group-data-[state=open]:rotate-180"}),"Feature matrix"]}),(0,t.jsx)(h.CollapsibleContent,{children:(0,t.jsx)("ul",{className:"mt-2 grid grid-cols-1 gap-0.5 sm:grid-cols-2",children:m.map(e=>(0,t.jsxs)("li",{className:(0,y.cn)("flex items-center gap-1.5 text-xs",!e.present&&"text-muted-foreground/70"),children:[e.present?(0,t.jsx)(n.Check,{className:"h-3 w-3 text-emerald-500"}):(0,t.jsx)(i.X,{className:"h-3 w-3 text-muted-foreground"}),(0,t.jsx)("span",{children:e.label}),e.required&&!e.present&&(0,t.jsx)(o.Badge,{variant:"red",className:"h-4 px-1 text-[10px]",children:"required"})]},e.capability))})})]})]})}function ea({integrationKey:e,delegatedBackend:n,delegatedModel:s,currentMode:r}){var i,c;let h=(0,x.useProxyModels)(n),m=(0,x.usePatchIntegration)(),[g,p]=(0,a.useState)(null),f=h.data?.options??[],b=h.data?.canonical??null,v=s??T,y=null!==s&&f.length>0&&!f.some(e=>e.modelId===s),k=s?f.find(e=>e.modelId===s):f.find(e=>e.modelId===b)??f.find(e=>"lite"===e.tier)??f[0],j=k?(i=k.usdPer1kIn,c=k.usdPer1kOut,null===i||null===c?null:800*i/1e3+200*c/1e3):null,N=async t=>{p(null);let a=t===T?null:t;if(a!==s)try{await m.mutateAsync({key:e,body:{mode:"delegated",delegatedBackend:n,delegatedModel:a}})}catch(e){p(Z(e))}};return"delegated"!==r?null:(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsx)("label",{className:"text-xs font-medium text-muted-foreground",htmlFor:`proxy-model-${e}`,children:"Proxy model"}),(0,t.jsxs)(u.Select,{value:v,onValueChange:e=>void N(e),children:[(0,t.jsx)(u.SelectTrigger,{id:`proxy-model-${e}`,className:"h-8 w-auto min-w-[16rem] text-xs",disabled:h.isLoading||m.isPending,children:(0,t.jsx)(u.SelectValue,{})}),(0,t.jsxs)(u.SelectContent,{children:[(0,t.jsxs)(u.SelectItem,{value:T,children:["Auto (light tier",b?` — ${b}`:"",")"]}),f.map(e=>(0,t.jsxs)(u.SelectItem,{value:e.modelId,children:[e.displayName,"lite"!==e.tier?` \xb7 ${e.tier}`:"",e.deprecated?" · deprecated":""]},e.modelId)),y&&s&&(0,t.jsxs)(u.SelectItem,{value:s,children:[s," · stale"]})]})]}),null!==j&&(0,t.jsxs)(o.Badge,{variant:"gray",title:"Estimate based on a typical proxy call (≈800 in / 200 out tokens). Actual costs vary by tool.",children:["≈ ",j<.001?"<$0.001":j<.01?`$${j.toFixed(4)}`:`$${j.toFixed(3)}`," / call"]})]}),y&&(0,t.jsxs)(d.Alert,{variant:"warning",children:[(0,t.jsxs)("p",{className:"text-xs",children:["Pinned model ",(0,t.jsx)("code",{children:s})," is not registered for backend ",(0,t.jsx)("code",{children:n}),". Calls fall back to the canonical light-tier model until you reset."]}),(0,t.jsx)(l.Button,{variant:"ghost",size:"sm",className:"mt-1 h-6 px-2 text-[11px]",onClick:()=>void N(T),disabled:m.isPending,children:"Reset to default"})]}),g&&(0,t.jsx)(d.Alert,{variant:"error",children:(0,t.jsx)("p",{className:"text-xs",children:g})})]})}function en({integrationKey:e,credentialsPresent:a}){let n=es[e].present,s=es[e].absent;return(0,t.jsx)(d.Alert,{variant:a?"success":"warning",children:(0,t.jsx)("p",{className:"text-xs",children:a?n:s})})}let es={gmail:{present:"Google OAuth credentials present. The daemon is polling Gmail directly.",absent:"Direct mode requires a Google Cloud OAuth credential. Complete the credential upload + authorize step below."},google_calendar:{present:"Google OAuth credentials present. The daemon is polling Calendar directly.",absent:"Direct mode requires a Google Cloud OAuth credential. Complete the credential upload + authorize step below."},notion:{present:"Notion API key present. The daemon is polling configured databases directly.",absent:"Direct mode requires a Notion internal-integration API key. Paste it below and share each target database with the integration."},git:{present:"Direct mode active. The daemon polls watched repositories with the local git CLI.",absent:"Direct mode uses the local git CLI and watched repository list; no daemon-managed credential is required."},github:{present:"Direct mode active. The daemon polls GitHub through the local gh CLI.",absent:"Direct mode uses gh auth login outside the daemon keychain; no daemon-managed credential is required."},outlook_mail:{present:"Outlook BYOA client config present. The unified mail poller covers authenticated Outlook mailboxes.",absent:"Direct mode requires a Microsoft Identity (BYOA) client config. Register an Azure app and paste the client id below."},outlook_calendar:{present:"Outlook BYOA client config present. Calendar reads are on-demand and reuse the MSAL token from Outlook Mail; no background poller in v1.",absent:"Direct mode requires the BYOA client config used by Outlook Mail. Configure it via the Outlook Mail card; calendar reads reuse the same authenticated session."},browser_history:{present:"Browser history ingest is active. The daemon reads local browser history databases on the configured cadence.",absent:"Direct mode requires accepting the on-device browser history consent latch. No external credentials are required."}};function er({integrationKey:e}){let a=(0,x.useRecentProxyCalls)(e),n=a.data?.calls??[],r=n.some(e=>"failed"===e.result);return(0,t.jsxs)(h.Collapsible,{children:[(0,t.jsxs)(h.CollapsibleTrigger,{className:"group flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",children:[(0,t.jsx)(s.ChevronDown,{className:"h-3 w-3 transition-transform group-data-[state=open]:rotate-180"}),"Recent proxy calls",!a.isLoading&&(0,t.jsxs)("span",{className:"text-muted-foreground/70",children:["(",n.length,r&&(0,t.jsx)("span",{className:"ml-1 text-amber-600 dark:text-amber-400",children:"· failures"}),")"]})]}),(0,t.jsxs)(h.CollapsibleContent,{className:"pt-2",children:[a.isLoading&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Loading…"}),a.error&&(0,t.jsx)(d.Alert,{variant:"error",children:(0,t.jsxs)("p",{className:"text-xs",children:["Could not load recent calls:"," ",a.error instanceof Error?a.error.message:"Unexpected error"]})}),!a.isLoading&&!a.error&&0===n.length&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"No proxy calls have been recorded for this integration yet. They land here as the agent invokes the connector."}),(0,t.jsxs)("p",{className:"mb-2 text-[11px] text-muted-foreground",children:["Only ",(0,t.jsx)("strong",{children:"cross-backend"}),"delegated calls show up here — calls where your DM session runs on a different backend than the connector's owner. Same-backend delegated calls (for example, a Codex DM session using Codex's own Gmail connector) skip the proxy and roll up under the parent session's totals. Per-tool cost isn't measurable in those cases."]}),n.length>0&&(0,t.jsx)("div",{className:"overflow-x-auto",children:(0,t.jsxs)("table",{className:"w-full min-w-[42rem] border-separate border-spacing-0 text-[11px]",children:[(0,t.jsx)("thead",{children:(0,t.jsxs)("tr",{className:"text-left text-muted-foreground",children:[(0,t.jsx)("th",{className:"pb-1 pr-3 font-medium",children:"Time"}),(0,t.jsx)("th",{className:"pb-1 pr-3 font-medium",children:"Tool"}),(0,t.jsx)("th",{className:"pb-1 pr-3 font-medium",children:"Model"}),(0,t.jsx)("th",{className:"pb-1 pr-3 font-medium",children:"Duration"}),(0,t.jsx)("th",{className:"pb-1 pr-3 font-medium",children:"Cost"}),(0,t.jsx)("th",{className:"pb-1 font-medium",children:"Result"})]})}),(0,t.jsx)("tbody",{children:n.map(e=>{var a,n;return(0,t.jsxs)("tr",{className:"border-t border-border/50 align-top",children:[(0,t.jsx)("td",{className:"py-1 pr-3 text-muted-foreground",children:function(e,t=new Date){if(null===e)return"—";let a=new Date(e);return Number.isNaN(a.getTime())?e:a.getFullYear()===t.getFullYear()&&a.getMonth()===t.getMonth()&&a.getDate()===t.getDate()?a.toLocaleTimeString():a.toLocaleString()}(e.startedAt)}),(0,t.jsx)("td",{className:"py-1 pr-3 font-mono",children:function(e){if(!e)return"—";let t=e.split("__"),a=t[t.length-1];return a&&a.length>0?a:e}(e.toolName)}),(0,t.jsx)("td",{className:"py-1 pr-3 text-muted-foreground",children:e.modelId??"—"}),(0,t.jsx)("td",{className:"py-1 pr-3 text-muted-foreground",children:null===(a=e.durationMs)?"—":a<1e3?`${a}ms`:`${(a/1e3).toFixed(1)}s`}),(0,t.jsx)("td",{className:"py-1 pr-3 text-muted-foreground",children:null===(n=e.costUsd)?"—":0===n?"$0":n<.001?"<$0.001":n<.01?`$${n.toFixed(4)}`:`$${n.toFixed(3)}`}),(0,t.jsx)("td",{className:"py-1",children:"success"===e.result?(0,t.jsx)(o.Badge,{variant:"green",className:"h-4 px-1 text-[10px]",children:"ok"}):(0,t.jsx)("span",{className:"text-amber-700 dark:text-amber-300",title:e.errorMessage??void 0,children:e.errorClass??e.result??"failed"})})]},e.id)})})]})})]})]})}e.s(["IntegrationCard",0,function({integrationKey:e,gmailAccountCount:n=0,children:s}){var r,i,c,h,y;let k=(0,x.useIntegrations)(),j=(0,p.useHealth)(),N=(0,g.useConfig)(),T=(0,m.useBackends)(),M=(0,x.useNativeUnboundActions)(),S=(0,x.usePatchIntegration)(),B=(0,x.useIntegrationProbeLive)(),_=(0,f.useConfirm)(),D=(0,b.useQueryClient)(),[L,G]=(0,a.useState)(null),[q,E]=(0,a.useState)("keep"),[F,U]=(0,a.useState)(null),[Y,K]=(0,a.useState)(null),[z,H]=(0,a.useState)(!1),W=(0,a.useMemo)(()=>k.data?.integrations.find(t=>t.key===e),[k.data,e]),X=j.data?.integrationModes?.[e],J=T.data?.defaultBackend??null;if(k.isLoading||j.isLoading)return(0,t.jsx)(Q,{name:e,children:"Loading…"});if(!W||!X)return(0,t.jsx)(Q,{name:e,children:(0,t.jsx)(d.Alert,{variant:"error",children:"Could not load integration metadata. The daemon may be offline."})});let es=C(W),ei=A(W),eo=!!(r=N.data)&&("gmail"===e||"google_calendar"===e?r.googleCalendarCredentialsConfigured&&r.googleCalendarTokenConfigured:"notion"===e?r.notionConfigured:"git"===e||"github"===e||("outlook_mail"===e||"outlook_calendar"===e)&&!!r.outlookClientConfigConfigured),el=P(W),ed=(M.data??[]).find(t=>t.key===e),ec=function(e){let{mode:t,unboundEntry:a,stateLastChangedAt:n,dismissedLocally:s}=e;if(s||void 0===a||"disabled"!==t)return!1;if(null===a.startedAt)return!0;let r=$(n),i=$(a.startedAt);return null===r||null===i||r<=i}({mode:X.mode,unboundEntry:ed,stateLastChangedAt:W.state.lastChangedAt,dismissedLocally:z}),eu="delegated"===X.mode&&null!==J&&X.delegatedBackend===J&&!!W.supportedModes.includes("native")&&!!J&&A(W).includes(J),eh=function(e,t,a){if(null===e||null===a)return[];let n=t.backendConnectors[a];if(!n)return[];let s=new Set(n.requiredCapabilities),r=new Set,i=[];for(let t of[...n.requiredCapabilities,...n.optionalCapabilities])r.has(t)||(r.add(t),i.push({capability:t,label:w(t),present:!0===e[t],required:s.has(t)}));return i.sort((e,t)=>{let a=e=>e.present&&e.required?0:e.present?1:e.required?2:3,n=a(e)-a(t);return 0!==n?n:e.label.localeCompare(t.label)})}(X.features,W,"native"===X.mode?X.nativeBackend:X.delegatedBackend),em=async t=>{if("delegated"===X.mode&&t!==X.delegatedBackend){K(null);try{await S.mutateAsync({key:e,body:{mode:"delegated",delegatedBackend:t}}),B.mutateAsync({key:e,backend:t,liveProbe:!0}).catch(()=>void 0)}catch(e){K(Z(e))}}},eg=async()=>{if(!L)return;if(U(null),"direct"===X.mode&&"delegated"===L.targetMode&&"purge"===q&&el&&!await _({title:el.confirmTitle,description:el.confirmDescription,confirmLabel:"Purge",cancelLabel:"Keep dormant",variant:"destructive",requireText:"purge"}))return void E("keep");let t={mode:L.targetMode,..."delegated"===L.targetMode&&L.targetBackend?{delegatedBackend:L.targetBackend}:{},..."native"===L.targetMode&&L.targetBackend?{nativeBackend:L.targetBackend}:{}};try{await S.mutateAsync({key:e,body:t}),("delegated"===L.targetMode||"native"===L.targetMode)&&L.targetBackend&&B.mutateAsync({key:e,backend:L.targetBackend,liveProbe:!0}).catch(()=>void 0),"direct"===X.mode&&"delegated"===L.targetMode&&"purge"===q&&el&&(await Promise.all(el.secretKeys.map(e=>v.api.delete(`/secrets/${e}`).catch(()=>{}))),D.invalidateQueries({queryKey:["config"]})),G(null)}catch(e){U(Z(e))}};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(Q,{name:W.displayName,badge:(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[X.subTier&&(0,t.jsx)(o.Badge,{variant:"blue",children:"draft-only"===(i=X.subTier)?"Draft-Only":"full-auto"===i?"Full-Auto":null}),(0,t.jsx)(o.Badge,{variant:"direct"===(c=X.mode)?"green":"delegated"===c?"amber":"native"===c?"blue":"gray",children:(h=X.mode,y="native"===X.mode?X.nativeBackend:X.delegatedBackend,"direct"===h?"Direct":"disabled"===h?"Disabled":"native"===h?null===y?"Native":`Native — ${y}`:null===y?"Delegated":`Delegated — ${y}`)})]}),children:(0,t.jsxs)("div",{className:"space-y-3",children:[ec&&ed&&(0,t.jsxs)(d.Alert,{variant:"error",children:[(0,t.jsxs)("p",{className:"text-sm font-medium",children:["Native binding lost — re-configure ",W.displayName,"."]}),(0,t.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:[W.displayName," was set to native mode on"," ",(0,t.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:ed.priorNativeBackend??"?"})," ","but you switched the main backend to"," ",(0,t.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:ed.newMainBackend??J??"?"}),". Native bindings are explicit — pick a mode below to restore agent awareness."]}),(0,t.jsx)(l.Button,{variant:"ghost",size:"sm",className:"mt-2 h-6 px-2 text-[11px]",onClick:()=>H(!0),children:"Dismiss"})]}),eu&&J&&(0,t.jsxs)(d.Alert,{variant:"info",children:[W.userManagedConnector?(0,t.jsxs)("p",{className:"text-sm",children:["You're delegated to your main backend (",(0,t.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:J}),"). Switching to ",(0,t.jsx)("strong",{children:"Native"})," swaps the row to an explicit binding against ",J," — the user-installed"," ",W.displayName," MCP is reached the same way, but the mode label honestly reflects that the daemon never proxies this integration, and a future main-backend change will prompt you to re-confirm the binding instead of silently moving the delegation."]}):(0,t.jsxs)("p",{className:"text-sm",children:["You're delegated to your main backend (",(0,t.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:J}),"). Switching to ",(0,t.jsx)("strong",{children:"Native"})," stops the background worker cadence and lets the agent fetch"," ",W.displayName," in-turn through ",J,"'s own connector — fewer moving parts, no proxy hop."]}),(0,t.jsx)("div",{className:"mt-2 flex items-center gap-2",children:(0,t.jsx)(l.Button,{variant:"outline",size:"sm",className:"h-7 px-2 text-xs",disabled:S.isPending,onClick:()=>{U(null),E("keep"),G({open:!0,targetMode:"native",targetBackend:J})},children:"Switch to native"})})]}),(0,t.jsx)(R,{currentMode:X.mode,descriptor:W,delegatedBackendCount:es.length,mainBackend:J,disabled:S.isPending,onSelectMode:e=>{if(e!==X.mode){if(U(null),E("keep"),"delegated"===e){let e=es[0];if(!e)return;G({open:!0,targetMode:"delegated",targetBackend:e});return}if("native"===e){if(!J||!ei.includes(J))return;G({open:!0,targetMode:"native",targetBackend:J});return}G({open:!0,targetMode:e})}}}),"delegated"===X.mode&&es.length>0&&(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",children:"Backend"}),(0,t.jsxs)(u.Select,{value:X.delegatedBackend??es[0],onValueChange:e=>void em(e),disabled:S.isPending,children:[(0,t.jsx)(u.SelectTrigger,{className:"h-8 text-xs",children:(0,t.jsx)(u.SelectValue,{})}),(0,t.jsx)(u.SelectContent,{children:es.map(e=>{let a=(0,O.isUiPreviewOnlyBackend)(e);return(0,t.jsxs)(u.SelectItem,{value:e,disabled:a,children:[e,a?O.UI_PREVIEW_ONLY_BADGE_SUFFIX:""]},e)})})]}),Y&&(0,t.jsx)(d.Alert,{variant:"error",className:"mt-2",children:(0,t.jsx)("p",{className:"text-xs",children:Y})})]}),X.variantsMissing&&X.variantsMissing.length>0&&(0,t.jsxs)(d.Alert,{variant:"error",children:[(0,t.jsxs)("p",{className:"font-medium",children:["Missing ","native"===X.mode?"native":"delegated"," ","variant file(s) — agent will silently fall back to the direct- mode skill body."]}),(0,t.jsx)("ul",{className:"mt-1 space-y-0.5 font-mono text-[11px]",children:X.variantsMissing.map(e=>(0,t.jsx)("li",{className:"break-all",children:e},e))})]}),"delegated"===X.mode&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(ee,{integrationKey:e,entry:X,descriptor:W,featureMatrix:eh}),X.delegatedBackend&&!W.userManagedConnector&&(0,t.jsx)(ea,{integrationKey:e,delegatedBackend:X.delegatedBackend,delegatedModel:W.state.delegatedModel??null,currentMode:X.mode}),X.delegatedBackend&&!W.userManagedConnector&&(0,t.jsx)(V,{integrationKey:e,descriptor:W,delegatedBackend:X.delegatedBackend,deniedTools:W.state.deniedTools,currentMode:X.mode}),!W.userManagedConnector&&(0,t.jsx)(er,{integrationKey:e})]}),"native"===X.mode&&(0,t.jsx)(et,{integrationKey:e,entry:X,descriptor:W,featureMatrix:eh,mainBackend:J}),"direct"===X.mode&&(0,t.jsx)(en,{integrationKey:e,credentialsPresent:eo}),"disabled"===X.mode&&(0,t.jsx)(d.Alert,{variant:"info",children:(0,t.jsx)("p",{children:"Disabled. The agent does not observe or act on this integration. Flip the mode above to re-enable."})}),s]})}),L&&(0,t.jsx)(I,{open:L.open,onOpenChange:e=>{G(t=>t?{...t,open:e}:null),e||U(null)},descriptor:W,currentMode:X.mode,currentBackend:"native"===X.mode?X.nativeBackend:X.delegatedBackend,targetMode:L.targetMode,targetBackend:L.targetBackend,onTargetBackendChange:e=>G(t=>t?{...t,targetBackend:e}:null),directCredentialsPresent:eo,gmailAccountCount:n,tokenHandling:q,onTokenHandlingChange:E,onConfirm:eg,isPending:S.isPending,error:F})]})}],32077)}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,52387,e=>{"use strict";let t=(0,e.i(77379).default)("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["ExternalLink",0,t],52387)},90925,e=>{"use strict";let t=(0,e.i(77379).default)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);e.s(["Trash2",0,t],90925)},60168,e=>{"use strict";let t=(0,e.i(77379).default)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",0,t],60168)},99758,e=>{"use strict";let t=(0,e.i(77379).default)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",0,t],99758)},76176,e=>{"use strict";e.i(18446);var t=e.i(38082);let r={claude:"Claude Code",codex:"OpenAI Codex",gemini:"Gemini CLI",opencode:"OpenCode"},n=new Set(["opencode"]);function a(e){return n.has(e)}let s={gemini:{badgeLabel:"Vendor deprecation",shortSuffix:" (deprecated)",reason:"Google announced Gemini CLI will stop serving free, Pro, and Ultra requests on 2026-06-18 in favor of Antigravity CLI. Standard / Enterprise licenses keep access. Avoid binding new processes to Gemini if you rely on consumer-tier auth."}},i={claude:"Claude",codex:"Codex",gemini:"Gemini",opencode:"OpenCode"},l={claude:["#7C2D12","#B54B2D","#E15B40","#F97316","#FDBA74"],codex:["#86198F","#A21CAF","#D946EF","#E879F9","#F5D0FE"],gemini:["#1E3A8A","#1D4ED8","#1C69FF","#60A5FA","#93C5FD"],opencode:["#7C2D12","#C2410C","#FF7300","#F59E0B","#FCD34D"]},o=["#6b7280","#9ca3af","#4b5563","#374151"],c={claude:"orange",codex:"pink",gemini:"blue",opencode:"orange"},d={"routine.morning_routine":"Morning Routine","routine.evening_review":"Evening Review","routine.weekly_review":"Weekly Review","routine.monthly_review":"Monthly Review","routine.hourly_check":"Hourly Check","routine.roadmap_refresh":"Roadmap Refresh","message.dm":"Direct Messages","message.mention":"Mentions","dashboard.chat":"Dashboard Chat","agent.task":"Scheduled Tasks","calendar.change":"Calendar Events",gmail_classify:"Gmail Classification","github.pull_request.review_requested":"GitHub Review Requests","github.assigned":"GitHub Assignments","github.security_alert":"GitHub Security Alerts","github.workflow_run.failed":"GitHub CI Failures","wiki.ingest_url":"Wiki URL Ingest","wiki.compile":"Wiki Compile","wiki.ask":"Wiki Ask"};function u(e){let t;if(!e)return[];try{t=JSON.parse(e)}catch{return[]}if(!t||"object"!=typeof t)return[];let r=[];for(let[e,n]of Object.entries(t))n&&"object"==typeof n&&r.push({modelId:e,inputTokens:"number"==typeof n.inputTokens?n.inputTokens:0,outputTokens:"number"==typeof n.outputTokens?n.outputTokens:0,costUsd:"number"==typeof n.costUsd?n.costUsd:0});return r.sort((e,t)=>t.costUsd-e.costUsd)}function h(e){if(!e)return null;let t=e.toLowerCase();return/^[a-z0-9_.-]+\/[a-z0-9_.-]+/.test(t)?"opencode":t.includes("claude")||t.includes("sonnet")||t.includes("opus")||t.includes("haiku")?"claude":t.includes("gemini")?"gemini":t.includes("gpt")||t.includes("codex")||t.includes("o3")||t.includes("o4")?"codex":null}e.s(["BACKEND_BADGE_VARIANTS",0,c,"BACKEND_COLORS",0,{claude:"#E15B40",codex:"#D946EF",gemini:"#1C69FF",opencode:"#FF7300"},"BACKEND_LABELS",0,r,"BACKEND_PROVIDER_LABELS",0,{claude:"Claude (Anthropic)",codex:"ChatGPT (OpenAI)",gemini:"Gemini (Google)",opencode:"OpenCode (sst/opencode)"},"BACKEND_PROVIDER_SHORT",0,{claude:"Claude",codex:"ChatGPT",gemini:"Gemini",opencode:"OpenCode"},"BACKEND_WEB_SEARCH_DESCRIPTIONS",0,{claude:"Lets the agent call Anthropic's built-in WebSearch tool.",codex:"Lets the agent call OpenAI's web_search tool. Works in safe (sandbox) mode — the tool runs at OpenAI, not as a local shell command.",gemini:"Lets the agent call Gemini's google_web_search tool.",opencode:"Lets the agent call the configured OpenCode provider's web-search tool when the OpenCode runtime is enabled."},"CHART_CATEGORY_PALETTE",0,["#3b82f6","#10b981","#f59e0b","#8b5cf6","#ec4899","#14b8a6","#f97316","#6366f1","#ef4444","#22c55e"],"UI_PREVIEW_ONLY_BADGE_SUFFIX",0," (coming soon)","UI_PREVIEW_ONLY_REASON",0,"Coming soon — OpenCode is wired internally but not yet ready for selection in this release. The card stays visible so you can see what is on the roadmap.","assignModelColors",0,function(e){let t=new Map;for(let r of e){if(!r)continue;let e=h(r)??"other",n=t.get(e)??[];n.push(r),t.set(e,n)}let r={};for(let[e,n]of t){n.sort((e,t)=>e.localeCompare(t));let t="other"===e?o:l[e],a=n.length;n.forEach((e,n)=>{let s;s=a>=t.length?n%t.length:1===a?Math.floor(t.length/2):Math.floor((n+.5)*t.length/a),r[e]=t[s]})}return r},"detectBackendFromModel",0,h,"formatModelName",0,function(e){return e?e.replace(/^[a-z0-9_.-]+\//i,"").replace(/^claude-/,"Claude ").replace(/^gpt-/,"GPT-").replace(/^gemini-/,"Gemini ").replace(/-/g," ").replace(/\bpreview\b/gi,"(preview)").replace(/\bpro\b/gi,"Pro").replace(/\bflash\b/gi,"Flash").replace(/\blite\b/gi,"Lite").replace(/\bmini\b/gi,"Mini").replace(/\bcodex\b/gi,"Codex").replace(/\bopus\b/gi,"Opus").replace(/\bsonnet\b/gi,"Sonnet").replace(/\bhaiku\b/gi,"Haiku").replace(/\s+/g," ").trim():"Not set"},"formatShortModelName",0,function(e){if(!e)return"unknown";if("opus"===e)return"Opus";if("sonnet"===e)return"Sonnet";let t=e.replace(/^[a-z0-9_.-]+\//i,""),r=t.replace(/-\d{8,}$/,"").replace(/^claude-/,"").replace(/(\d+)-(\d+)(?![-\d])/g,"$1.$2").replace(/-/g," ");return t.startsWith("gpt-")&&(r=`GPT-${r.replace(/^gpt\s*/i,"")}`),t.startsWith("gemini-")&&(r=r.replace(/^gemini\s*/i,"Gemini ")),r.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()},"getBackendDeprecation",0,function(e){return s[e]??null},"getBackendLabel",0,function(e){return r[e]},"getBackendShortLabel",0,function(e){return i[e]},"getProcessGroup",0,function(e){return e.startsWith("wiki.")?"Wiki":e.startsWith("message.")||e.startsWith("dashboard.")?"Conversation":e.startsWith("routine.")?"Routines":e.startsWith("git.")||e.startsWith("github.")?"Git & GitHub":e.startsWith("calendar.")||"gmail_classify"===e?"Integrations":"Tasks"},"getProcessLabel",0,function(e){return d[e]??e},"isBackendSelectionDisabled",0,function(e){return!(0,t.isRuntimeAvailableBackendId)(e)||a(e)},"isUiPreviewOnlyBackend",0,a,"modelBadgeVariant",0,function(e){if(!e)return"gray";let t=h(e);return t?c[t]:"gray"},"parseModelUsage",0,u,"pickDisplayModel",0,function(e,t){let r=u(t);return r.length>0&&r[0]?r[0].modelId:e??null}])},24756,e=>{"use strict";var t=e.i(14260),r=e.i(65268);e.s(["useBackends",0,function(e){return(0,t.useQuery)({queryKey:["backends"],queryFn:()=>r.api.get("/backends"),enabled:e?.enabled??!0,staleTime:6e4})}])},50862,e=>{"use strict";var t=e.i(54710),r=e.i(81471);e.s(["EmptyState",0,function({icon:e,title:n,description:a,className:s,children:i}){return(0,t.jsxs)("div",{className:(0,r.cn)("flex flex-col items-center justify-center py-16 text-muted-foreground",s),children:[(0,t.jsx)(e,{className:"mb-3 h-10 w-10 opacity-40"}),(0,t.jsx)("p",{className:"text-sm font-medium",children:n}),a&&(0,t.jsx)("p",{className:"mt-1 max-w-prose text-xs text-muted-foreground/70",children:a}),i]})}])},75540,e=>{"use strict";var t=e.i(46437),r=e.i(49457),n=class extends t.QueryObserver{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){super.setOptions({...e,behavior:(0,r.infiniteQueryBehavior)()})}getOptimisticResult(e){return e.behavior=(0,r.infiniteQueryBehavior)(),super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"backward"}}})}createResult(e,t){let{state:n}=e,a=super.createResult(e,t),{isFetching:s,isRefetching:i,isError:l,isRefetchError:o}=a,c=n.fetchMeta?.fetchMore?.direction,d=l&&"forward"===c,u=s&&"forward"===c,h=l&&"backward"===c,m=s&&"backward"===c;return{...a,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:(0,r.hasNextPage)(t,n.data),hasPreviousPage:(0,r.hasPreviousPage)(t,n.data),isFetchNextPageError:d,isFetchingNextPage:u,isFetchPreviousPageError:h,isFetchingPreviousPage:m,isRefetchError:o&&!d&&!h,isRefetching:i&&!u&&!m}}},a=e.i(98757);e.s(["useInfiniteQuery",0,function(e,t){return(0,a.useBaseQuery)(e,n,t)}],75540)},13707,e=>{"use strict";var t=e.i(54710),r=e.i(34416),n=e.i(85565),a=e.i(90816),s=e.i(9413),i=e.i(22353),l=e.i(88248),o=e.i(75649),c=e.i(18731),d=e.i(27069),u=e.i(91967),h="ScrollArea",[m,p]=(0,s.createContextScope)(h),[f,g]=m(h),x=r.forwardRef((e,a)=>{let{__scopeScrollArea:s,type:l="hover",dir:c,scrollHideDelay:d=600,...u}=e,[h,m]=r.useState(null),[p,g]=r.useState(null),[x,b]=r.useState(null),[v,y]=r.useState(null),[w,k]=r.useState(null),[S,j]=r.useState(0),[C,N]=r.useState(0),[E,I]=r.useState(!1),[T,P]=r.useState(!1),D=(0,i.useComposedRefs)(a,e=>m(e)),R=(0,o.useDirection)(c);return(0,t.jsx)(f,{scope:s,type:l,dir:R,scrollHideDelay:d,scrollArea:h,viewport:p,onViewportChange:g,content:x,onContentChange:b,scrollbarX:v,onScrollbarXChange:y,scrollbarXEnabled:E,onScrollbarXEnabledChange:I,scrollbarY:w,onScrollbarYChange:k,scrollbarYEnabled:T,onScrollbarYEnabledChange:P,onCornerWidthChange:j,onCornerHeightChange:N,children:(0,t.jsx)(n.Primitive.div,{dir:R,...u,ref:D,style:{position:"relative","--radix-scroll-area-corner-width":S+"px","--radix-scroll-area-corner-height":C+"px",...e.style}})})});x.displayName=h;var b="ScrollAreaViewport",v=r.forwardRef((e,a)=>{let{__scopeScrollArea:s,children:l,nonce:o,...c}=e,d=g(b,s),u=r.useRef(null),h=(0,i.useComposedRefs)(a,u,d.onViewportChange);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),(0,t.jsx)(n.Primitive.div,{"data-radix-scroll-area-viewport":"",...c,ref:h,style:{overflowX:d.scrollbarXEnabled?"scroll":"hidden",overflowY:d.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,t.jsx)("div",{ref:d.onContentChange,style:{minWidth:"100%",display:"table"},children:l})})]})});v.displayName=b;var y="ScrollAreaScrollbar",w=r.forwardRef((e,n)=>{let{forceMount:a,...s}=e,i=g(y,e.__scopeScrollArea),{onScrollbarXEnabledChange:l,onScrollbarYEnabledChange:o}=i,c="horizontal"===e.orientation;return r.useEffect(()=>(c?l(!0):o(!0),()=>{c?l(!1):o(!1)}),[c,l,o]),"hover"===i.type?(0,t.jsx)(k,{...s,ref:n,forceMount:a}):"scroll"===i.type?(0,t.jsx)(S,{...s,ref:n,forceMount:a}):"auto"===i.type?(0,t.jsx)(j,{...s,ref:n,forceMount:a}):"always"===i.type?(0,t.jsx)(C,{...s,ref:n}):null});w.displayName=y;var k=r.forwardRef((e,n)=>{let{forceMount:s,...i}=e,l=g(y,e.__scopeScrollArea),[o,c]=r.useState(!1);return r.useEffect(()=>{let e=l.scrollArea,t=0;if(e){let r=()=>{window.clearTimeout(t),c(!0)},n=()=>{t=window.setTimeout(()=>c(!1),l.scrollHideDelay)};return e.addEventListener("pointerenter",r),e.addEventListener("pointerleave",n),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",r),e.removeEventListener("pointerleave",n)}}},[l.scrollArea,l.scrollHideDelay]),(0,t.jsx)(a.Presence,{present:s||o,children:(0,t.jsx)(j,{"data-state":o?"visible":"hidden",...i,ref:n})})}),S=r.forwardRef((e,n)=>{var s;let{forceMount:i,...l}=e,o=g(y,e.__scopeScrollArea),c="horizontal"===e.orientation,d=H(()=>m("SCROLL_END"),100),[h,m]=(s={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},r.useReducer((e,t)=>s[e][t]??e,"hidden"));return r.useEffect(()=>{if("idle"===h){let e=window.setTimeout(()=>m("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(e)}},[h,o.scrollHideDelay,m]),r.useEffect(()=>{let e=o.viewport,t=c?"scrollLeft":"scrollTop";if(e){let r=e[t],n=()=>{let n=e[t];r!==n&&(m("SCROLL"),d()),r=n};return e.addEventListener("scroll",n),()=>e.removeEventListener("scroll",n)}},[o.viewport,c,m,d]),(0,t.jsx)(a.Presence,{present:i||"hidden"!==h,children:(0,t.jsx)(C,{"data-state":"hidden"===h?"hidden":"visible",...l,ref:n,onPointerEnter:(0,u.composeEventHandlers)(e.onPointerEnter,()=>m("POINTER_ENTER")),onPointerLeave:(0,u.composeEventHandlers)(e.onPointerLeave,()=>m("POINTER_LEAVE"))})})}),j=r.forwardRef((e,n)=>{let s=g(y,e.__scopeScrollArea),{forceMount:i,...l}=e,[o,c]=r.useState(!1),d="horizontal"===e.orientation,u=H(()=>{if(s.viewport){let e=s.viewport.offsetWidth<s.viewport.scrollWidth,t=s.viewport.offsetHeight<s.viewport.scrollHeight;c(d?e:t)}},10);return U(s.viewport,u),U(s.content,u),(0,t.jsx)(a.Presence,{present:i||o,children:(0,t.jsx)(C,{"data-state":o?"visible":"hidden",...l,ref:n})})}),C=r.forwardRef((e,n)=>{let{orientation:a="vertical",...s}=e,i=g(y,e.__scopeScrollArea),l=r.useRef(null),o=r.useRef(0),[c,d]=r.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),u=F(c.viewport,c.content),h={...s,sizes:c,onSizesChange:d,hasThumb:!!(u>0&&u<1),onThumbChange:e=>l.current=e,onThumbPointerUp:()=>o.current=0,onThumbPointerDown:e=>o.current=e};function m(e,t){return function(e,t,r,n="ltr"){let a=O(r),s=t||a/2,i=r.scrollbar.paddingStart+s,l=r.scrollbar.size-r.scrollbar.paddingEnd-(a-s),o=r.content-r.viewport;return q([i,l],"ltr"===n?[0,o]:[-1*o,0])(e)}(e,o.current,c,t)}return"horizontal"===a?(0,t.jsx)(N,{...h,ref:n,onThumbPositionChange:()=>{if(i.viewport&&l.current){let e=$(i.viewport.scrollLeft,c,i.dir);l.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=m(e,i.dir))}}):"vertical"===a?(0,t.jsx)(E,{...h,ref:n,onThumbPositionChange:()=>{if(i.viewport&&l.current){let e=$(i.viewport.scrollTop,c);l.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=m(e))}}):null}),N=r.forwardRef((e,n)=>{let{sizes:a,onSizesChange:s,...l}=e,o=g(y,e.__scopeScrollArea),[c,d]=r.useState(),u=r.useRef(null),h=(0,i.useComposedRefs)(n,u,o.onScrollbarXChange);return r.useEffect(()=>{u.current&&d(getComputedStyle(u.current))},[u]),(0,t.jsx)(P,{"data-orientation":"horizontal",...l,ref:h,sizes:a,style:{bottom:0,left:"rtl"===o.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===o.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":O(a)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,r)=>{if(o.viewport){var n,a;let s=o.viewport.scrollLeft+t.deltaX;e.onWheelScroll(s),n=s,a=r,n>0&&n<a&&t.preventDefault()}},onResize:()=>{u.current&&o.viewport&&c&&s({content:o.viewport.scrollWidth,viewport:o.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:B(c.paddingLeft),paddingEnd:B(c.paddingRight)}})}})}),E=r.forwardRef((e,n)=>{let{sizes:a,onSizesChange:s,...l}=e,o=g(y,e.__scopeScrollArea),[c,d]=r.useState(),u=r.useRef(null),h=(0,i.useComposedRefs)(n,u,o.onScrollbarYChange);return r.useEffect(()=>{u.current&&d(getComputedStyle(u.current))},[u]),(0,t.jsx)(P,{"data-orientation":"vertical",...l,ref:h,sizes:a,style:{top:0,right:"ltr"===o.dir?0:void 0,left:"rtl"===o.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":O(a)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,r)=>{if(o.viewport){var n,a;let s=o.viewport.scrollTop+t.deltaY;e.onWheelScroll(s),n=s,a=r,n>0&&n<a&&t.preventDefault()}},onResize:()=>{u.current&&o.viewport&&c&&s({content:o.viewport.scrollHeight,viewport:o.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:B(c.paddingTop),paddingEnd:B(c.paddingBottom)}})}})}),[I,T]=m(y),P=r.forwardRef((e,a)=>{let{__scopeScrollArea:s,sizes:o,hasThumb:c,onThumbChange:d,onThumbPointerUp:h,onThumbPointerDown:m,onThumbPositionChange:p,onDragScroll:f,onWheelScroll:x,onResize:b,...v}=e,w=g(y,s),[k,S]=r.useState(null),j=(0,i.useComposedRefs)(a,e=>S(e)),C=r.useRef(null),N=r.useRef(""),E=w.viewport,T=o.content-o.viewport,P=(0,l.useCallbackRef)(x),D=(0,l.useCallbackRef)(p),R=H(b,10);function A(e){C.current&&f({x:e.clientX-C.current.left,y:e.clientY-C.current.top})}return r.useEffect(()=>{let e=e=>{let t=e.target;k?.contains(t)&&P(e,T)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[E,k,T,P]),r.useEffect(D,[o,D]),U(k,R),U(w.content,R),(0,t.jsx)(I,{scope:s,scrollbar:k,hasThumb:c,onThumbChange:(0,l.useCallbackRef)(d),onThumbPointerUp:(0,l.useCallbackRef)(h),onThumbPositionChange:D,onThumbPointerDown:(0,l.useCallbackRef)(m),children:(0,t.jsx)(n.Primitive.div,{...v,ref:j,style:{position:"absolute",...v.style},onPointerDown:(0,u.composeEventHandlers)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),C.current=k.getBoundingClientRect(),N.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",w.viewport&&(w.viewport.style.scrollBehavior="auto"),A(e))}),onPointerMove:(0,u.composeEventHandlers)(e.onPointerMove,A),onPointerUp:(0,u.composeEventHandlers)(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=N.current,w.viewport&&(w.viewport.style.scrollBehavior=""),C.current=null})})})}),D="ScrollAreaThumb",R=r.forwardRef((e,r)=>{let{forceMount:n,...s}=e,i=T(D,e.__scopeScrollArea);return(0,t.jsx)(a.Presence,{present:n||i.hasThumb,children:(0,t.jsx)(A,{ref:r,...s})})}),A=r.forwardRef((e,a)=>{let{__scopeScrollArea:s,style:l,...o}=e,c=g(D,s),d=T(D,s),{onThumbPositionChange:h}=d,m=(0,i.useComposedRefs)(a,e=>d.onThumbChange(e)),p=r.useRef(void 0),f=H(()=>{p.current&&(p.current(),p.current=void 0)},100);return r.useEffect(()=>{let e=c.viewport;if(e){let t=()=>{f(),p.current||(p.current=z(e,h),h())};return h(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[c.viewport,f,h]),(0,t.jsx)(n.Primitive.div,{"data-state":d.hasThumb?"visible":"hidden",...o,ref:m,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...l},onPointerDownCapture:(0,u.composeEventHandlers)(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),r=e.clientX-t.left,n=e.clientY-t.top;d.onThumbPointerDown({x:r,y:n})}),onPointerUp:(0,u.composeEventHandlers)(e.onPointerUp,d.onThumbPointerUp)})});R.displayName=D;var L="ScrollAreaCorner",M=r.forwardRef((e,r)=>{let n=g(L,e.__scopeScrollArea),a=!!(n.scrollbarX&&n.scrollbarY);return"scroll"!==n.type&&a?(0,t.jsx)(_,{...e,ref:r}):null});M.displayName=L;var _=r.forwardRef((e,a)=>{let{__scopeScrollArea:s,...i}=e,l=g(L,s),[o,c]=r.useState(0),[d,u]=r.useState(0),h=!!(o&&d);return U(l.scrollbarX,()=>{let e=l.scrollbarX?.offsetHeight||0;l.onCornerHeightChange(e),u(e)}),U(l.scrollbarY,()=>{let e=l.scrollbarY?.offsetWidth||0;l.onCornerWidthChange(e),c(e)}),h?(0,t.jsx)(n.Primitive.div,{...i,ref:a,style:{width:o,height:d,position:"absolute",right:"ltr"===l.dir?0:void 0,left:"rtl"===l.dir?0:void 0,bottom:0,...e.style}}):null});function B(e){return e?parseInt(e,10):0}function F(e,t){let r=e/t;return isNaN(r)?0:r}function O(e){let t=F(e.viewport,e.content),r=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-r)*t,18)}function $(e,t,r="ltr"){let n=O(t),a=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,s=t.scrollbar.size-a,i=t.content-t.viewport,l=(0,d.clamp)(e,"ltr"===r?[0,i]:[-1*i,0]);return q([0,i],[0,s-n])(l)}function q(e,t){return r=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let n=(t[1]-t[0])/(e[1]-e[0]);return t[0]+n*(r-e[0])}}var z=(e,t=()=>{})=>{let r={left:e.scrollLeft,top:e.scrollTop},n=0;return!function a(){let s={left:e.scrollLeft,top:e.scrollTop},i=r.left!==s.left,l=r.top!==s.top;(i||l)&&t(),r=s,n=window.requestAnimationFrame(a)}(),()=>window.cancelAnimationFrame(n)};function H(e,t){let n=(0,l.useCallbackRef)(e),a=r.useRef(0);return r.useEffect(()=>()=>window.clearTimeout(a.current),[]),r.useCallback(()=>{window.clearTimeout(a.current),a.current=window.setTimeout(n,t)},[n,t])}function U(e,t){let r=(0,l.useCallbackRef)(t);(0,c.useLayoutEffect)(()=>{let t=0;if(e){let n=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(r)});return n.observe(e),()=>{window.cancelAnimationFrame(t),n.unobserve(e)}}},[e,r])}var W=e.i(81471);let V=(0,r.forwardRef)(({className:e,children:r,...n},a)=>(0,t.jsxs)(x,{className:(0,W.cn)("relative overflow-hidden",e),...n,children:[(0,t.jsx)(v,{ref:a,className:"h-full w-full rounded-[inherit]",children:r}),(0,t.jsx)(w,{orientation:"vertical",className:"flex h-full w-2.5 touch-none select-none border-l border-l-transparent p-[1px] transition-colors",children:(0,t.jsx)(R,{className:"relative flex-1 rounded-full bg-border"})}),(0,t.jsx)(w,{orientation:"horizontal",className:"flex h-2.5 w-full flex-col touch-none select-none border-t border-t-transparent p-[1px] transition-colors",children:(0,t.jsx)(R,{className:"relative flex-1 rounded-full bg-border"})}),(0,t.jsx)(M,{})]}));V.displayName="ScrollArea",e.s(["ScrollArea",0,V],13707)},62126,e=>{"use strict";var t=e.i(75540),r=e.i(65268);e.s(["useConversations",0,function(e,n){return(0,t.useInfiniteQuery)({queryKey:["conversations",e],queryFn:({pageParam:t=1})=>r.api.get("/conversations",{page:t,limit:20,platform:e?.platform,status:e?.status,scope:e?.scope}),getNextPageParam:e=>e.pagination.page<e.pagination.totalPages?e.pagination.page+1:void 0,initialPageParam:1,enabled:n?.enabled??!0})}])},89480,33586,e=>{"use strict";var t=e.i(54710),r=e.i(34416),n=e.i(40807),a=e.i(12878),s=e.i(81471),i=e.i(79634),l=e.i(29086),o=e.i(77379);let c=(0,o.default)("Paperclip",[["path",{d:"M13.234 20.252 21 12.3",key:"1cbrk9"}],["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 0 2.828 2 2 0 0 0 2.828 0l8.414-8.586a4 4 0 0 0 0-5.656 4 4 0 0 0-5.656 0l-8.415 8.585a6 6 0 1 0 8.486 8.486",key:"1pkts6"}]]);e.s(["Paperclip",0,c],33586);let d=(0,o.default)("FileImage",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["circle",{cx:"10",cy:"12",r:"2",key:"737tya"}],["path",{d:"m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22",key:"wt3hpn"}]]),u=(0,o.default)("FileSpreadsheet",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M8 13h2",key:"yr2amv"}],["path",{d:"M14 13h2",key:"un5t4a"}],["path",{d:"M8 17h2",key:"2yhykz"}],["path",{d:"M14 17h2",key:"10kma7"}]]);var h=e.i(52387);function m({mimeType:e,className:r}){return e.startsWith("image/")?(0,t.jsx)(d,{className:r}):"application/pdf"===e?(0,t.jsx)(l.FileText,{className:r}):e.includes("spreadsheet")||"text/csv"===e||e.includes("excel")?(0,t.jsx)(u,{className:r}):(0,t.jsx)(c,{className:r})}function p({id:e,alt:n}){let[a,s]=(0,r.useState)(null),[i,l]=(0,r.useState)(!1);return((0,r.useEffect)(()=>{let t=!1,r=null;return(async()=>{try{let n=await fetch(`/api/chat/attachments/${e}`);if(!n.ok)throw Error(`status ${n.status}`);let a=await n.blob();if(t)return;r=URL.createObjectURL(a),s(r)}catch{t||l(!0)}})(),()=>{t=!0,r&&URL.revokeObjectURL(r)}},[e]),i)?null:a?(0,t.jsx)("img",{src:a,alt:n,className:"max-h-64 max-w-full rounded-md border border-border"}):(0,t.jsx)("div",{className:"flex h-32 w-full max-w-xs items-center justify-center rounded-md border border-border bg-muted/20 text-xs text-muted-foreground",children:"loading…"})}function f({attachment:e,isOwn:r}){var n;let a=`/api/chat/attachments/${e.id}`,i=e.mimeType.startsWith("image/")&&"image/svg+xml"!==e.mimeType&&e.sizeBytes<2097152;return(0,t.jsxs)("div",{className:"space-y-1",children:[i&&(0,t.jsx)(p,{id:e.id,alt:e.originalFilename}),(0,t.jsxs)("a",{href:a,target:"_blank",rel:"noopener noreferrer",className:(0,s.cn)("inline-flex items-center gap-2 rounded-md border px-2 py-1 text-xs hover:bg-muted/40",r?"border-primary-foreground/30 bg-primary-foreground/10 text-primary-foreground":"border-border bg-muted/30 text-foreground"),title:e.caption??e.originalFilename,children:[(0,t.jsx)(m,{mimeType:e.mimeType,className:"h-3 w-3 flex-shrink-0"}),(0,t.jsx)("span",{className:"max-w-[160px] truncate",children:e.originalFilename}),(0,t.jsx)("span",{className:"text-muted-foreground",children:(n=e.sizeBytes)<1024?`${n} B`:n<1048576?`${(n/1024).toFixed(0)} KB`:`${(n/1024/1024).toFixed(1)} MB`}),(0,t.jsx)(h.ExternalLink,{className:"h-3 w-3 flex-shrink-0 opacity-60"})]}),e.caption&&(0,t.jsx)("p",{className:"px-1 text-[10px] text-muted-foreground italic",children:e.caption})]})}function g({attachments:e,isOwn:r}){return 0===e.length?null:(0,t.jsx)("div",{className:"flex flex-col gap-2",children:e.map(e=>(0,t.jsx)(f,{attachment:e,isOwn:r},e.id))})}let x=[a.default],b={a:({children:e,href:r,...n})=>(0,t.jsx)("a",{href:r,target:"_blank",rel:"noopener noreferrer",...n,children:e})},v=(0,r.memo)(function({message:e,assistantLabel:r="Assistant"}){if("error"===e.role)return(0,t.jsx)(i.Alert,{variant:"error",className:"mx-auto max-w-md rounded-lg px-4 py-2 text-sm",children:e.content});let a="user"===e.role;return(0,t.jsx)("div",{className:(0,s.cn)("flex",a?"justify-end":"justify-start"),children:(0,t.jsxs)("div",{className:"max-w-[80%] space-y-1",children:[!a&&(0,t.jsx)("p",{className:"px-1 text-[11px] font-medium text-muted-foreground",children:r}),e.content&&(0,t.jsx)("div",{className:(0,s.cn)("rounded-2xl px-4 py-2.5 text-sm",a?"whitespace-pre-wrap rounded-br-md bg-primary text-primary-foreground [overflow-wrap:anywhere]":"markdown-body markdown-bubble rounded-bl-md border border-border bg-card text-foreground"),children:a?e.content:(0,t.jsx)(n.default,{remarkPlugins:x,components:b,children:e.content})}),e.attachments&&e.attachments.length>0&&(0,t.jsx)("div",{className:"px-1",children:(0,t.jsx)(g,{attachments:e.attachments,isOwn:a})}),!a&&e.meta&&(0,t.jsx)("p",{className:"px-1 text-[10px] text-muted-foreground/60",children:[e.meta.backend&&e.meta.model?`${e.meta.backend} \xb7 ${e.meta.model}`:e.meta.backend||e.meta.model,null!=e.meta.durationMs?`${(e.meta.durationMs/1e3).toFixed(1)}s`:null,null!=e.meta.costUsd?`$${e.meta.costUsd.toFixed(4)}`:null].filter(Boolean).join(" · ")})]})})});e.s(["MessageBubble",0,v],89480)},53756,e=>{"use strict";var t=e.i(54710),r=e.i(34416);let n=(0,e.i(77379).default)("ArrowUp",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);var a=e.i(72740),s=e.i(33586),i=e.i(36451),l=e.i(20014),o=e.i(81471);e.s(["ChatInput",0,function({onSend:e,disabled:c,disabledMessage:d,placeholder:u,className:h}){let[m,p]=(0,r.useState)(""),f=(0,r.useRef)(null),g=(0,r.useRef)(null),[x,b]=(0,r.useState)(!1),{pending:v,ready:y,uploading:w,addFiles:k,remove:S,clear:j,error:C}=function(){let[e,t]=(0,r.useState)([]),[n,a]=(0,r.useState)(null),s=(0,r.useRef)(new Map),i=(0,r.useCallback)((e,r)=>{t(t=>t.map(t=>t.clientId===e?{...t,...r}:t))},[]),l=(0,r.useCallback)((e,t=0)=>e.reduce((e,t)=>e+t.sizeBytes,0)+t,[]),o=(0,r.useCallback)(e=>{let r=s.current.get(e);r&&(r.abort(),s.current.delete(e)),t(t=>t.filter(t=>t.clientId!==e)),t(t=>{let r=t.find(t=>t.clientId===e);return r?.serverId&&fetch(`/api/chat/attachments/${r.serverId}`,{method:"DELETE"}).catch(()=>{}),t})},[]),c=(0,r.useCallback)(()=>{for(let e of s.current.values())e.abort();s.current.clear(),t([]),a(null)},[]),d=(0,r.useCallback)(e=>{let t=new XMLHttpRequest;s.current.set(e.clientId,t),t.open("POST","/api/chat/attachments"),t.upload.onprogress=t=>{t.lengthComputable&&i(e.clientId,{progress:Math.round(t.loaded/t.total*100)})},t.onload=()=>{if(s.current.delete(e.clientId),t.status>=200&&t.status<300)try{let r=JSON.parse(t.responseText);i(e.clientId,{serverId:r.id,mimeType:r.mimeType,progress:100,status:"uploaded"})}catch{i(e.clientId,{status:"error",error:"Malformed response from server"})}else{let r=`Upload failed (${t.status})`;try{let e=JSON.parse(t.responseText);e.message&&(r=e.message)}catch{}i(e.clientId,{status:"error",error:r})}},t.onerror=()=>{s.current.delete(e.clientId),i(e.clientId,{status:"error",error:"Network error during upload"})};let r=new FormData;r.append("file",e.file,e.file.name),t.send(r)},[i]),u=(0,r.useCallback)(e=>{a(null);let r=Array.from(e);0!==r.length&&t(e=>{if(e.filter(e=>"uploading"===e.status).length+r.length>5)return a("At most 5 concurrent uploads"),e;let t=l(e),n=[];for(let e of r){let r=e.type.startsWith("image/")?5242880:0x1900000;if(e.size>r){a(`"${e.name}" is ${(e.size/1024/1024).toFixed(1)} MB — over the ${(r/1024/1024).toFixed(0)} MB limit`);continue}if(t+e.size>0x6400000){a("Per-turn cap is 100 MB — skipping the rest");break}t+=e.size;let s={clientId:`pending-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,serverId:null,file:e,progress:0,status:"uploading",sizeBytes:e.size};n.push(s)}for(let e of n)queueMicrotask(()=>d(e));return[...e,...n]})},[l,d]),h=e.some(e=>"uploading"===e.status),m=e.filter(e=>"uploaded"===e.status&&null!==e.serverId).map(e=>({id:e.serverId,originalFilename:e.file.name,mimeType:e.mimeType??(e.file.type||"application/octet-stream"),sizeBytes:e.sizeBytes}));return{pending:e,ready:m,uploading:h,addFiles:u,remove:o,clear:c,error:n}}(),N=!c&&!w&&(m.trim().length>0||y.length>0),E=(0,r.useCallback)(()=>{N&&(e(m.trim(),y),p(""),j(),f.current&&(f.current.style.height="auto"))},[N,j,e,y,m]);return(0,r.useEffect)(()=>{let e=f.current;if(!e)return;let t=e=>{if(c)return;let t=e.clipboardData?.items;if(!t)return;let r=[];for(let e of t)if("file"===e.kind){let t=e.getAsFile();t&&r.push(t)}r.length>0&&(e.preventDefault(),k(r))};return e.addEventListener("paste",t),()=>e.removeEventListener("paste",t)},[k,c]),(0,t.jsxs)("div",{className:(0,o.cn)("border-t border-border bg-background px-4 pt-3 pb-4",x&&"bg-primary/5",h),onDragOver:e=>{c||(e.preventDefault(),b(!0))},onDragLeave:()=>b(!1),onDrop:e=>{if(e.preventDefault(),b(!1),c)return;let t=e.dataTransfer.files;t.length>0&&k(t)},children:[c&&(0,t.jsxs)("div",{className:"mb-2 flex items-center gap-1.5 text-xs text-muted-foreground",children:[(0,t.jsx)(a.Loader2,{className:"h-3 w-3 animate-spin"}),(0,t.jsx)("span",{children:d??"Agent is generating a response — please wait"})]}),v.length>0&&(0,t.jsx)("div",{className:"mb-2 flex flex-wrap gap-2",children:v.map(e=>{var r;return(0,t.jsxs)("div",{className:(0,o.cn)("flex items-center gap-2 rounded-md border px-2 py-1 text-xs","error"===e.status?"border-destructive/40 bg-destructive/5 text-destructive":"border-border bg-muted/40"),children:[(0,t.jsx)(s.Paperclip,{className:"h-3 w-3 flex-shrink-0"}),(0,t.jsx)("span",{className:"max-w-[160px] truncate",title:e.file.name,children:e.file.name}),(0,t.jsx)("span",{className:"text-muted-foreground",children:(r=e.sizeBytes)<1024?`${r} B`:r<1048576?`${(r/1024).toFixed(0)} KB`:`${(r/1024/1024).toFixed(1)} MB`}),"uploading"===e.status&&(0,t.jsxs)("span",{className:"text-muted-foreground",children:[e.progress,"%"]}),"error"===e.status&&e.error&&(0,t.jsx)("span",{className:"text-muted-foreground/80",title:e.error,children:"failed"}),(0,t.jsx)("button",{type:"button",onClick:()=>S(e.clientId),className:"ml-1 text-muted-foreground hover:text-foreground","aria-label":`Remove ${e.file.name}`,children:(0,t.jsx)(i.X,{className:"h-3 w-3"})})]},e.clientId)})}),C&&(0,t.jsx)("div",{className:"mb-2 text-xs text-destructive",role:"alert",children:C}),(0,t.jsxs)("div",{className:"flex items-end gap-2",children:[(0,t.jsx)("input",{ref:g,type:"file",multiple:!0,className:"hidden",onChange:e=>{var t;(t=e.target.files)&&0!==t.length&&k(t),e.target.value=""}}),(0,t.jsx)(l.Button,{type:"button",size:"icon",variant:"ghost",onClick:()=>g.current?.click(),disabled:c,"aria-label":"Attach files",title:"Attach files",children:(0,t.jsx)(s.Paperclip,{className:"h-4 w-4"})}),(0,t.jsx)("textarea",{ref:f,value:m,onChange:e=>p(e.target.value),onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&"Enter"===e.key&&(e.preventDefault(),E())},onInput:()=>{let e=f.current;e&&(e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,200)}px`)},placeholder:u??(c?"Waiting for response…":"Message the agent..."),disabled:c,rows:1,className:"flex-1 resize-none rounded-lg border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50"}),(0,t.jsx)(l.Button,{size:"icon",onClick:E,disabled:!N,children:c||w?(0,t.jsx)(a.Loader2,{className:"h-4 w-4 animate-spin"}):(0,t.jsx)(n,{className:"h-4 w-4"})})]})]})}],53756)},34098,e=>{"use strict";var t=e.i(54710),r=e.i(99758),n=e.i(72740);e.s(["ToolProgress",0,function({items:e}){return 0===e.length?null:(0,t.jsx)("div",{className:"flex flex-wrap gap-2 px-2",children:e.map(e=>{let a="done"===e.status||"completed"===e.status;return(0,t.jsxs)("div",{className:"flex items-center gap-1.5 rounded-md bg-muted px-2.5 py-1 text-xs text-muted-foreground",children:[a?(0,t.jsx)(r.Check,{className:"h-3 w-3 text-emerald-500"}):(0,t.jsx)(n.Loader2,{className:"h-3 w-3 animate-spin"}),(0,t.jsx)("span",{children:e.tool})]},e.tool)})})}])},76,27779,e=>{"use strict";var t=e.i(34416),r=e.i(95486);function n({fetchedMessageCount:e,currentRestoredCount:t,currentLiveCount:r}){return e>0||t+r===0}function a(e){return`${e.role}\u0000${e.content}`}function s(e,t,r){let n=e.slice(-Math.max(t.length+4,4)),s=new Map;for(let e of n){let t=a(e);s.set(t,(s.get(t)??0)+1)}return t.filter(e=>{if("error"===e.role)return!0;if(e.id.startsWith("stream-")||e.timestamp.getTime()<=r)return!1;let t=a(e),n=s.get(t)??0;return!(n>0)||(s.set(t,n-1),!1)})}async function i(e,t){let r,n=t?.fetchImpl??fetch,a=[];for(;;){let s=await n(function(e,t){let r=new URLSearchParams({limit:String(200)});return void 0!==t&&r.set("before",String(t)),`/api/conversations/${e}/messages?${r.toString()}`}(e,r),{signal:t?.signal});if(!s.ok)throw Error(`Failed to load conversation ${e} history`);let i=await s.json();if(0===i.messages.length||(a.push(i.messages),!i.hasMore))break;let l=i.messages[0]?.id;if(!l||l===r)break;r=l}return a.reverse().flat()}e.s(["fetchConversationHistory",0,i],27779);var l=e.i(81471);let o="pa-chat-sessionId";function c(e){try{localStorage.setItem(o,String(e))}catch{}}function d(){try{localStorage.removeItem(o)}catch{}}async function u(e,t){return(await i(e,{signal:t})).filter(e=>"user"===e.role||"assistant"===e.role).map(e=>({id:`restored-${e.id}`,role:e.role,content:e.content,timestamp:(0,l.parseUtcDate)(e.timestamp),...e.attachments&&e.attachments.length>0?{attachments:e.attachments.map(e=>({id:e.id,originalFilename:e.originalFilename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,direction:e.direction,...e.caption?{caption:e.caption}:{}}))}:{}}))}async function h(e){let t=new URLSearchParams({scope:"dashboard_chat",status:"active",limit:"1"}),r=await fetch(`/api/conversations?${t.toString()}`,{signal:e});if(!r.ok)throw Error("Failed to load active dashboard session");let n=await r.json(),a=n.conversations[0]?.id;return"number"==typeof a&&a>0?a:null}e.s(["fetchSessionMessages",0,u,"useChat",0,function({disableHistory:e=!1}={}){let a=(0,r.useQueryClient)(),[i,l]=(0,t.useState)([]),[m,p]=(0,t.useState)(!1),[f,g]=(0,t.useState)(!1),[x,b]=(0,t.useState)([]),[v,y]=(0,t.useState)(null),[w,k]=(0,t.useState)(!1),[S,j]=(0,t.useState)(0),[C,N]=(0,t.useState)([]),E=(0,t.useRef)(""),I=(0,t.useRef)(0),T=(0,t.useRef)(null),P=(0,t.useRef)(null),D=(0,t.useRef)([]),R=(0,t.useRef)([]),A=(0,t.useRef)(null),L=()=>`msg-${++I.current}`,M=(0,t.useCallback)((e,t)=>"string"==typeof e?.message?e.message:"string"==typeof e?.error?e.error:t,[]),_=(0,t.useCallback)(()=>{P.current&&(clearTimeout(P.current),P.current=null)},[]),B=(0,t.useCallback)(()=>{g(!0),_(),P.current=setTimeout(()=>{g(!1)},12e4)},[_]),F=(0,t.useCallback)(()=>{g(!1),_()},[_]),O=(0,t.useCallback)(e=>{"number"==typeof e?.resumeSessionId&&e.resumeSessionId>0?c(e.resumeSessionId):d(),E.current="",D.current=[],R.current=[],A.current=e?.resumeSessionId??null,F(),l([]),N([]),b([]),y(null),p(!1),k(!1),T.current&&(T.current.close(),T.current=null),j(e=>e+1)},[F]);(0,t.useEffect)(()=>{A.current=v?.sessionId??null},[v]),(0,t.useEffect)(()=>{D.current=i},[i]),(0,t.useEffect)(()=>{R.current=C},[C]),(0,t.useEffect)(()=>{let t=e?null:function(){try{let e=localStorage.getItem(o);if(!e)return null;let t=Number(e);return Number.isFinite(t)&&t>0?t:null}catch{return null}}(),r=new AbortController,a=new EventSource(t?`/api/chat/stream?sessionId=${t}`:"/api/chat/stream");T.current=a;let i=0;return e||h(r.signal).then(e=>{if(!e)return void d();c(e);let t=Date.now();return u(e,r.signal).then(e=>{n({fetchedMessageCount:e.length,currentRestoredCount:R.current.length,currentLiveCount:D.current.length})&&(N(e),l(r=>s(e,r,t)))})}).catch(()=>{}),a.onopen=()=>{i++,k(!0),i>1?console.debug("[chat] SSE reconnected"):console.debug("[chat] SSE connected")},a.onerror=()=>{k(!1),p(!1),F(),E.current="",console.warn("[chat] SSE connection lost — will auto-reconnect")},a.addEventListener("session_info",r=>{try{let a=JSON.parse(r.data),o="channelId"in a;y(e=>o?{...a}:{...e,...a}),!e&&("number"==typeof a.sessionId&&a.sessionId>0&&c(a.sessionId),t&&"channelId"in a&&!("sessionId"in a)&&d());let h=i>1,m="number"==typeof a.sessionId?a.sessionId:null;if(!e&&function({isInitialBinding:e,isReconnect:t,confirmedSessionId:r}){return null!==r&&(e||t)}({isInitialBinding:o,isReconnect:h,confirmedSessionId:m})&&null!==m){let e=Date.now();u(m).then(t=>{n({fetchedMessageCount:t.length,currentRestoredCount:R.current.length,currentLiveCount:D.current.length})&&(N(t),l(r=>s(t,r,e)))}).catch(()=>{})}}catch{}}),a.addEventListener("chat",e=>{try{let t=JSON.parse(e.data);l(e=>[...e,{id:L(),role:t.role,content:t.content,timestamp:new Date,...t.attachments&&t.attachments.length>0?{attachments:t.attachments.map(e=>({...e,direction:"outbound"}))}:{}}]),b([]),F()}catch{}}),a.addEventListener("chat_attachments",e=>{try{let{attachments:t}=JSON.parse(e.data);if(!Array.isArray(t)||0===t.length)return;l(e=>{for(let r=e.length-1;r>=0;r--)if("assistant"===e[r].role){let n=[...e];return n[r]={...n[r],attachments:t.map(e=>({...e,direction:"outbound"}))},n}return e})}catch{}}),a.addEventListener("chat_stream",e=>{try{let{chunk:t}=JSON.parse(e.data);p(!0),F(),E.current+=t,l(e=>{let t=e[e.length-1];return t?.role==="assistant"&&t.id.startsWith("stream-")?[...e.slice(0,-1),{...t,content:E.current}]:[...e,{id:`stream-${I.current}`,role:"assistant",content:E.current,timestamp:new Date}]})}catch{}}),a.addEventListener("stream_end",()=>{p(!1),E.current=""}),a.addEventListener("tool_progress",e=>{try{let t=JSON.parse(e.data);b(e=>{let r=e.findIndex(e=>e.tool===t.tool);if(r>=0){let n=[...e];return n[r]=t,n}return[...e,t]})}catch{}}),a.addEventListener("chat_meta",e=>{try{let t=JSON.parse(e.data);l(e=>{for(let r=e.length-1;r>=0;r--)if("assistant"===e[r].role){let n=[...e];return n[r]={...n[r],meta:t},n}return e});let r=A.current;if(r){let e=Date.now();u(r).then(t=>{n({fetchedMessageCount:t.length,currentRestoredCount:R.current.length,currentLiveCount:D.current.length})&&(N(t),l(r=>s(t,r,e)))}).catch(()=>{})}}catch{}}),a.addEventListener("chat_error",e=>{try{let{message:t}=JSON.parse(e.data);l(e=>[...e,{id:L(),role:"error",content:t,timestamp:new Date}]),p(!1),F()}catch{}}),a.addEventListener("ping",()=>{}),()=>{r.abort(),a.close(),T.current=null,k(!1),_()}},[F,_,S,e]);let $=(0,t.useCallback)(async(e,t)=>{if(v?.channelId){B(),l(r=>[...r,{id:L(),role:"user",content:e,timestamp:new Date,...t?.attachments&&t.attachments.length>0?{attachments:t.attachments.map(e=>({...e,direction:"inbound"}))}:{}}]);try{let r=await fetch("/api/chat/messages",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({channelId:v.channelId,content:e,...t?.requestedModel?{requestedModel:t.requestedModel}:{},...t?.requestedBackendId&&t?.requestedModelId?{requestedBackendId:t.requestedBackendId,requestedModelId:t.requestedModelId}:{},...t?.attachments&&t.attachments.length>0?{attachmentIds:t.attachments.map(e=>e.id)}:{}})});if(!r.ok){let e=await r.json().catch(()=>null);l(t=>[...t,{id:L(),role:"error",content:M(e,"send failed"),timestamp:new Date}]),F()}}catch(t){let e=t instanceof TypeError?t.message:String(t);console.error("[chat] POST /api/chat/messages failed:",e),l(t=>[...t,{id:L(),role:"error",content:`Failed to send message: ${e}`,timestamp:new Date}]),F()}}},[M,v,B,F]),q=(0,t.useCallback)(async()=>{if(v?.channelId)try{let e=await fetch("/api/chat/end-session",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({channelId:v.channelId})});if(!e.ok){let t=await e.json().catch(()=>null);l(e=>[...e,{id:L(),role:"error",content:M(t,"failed to end session"),timestamp:new Date}]);return}a.invalidateQueries({queryKey:["conversations"]}).catch(()=>{}),a.invalidateQueries({queryKey:["chat-current-binding"]}).catch(()=>{}),O()}catch(t){let e=t instanceof TypeError?t.message:String(t);console.error("[chat] POST /api/chat/end-session failed:",e),l(t=>[...t,{id:L(),role:"error",content:`Failed to end session: ${e}`,timestamp:new Date}])}},[M,a,O,v]),z=(0,t.useCallback)(async e=>{console.debug("[chat] continueSession()",{sessionId:e});try{let t=await fetch("/api/chat/continue-session",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:e})});if(!t.ok){let e=await t.json().catch(()=>null);return l(t=>[...t,{id:L(),role:"error",content:M(e,"failed to continue session"),timestamp:new Date}]),!1}let r=await t.json().catch(()=>null),n="number"==typeof r?.sessionId&&r.sessionId>0?r.sessionId:e;return a.invalidateQueries({queryKey:["conversations"]}).catch(()=>{}),a.invalidateQueries({queryKey:["chat-current-binding"]}).catch(()=>{}),O({resumeSessionId:n}),!0}catch(t){let e=t instanceof TypeError?t.message:String(t);return console.error("[chat] POST /api/chat/continue-session failed:",e),l(t=>[...t,{id:L(),role:"error",content:`Failed to continue session: ${e}`,timestamp:new Date}]),!1}},[M,a,O]),H=w&&!!v?.channelId;return{messages:i,setMessages:l,restoredMessages:C,setRestoredMessages:N,streaming:m,waiting:f,busy:f||m,toolProgress:x,sessionInfo:v,sendMessage:$,endSession:q,continueSession:z,connected:w,ready:H}}],76)},18507,e=>{"use strict";var t=e.i(54710),r=e.i(34416);e.i(18446);var n=e.i(41460),a=e.i(23916),s=e.i(57415),i=e.i(95486),l=e.i(53756),o=e.i(63991),c=e.i(30040),d=e.i(20668),u=e.i(10427),h=e.i(24756),m=e.i(76176);let p="__auto__",f=new Set(["expired","missing"]);function g({value:e,onChange:n,disabled:a}){let s=(0,h.useBackends)(),i=(0,r.useMemo)(()=>(s.data?.backends??[]).filter(e=>e.enabled&&e.models.length>0).map(e=>({backendId:e.id,label:(0,m.getBackendShortLabel)(e.id),authBlocked:f.has(e.authStatus),authStatus:e.authStatus,models:[...e.models].sort((e,t)=>{if(e.tier!==t.tier)return"high"===e.tier?-1:1;let r=+(!0===e.deprecated),n=+(!0===t.deprecated);return r!==n?r-n:e.label.localeCompare(t.label)})})),[s.data]),l=e?`${e.backendId}::${e.modelId}`:p,x=function(e,t){if(!e)return null;let r=t.find(t=>t.backendId===e.backendId),n=r?.models.find(t=>t.modelId===e.modelId);return n&&"high"===n.tier?{backendId:e.backendId,modelLabel:n.label}:null}(e,i),b=a||s.isLoading;return(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(d.Sparkles,{className:"h-3.5 w-3.5 text-muted-foreground","aria-hidden":"true"}),(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:"Model"}),(0,t.jsxs)(u.Select,{value:l,onValueChange:function(e){n(function(e){if(e===p)return null;let t=e.indexOf("::");return t<0?null:{backendId:e.slice(0,t),modelId:e.slice(t+2)}}(e))},disabled:b,children:[(0,t.jsx)(u.SelectTrigger,{className:"h-7 w-auto min-w-[10rem] px-2 py-0 text-xs",children:(0,t.jsx)(u.SelectValue,{placeholder:"Auto"})}),(0,t.jsxs)(u.SelectContent,{children:[(0,t.jsx)(u.SelectItem,{value:p,children:"Auto (default)"}),i.map(e=>{let r=(0,m.isUiPreviewOnlyBackend)(e.backendId);return(0,t.jsxs)(u.SelectGroup,{children:[(0,t.jsxs)(u.SelectLabel,{className:"flex items-center gap-1.5 text-[10px] uppercase tracking-wide",children:[(0,t.jsx)("span",{children:e.label}),r&&(0,t.jsx)("span",{className:"rounded bg-muted px-1 py-0 text-[9px] font-medium text-muted-foreground",children:"coming soon"}),e.authBlocked&&!r&&(0,t.jsxs)("span",{className:"rounded bg-destructive/15 px-1 py-0 text-[9px] font-medium text-destructive",children:["auth ",e.authStatus]})]}),e.models.map(n=>{let a=!n.available||e.authBlocked||r;return(0,t.jsxs)(u.SelectItem,{value:`${e.backendId}::${n.modelId}`,disabled:a,children:[n.label,r?m.UI_PREVIEW_ONLY_BADGE_SUFFIX:""]},`${e.backendId}::${n.modelId}`)})]},e.backendId)})]})]})]}),s.isError&&(0,t.jsxs)("div",{role:"alert",className:"flex items-center gap-1.5 text-[11px] text-destructive",children:[(0,t.jsx)(o.AlertCircle,{className:"h-3 w-3 flex-shrink-0","aria-hidden":"true"}),(0,t.jsx)("span",{children:"Couldn't load backend list — falling back to process default."})]}),x&&(0,t.jsxs)("div",{role:"status",className:"flex items-center gap-1.5 text-[11px] text-muted-foreground",children:[(0,t.jsx)(c.Info,{className:"h-3 w-3 flex-shrink-0","aria-hidden":"true"}),(0,t.jsxs)("span",{children:["Heavy-tier model (",x.modelLabel,") — higher cost & rate limits than Auto. Switch to Auto when not needed."]})]})]})}var x=e.i(89480),b=e.i(48467),v=e.i(20014),y=e.i(81471);function w({sessionInfo:e,binding:r,sessionSourceLabel:n,readOnly:a=!1,messageCount:s,onEndSession:i,showEndSession:l=!0}){let o=e?.model||e?.modelLabel?{backend:e.backend,label:e.modelLabel??e.model??null}:r?{backend:r.activeBackend,label:r.activeModelLabel??r.activeModel}:null,c=o?.label?o.backend?`${o.backend} / ${o.label}`:o.label:null;return(0,t.jsx)("div",{className:"border-b border-border bg-background px-4 py-2",children:(0,t.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[c&&(0,t.jsx)(b.Badge,{variant:o?.backend?m.BACKEND_BADGE_VARIANTS[o.backend]:"gray",children:c}),r?.fallbackActive&&(0,t.jsxs)(b.Badge,{variant:"amber",children:["Fallback: ",r.fallbackBackend," / ",r.fallbackModel]}),n&&(0,t.jsx)(b.Badge,{variant:"gray",children:n}),a&&(0,t.jsx)(b.Badge,{variant:"gray",children:"Read-only"}),"number"==typeof e?.costUsd&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:(0,y.formatCurrency)(e.costUsd)}),(0,t.jsxs)("span",{className:"text-xs text-muted-foreground",children:[s," messages"]})]}),l&&(0,t.jsx)(v.Button,{variant:"outline",size:"sm",className:"border-green-400 text-green-600 hover:bg-green-50 hover:text-green-700 dark:border-green-600 dark:text-green-400 dark:hover:bg-green-950 dark:hover:text-green-300",onClick:i,children:"New Chat"})]})})}var k=e.i(79634),S=e.i(13707),j=e.i(57628),C=e.i(10628);let N={dashboard:0,whatsapp:1,telegram:2,slack:3,discord:4},E={dashboard:"Browser",whatsapp:"WhatsApp",telegram:"Telegram",slack:"Slack",discord:"Discord"};function I(e){return E[e]??e}var T=e.i(38082),P=e.i(27136),D=e.i(60168);let R=(0,e.i(77379).default)("Square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);var A=e.i(90925),L=e.i(36451);function M({pastSessions:e,currentSessionInfo:r,currentMessageCount:n,activePastId:a,onSelectPast:s,onContinuePast:i,onSelectCurrent:l,onEndSession:o,onDeletePast:c,onCleanAll:d,deleteInFlight:u,deleteError:h,onDismissDeleteError:p}){var f;let g=null===a,x=e=>{!e.readOnlyFromDashboard&&e.continueAvailable?i({id:e.id}):s({id:e.id})};return(0,t.jsxs)("div",{className:"flex h-full w-64 shrink-0 flex-col border-r border-border bg-sidebar",children:[(0,t.jsxs)("div",{className:"flex h-12 items-center justify-between px-3",children:[(0,t.jsx)("h2",{className:"text-sm font-semibold text-foreground",children:"Sessions"}),null!==a&&(0,t.jsx)(v.Button,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:l,title:"Back to current session",children:(0,t.jsx)(D.Plus,{className:"h-3.5 w-3.5"})})]}),(0,t.jsx)(j.Separator,{}),(0,t.jsxs)("div",{className:"p-2",children:[(0,t.jsxs)("button",{onClick:l,className:(0,y.cn)("flex w-full flex-col gap-1.5 rounded-lg p-2.5 text-left transition-colors",g?"bg-primary/10 ring-1 ring-primary/20":"hover:bg-accent"),children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:(0,y.cn)("h-2 w-2 shrink-0 rounded-full",r?"bg-emerald-500 animate-pulse":"bg-gray-400")}),(0,t.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Current Session"})]}),r?(0,t.jsxs)("div",{className:"flex items-center gap-2 text-[11px] text-muted-foreground",children:[(r.modelLabel||r.model)&&(0,t.jsx)(b.Badge,{variant:(f=r.backend)&&(0,T.isBackendId)(f)?m.BACKEND_BADGE_VARIANTS[f]:"gray",className:"h-4 text-[10px] px-1.5 py-0",children:r.modelLabel??r.model}),(0,t.jsx)("span",{children:(0,y.formatCurrency)(r.costUsd??0)}),(0,t.jsxs)("span",{children:[n," msgs"]})]}):(0,t.jsx)("span",{className:"text-[11px] text-muted-foreground",children:"Connecting..."})]}),r&&g&&(0,t.jsxs)(v.Button,{variant:"outline",size:"sm",className:"mt-1.5 w-full text-xs border-green-400 text-green-600 hover:bg-green-50 hover:text-green-700 dark:border-green-600 dark:text-green-400 dark:hover:bg-green-950 dark:hover:text-green-300",onClick:o,children:[(0,t.jsx)(R,{className:"mr-1.5 h-3 w-3"}),"New Chat"]})]}),(0,t.jsx)(j.Separator,{}),h&&(0,t.jsx)("div",{className:"px-2 pt-2",children:(0,t.jsxs)(k.Alert,{variant:"error",className:"items-center",children:[(0,t.jsx)("span",{className:"flex-1",children:h}),(0,t.jsx)("button",{type:"button",onClick:p,className:"ml-2 rounded p-0.5 text-red-600 hover:bg-red-100 dark:text-red-300 dark:hover:bg-red-900","aria-label":"Dismiss error",children:(0,t.jsx)(L.X,{className:"h-3 w-3"})})]})}),(0,t.jsxs)("div",{className:"flex items-center justify-between px-3 py-2",children:[(0,t.jsx)("span",{className:"text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:"History"}),e.length>0&&(0,t.jsxs)(v.Button,{variant:"ghost",size:"sm",className:"h-6 px-2 text-[10px] text-muted-foreground hover:bg-red-50 hover:text-red-700 dark:hover:bg-red-950 dark:hover:text-red-300",onClick:d,disabled:u,title:"Delete all past sessions",children:[(0,t.jsx)(A.Trash2,{className:"mr-1 h-3 w-3"}),"Clean all"]})]}),(0,t.jsx)(S.ScrollArea,{className:"flex-1",children:(0,t.jsxs)("div",{className:"space-y-0.5 px-2 pb-2",children:[0===e.length&&(0,t.jsx)("p",{className:"px-2 py-4 text-center text-xs text-muted-foreground",children:"Chat with the agent to see session history here"}),e.map(e=>{let r=a===e.id;return(0,t.jsxs)("div",{role:"button",tabIndex:0,className:(0,y.cn)("flex w-full cursor-pointer flex-col gap-1 rounded-lg p-2.5 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",r?"bg-primary/10 ring-1 ring-primary/20":"hover:bg-accent"),onClick:()=>x(e),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),x(e))},title:e.readOnlyFromDashboard?"View this session":e.continueAvailable?"Resume this browser session":"View this archived session",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(P.MessageSquare,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}),(0,t.jsxs)("span",{className:"text-sm text-foreground truncate",children:["Session #",e.id]}),e.readOnlyFromDashboard&&(0,t.jsx)(b.Badge,{variant:"gray",className:"px-1.5 py-0 text-[10px]",children:"Read-only"})]}),(0,t.jsx)("div",{className:"flex flex-wrap items-center gap-1",children:e.sourcePlatforms.map(r=>(0,t.jsx)(b.Badge,{variant:"dashboard"===r?"blue":"purple",className:"px-1.5 py-0 text-[10px]",children:I(r)},`${e.id}-${r}`))}),(0,t.jsxs)("div",{className:"flex items-center gap-2 text-[11px] text-muted-foreground",children:[(0,t.jsxs)("span",{children:[e.message_count," msgs"]}),(0,t.jsx)("span",{children:"·"}),(0,t.jsxs)(C.Tooltip,{children:[(0,t.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{className:"font-mono tabular-nums",children:(0,y.formatShortDateTime)(e.last_message_at)})}),(0,t.jsxs)(C.TooltipContent,{children:[(0,y.formatAbsoluteTime)(e.last_message_at)," (",(0,y.formatRelativeTime)(e.last_message_at),")"]})]})]}),e.summary&&(0,t.jsx)("p",{className:"line-clamp-1 text-[11px] text-muted-foreground/70",children:e.summary}),(0,t.jsx)("div",{className:"mt-1 flex items-center justify-end",children:(0,t.jsx)(v.Button,{variant:"ghost",size:"icon",className:"h-7 w-7 text-muted-foreground hover:bg-red-50 hover:text-red-700 dark:hover:bg-red-950 dark:hover:text-red-300",disabled:u,onClick:t=>{t.stopPropagation(),c({id:e.id})},title:"Delete this session","aria-label":`Delete session ${e.id}`,children:(0,t.jsx)(A.Trash2,{className:"h-3.5 w-3.5"})})})]},e.id)})]})})]})}var _=e.i(34098),B=e.i(50862),F=e.i(90826),O=e.i(65268),$=e.i(14260),q=e.i(76),z=e.i(88423),H=e.i(27779),U=e.i(62126);e.s(["default",0,function(){var e,o;let[c,d]=(0,r.useState)(null),u=(0,F.useConfirm)(),h=(0,i.useQueryClient)(),{data:p}=(0,z.useConfig)(),{data:f}=(0,$.useQuery)({queryKey:["chat-current-binding"],queryFn:()=>O.api.get("/chat/current-binding"),refetchInterval:15e3}),{data:b}=(0,U.useConversations)({scope:n.CHAT_SIDEBAR_SCOPE_PARAM}),{messages:v,restoredMessages:k,streaming:j,busy:C,toolProgress:E,sessionInfo:T,sendMessage:D,endSession:R,continueSession:A,connected:L,ready:W}=(0,q.useChat)(),[V,G]=(0,r.useState)(null),K=(0,r.useRef)(null),Q=(0,r.useRef)(!0),X=(0,r.useMemo)(()=>(b?.pages.flatMap(e=>e.conversations)??[]).filter(e=>"active"!==e.status).map(e=>{var t;let r,n=(0===(r=new Set(((t=e).source_platforms??[]).filter(e=>"string"==typeof e&&e.length>0))).size&&"owner"!==t.platform&&r.add(t.platform),[...r].sort((e,t)=>{let r=N[e]??Number.MAX_SAFE_INTEGER,n=N[t]??Number.MAX_SAFE_INTEGER;return r!==n?r-n:e.localeCompare(t)})),a=n.length>0&&n.every(e=>"dashboard"===e);return{...e,sourcePlatforms:n,sourceSummary:n.length>0?n.map(I).join(" + "):"Unknown",readOnlyFromDashboard:!a,continueAvailable:a&&e.continue_available}}),[b]),Y=(0,r.useCallback)(()=>{let e=K.current;e&&(Q.current=e.scrollHeight-e.scrollTop-e.clientHeight<100)},[]);(0,r.useEffect)(()=>{let e=K.current;if(e)return e.addEventListener("scroll",Y,{passive:!0}),()=>e.removeEventListener("scroll",Y)},[Y]);let{data:J,isError:Z}=(e=c?.id??0,o={enabled:null!==c},(0,$.useQuery)({queryKey:["conversation-history",e],queryFn:({signal:t})=>(0,H.fetchConversationHistory)(e,{signal:t}),enabled:(o?.enabled??!0)&&e>0,staleTime:6e4,refetchOnWindowFocus:!1})),ee=(0,r.useMemo)(()=>c?(J??[]).map(e=>({id:`past-${e.id}`,role:e.role,content:e.content,timestamp:(0,y.parseUtcDate)(e.timestamp),...e.attachments&&e.attachments.length>0?{attachments:e.attachments.map(e=>({id:e.id,originalFilename:e.originalFilename,mimeType:e.mimeType,sizeBytes:e.sizeBytes,direction:e.direction,...e.caption?{caption:e.caption}:{}}))}:{}})):[],[c,J]),et=(0,r.useMemo)(()=>(function({manualPastSessionId:e,pastMessagesError:t,pastMessages:r,restoredMessages:n,liveMessages:a,busy:s}){let i=e&&!t?e:null,l=null!==i,o=[...n,...a];return{activePastId:i,currentSessionMessageCount:o.length,displayMessages:l?r:o,inputDisabled:s||l,inputDisabledMessage:l?"Viewing history — switch to Current Session to continue chatting":void 0,inputPlaceholder:l?"Viewing history...":void 0,isViewingPastSession:l,showCurrentSessionControls:!l,showLiveSessionActivity:!l}})({manualPastSessionId:c?.id??null,pastMessagesError:Z,pastMessages:ee,restoredMessages:k,liveMessages:v,busy:C}),[C,v,c,ee,Z,k]),er=et.activePastId?X.find(e=>e.id===et.activePastId):null,en=p?.agentDisplayName??a.DEFAULT_AGENT_DISPLAY_NAME,ea=(0,r.useMemo)(()=>er?{channelId:T?.channelId??"",model:er.model,modelLabel:(0,m.formatShortModelName)(er.model),backend:(0,m.detectBackendFromModel)(er.model)??void 0}:V?{...T??{channelId:""},channelId:T?.channelId??"",model:V.modelId,modelLabel:(0,m.formatShortModelName)(V.modelId),backend:V.backendId}:T,[er,V,T]),es=(0,r.useMemo)(()=>et.isViewingPastSession||V?null:f??null,[f,et.isViewingPastSession,V]);(0,r.useEffect)(()=>{let e=K.current;e&&Q.current&&(e.scrollTop=e.scrollHeight)},[et.displayMessages.length,E]);let ei=(0,r.useCallback)((e,t)=>{Q.current=!0,D(e,{...V?{requestedBackendId:V.backendId,requestedModelId:V.modelId}:{},...t.length>0?{attachments:t}:{}})},[V,D]),el=(0,r.useCallback)(async()=>{d(null),G(null),await R()},[R]),[eo,ec]=(0,r.useState)(null);(0,r.useEffect)(()=>{if(!eo)return;let e=window.setTimeout(()=>ec(null),5e3);return()=>window.clearTimeout(e)},[eo]);let ed=()=>h.getQueriesData({queryKey:["conversations"]}),eu=e=>{for(let[t,r]of e)h.setQueryData(t,r)},eh=(0,s.useMutation)({mutationFn:e=>O.api.delete(`/conversations/${e}`),onMutate:async e=>{await h.cancelQueries({queryKey:["conversations"]});let t=ed();return h.setQueriesData({queryKey:["conversations"]},t=>t&&{...t,pages:t.pages.map(t=>{let r=t.conversations.filter(t=>t.id!==e),n=t.conversations.length-r.length;return{...t,conversations:r,pagination:{...t.pagination,total:Math.max(0,t.pagination.total-n)}}})}),{previous:t}},onError:(e,t,r)=>{r&&eu(r.previous)},onSettled:()=>h.invalidateQueries({queryKey:["conversations"]})}),em=(0,s.useMutation)({mutationFn:()=>O.api.delete("/conversations"),onMutate:async()=>{await h.cancelQueries({queryKey:["conversations"]});let e=ed();return h.setQueriesData({queryKey:["conversations"]},e=>e&&{...e,pages:e.pages.map(e=>({...e,conversations:[],pagination:{...e.pagination,total:0,totalPages:0}}))}),{previous:e}},onError:(e,t,r)=>{r&&eu(r.previous)},onSettled:()=>h.invalidateQueries({queryKey:["conversations"]})}),ep=eh.isPending||em.isPending,ef=(0,r.useCallback)(async e=>{if(await u({title:`Delete session #${e.id}?`,description:"The transcript and any cached workdir will be removed. This cannot be undone.",confirmLabel:"Delete",variant:"destructive"})){ec(null);try{await eh.mutateAsync(e.id)}catch(e){ec(e instanceof O.ApiError?e.message:"Failed to delete session");return}d(t=>t?.id===e.id?null:t)}},[u,eh]),eg=(0,r.useCallback)(async()=>{let e=X.length;if(await u({title:e>0?`Delete all ${e} past session${1===e?"":"s"}?`:"Delete all past sessions?",description:"This removes every past dashboard chat AND every owner DM transcript (Telegram/Slack/Discord/WhatsApp) stored on this device. The current active session is kept. If the sidebar has more pages than are loaded, those are deleted too. This cannot be undone.",confirmLabel:"Delete all",variant:"destructive"})){ec(null);try{await em.mutateAsync()}catch(e){ec(e instanceof O.ApiError?e.message:"Failed to delete sessions");return}d(null)}},[u,em,X.length]),ex=(0,r.useCallback)(async e=>{await A(e.id)&&(d(null),G(null))},[A]),eb=et.inputDisabled||!W,ev=et.inputDisabled?er?er.readOnlyFromDashboard?`Viewing ${er.sourceSummary} history — read-only`:er.continueAvailable?"Viewing browser history — use Continue to resume this session":"Viewing browser history — this session can no longer be resumed":et.inputDisabledMessage:"Connecting — please wait a moment",ey=W?er?`Viewing ${er.sourceSummary} history...`:et.inputPlaceholder:"Connecting...";return(0,t.jsxs)("div",{className:"flex h-full",children:[(0,t.jsx)(M,{pastSessions:X,currentSessionInfo:L?T:null,currentMessageCount:et.currentSessionMessageCount,activePastId:et.activePastId,onSelectPast:e=>{d(e),G(null)},onContinuePast:ex,onSelectCurrent:()=>{d(null),G(null)},onEndSession:el,onDeletePast:ef,onCleanAll:eg,deleteInFlight:ep,deleteError:eo,onDismissDeleteError:()=>ec(null)}),(0,t.jsxs)("div",{className:"flex flex-1 flex-col",children:[(0,t.jsx)(w,{sessionInfo:ea,binding:es,sessionSourceLabel:er?`${er.sourceSummary} history`:null,readOnly:er?.readOnlyFromDashboard??!1,messageCount:et.displayMessages.length,onEndSession:el,showEndSession:et.showCurrentSessionControls&&W}),(0,t.jsx)(S.ScrollArea,{ref:K,className:"flex-1 p-4",children:(0,t.jsxs)("div",{className:"mx-auto max-w-4xl space-y-4",children:[et.displayMessages.map(e=>(0,t.jsx)(x.MessageBubble,{message:e,assistantLabel:en},e.id)),et.showLiveSessionActivity&&(0,t.jsx)(_.ToolProgress,{items:E}),et.showLiveSessionActivity&&C&&!j&&0===E.length&&(0,t.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1",children:[(0,t.jsxs)("span",{className:"flex gap-1",children:[(0,t.jsx)("span",{className:"h-2 w-2 animate-bounce rounded-full bg-muted-foreground [animation-delay:0ms]"}),(0,t.jsx)("span",{className:"h-2 w-2 animate-bounce rounded-full bg-muted-foreground [animation-delay:150ms]"}),(0,t.jsx)("span",{className:"h-2 w-2 animate-bounce rounded-full bg-muted-foreground [animation-delay:300ms]"})]}),(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:"Agent is processing…"})]}),et.showLiveSessionActivity&&j&&(0,t.jsx)("div",{className:"flex justify-start",children:(0,t.jsx)("span",{className:"inline-block h-5 w-1 animate-pulse rounded-full bg-foreground"})}),0===et.displayMessages.length&&(0,t.jsx)("div",{className:"flex min-h-[60vh] items-center justify-center",children:(0,t.jsx)(B.EmptyState,{icon:P.MessageSquare,title:et.isViewingPastSession?"No saved messages in this session":"Send a message to start chatting",description:et.isViewingPastSession?"This saved session has no persisted messages.":"Direct chat with the agent — uses the same backend, context files, and memory as DMs from messaging apps. Long tasks (file edits, tool chains) can take tens of seconds; you'll see live tool progress above. Use the sidebar to open past sessions or end the current one (clears in-memory context but keeps the transcript in Activity → Conversations)."})})]})}),(0,t.jsxs)("div",{className:"border-t border-border bg-background",children:[(0,t.jsx)("div",{className:"px-4 pt-3",children:(0,t.jsx)(g,{value:V,onChange:G,disabled:eb})}),(0,t.jsx)(l.ChatInput,{onSend:ei,disabled:eb,className:"border-t-0",disabledMessage:ev,placeholder:ey})]})]})]})}],18507)}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,23682,e=>{"use strict";var t=e.i(54710),s=e.i(34416),a=e.i(59481),r=e.i(60168),n=e.i(20014),i=e.i(74490),l=e.i(50862),o=e.i(85631),d=e.i(76610),c=e.i(2745),u=e.i(36451),m=e.i(79634),h=e.i(48467),p=e.i(8652),x=e.i(20870),g=e.i(14260),j=e.i(57415),y=e.i(95486),f=e.i(65268);let b=["git-accounts"];function v(){return(0,g.useQuery)({queryKey:b,queryFn:()=>f.api.get("/git-accounts"),staleTime:3e4})}let N=/^[a-z0-9._-]+$/,k={alias:"",type:"github",authMode:"gh-cli-profile",ghProfile:"",host:"github.com",token:""};function w(){let e,a,i=v(),l=(e=(0,y.useQueryClient)(),(0,j.useMutation)({mutationFn:({alias:e,payload:t})=>f.api.put(`/git-accounts/${e}`,t),onSuccess:()=>{e.invalidateQueries({queryKey:b}),e.invalidateQueries({queryKey:["config"]})}})),o=(a=(0,y.useQueryClient)(),(0,j.useMutation)({mutationFn:e=>f.api.delete(`/git-accounts/${e}`),onSuccess:()=>{a.invalidateQueries({queryKey:b}),a.invalidateQueries({queryKey:["config"]})}})),c=(0,j.useMutation)({mutationFn:e=>f.api.post(`/git-accounts/${e}/probe`,{})}),[u,h]=(0,s.useState)(k),[g,w]=(0,s.useState)(null),[S,P]=(0,s.useState)({}),A=i.data?.accounts??[],B=async()=>{if(w(null),!N.test(u.alias))return void w("Alias must use lowercase letters, digits, dot, dash, or underscore.");if("gh-cli-profile"===u.authMode&&!u.ghProfile.trim())return void w("gh-cli-profile mode requires a gh login name.");if("pat-keychain"===u.authMode&&!u.token.trim())return void w("PAT mode requires a token on first save.");try{await l.mutateAsync({alias:u.alias,payload:{type:u.type,authMode:u.authMode,host:u.host||"github.com",..."gh-cli-profile"===u.authMode?{ghProfile:u.ghProfile}:{},...u.token?{token:u.token}:{}}}),h(k)}catch(e){w(e instanceof Error?e.message:"Failed to save account.")}},M=async e=>{P(t=>({...t,[e]:"Probing…"}));try{let t=await c.mutateAsync(e),s=t.ok?`OK — authenticated as ${t.login}`:`Probe failed: ${t.reason??"unknown"}`;P(t=>({...t,[e]:s}))}catch(t){P(s=>({...s,[e]:t instanceof Error?t.message:"Probe failed"}))}};return(0,t.jsx)(x.ConnectionCard,{name:"Git Accounts",icon:(0,t.jsx)(d.KeyRound,{className:"h-4 w-4"}),status:(0,x.deriveConfiguredStatus)(A.length>0),children:(0,t.jsxs)("div",{className:"mt-2 space-y-3",children:[(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Named credentials attached to watched repositories via"," ",(0,t.jsx)("code",{className:"rounded bg-muted px-1",children:"accountAlias"}),". Direct mode injects the resolved token per poll; Delegated mode currently uses the default ",(0,t.jsx)("code",{children:"gh"})," profile."]}),g&&(0,t.jsx)(m.Alert,{variant:"error",children:g}),(0,t.jsxs)("div",{className:"space-y-2",children:[0===A.length&&(0,t.jsx)("p",{className:"text-xs italic text-muted-foreground",children:"No accounts configured. Add one below."}),A.map(e=>(0,t.jsx)(C,{entry:e,onDelete:()=>o.mutate(e.alias),onProbe:()=>M(e.alias),probeMessage:S[e.alias],busy:o.isPending||c.isPending},e.alias))]}),(0,t.jsxs)("div",{className:"space-y-2 rounded border bg-background p-3",children:[(0,t.jsx)("p",{className:"text-xs font-medium",children:"Add account"}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(p.Input,{value:u.alias,onChange:e=>h(t=>({...t,alias:e.target.value})),placeholder:"alias (e.g. work-github)",className:"max-w-[200px]"}),(0,t.jsxs)("select",{value:u.authMode,onChange:e=>h(t=>({...t,authMode:e.target.value})),className:"h-9 rounded border bg-background px-2 text-sm",children:[(0,t.jsx)("option",{value:"gh-cli-profile",children:"gh CLI profile"}),(0,t.jsx)("option",{value:"pat-keychain",children:"Personal Access Token"})]}),(0,t.jsx)(p.Input,{value:u.host,onChange:e=>h(t=>({...t,host:e.target.value})),placeholder:"github.com",className:"max-w-[180px]"}),"gh-cli-profile"===u.authMode?(0,t.jsx)(p.Input,{value:u.ghProfile,onChange:e=>h(t=>({...t,ghProfile:e.target.value})),placeholder:"gh login name (e.g. alice)",className:"max-w-[220px]"}):(0,t.jsx)(p.Input,{type:"password",value:u.token,onChange:e=>h(t=>({...t,token:e.target.value})),placeholder:"ghp_… (PAT — never persisted to disk)",className:"max-w-[280px]"}),(0,t.jsxs)(n.Button,{size:"sm",variant:"outline",onClick:B,disabled:l.isPending||!u.alias.trim(),children:[(0,t.jsx)(r.Plus,{className:"mr-1 h-3.5 w-3.5"}),"Save"]})]})]})]})})}function C({entry:e,onDelete:s,onProbe:a,probeMessage:r,busy:i}){return(0,t.jsxs)("div",{className:"flex flex-col gap-2 rounded border bg-background p-2 sm:flex-row sm:items-center",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"font-mono text-sm font-medium",children:e.alias}),(0,t.jsxs)("div",{className:"mt-1 flex flex-wrap items-center gap-1.5",children:[(0,t.jsx)(h.Badge,{variant:"gray",children:e.host}),(0,t.jsx)(h.Badge,{variant:"pat-keychain"===e.authMode?"green":"gray",children:e.authMode}),e.ghProfile&&(0,t.jsxs)(h.Badge,{variant:"gray",children:["user: ",e.ghProfile]}),!0===e.tokenStored&&(0,t.jsx)(h.Badge,{variant:"green",children:"token stored"}),!1===e.tokenStored&&(0,t.jsx)(h.Badge,{variant:"red",children:"no token"})]}),r&&(0,t.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:r})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)(n.Button,{size:"sm",variant:"ghost",onClick:a,disabled:i,children:[(0,t.jsx)(c.ShieldCheck,{className:"mr-1 h-3.5 w-3.5"}),"Probe"]}),(0,t.jsx)(n.Button,{size:"sm",variant:"ghost",onClick:s,disabled:i,className:"h-8 w-8 p-0",children:(0,t.jsx)(u.X,{className:"h-3.5 w-3.5"})})]})]})}var S=e.i(77379);let P=(0,S.default)("FileType2",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4",key:"1pf5j1"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M2 13v-1h6v1",key:"1dh9dg"}],["path",{d:"M5 12v6",key:"150t9c"}],["path",{d:"M4 18h2",key:"1xrofg"}]]);var A=e.i(72740),B=e.i(64213),M=e.i(7663),R=e.i(43477);let H=e=>["git-template",e],G=["git-template","retemplate-status"];function F(){return(0,g.useQuery)({queryKey:G,queryFn:()=>f.api.get("/git/templates/retemplate/status"),refetchInterval:e=>{let t=e.state.data;return!!(t?.status&&!t.status.finalizedAt)&&2e3},staleTime:1e3})}var L=e.i(1733);function O(e){return"project"===e?"Project (projects/<slug>.md)":"Repo-only (git-repos/<slug>.md)"}let T=["project","git-repo"];function q(){let e=F(),s=e.data?.status??null,a=function(e){if(!e)return null;if(!e.finalizedAt)return{label:"Re-template in progress…",tone:"info"};switch(e.finalStatus){case"success":default:return{label:"Re-template completed",tone:"success"};case"partial":return{label:"Re-template completed with rollbacks",tone:"warning"};case"failed":return{label:"Re-template failed",tone:"error"}}}(s);return(0,t.jsx)(x.ConnectionCard,{name:"Project document templates",icon:(0,t.jsx)(P,{className:"h-4 w-4"}),status:(0,x.deriveConfiguredStatus)(!0),children:(0,t.jsxs)("div",{className:"mt-2 space-y-3",children:[(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Edit the templates the agent uses when it (re)writes"," ",(0,t.jsx)("code",{className:"rounded bg-muted px-1",children:"plans/projects/<slug>.md"})," ","and"," ",(0,t.jsx)("code",{className:"rounded bg-muted px-1",children:"knowledge/repos/<slug>/overview.md"}),". Changes are forward-only — existing files keep their old shape until the next git lifecycle event touches them, or until you press “Apply” below to re-conform every existing file at once."]}),a&&(0,t.jsx)(m.Alert,{variant:"error"===a.tone?"error":"warning"===a.tone?"warning":"success"===a.tone?"success":"info",children:(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,t.jsx)("span",{children:a.label}),s&&(0,t.jsxs)("span",{className:"text-xs font-mono text-muted-foreground",children:[s.kind," · run #",s.scheduleId]})]})}),T.map(e=>(0,t.jsx)(D,{kind:e},e)),(0,t.jsx)(z,{})]})})}function D({kind:e}){let a,r,i,l=(0,g.useQuery)({queryKey:H(e),queryFn:()=>f.api.get(`/git/templates/${encodeURIComponent(e)}`),staleTime:5e3}),o=(a=(0,y.useQueryClient)(),(0,j.useMutation)({mutationFn:t=>f.api.put(`/git/templates/${encodeURIComponent(e)}`,{content:t}),onSuccess:()=>{a.invalidateQueries({queryKey:H(e)})}})),d=(r=(0,y.useQueryClient)(),(0,j.useMutation)({mutationFn:()=>f.api.post(`/git/templates/${encodeURIComponent(e)}/apply`),onSuccess:()=>{r.invalidateQueries({queryKey:G})}})),c=(0,L.useRepositories)(),[u,p]=(0,s.useState)(null),[x,b]=(0,s.useState)(null),[v,N]=(0,s.useState)(!1),[k,w]=(0,s.useState)(null),C="project"===e?"project":"repo-only",S=(0,s.useMemo)(()=>(c.data?.repositories??[]).filter(e=>e.classification===C).length,[c.data?.repositories,C]),P=l.data?.active??"",F=l.data?.bundled??"",T=l.data?.hasOverride??!1,q=u??P,z=null!==u&&u!==P,I=async()=>{if(null!==u){b(null);try{await o.mutateAsync(u),p(null)}catch(e){b(e instanceof Error?e.message:"Failed to save template")}}},K=(i=O(e),{title:`Re-template ${S} ${"project"===e?"project":"git-repo"} document${1===S?"":"s"}?`,bullets:[`${i} files will be re-conformed to the current template body.`,"Re-templating may lose information or formatting that the new template does not represent. Files matching the previous schema's sections may have content moved, merged, or dropped depending on how the template changed.","Every targeted file is auto-backed up before the run. The backup path is shown after you confirm.","If a file's session aborts mid-write, the daemon restores it from backup automatically."],acknowledge:"Yes, apply the template"}),U=async()=>{b(null);try{let e=await d.mutateAsync();w(e),N(!1)}catch(e){b(e instanceof Error?e.message:"Failed to apply template")}};return(0,t.jsxs)("div",{className:"rounded border bg-card p-3 space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium",children:O(e)}),T&&(0,t.jsx)(h.Badge,{variant:"green",children:"overridden"})]}),(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:"project"===e?"project.md":"git-repo.md"})]}),x&&(0,t.jsx)(m.Alert,{variant:"error",children:x}),(0,t.jsxs)("div",{className:"grid gap-2 lg:grid-cols-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-1 text-xs font-medium text-muted-foreground",children:"Bundled (read-only)"}),(0,t.jsx)("textarea",{value:F,readOnly:!0,className:"h-64 w-full resize-none rounded border bg-muted p-2 font-mono text-xs"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-1 text-xs font-medium text-muted-foreground",children:"Active (edit and save)"}),(0,t.jsx)("textarea",{value:q,onChange:e=>p(e.target.value),className:"h-64 w-full resize-none rounded border bg-background p-2 font-mono text-xs",spellCheck:!1,disabled:l.isLoading})]})]}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsxs)(n.Button,{size:"sm",variant:"outline",onClick:I,disabled:!z||o.isPending,children:[(0,t.jsx)(M.Save,{className:"mr-1 h-3.5 w-3.5"}),"Save template"]}),(0,t.jsx)(n.Button,{size:"sm",variant:"ghost",onClick:()=>{p(F)},disabled:l.isLoading,children:"Reset to bundled"}),(0,t.jsxs)(n.Button,{size:"sm",variant:"default",onClick:()=>N(!0),disabled:d.isPending,children:[d.isPending?(0,t.jsx)(A.Loader2,{className:"mr-1 h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(B.Play,{className:"mr-1 h-3.5 w-3.5"}),"Apply current template to existing ","project"===e?"projects":"git-repos"]})]}),k&&(0,t.jsx)(m.Alert,{variant:"info",children:(0,t.jsxs)("div",{className:"space-y-1 text-xs",children:[(0,t.jsxs)("div",{children:["Re-template enqueued — schedule #",k.scheduleId,","," ",k.targets.length," file(s) backed up."]}),(0,t.jsxs)("div",{className:"font-mono text-muted-foreground break-all",children:["backup: ",k.backupRoot]})]})}),(0,t.jsx)(R.Sheet,{open:v,onOpenChange:N,children:(0,t.jsxs)(R.SheetContent,{side:"right",className:"w-[480px] sm:w-[540px]",children:[(0,t.jsx)(R.SheetHeader,{children:(0,t.jsx)(R.SheetTitle,{children:K.title})}),(0,t.jsxs)("div",{className:"mt-4 space-y-3 text-sm",children:[(0,t.jsx)("ul",{className:"list-disc space-y-1 pl-5",children:K.bullets.map(e=>(0,t.jsx)("li",{children:e},e))}),(0,t.jsxs)("div",{className:"flex gap-2 pt-2",children:[(0,t.jsxs)(n.Button,{size:"sm",onClick:U,disabled:d.isPending,children:[d.isPending&&(0,t.jsx)(A.Loader2,{className:"mr-1 h-3.5 w-3.5 animate-spin"}),K.acknowledge]}),(0,t.jsx)(n.Button,{size:"sm",variant:"ghost",onClick:()=>N(!1),children:"Cancel"})]})]})]})})]})}function z(){let e=F(),a=e.data?.status??null,r=(0,s.useMemo)(()=>a?Object.values(a.files).map(e=>({slug:e.slug,contextFile:e.contextFile,status:e.status,reason:e.reason??null,error:e.error??null,bytesDelta:void 0!==e.beforeBytes&&void 0!==e.afterBytes?e.afterBytes-e.beforeBytes:null,startedAt:e.startedAt??null,completedAt:e.completedAt??null})).sort((e,t)=>e.slug.localeCompare(t.slug)):[],[a]),n=(0,s.useMemo)(()=>(function(e){let t={pending:0,started:0,completed:0,skipped:0,failed:0,rolled_back:0};for(let s of e)t[s.status]+=1;return t})(r),[r]);return a?(0,t.jsxs)("div",{className:"rounded border bg-card p-3 space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-sm font-medium",children:"Last re-template run"}),(0,t.jsx)("div",{className:"flex flex-wrap gap-1 text-xs",children:Object.entries(n).map(([e,s])=>s>0?(0,t.jsxs)(h.Badge,{variant:I(e),children:[e,": ",s]},e):null)})]}),(0,t.jsx)("div",{className:"overflow-x-auto",children:(0,t.jsxs)("table",{className:"w-full text-xs",children:[(0,t.jsx)("thead",{children:(0,t.jsxs)("tr",{className:"border-b text-left text-muted-foreground",children:[(0,t.jsx)("th",{className:"px-2 py-1",children:"Slug"}),(0,t.jsx)("th",{className:"px-2 py-1",children:"Status"}),(0,t.jsx)("th",{className:"px-2 py-1",children:"File"}),(0,t.jsx)("th",{className:"px-2 py-1",children:"Bytes Δ"}),(0,t.jsx)("th",{className:"px-2 py-1",children:"Note"})]})}),(0,t.jsx)("tbody",{children:r.map(e=>(0,t.jsxs)("tr",{className:"border-b last:border-0",children:[(0,t.jsx)("td",{className:"px-2 py-1 font-mono",children:e.slug}),(0,t.jsx)("td",{className:"px-2 py-1",children:(0,t.jsx)(h.Badge,{variant:I(e.status),children:e.status})}),(0,t.jsx)("td",{className:"px-2 py-1 font-mono text-muted-foreground",children:e.contextFile}),(0,t.jsx)("td",{className:"px-2 py-1",children:null===e.bytesDelta?"—":e.bytesDelta>=0?`+${e.bytesDelta}`:`${e.bytesDelta}`}),(0,t.jsx)("td",{className:"px-2 py-1 text-muted-foreground",children:e.error??e.reason??""})]},e.slug))})]})})]}):(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"No re-template runs recorded yet."})}function I(e){switch(e){case"completed":return"green";case"skipped":return"gray";case"started":case"pending":return"blue";case"failed":return"red";case"rolled_back":return"amber";default:return"default"}}let K=(0,S.default)("FilePen",[["path",{d:"M12.5 22H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v9.5",key:"1couwa"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M13.378 15.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z",key:"1y4qbx"}]]);var U=e.i(25795);let Q=["task-flows"],$=["git.","github."];function E(){let e,a,r=(0,g.useQuery)({queryKey:Q,queryFn:()=>f.api.get("/task-flows"),staleTime:3e4}),i=(0,s.useMemo)(()=>(r.data?.flows??[]).filter(e=>$.some(t=>e.key.startsWith(t))),[r.data]),[l,o]=(0,s.useState)(null),d=l??(i.length>0?i[0].key:null),c=(0,g.useQuery)({queryKey:["task-flow",d],queryFn:()=>null===d?Promise.reject(Error("no_key")):f.api.get(`/task-flows/${encodeURIComponent(d)}`),enabled:null!==d,staleTime:5e3}),u=(e=(0,y.useQueryClient)(),(0,j.useMutation)({mutationFn:({key:e,content:t})=>f.api.put(`/task-flows/${encodeURIComponent(e)}`,{content:t}),onSuccess:(t,{key:s})=>{e.invalidateQueries({queryKey:Q}),e.invalidateQueries({queryKey:["task-flow",s]})}})),p=(a=(0,y.useQueryClient)(),(0,j.useMutation)({mutationFn:e=>f.api.delete(`/task-flows/${encodeURIComponent(e)}`),onSuccess:(e,t)=>{a.invalidateQueries({queryKey:Q}),a.invalidateQueries({queryKey:["task-flow",t]})}})),[b,v]=(0,s.useState)({}),[N,k]=(0,s.useState)(null),w=d?b[d]??c.data?.override??c.data?.bundled??"":"",C=!!d&&void 0!==b[d]&&b[d]!==(c.data?.override??""),S=i.filter(e=>e.hasOverride).length,P=async()=>{if(d){k(null);try{await u.mutateAsync({key:d,content:w})}catch(e){k(e instanceof Error?e.message:"Failed to save override")}}},A=async()=>{if(d){k(null);try{await p.mutateAsync(d),v(e=>{let t={...e};return delete t[d],t})}catch(e){k(e instanceof Error?e.message:"Failed to reset")}}};return(0,t.jsx)(x.ConnectionCard,{name:"Task Flow Overrides",icon:(0,t.jsx)(K,{className:"h-4 w-4"}),status:(0,x.deriveConfiguredStatus)(S>0),children:(0,t.jsxs)("div",{className:"mt-2 space-y-3",children:[(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Override the prompt body the dispatcher uses for a Git/GitHub event. The bundled body stays read-only on the left; your edits land at ",(0,t.jsx)("code",{className:"rounded bg-muted px-1",children:"~/.personal-agent/task-flows/<key>.md"})," ","and take effect on the next session. Resetting falls back to bundled."]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsxs)("select",{value:d??"",onChange:e=>o(e.target.value||null),className:"h-9 min-w-[260px] rounded border bg-background px-2 text-sm",disabled:0===i.length,children:[0===i.length&&(0,t.jsx)("option",{value:"",children:"No git.* / github.* keys"}),i.map(e=>(0,t.jsxs)("option",{value:e.key,children:[e.key,e.hasOverride?" ★":""]},e.key))]}),c.data?.hasOverride&&(0,t.jsx)(h.Badge,{variant:"green",children:"overridden"})]}),N&&(0,t.jsx)(m.Alert,{variant:"error",children:N}),(0,t.jsxs)("div",{className:"grid gap-3 lg:grid-cols-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-1 text-xs font-medium text-muted-foreground",children:"Bundled (read-only)"}),(0,t.jsx)("textarea",{value:c.data?.bundled??"",readOnly:!0,className:"h-72 w-full resize-none rounded border bg-muted p-2 font-mono text-xs"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-1 text-xs font-medium text-muted-foreground",children:"Override (edit and save)"}),(0,t.jsx)("textarea",{value:w,onChange:e=>{var t;return t=e.target.value,void(d&&v(e=>({...e,[d]:t})))},className:"h-72 w-full resize-none rounded border bg-background p-2 font-mono text-xs",spellCheck:!1})]})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsxs)(n.Button,{size:"sm",variant:"outline",onClick:P,disabled:!d||u.isPending||!C,children:[(0,t.jsx)(M.Save,{className:"mr-1 h-3.5 w-3.5"}),"Save override"]}),(0,t.jsxs)(n.Button,{size:"sm",variant:"ghost",onClick:A,disabled:!d||p.isPending||!c.data?.hasOverride,children:[(0,t.jsx)(U.RotateCcw,{className:"mr-1 h-3.5 w-3.5"}),"Reset to bundled"]})]})]})})}var _=e.i(32220),W=e.i(32077),V=e.i(45958),J=e.i(26181),X=e.i(55575);let Y=(0,S.default)("Github",[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]]);var Z=e.i(40974),ee=e.i(21682),et=e.i(90925);let es=(0,S.default)("Unlink",[["path",{d:"m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71",key:"yqzxt4"}],["path",{d:"m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71",key:"4qinb0"}],["line",{x1:"8",x2:"8",y1:"2",y2:"5",key:"1041cp"}],["line",{x1:"2",x2:"5",y1:"8",y2:"8",key:"14m1p5"}],["line",{x1:"16",x2:"16",y1:"19",y2:"22",key:"rzdirn"}],["line",{x1:"19",x2:"22",y1:"16",y2:"16",key:"ox905f"}]]);var ea=e.i(90826),er=e.i(58436);let en="text-[11px] font-medium uppercase tracking-wider text-muted-foreground",ei=["project","repo-only"],el=["work","personal","research","client","other"];function eo({repo:e}){let[l,o]=(0,s.useState)(!1),[d,c]=(0,s.useState)(!1),[u,m]=(0,s.useState)(!1),p=(0,L.useDeleteRepository)(),x=(0,L.useUpdateRepository)(),g=(0,ea.useConfirm)(),j=(0,L.repositoryHasGithub)(e),y=(0,L.repositoryHasLocal)(e),f=e.localOnly,b=async()=>{await g({title:`Delete ${(0,L.repositoryDisplayName)(e)}?`,description:"This removes the repository registration along with its triggers and management state. The local clone on disk is not touched.",confirmLabel:"Delete",variant:"destructive"})&&await p.mutateAsync(e.id)},v=async t=>{t&&j?await g({title:"Mark as local-only?",description:"This will clear the GitHub link. To keep both sides, leave 'local-only' off.",confirmLabel:"Mark local-only"})&&await x.mutateAsync({id:e.id,body:{localOnly:!0,githubOwner:null,githubRepo:null,githubAccount:null}}):await x.mutateAsync({id:e.id,body:{localOnly:t}})},N=async()=>{j?await g({title:"Unlink local clone?",description:`The clone at ${e.localPath} stays on disk; only the registration is detached.`,confirmLabel:"Unlink"})&&await x.mutateAsync({id:e.id,body:{localPath:null}}):await g({title:"Cannot unlink the local clone",description:"This row has no GitHub side, so unlinking would leave it empty. Delete the repository instead.",confirmLabel:"OK"})},k=async()=>{!await g({title:"Unlink GitHub remote?",description:y?"The local clone stays registered.":"This row has no local clone, so unlinking would leave it empty. Use 'Mark local-only' instead.",confirmLabel:"Unlink"})||y&&await x.mutateAsync({id:e.id,body:{githubOwner:null,githubRepo:null,githubAccount:null}})};return(0,t.jsxs)(i.Card,{children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(a.GitBranch,{className:"h-4 w-4 text-muted-foreground"}),(0,t.jsx)("span",{className:"truncate text-sm font-medium text-foreground",children:(0,L.repositoryDisplayName)(e)}),f&&(0,t.jsxs)(h.Badge,{variant:"gray",className:"text-[10px]",children:[(0,t.jsx)(Z.Lock,{className:"mr-1 h-3 w-3"}),"local-only"]}),(0,t.jsx)(h.Badge,{variant:"project"===e.classification?"green":"gray",children:e.classification}),(0,t.jsx)(h.Badge,{variant:"gray",children:e.category})]}),(0,t.jsx)("p",{className:"mt-1 truncate text-[11px] text-muted-foreground",children:e.id})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:[(0,t.jsx)(n.Button,{size:"sm",variant:"ghost",onClick:()=>o(!0),title:"Edit",children:(0,t.jsx)(ee.Pencil,{className:"h-3.5 w-3.5"})}),(0,t.jsx)(n.Button,{size:"sm",variant:"ghost",onClick:b,title:"Delete",children:(0,t.jsx)(et.Trash2,{className:"h-3.5 w-3.5"})})]})]}),(0,t.jsxs)("div",{className:"mt-3 grid gap-3 md:grid-cols-2",children:[(0,t.jsxs)("div",{className:"rounded-md border bg-background/40 p-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-medium text-muted-foreground",children:[(0,t.jsx)(Y,{className:"h-3.5 w-3.5"}),"GitHub"]}),j?(0,t.jsxs)("div",{className:"mt-1 space-y-1 text-sm",children:[(0,t.jsxs)("p",{className:"font-medium",children:[e.githubOwner,"/",e.githubRepo]}),(0,t.jsxs)("p",{className:"text-[11px] text-muted-foreground",children:["account: ",e.githubAccount??"default"]}),y&&!f&&(0,t.jsxs)(n.Button,{size:"sm",variant:"ghost",className:"mt-1 h-7 px-1.5",onClick:k,children:[(0,t.jsx)(es,{className:"mr-1 h-3 w-3"}),"Unlink"]})]}):f?(0,t.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:"Local-only — toggle off to enable GitHub linking."}):(0,t.jsxs)(n.Button,{size:"sm",variant:"outline",className:"mt-2 h-8",onClick:()=>c(!0),children:[(0,t.jsx)(r.Plus,{className:"mr-1 h-3 w-3"}),"Link GitHub remote"]})]}),(0,t.jsxs)("div",{className:"rounded-md border bg-background/40 p-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-medium text-muted-foreground",children:[(0,t.jsx)(X.FolderOpen,{className:"h-3.5 w-3.5"}),"Local clone"]}),y?(0,t.jsxs)("div",{className:"mt-1 space-y-1 text-sm",children:[(0,t.jsx)("p",{className:"truncate font-medium",title:e.localPath??"",children:e.localPath}),(0,t.jsxs)("p",{className:"text-[11px] text-muted-foreground",children:["slug: ",(0,t.jsx)("span",{className:"font-mono",children:e.slug})]}),j&&(0,t.jsxs)(n.Button,{size:"sm",variant:"ghost",className:"mt-1 h-7 px-1.5",onClick:N,children:[(0,t.jsx)(es,{className:"mr-1 h-3 w-3"}),"Unlink"]})]}):(0,t.jsxs)(n.Button,{size:"sm",variant:"outline",className:"mt-2 h-8",onClick:()=>m(!0),children:[(0,t.jsx)(r.Plus,{className:"mr-1 h-3 w-3"}),"Link local clone"]})]})]}),(0,t.jsxs)("div",{className:"mt-3 flex items-center justify-between text-[11px] text-muted-foreground",children:[(0,t.jsxs)("label",{className:"flex items-center gap-1.5",children:[(0,t.jsx)("input",{type:"checkbox",checked:f,disabled:x.isPending,onChange:e=>void v(e.target.checked)}),"Local-only repository"]}),(0,t.jsxs)(V.default,{href:"/git",className:"flex items-center gap-1 text-foreground underline-offset-2 hover:underline",children:["Configure polling & triggers in my life › git",(0,t.jsx)(J.ArrowUpRight,{className:"h-3 w-3"})]})]}),(0,t.jsx)(ed,{repo:e,open:l,onClose:()=>o(!1)}),(0,t.jsx)(eu,{repo:e,open:d,onClose:()=>c(!1)}),(0,t.jsx)(eh,{repo:e,open:u,onClose:()=>m(!1)})]})}function ed({repo:e,open:s,onClose:a}){return(0,t.jsx)(R.Sheet,{open:s,onOpenChange:e=>!e&&a(),children:s&&(0,t.jsx)(ec,{repo:e,onClose:a})})}function ec({repo:e,onClose:a}){let r=(0,L.useUpdateRepository)(),[i,l]=(0,s.useState)(e.displayName??""),[o,d]=(0,s.useState)(e.classification),[c,u]=(0,s.useState)(e.category),[m,h]=(0,s.useState)(null),x=async t=>{t.preventDefault(),h(null);try{let t={displayName:i.trim()?i.trim():null,classification:o,category:c};await r.mutateAsync({id:e.id,body:t}),a()}catch(e){h(e instanceof Error?e.message:"Failed to save changes")}};return(0,t.jsxs)(R.SheetContent,{className:"overflow-y-auto",children:[(0,t.jsx)(R.SheetHeader,{children:(0,t.jsx)(R.SheetTitle,{children:"Edit repository metadata"})}),(0,t.jsxs)("form",{onSubmit:x,className:"mt-6 space-y-4",children:[(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:en,children:"Display name"}),(0,t.jsx)(p.Input,{value:i,onChange:e=>l(e.target.value),placeholder:(0,L.repositoryDisplayName)(e)}),(0,t.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Optional — drives the slug used for context paths and dashboard deep-links."})]}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:en,children:"Classification"}),(0,t.jsx)("select",{value:o,onChange:e=>d(e.target.value),className:"h-9 w-full rounded-md border bg-background px-2 text-sm",children:ei.map(e=>(0,t.jsx)("option",{value:e,children:e},e))}),(0,t.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Project entries carry lifecycle phases in the overview MD; repo-only stays lightweight."})]}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:en,children:"Category"}),(0,t.jsx)("select",{value:c,onChange:e=>u(e.target.value),className:"h-9 w-full rounded-md border bg-background px-2 text-sm",children:el.map(e=>(0,t.jsx)("option",{value:e,children:e},e))})]}),m&&(0,t.jsx)("p",{className:"rounded-md border border-red-200 bg-red-50/50 p-2 text-xs text-red-700 dark:border-red-900 dark:bg-red-950/30 dark:text-red-300",children:m}),(0,t.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t pt-4",children:[(0,t.jsx)(n.Button,{type:"button",variant:"ghost",onClick:a,children:"Cancel"}),(0,t.jsx)(n.Button,{type:"submit",disabled:r.isPending,children:r.isPending?"Saving…":"Save"})]})]})]})}function eu({repo:e,open:s,onClose:a}){return(0,t.jsx)(R.Sheet,{open:s,onOpenChange:e=>!e&&a(),children:s&&(0,t.jsx)(em,{repo:e,onClose:a})})}function em({repo:e,onClose:a}){let r=(0,L.useLinkGithub)(),{data:i}=v(),[l,o]=(0,s.useState)(""),[d,c]=(0,s.useState)(""),[u,m]=(0,s.useState)(""),[h,x]=(0,s.useState)(null),g=async t=>{if(t.preventDefault(),x(null),!l.trim()||!d.trim())return void x("owner and repo are required");try{await r.mutateAsync({id:e.id,owner:l.trim(),repo:d.trim(),account:u.trim()||void 0}),a()}catch(e){x(e instanceof Error?e.message:"Failed to link")}};return(0,t.jsxs)(R.SheetContent,{className:"overflow-y-auto",children:[(0,t.jsx)(R.SheetHeader,{children:(0,t.jsx)(R.SheetTitle,{children:"Link a GitHub remote"})}),(0,t.jsxs)("form",{onSubmit:g,className:"mt-6 space-y-4",children:[(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Personal accounts on github.com only. GHES is not in scope for v1."}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:en,children:"Owner"}),(0,t.jsx)(p.Input,{value:l,onChange:e=>o(e.target.value),placeholder:"acme",autoFocus:!0})]}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:en,children:"Repository"}),(0,t.jsx)(p.Input,{value:d,onChange:e=>c(e.target.value),placeholder:"widgets"})]})]}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:en,children:"Account alias"}),(0,t.jsxs)("select",{value:u,onChange:e=>m(e.target.value),className:"h-9 w-full rounded-md border bg-background px-2 text-sm",children:[(0,t.jsx)("option",{value:"",children:"default"}),(i?.accounts??[]).map(e=>(0,t.jsx)("option",{value:e.alias,children:e.alias},e.alias))]})]}),h&&(0,t.jsx)("p",{className:"rounded-md border border-red-200 bg-red-50/50 p-2 text-xs text-red-700 dark:border-red-900 dark:bg-red-950/30 dark:text-red-300",children:h}),(0,t.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t pt-4",children:[(0,t.jsx)(n.Button,{type:"button",variant:"ghost",onClick:a,children:"Cancel"}),(0,t.jsx)(n.Button,{type:"submit",disabled:r.isPending,children:r.isPending?"Linking…":"Link"})]})]})]})}function eh({repo:e,open:s,onClose:a}){return(0,t.jsx)(R.Sheet,{open:s,onOpenChange:e=>!e&&a(),children:s&&(0,t.jsx)(ep,{repo:e,onClose:a})})}function ep({repo:e,onClose:a}){let r=(0,L.useLinkLocal)(),[i,l]=(0,s.useState)(""),[o,d]=(0,s.useState)(null),c=async t=>{if(t.preventDefault(),d(null),!i.trim())return void d("Local path is required");try{await r.mutateAsync({id:e.id,localPath:i.trim()}),a()}catch(e){d(e instanceof Error?e.message:"Failed to link")}};return(0,t.jsxs)(R.SheetContent,{className:"overflow-y-auto",children:[(0,t.jsx)(R.SheetHeader,{children:(0,t.jsx)(R.SheetTitle,{children:"Link a local clone"})}),(0,t.jsxs)("form",{onSubmit:c,className:"mt-6 space-y-4",children:[(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Pick the directory of the local clone of this repository. The agent never inspects `.git/config` to suggest values — paths are user-supplied."}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:en,children:"Repository directory"}),(0,t.jsx)(er.DirectoryPickerField,{value:i,onChange:l,title:"Choose local clone directory"})]}),o&&(0,t.jsx)("p",{className:"rounded-md border border-red-200 bg-red-50/50 p-2 text-xs text-red-700 dark:border-red-900 dark:bg-red-950/30 dark:text-red-300",children:o}),(0,t.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t pt-4",children:[(0,t.jsx)(n.Button,{type:"button",variant:"ghost",onClick:a,children:"Cancel"}),(0,t.jsx)(n.Button,{type:"submit",disabled:r.isPending,children:r.isPending?"Linking…":"Link"})]})]})]})}let ex="text-[11px] font-medium uppercase tracking-wider text-muted-foreground",eg="text-[11px] leading-relaxed text-muted-foreground",ej="text-[11px] font-medium uppercase tracking-wider text-muted-foreground",ey=[{value:"both",label:"GitHub + local clone",description:"Recommended. Agent watches GitHub activity AND reads files from your local clone."},{value:"github",label:"GitHub only",description:"Agent watches PRs, issues, and commits on GitHub. No access to source files."},{value:"local",label:"Local folder only",description:"Agent watches a folder on this Mac. No GitHub remote — e.g. a private working directory."}],ef=[{value:"repo-only",label:"Just track activity",description:"Lightweight. Agent logs commits, PRs, and issues. No long-form project document."},{value:"project",label:"Treat as a project",description:"Agent maintains a rich project document with goals, decisions, and milestones in your context notes."}],eb=["work","personal","research","client","other"];function ev({open:e,onClose:s}){return(0,t.jsx)(R.Sheet,{open:e,onOpenChange:e=>!e&&s(),children:e&&(0,t.jsx)(eN,{onClose:s})})}function eN({onClose:e}){let a=(0,L.useCreateRepository)(),{data:r}=v(),[i,l]=(0,s.useState)("both"),[o,d]=(0,s.useState)(""),[c,u]=(0,s.useState)(""),[m,h]=(0,s.useState)(""),[x,g]=(0,s.useState)(""),[j,y]=(0,s.useState)(!1),[f,b]=(0,s.useState)(""),[N,k]=(0,s.useState)("repo-only"),[w,C]=(0,s.useState)("other"),[S,P]=(0,s.useState)(null),A="github"===i||"both"===i&&!j,B="local"===i||"both"===i,M=async t=>{t.preventDefault(),P(null);let s={classification:N,category:w,displayName:f.trim()?f.trim():void 0};if(A){if(!o.trim()||!c.trim())return void P("GitHub owner and repository are required.");s.githubOwner=o.trim(),s.githubRepo=c.trim(),m.trim()&&(s.githubAccount=m.trim())}if(B){if(!x.trim())return void P("Local clone path is required.");s.localPath=x.trim()}"local"===i&&j&&(s.localOnly=!0);try{await a.mutateAsync(s),e()}catch(e){P(e instanceof Error?e.message:"Failed to add repository")}},H=r?.accounts??[];return(0,t.jsxs)(R.SheetContent,{className:"overflow-y-auto",children:[(0,t.jsxs)(R.SheetHeader,{children:[(0,t.jsx)(R.SheetTitle,{children:"Add repository"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Tell the agent about a code repository to watch. It will track activity (commits, PRs, issues) and optionally maintain a project document in your context notes."})]}),(0,t.jsxs)("form",{onSubmit:M,className:"mt-6 space-y-6",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("label",{className:ex,children:"Where does this repository live?"}),(0,t.jsx)("div",{className:"grid gap-2",children:ey.map(e=>{let s=i===e.value;return(0,t.jsxs)("button",{type:"button",onClick:()=>l(e.value),className:"rounded-md border px-3 py-2 text-left transition-colors "+(s?"border-primary bg-primary/10":"border-border hover:bg-accent"),children:[(0,t.jsx)("div",{className:"text-sm font-medium "+(s?"text-primary":"text-foreground"),children:e.label}),(0,t.jsx)("div",{className:eg+" mt-0.5",children:e.description})]},e.value)})})]}),A&&(0,t.jsxs)("div",{className:"space-y-3 rounded-md border bg-background/40 p-3",children:[(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("p",{className:ej,children:"GitHub remote"}),(0,t.jsxs)("p",{className:eg,children:["From the GitHub URL"," ",(0,t.jsx)("code",{className:"rounded bg-muted px-1 py-px text-[10px]",children:"github.com/acme/widgets"}),", the owner is ",(0,t.jsx)("strong",{children:"acme"})," and the repository is"," ",(0,t.jsx)("strong",{children:"widgets"}),"."]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:ex,children:"Owner (user or org)"}),(0,t.jsx)(p.Input,{value:o,onChange:e=>d(e.target.value),placeholder:"acme"})]}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:ex,children:"Repository name"}),(0,t.jsx)(p.Input,{value:c,onChange:e=>u(e.target.value),placeholder:"widgets"})]})]}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:ex,children:"GitHub account to use"}),(0,t.jsxs)("select",{value:m,onChange:e=>h(e.target.value),className:"h-9 w-full rounded-md border bg-background px-2 text-sm",children:[(0,t.jsx)("option",{value:"",children:"default"}),H.map(e=>(0,t.jsx)("option",{value:e.alias,children:e.alias},e.alias))]}),(0,t.jsxs)("p",{className:eg,children:["Which set of GitHub credentials the agent should use to read this repo."," ",0===H.length?"Only the default account is set up — manage more under Connections → GitHub accounts.":"Manage accounts under Connections → GitHub accounts."]})]})]}),B&&(0,t.jsxs)("div",{className:"space-y-3 rounded-md border bg-background/40 p-3",children:[(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("p",{className:ej,children:"Local clone"}),(0,t.jsx)("p",{className:eg,children:"Folder on this Mac where the repo is checked out. The agent reads source files, commits, and uncommitted changes from here."})]}),(0,t.jsx)(er.DirectoryPickerField,{value:x,onChange:g,title:"Choose local clone directory"}),"local"===i&&(0,t.jsxs)("label",{className:"flex items-start gap-2 text-xs text-muted-foreground",children:[(0,t.jsx)("input",{type:"checkbox",checked:j,onChange:e=>y(e.target.checked),className:"mt-0.5"}),(0,t.jsx)("span",{children:"This folder is not (and will never be) backed by a GitHub remote. Skip GitHub linking permanently."})]})]}),(0,t.jsxs)("div",{className:"space-y-3 rounded-md border bg-background/40 p-3",children:[(0,t.jsx)("p",{className:ej,children:"Naming & tracking"}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:ex,children:"Display name (optional)"}),(0,t.jsx)(p.Input,{value:f,onChange:e=>b(e.target.value),placeholder:"Leave blank to use the repo or folder name"}),(0,t.jsx)("p",{className:eg,children:"How this repository appears in the dashboard and in your context notes."})]}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:ex,children:"How should the agent treat this?"}),(0,t.jsx)("div",{className:"grid gap-2",children:ef.map(e=>{let s=N===e.value;return(0,t.jsxs)("button",{type:"button",onClick:()=>k(e.value),className:"rounded-md border px-3 py-2 text-left transition-colors "+(s?"border-primary bg-primary/10":"border-border hover:bg-accent"),children:[(0,t.jsx)("div",{className:"text-sm font-medium "+(s?"text-primary":"text-foreground"),children:e.label}),(0,t.jsx)("div",{className:eg+" mt-0.5",children:e.description})]},e.value)})})]}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:ex,children:"Category (tag)"}),(0,t.jsx)("select",{value:w,onChange:e=>C(e.target.value),className:"h-9 w-full rounded-md border bg-background px-2 text-sm",children:eb.map(e=>(0,t.jsx)("option",{value:e,children:e},e))}),(0,t.jsx)("p",{className:eg,children:"Used to group repositories in the dashboard. Pick whichever feels right."})]})]}),S&&(0,t.jsx)("p",{className:"rounded-md border border-red-200 bg-red-50/50 p-2 text-xs text-red-700 dark:border-red-900 dark:bg-red-950/30 dark:text-red-300",children:S}),(0,t.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t pt-4",children:[(0,t.jsx)(n.Button,{type:"button",variant:"ghost",onClick:e,children:"Cancel"}),(0,t.jsx)(n.Button,{type:"submit",disabled:a.isPending,children:a.isPending?"Adding…":"Add repository"})]})]})]})}var ek=e.i(75187);e.s(["default",0,function(){let e=(0,L.useRepositories)(),{data:d,isLoading:c}=(0,ek.useHealth)(),[u,m]=(0,s.useState)(!1),h=e.data?.repositories??[],p=h.length,x=h.filter(e=>e.githubOwner&&e.githubRepo).length,g=h.filter(e=>e.localPath).length,j=e.isLoading||c,y=!j&&(!e.data||!d);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.ConnectionsSectionHeader,{title:"Repositories",description:"Each repository links an optional GitHub remote with an optional local clone. Polling cadence, automation triggers, and daily git management live on the My Life › Git page.",healthy:+(p>0),total:1,actions:(0,t.jsxs)(n.Button,{onClick:()=>m(!0),children:[(0,t.jsx)(r.Plus,{className:"h-4 w-4"}),"Add repository"]})}),y&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Daemon not connected. Start the daemon to manage repositories."}),!j&&(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(W.IntegrationCard,{integrationKey:"git"}),(0,t.jsx)(W.IntegrationCard,{integrationKey:"github"}),0===h.length?(0,t.jsx)(l.EmptyState,{icon:a.GitBranch,title:"No repositories registered",description:"Add a repository to start watching commits, polling GitHub events, and wiring per-repo triggers.",children:(0,t.jsxs)(n.Button,{className:"mt-4",onClick:()=>m(!0),children:[(0,t.jsx)(r.Plus,{className:"h-4 w-4"}),"Add your first repository"]})}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.Card,{className:"flex items-center justify-between text-xs text-muted-foreground",children:(0,t.jsxs)("span",{children:[p," repositor",1===p?"y":"ies"," ·"," ",x," with GitHub · ",g," with local clone"]})}),(0,t.jsx)("div",{className:"space-y-3",children:h.map(e=>(0,t.jsx)(eo,{repo:e},e.id))})]}),(0,t.jsx)(w,{}),(0,t.jsx)(q,{}),(0,t.jsx)(E,{}),(0,t.jsx)(_.ProcessModelCard,{processKey:"git.project.init",title:"Git Project Init Model",description:"Generates the initial overview MD when daily git management is first enabled for a repository."}),(0,t.jsx)(_.ProcessModelCard,{processKey:"git.project.update",title:"Git Project Update Model",description:"Runs the daily 24h scan that appends to journal MDs and curates overview sections."}),(0,t.jsx)(_.ProcessModelCard,{processKey:"git.project.retemplate",title:"Git Project Re-template Model",description:"One-shot session that re-conforms existing project documents to the current template body."})]}),(0,t.jsx)(ev,{open:u,onClose:()=>m(!1)})]})}],23682)}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,11457,e=>{"use strict";var t=e.i(54710),s=e.i(34416),r=e.i(71060),a=e.i(75187),n=e.i(17532),i=e.i(14260),l=e.i(65268),d=e.i(42455),o=e.i(74490),c=e.i(81471),u=e.i(68894);function m({ok:e,pulse:s}){return(0,t.jsx)("span",{className:(0,c.cn)("inline-block h-2 w-2 rounded-full",e?"bg-emerald-500":"bg-red-500",e&&s&&"animate-pulse")})}function h({status:e}){return e&&e.configured?(0,t.jsx)(m,{ok:e.connected}):(0,t.jsx)("span",{className:"inline-block h-2 w-2 rounded-full bg-gray-300 dark:bg-gray-600"})}let x={google:"Google (Calendar / Gmail)",obsidian:"Obsidian",notion:"Notion"};function g({health:e}){let{connected:s}=(0,u.useSSE)(),r=[{label:"Database",ok:e?.dbConnected??!1},{label:"Context Files",ok:e?.contextFilesOk??!1},{label:"Live Updates",ok:s,pulse:!0}];return(0,t.jsxs)(o.Card,{children:[(0,t.jsx)(o.CardHeader,{children:(0,t.jsx)(o.CardTitle,{children:"System Health"})}),(0,t.jsxs)("div",{className:"space-y-3",children:[r.map(e=>(0,t.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:e.label}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(m,{ok:e.ok,pulse:e.pulse}),(0,t.jsx)("span",{className:e.ok?"text-emerald-600 dark:text-emerald-400":"text-red-600 dark:text-red-400",children:e.ok?"Connected":"Disconnected"})]})]},e.label)),(0,t.jsxs)("div",{className:"border-t border-border pt-3",children:[(0,t.jsx)("p",{className:"mb-2 text-xs font-medium uppercase tracking-wider text-muted-foreground",children:"Integrations"}),["google","obsidian","notion"].map(s=>{let r=e?.integrations?.[s];return(0,t.jsxs)("div",{className:"flex items-center justify-between text-sm py-0.5",children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:x[s]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(h,{status:r}),(0,t.jsx)("span",{className:r&&r.configured?r.connected?"text-emerald-600 dark:text-emerald-400":"text-red-600 dark:text-red-400":"text-gray-400 dark:text-gray-500",children:r&&r.configured?r.connected?"Connected":"Error":"Not Configured"})]})]},s)})]}),(0,t.jsxs)("div",{className:"border-t border-border pt-3",children:[(0,t.jsx)("p",{className:"mb-2 text-xs font-medium uppercase tracking-wider text-muted-foreground",children:"Runtime"}),(0,t.jsxs)("div",{className:"grid grid-cols-3 gap-2",children:[(0,t.jsxs)("div",{className:"text-center",children:[(0,t.jsx)("p",{className:"text-lg font-semibold text-foreground",children:e?.activeSessions??0}),(0,t.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"Active"})]}),(0,t.jsxs)("div",{className:"text-center",children:[(0,t.jsx)("p",{className:"text-lg font-semibold text-foreground",children:e?.todaySessions??0}),(0,t.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"Today"})]}),(0,t.jsxs)("div",{className:"text-center",children:[(0,t.jsx)("p",{className:"text-lg font-semibold text-foreground",children:e?.eventBusSize??0}),(0,t.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"Event Bus"})]})]})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:"Uptime"}),(0,t.jsx)("span",{className:"font-mono text-xs",children:e?(0,c.formatUptime)(e.uptime):"—"})]})]})]})}var f=e.i(45958),p=e.i(93512),j=e.i(48467),y=e.i(10628),v=e.i(36516),w=e.i(76176),b=e.i(31703),N=e.i(68741);function k(){let e=(0,b.useEventStream)(10),{data:s}=(0,N.useEvents)(),r=s?.pages[0]?.events.slice(0,10)??[],a=new Set,n=[];for(let t of[...e,...r])a.has(t.id)||(a.add(t.id),n.push(t));let i=n.sort((e,t)=>(0,c.parseUtcDate)(t.started_at).getTime()-(0,c.parseUtcDate)(e.started_at).getTime()).slice(0,10);return(0,t.jsxs)(o.Card,{children:[(0,t.jsxs)(o.CardHeader,{children:[(0,t.jsx)(o.CardTitle,{children:"Recent Events"}),(0,t.jsxs)(f.default,{href:"/activity",className:"flex items-center gap-1 text-xs text-primary hover:underline",children:["View all ",(0,t.jsx)(p.ArrowRight,{className:"h-3 w-3"})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[0===i.length&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"No events yet"}),i.map(e=>{let s=v.EVENT_TYPE_COLORS[e.action_type]??"gray",r=v.RESULT_COLORS[e.result]??"gray",a=e.model_used?(0,w.modelBadgeVariant)(e.model_used):void 0;return(0,t.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,t.jsxs)(y.Tooltip,{children:[(0,t.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{className:"w-24 shrink-0 font-mono tabular-nums text-muted-foreground",children:(0,c.formatShortDateTime)(e.started_at)})}),(0,t.jsxs)(y.TooltipContent,{children:[(0,c.formatAbsoluteTime)(e.started_at)," (",(0,c.formatRelativeTime)(e.started_at),")"]})]}),(0,t.jsx)(j.Badge,{variant:s,className:"shrink-0",children:e.action_type.split(".").pop()}),a&&"gray"!==a&&(0,t.jsx)(j.Badge,{variant:a,className:"shrink-0",children:(0,w.formatShortModelName)(e.model_used)}),(0,t.jsx)("span",{className:"ml-auto font-mono text-muted-foreground",children:(0,c.formatCurrency)(e.cost_usd)}),(0,t.jsx)(j.Badge,{variant:r,className:"shrink-0",children:e.result})]},e.id)})]})]})}var C=e.i(19660),S=e.i(71816),T=e.i(49214),_=e.i(30902);function D(){let{data:e}=(0,i.useQuery)({queryKey:["calendar"],queryFn:()=>l.api.get("/calendar/events",{date:"today",days:1}),refetchInterval:3e5}),{data:s}=(0,a.useHealth)(),{regenerate:r,target:n,status:d,error:u,dismiss:m}=(0,S.useRegenerate)(),h=e?.events??[];return s?.integrationModes?.google_calendar?.mode==="delegated"?(0,t.jsxs)(o.Card,{children:[(0,t.jsx)(o.CardHeader,{children:(0,t.jsx)(o.CardTitle,{children:"Today's Calendar"})}),(0,t.jsxs)("div",{className:"flex items-start gap-2 text-sm text-muted-foreground",children:[(0,t.jsx)(C.Bot,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,t.jsx)("p",{children:"Calendar is delegated to the agent's backend connector — ask the agent directly for today's schedule. The daemon doesn't poll events while in delegated mode."})]})]}):(0,t.jsxs)(o.Card,{children:[(0,t.jsx)(o.CardHeader,{children:(0,t.jsxs)("div",{className:"flex items-center justify-between w-full",children:[(0,t.jsx)(o.CardTitle,{children:"Today's Calendar"}),(0,t.jsx)(T.RegenerateButton,{target:"today",label:"Refresh",currentTarget:n,status:d,error:u,onRegenerate:r,onDismiss:m,variant:"ghost",className:"h-7 px-2 text-xs text-muted-foreground"})]})}),(0,t.jsxs)("div",{className:"space-y-2",children:[0===h.length&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"No events today"}),h.map(e=>(0,t.jsxs)("div",{className:"flex items-start gap-3 text-sm",children:[(0,t.jsx)("span",{className:"shrink-0 font-mono text-xs text-muted-foreground",children:e.allDay?"All day":`${(0,_.format)((0,c.parseUtcDate)(e.start),"HH:mm")}–${(0,_.format)((0,c.parseUtcDate)(e.end),"HH:mm")}`}),(0,t.jsx)("span",{className:"text-foreground",children:e.summary})]},e.id))]})]})}var R=e.i(51226),A=e.i(34855),M=e.i(21420);function B(){let{data:e}=(0,R.useCost)("daily"),{data:s}=(0,A.useMetrics)(),r=s?.cost.last7dUsd??0,a=e?.byPeriod.slice(-7).map(e=>e.total_cost)??[];return(0,t.jsxs)(o.Card,{children:[(0,t.jsxs)(o.CardHeader,{children:[(0,t.jsx)(o.CardTitle,{children:"Cost Summary"}),(0,t.jsxs)(f.default,{href:"/analytics",className:"flex items-center gap-1 text-xs text-primary hover:underline",children:["Details ",(0,t.jsx)(p.ArrowRight,{className:"h-3 w-3"})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Last 7 days"}),(0,t.jsx)("span",{className:"text-lg font-semibold text-foreground",children:(0,c.formatCurrency)(r)})]}),a.length>=2&&(0,t.jsx)(M.Sparkline,{values:a,color:"var(--color-primary)",width:200,height:32})]})]})}var H=e.i(15553),O=e.i(92134);function z(){let{data:e}=(0,O.useBooksSummary)(3),{data:s}=(0,O.useBooks)({status:"reading",limit:3}),r=e?.byStatus??[];if(0===r.reduce((e,t)=>e+t.count,0))return null;let a=r.find(e=>"reading"===e.status)?.count??0,n=e?.monthlyCompleted?.[0]?.count??0,i=s?.books??[];return(0,t.jsxs)(o.Card,{children:[(0,t.jsx)(o.CardHeader,{children:(0,t.jsxs)("div",{className:"flex items-center justify-between w-full",children:[(0,t.jsx)(o.CardTitle,{children:(0,t.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,t.jsx)(H.BookOpen,{className:"h-4 w-4 text-blue-500"}),"Reading"]})}),(0,t.jsx)(f.default,{href:"/reading",className:"text-xs text-muted-foreground hover:text-foreground",children:"View all →"})]})}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-4 text-sm",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"font-medium text-foreground",children:a}),(0,t.jsx)("span",{className:"text-muted-foreground",children:" in progress"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"font-medium text-foreground",children:n}),(0,t.jsx)("span",{className:"text-muted-foreground",children:" completed this month"})]})]}),i.length>0?(0,t.jsx)("ul",{className:"space-y-1 text-sm",children:i.map(e=>(0,t.jsxs)("li",{className:"flex items-baseline justify-between gap-2",children:[(0,t.jsx)("span",{className:"truncate text-foreground",children:e.title}),(0,t.jsxs)("span",{className:"shrink-0 text-xs text-muted-foreground",children:[e.highlightCount," hl"]})]},e.id))}):(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"No active reads."})]})]})}var E=e.i(77910),L=e.i(90826),U=e.i(20014),P=e.i(81187),F=e.i(99758),I=e.i(36451);function q(){let{data:e}=(0,E.useApprovals)(),s=(0,E.useApproveAction)(),r=(0,E.useDenyAction)(),a=(0,L.useConfirm)(),n=e?.approvals??[];if(0===n.length)return null;let i=async(e,t)=>{await a({title:"Deny this approval?",description:`"${t}" will be permanently denied.`,confirmLabel:"Deny",variant:"destructive"})&&r.mutate(e)};return(0,t.jsxs)(o.Card,{tone:"warning",children:[(0,t.jsx)(o.CardHeader,{className:"mb-2",children:(0,t.jsxs)(o.CardTitle,{className:"flex items-center gap-2 text-sm",children:[(0,t.jsx)(P.AlertTriangle,{className:"h-4 w-4 text-amber-600 dark:text-amber-400"}),n.length," pending approval",1!==n.length?"s":""]})}),(0,t.jsx)("div",{className:"space-y-3",children:n.map(e=>(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"truncate text-sm text-foreground",children:e.task_description}),(0,t.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,t.jsx)(j.Badge,{variant:"blue",className:"text-[10px]",children:e.task_type}),(0,t.jsxs)(y.Tooltip,{children:[(0,t.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{className:"font-mono tabular-nums",children:(0,c.formatShortDateTime)(e.created_at)})}),(0,t.jsxs)(y.TooltipContent,{children:[(0,c.formatAbsoluteTime)(e.created_at)," (",(0,c.formatRelativeTime)(e.created_at),")"]})]})]})]}),(0,t.jsxs)("div",{className:"flex shrink-0 gap-1.5",children:[(0,t.jsxs)(U.Button,{size:"sm",className:"h-7 bg-emerald-600 px-2.5 hover:bg-emerald-700",onClick:()=>s.mutate(e.id),disabled:s.isPending,children:[(0,t.jsx)(F.Check,{className:"mr-1 h-3 w-3"}),"Approve"]}),(0,t.jsx)(U.Button,{size:"sm",variant:"outline",className:"h-7 border-red-300 px-2.5 text-red-600 hover:bg-red-50 dark:border-red-700 dark:text-red-400 dark:hover:bg-red-950",onClick:()=>i(e.id,e.task_description),disabled:r.isPending,children:(0,t.jsx)(I.X,{className:"h-3 w-3"})})]})]},e.id))})]})}var $=e.i(16047),G=e.i(77379);let K=(0,G.default)("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var V=e.i(79634);let W="pa.alerts.snoozed.",Q="pa.alerts.dismissed.",Y={error:0,warning:1,info:2};function X(e){return`${e.id}:${e.fingerprint}`}function J(e){return`${W}${X(e)}`}function Z(e){return`${Q}${X(e)}`}let ee=new Set,et=new Map,es=new Set;function er(e){es.add(e);let t=t=>{(null===t.key||t.key.startsWith(W)||t.key.startsWith(Q))&&e()};return window.addEventListener("storage",t),()=>{es.delete(e),window.removeEventListener("storage",t)}}function ea(){return 0}let en=0;function ei(){return en}function el(e){if(!e.dismissable)return;let t=X(e);"info"===e.severity?ee.add(t):"warning"===e.severity&&et.set(t,Date.now()+864e5);try{"info"===e.severity?window.localStorage.setItem(Z(e),"1"):"warning"===e.severity&&window.localStorage.setItem(J(e),String(et.get(t)))}catch{}for(let e of(en+=1,es))e()}let ed=new Set,eo=0,ec=null;function eu(e){return 0===ed.size&&(eo=Date.now(),ec=setInterval(()=>{for(let e of(eo=Date.now(),ed))e()},5e3)),ed.add(e),()=>{ed.delete(e),0===ed.size&&null!==ec&&(clearInterval(ec),ec=null)}}function em(){return eo}function eh(){return 0}let ex={error:"error",warning:"warning",info:"info"};function eg(e,t){if(e===t)return!0;if(!e.startsWith(t))return!1;let s=e.charAt(t.length);return"/"===s||"?"===s||"#"===s}function ef({alert:e,onDismiss:s}){var r;return(0,t.jsx)(V.Alert,{variant:ex[e.severity],children:(0,t.jsxs)("div",{className:"flex w-full items-start gap-2",children:[(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("p",{className:"font-medium leading-snug",children:e.title}),e.description&&(0,t.jsx)("p",{className:"mt-0.5 text-[11px] leading-snug opacity-80",children:e.description}),e.href&&(0,t.jsx)("p",{className:"mt-1",children:(0,t.jsx)(f.default,{href:e.href,className:"text-[11px] font-medium underline underline-offset-2 hover:no-underline",children:eg(r=e.href,"/connections")?"Open connection settings":eg(r,"/settings")?"Open settings":eg(r,"/setup")?"Open setup wizard":"View details"})})]}),e.dismissable&&s&&(0,t.jsx)(U.Button,{variant:"ghost",size:"sm",onClick:()=>s(e),"aria-label":"warning"===e.severity?"Snooze for 24 hours":"Dismiss notification",title:"warning"===e.severity?"Snooze for 24 hours":"Dismiss",children:(0,t.jsx)(I.X,{className:"h-3.5 w-3.5"})})]})})}function ep(){let{alerts:e}=function(){let{data:e,isError:t}=(0,a.useHealth)();(0,s.useSyncExternalStore)(er,ei,ea);let r=(0,s.useSyncExternalStore)(eu,em,eh);return(0,s.useMemo)(()=>{let s=[],a=r?new Date(r).toISOString():"",n=!t,i=!1;if(n){if(e){let t=e.lastTickAt;if(r>0&&"number"==typeof t&&r-t>9e4){i=!0;let e=Math.round((r-t)/1e3);s.push({id:"system.daemon_frozen",severity:"error",title:"Daemon appears frozen",description:`No heartbeat for ${e}s. The event loop may be blocked. Restart the daemon if this persists.`,href:"/health",source:"system",dismissable:!1,detectedAt:a,fingerprint:`stale:${30*Math.floor(e/30)}s`})}e.alerts&&s.push(...e.alerts)}}else s.push({id:"system.daemon_offline",severity:"error",title:"Daemon is offline",description:"The dashboard cannot reach the daemon. Check that the daemon process is running and listening on the expected port.",href:"/health",source:"system",dismissable:!1,detectedAt:a,fingerprint:"offline"});return{alerts:s.filter(e=>!function(e){let t=X(e);if("info"===e.severity&&ee.has(t))return!0;if("warning"===e.severity){let e=et.get(t);if(void 0!==e){if(Date.now()<e)return!0;et.delete(t)}}try{if("info"===e.severity)return"1"===window.localStorage.getItem(Z(e));if("warning"===e.severity){let t=window.localStorage.getItem(J(e));if(!t)return!1;let s=Number(t);if(Number.isNaN(s))return!1;return Date.now()<s}return!1}catch{return!1}}(e)).sort((e,t)=>{let s=Y[e.severity]-Y[t.severity];return 0!==s?s:t.detectedAt.localeCompare(e.detectedAt)}),daemonOnline:n,daemonFrozen:i}},[e,t,r])}();return(0,t.jsx)(ej,{alerts:e,onDismiss:el})}function ej({alerts:e,onDismiss:r}){let[a,n]=(0,s.useState)(!1);if(0===e.length)return null;let i=e.filter(e=>"error"===e.severity),l=e.filter(e=>"error"!==e.severity),d=a?l:l.slice(0,Math.max(0,5-i.length)),o=l.length-d.length;return(0,t.jsxs)("section",{"aria-label":"Notifications",className:"space-y-2",children:[i.map(e=>(0,t.jsx)(ef,{alert:e},e.id)),d.map(e=>(0,t.jsx)(ef,{alert:e,onDismiss:r},e.id)),o>0&&(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsx)(U.Button,{variant:"ghost",size:"sm",onClick:()=>n(e=>!e),className:"text-xs text-muted-foreground",children:a?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(K,{className:"mr-1 h-3.5 w-3.5"}),"Show fewer"]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)($.ChevronDown,{className:"mr-1 h-3.5 w-3.5"}),"Show ",o," more"]})})})]})}var ey=e.i(89883);function ev(){let{data:e}=(0,a.useHealth)(),s=e?.integrationModes?.gmail;return s?.mode!=="delegated"||"draft-only"!==s.subTier?null:(0,t.jsxs)(o.Card,{children:[(0,t.jsx)(o.CardHeader,{children:(0,t.jsx)(o.CardTitle,{children:"Drafts awaiting send"})}),(0,t.jsxs)("div",{className:"flex items-start gap-2 text-sm text-muted-foreground",children:[(0,t.jsx)(ey.Mail,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,t.jsxs)("p",{children:["Gmail is delegated in Draft-Only mode — the agent creates drafts and DMs you the link; you finalize sends in Gmail. Open"," ",(0,t.jsx)(f.default,{href:"https://mail.google.com/mail/u/0/#drafts",target:"_blank",rel:"noopener noreferrer",className:"underline underline-offset-2",children:"your drafts folder"})," ","to review."]})]})]})}var ew=e.i(75314),eb=e.i(59481),eN=e.i(73405),ek=e.i(82782),eC=e.i(3360),eS=e.i(26181);let eT=[{label:"Knowledge",href:"/knowledge",icon:ew.Brain,description:"All MD — projects, today, weekly, user notes.",status:{kind:"ready"}},{label:"Reading",href:"/reading",icon:H.BookOpen,description:"Books, highlights, and reading progress.",status:{kind:"ready"}},{label:"Git",href:"/git",icon:eb.GitBranch,description:"Repos and event-driven Triggers.",status:{kind:"soon",label:"Preview"}},{label:"Trip",href:"/trip",icon:eN.Plane,description:"Trips, itineraries, and post-trip notes.",status:{kind:"soon",label:"Soon"},hidden:!0},{label:"Finance",href:"/finance",icon:ek.Wallet,description:"Receipts, budgets, and trends.",status:{kind:"soon",label:"Soon"},hidden:!0},{label:"Health",href:"/health",icon:eC.Heart,description:"Activity, sleep, habits, and journaling.",status:{kind:"skeleton",label:"Skeleton"},hidden:!0}];function e_(){return(0,t.jsxs)("section",{className:"space-y-3",children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between",children:[(0,t.jsx)("h2",{className:"text-sm font-medium text-foreground",children:"Your Life"}),(0,t.jsx)("span",{className:"text-[11px] text-muted-foreground",children:"Domain lenses over Knowledge"})]}),(0,t.jsx)("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-4",children:eT.filter(e=>!e.hidden).map(e=>(0,t.jsx)(eD,{lens:e},e.href))})]})}function eD({lens:e}){let s=e.icon,r="ready"!==e.status.kind;return(0,t.jsxs)(f.default,{href:e.href,className:(0,c.cn)("group relative flex flex-col rounded-xl border bg-card p-4 shadow-[0_1px_3px_rgb(0_0_0/0.04)] transition-all duration-150","hover:shadow-[0_4px_8px_rgb(0_0_0/0.06)] hover:-translate-y-0.5 hover:border-border/80",r&&"border-dashed"),children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)(s,{className:"h-4 w-4 text-muted-foreground"}),(0,t.jsx)(eS.ArrowUpRight,{className:"h-3.5 w-3.5 text-muted-foreground/40 transition-colors group-hover:text-muted-foreground"})]}),(0,t.jsxs)("div",{className:"mt-3 flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-foreground",children:e.label}),"ready"!==e.status.kind&&(0,t.jsx)("span",{className:"rounded-full bg-muted px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wide text-muted-foreground",children:e.status.label})]}),(0,t.jsx)("p",{className:"mt-1 text-[11px] leading-relaxed text-muted-foreground",children:e.description})]})}let eR=(0,G.default)("Lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);var eA=e.i(59134);let eM=[{id:"self-learning",badge:"Preview",title:"Self-learning mode tunes its own skills",description:"Let the agent analyze how you actually work and curate small overlays on top of its built-in skills — so the daily-surface (today, schedule, user-profile) gets sharper over time without you editing prompts.",href:"/settings/self-learning",cta:"Enable self-learning"},{id:"voice",title:"Voice messages, transcribed on-device",description:"Send a Telegram voice note or WhatsApp PTT and the daemon transcribes it locally with Whisper before the agent reads it. Audio never leaves your machine.",href:"/settings/advanced",cta:"Turn on Voice mode"},{id:"harness",title:"Reuses your CLI agent harness as-is",description:"The brain runs as Claude Code, Codex, or Gemini CLI — the same hooks, skills, MCP servers, and permission model you already use in the terminal apply here.",href:"/settings/models",cta:"Choose a backend"},{id:"process-routing",title:"Different models for different jobs",description:"Route deep work like morning routines and DMs to Sonnet or Opus, and light triage like mail classification to Haiku — per ProcessKey, swappable any time.",href:"/settings/processes",cta:"Tune process routing"},{id:"md-memory",title:"Memory is plain Markdown you can read",description:"Every durable thing the agent learns lives in ~/.personal-agent/context/*.md. Open it in your editor, grep it, version it — there is no hidden vector store.",href:"/knowledge",cta:"Browse Knowledge"},{id:"messaging",title:"DM the agent on your favorite app",description:"Pair Slack, Telegram, Discord, or WhatsApp with a single magic phrase and chat with the agent from there. Single-owner only by design — no group chats.",href:"/settings/messaging",cta:"Set up messaging"},{id:"observations",title:"Hourly observations, not reactive polling",description:"Obsidian, Git, Notion, and Calendar changes flow into an observations queue. Once an hour the agent consolidates what changed and decides whether to act.",href:"/activity",cta:"See recent activity"},{id:"routines",title:"Morning, evening, and weekly routines",description:"Cron-driven routines reflect on your day, week, and month automatically — quiet hours respected, day boundary at 04:00 local. Fully customizable.",href:"/settings/routines",cta:"Customize routines"},{id:"mail",title:"Multi-provider mail with offline FTS5 search",description:"Gmail, Outlook, Yahoo, iCloud, and any IMAP account stream into a single local index. Search instantly, even when you're offline.",href:"/connections/mail",cta:"Connect a mailbox"},{id:"schedule",title:"It schedules itself",description:"Say 'remind me Friday at 4pm' or 'every Monday morning summarize my open PRs' — the agent owns its own schedule rows and wakes itself when the time comes.",href:"/schedule",cta:"View schedule"},{id:"lifestyle",title:"Reading, receipts, trips — all in one chat",description:"Beyond engineering work, the agent tracks books you're reading, receipts you photograph, and trip itineraries you forward to it. Same chat surface, different lenses.",href:"/reading",cta:"Open Reading"},{id:"approvals",title:"Notify and Approve safety tiers",description:"Reads are autonomous; writes are classified Notify (proceed after pinging you) or Approve (require explicit confirmation). Even Allow mode keeps the absolute-block layer.",href:"/settings/advanced",cta:"Review safety settings"}];function eB({tips:e=eM}={}){let[r,a]=(0,s.useState)(-1);if((0,s.useEffect)(()=>{0!==e.length&&a(Math.floor(Math.random()*e.length))},[e.length]),0===e.length)return null;let n=r>=0?e[r]:null;return(0,t.jsx)(eH,{tip:n,onCycle:()=>a(t=>(function(e,t){if(e<=0)return -1;if(1===e)return 0;if(t<0||t>=e)return Math.floor(Math.random()*e);let s=Math.floor(Math.random()*(e-1));return s<t?s:s+1})(e.length,t))})}function eH({tip:e,onCycle:s}){return(0,t.jsx)(o.Card,{className:"border-amber-200/70 bg-amber-50/40 dark:border-amber-900/60 dark:bg-amber-950/20",children:(0,t.jsxs)("div",{className:"flex items-start gap-3",children:[(0,t.jsx)("div",{className:"mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-amber-100 text-amber-700 dark:bg-amber-900/50 dark:text-amber-300",children:(0,t.jsx)(eR,{className:"h-4 w-4","aria-hidden":"true"})}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-[11px] font-medium uppercase tracking-wider text-amber-700 dark:text-amber-400",children:"Did you know?"}),e?.badge&&(0,t.jsx)("span",{className:"rounded-full bg-amber-200/70 px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wide text-amber-900 dark:bg-amber-900/60 dark:text-amber-200",children:e.badge})]}),(0,t.jsx)("div",{"aria-live":"polite","aria-atomic":"true",children:e?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"mt-1 text-sm font-medium text-foreground",children:e.title}),(0,t.jsx)("p",{className:"mt-1 text-[12px] leading-relaxed text-muted-foreground",children:e.description})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"mt-1 h-4 w-2/3 animate-pulse rounded bg-muted","aria-hidden":"true"}),(0,t.jsx)("p",{className:"mt-2 h-3 w-full animate-pulse rounded bg-muted","aria-hidden":"true"}),(0,t.jsx)("p",{className:"mt-1.5 h-3 w-5/6 animate-pulse rounded bg-muted","aria-hidden":"true"})]})}),e&&(0,t.jsxs)("div",{className:"mt-2.5 flex flex-wrap items-center gap-2",children:[e.href&&(0,t.jsx)(U.Button,{asChild:!0,size:"sm",variant:"outline",className:"h-7 px-2.5 text-xs",children:(0,t.jsxs)(f.default,{href:e.href,children:[e.cta??"Learn more",(0,t.jsx)(p.ArrowRight,{className:"ml-1 h-3 w-3","aria-hidden":"true"})]})}),s&&(0,t.jsxs)(U.Button,{size:"sm",variant:"ghost",className:"h-7 px-2 text-xs text-muted-foreground",onClick:s,"aria-label":"Show another tip",children:[(0,t.jsx)(eA.RefreshCw,{className:"mr-1 h-3 w-3","aria-hidden":"true"}),"Next tip"]})]})]})]})})}var eO=e.i(49785),ez=e.i(39982),eE=e.i(95486);e.s(["default",0,function(){let e=(0,r.useRouter)(),{data:u,isLoading:m}=(0,a.useHealth)(),{data:h}=(0,n.useSetupStatus)(),{data:x}=(0,i.useQuery)({queryKey:["next-check"],queryFn:()=>l.api.get("/dashboard/next-check"),refetchInterval:3e4}),{data:f}=(0,d.useScheduleNext)(),p=(0,eE.useQueryClient)(),[j,y]=(0,s.useState)("idle"),[v,w]=(0,s.useState)(null),b=(0,s.useRef)(0),N=(0,s.useRef)(null);(0,s.useEffect)(()=>{h?.needsSetup&&e.push("/setup")},[h?.needsSetup,e]);let C=(0,s.useMemo)(()=>x?.nextRunAt?(0,c.parseUtcDate)(x.nextRunAt).toLocaleString():"Disabled",[x?.nextRunAt]),S=(0,L.useConfirm)(),T=(0,s.useCallback)(()=>{b.current+=1,null!==N.current&&(window.clearTimeout(N.current),N.current=null)},[]);(0,s.useEffect)(()=>T,[T]);let _=(0,s.useCallback)(async()=>{await p.refetchQueries({queryKey:["next-check"],type:"active"})},[p]),R=(0,s.useCallback)(async(e,t)=>{await _();try{let s=await l.api.get("/events",{type:"routine.hourly_check",days:"1",page:1,limit:1});if(t!==b.current||function(e,t){let s=e[0];if(!s)return!1;let r=s.completed_at??s.started_at;return(0,c.parseUtcDate)(r).getTime()>=t}(s.events,e))return}catch{}t!==b.current||Date.now()-e>=6e4||(N.current=window.setTimeout(()=>{R(e,t)},1500))},[_]),A=async()=>{if(!await S({title:"Trigger hourly check now?",description:"This will run the reviewable observation queue immediately instead of waiting for the next scheduled check.",confirmLabel:"Run now"}))return;T(),y("running");let e=3e3;try{let e=Date.now(),t=await l.api.post("/agent/run-now",{reason:"dashboard"});if(w(function(e){if("queued"===e.status)return{tone:"success",message:"Queued successfully."};switch(e.reason){case"morning_routine_active":return{tone:"warning",message:"Skipped: morning routine is still running."};case"hourly_check_in_progress":return{tone:"warning",message:"Skipped: a previous hourly check is still running."};case"below_threshold":return{tone:"warning",message:"Skipped: there were no reviewable pending observations."};default:return{tone:"warning",message:"Skipped: hourly check was not queued."}}}(t)),await _(),"queued"===t.status){b.current+=1;let t=b.current;R(e,t)}}catch{w({tone:"error",message:"Failed to queue."}),e=1e4}finally{y("idle"),setTimeout(()=>w(null),e)}};return(0,t.jsxs)("div",{className:"space-y-6 p-6",children:[(0,t.jsx)(ez.PageHeader,{title:"Overview",description:(0,t.jsxs)(t.Fragment,{children:["Live snapshot of your agent. The cards below show when the next automatic hourly check will run and today’s spend. Everything auto-refreshes. Use ",(0,t.jsx)("em",{children:"Run now"}),"to trigger the hourly check immediately when you’re impatient."]})}),(0,t.jsx)(ep,{}),m?(0,t.jsx)(eO.CardSkeleton,{count:3}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[(0,t.jsxs)(o.Card,{children:[(0,t.jsx)(o.CardHeader,{children:(0,t.jsx)(o.CardStatLabel,{children:"Next Check"})}),(0,t.jsx)("p",{className:"text-sm font-medium text-foreground",children:C}),(0,t.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:x?.active?"Active window":"Outside active window"}),f?.next&&(0,t.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:["Scheduled: ",(0,c.formatAbsoluteTime)(f.next.scheduled_for)]}),(0,t.jsx)(U.Button,{size:"sm",variant:"outline",className:"mt-3 w-full",onClick:A,disabled:"running"===j,children:"running"===j?"Running...":"Run hourly check now"}),v?.tone==="success"&&(0,t.jsx)("p",{className:"mt-1 text-xs text-emerald-600 dark:text-emerald-400",children:v.message}),v?.tone==="warning"&&(0,t.jsx)("p",{className:"mt-1 text-xs text-amber-600 dark:text-amber-400",children:v.message}),v?.tone==="error"&&(0,t.jsx)("p",{className:"mt-1 text-xs text-red-600 dark:text-red-400",children:v.message})]}),(0,t.jsxs)(o.Card,{children:[(0,t.jsx)(o.CardHeader,{children:(0,t.jsx)(o.CardStatLabel,{children:"Today's Cost"})}),(0,t.jsx)(o.CardValue,{children:u?(0,c.formatCurrency)(u.todayCostUsd):"—"}),(0,t.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:[u?.todaySessions??0," session",(u?.todaySessions??0)!==1?"s":""]})]})]}),(0,t.jsx)(eB,{}),(0,t.jsx)(e_,{}),(0,t.jsxs)("div",{className:"grid gap-6 lg:grid-cols-3",children:[(0,t.jsxs)("div",{className:"space-y-6 lg:col-span-2",children:[(0,t.jsx)(q,{}),(0,t.jsx)(k,{})]}),(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsx)(g,{health:u}),(0,t.jsx)(D,{}),(0,t.jsx)(ev,{}),(0,t.jsx)(z,{}),(0,t.jsx)(B,{})]})]})]})]})}],11457)}]);
|