@aitne/dashboard 0.1.10 → 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 +6 -9
- package/.next/build-manifest.json +3 -3
- package/.next/diagnostics/route-bundle-stats.json +592 -614
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +54 -126
- package/.next/routes-manifest.json +27 -45
- 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 +27 -25
- package/.next/server/app/activity.segments/_full.segment.rsc +27 -25
- 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 +25 -23
- package/.next/server/app/analytics.segments/_full.segment.rsc +25 -23
- 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/{advanced → 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/{advanced.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/{routines → hours}/page.js +6 -6
- package/.next/server/app/settings/{journal → 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/{schedule → infrastructure}/page.js +6 -6
- package/.next/server/app/settings/{backends → 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/{connections.meta → infrastructure.meta} +3 -3
- 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/next-font-manifest.json +4 -2
- package/.next/server/app/settings/lessons/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/lessons/page.js.nft.json +1 -1
- package/.next/server/app/settings/lessons/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/lessons.html +1 -1
- package/.next/server/app/settings/lessons.rsc +19 -18
- package/.next/server/app/settings/lessons.segments/_full.segment.rsc +19 -18
- package/.next/server/app/settings/lessons.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/lessons.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/lessons.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings/lessons.segments/settings/lessons/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/lessons.segments/settings/lessons.segment.rsc +3 -3
- package/.next/server/app/settings/lessons.segments/settings.segment.rsc +4 -4
- 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/{journal → 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/{backends.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 +6 -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_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_0rzk_wb.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_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]__0hxae6t._.js → [root-of-the-server]__0dz8grn._.js} +2 -2
- 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]__0ku1mlh._.js → [root-of-the-server]__0x90fri._.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 +1 -1
- 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/{i_QR0WWkZFeICcOMbfuUs → 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/{02k085x_j4_bz.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 +7 -10
- package/.next/types/validator.ts +33 -60
- 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.js.nft.json +0 -1
- 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/build-manifest.json +0 -18
- 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/server-reference-manifest.json +0 -4
- 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_0~yic40.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]__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]__03yuq_v._.js +0 -7
- package/.next/server/chunks/ssr/[root-of-the-server]__0kcivrd._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0kvyeu1._.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/_00_--i0._.js +0 -3
- package/.next/server/chunks/ssr/_00ej8j9._.js +0 -3
- package/.next/server/chunks/ssr/_03bq.de._.js +0 -3
- package/.next/server/chunks/ssr/_04jkn8c._.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/_09-o1vq._.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/_0bzj8lx._.js +0 -3
- package/.next/server/chunks/ssr/_0cccma-._.js +0 -3
- package/.next/server/chunks/ssr/_0da0k2u._.js +0 -3
- package/.next/server/chunks/ssr/_0evcd7w._.js +0 -3
- package/.next/server/chunks/ssr/_0e~4oah._.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/_0jg6hy0._.js +0 -3
- package/.next/server/chunks/ssr/_0jrxrig._.js +0 -3
- package/.next/server/chunks/ssr/_0mbbas-._.js +0 -3
- package/.next/server/chunks/ssr/_0n5nlcq._.js +0 -3
- package/.next/server/chunks/ssr/_0nvpv18._.js +0 -3
- package/.next/server/chunks/ssr/_0o~hk.m._.js +0 -3
- package/.next/server/chunks/ssr/_0pdbiu.._.js +0 -9
- package/.next/server/chunks/ssr/_0pg6_56._.js +0 -3
- package/.next/server/chunks/ssr/_0q8o~q1._.js +0 -3
- package/.next/server/chunks/ssr/_0r1lb0f._.js +0 -3
- package/.next/server/chunks/ssr/_0r25vcp._.js +0 -3
- package/.next/server/chunks/ssr/_0r9.4nv._.js +0 -3
- package/.next/server/chunks/ssr/_0tf7hjz._.js +0 -3
- package/.next/server/chunks/ssr/_0xmdrbq._.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/_0~fi8o-._.js +0 -3
- package/.next/server/chunks/ssr/_10s6iy.._.js +0 -3
- package/.next/server/chunks/ssr/_11pdc0s._.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_0z~3g5n._.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-dw-4a8vg9m8.js +0 -1
- package/.next/static/chunks/0.42rv-zt_0x9.js +0 -1
- package/.next/static/chunks/0.za~0o8~5n1~.css +0 -1
- package/.next/static/chunks/0.~7m9beb0bmp.js +0 -11
- package/.next/static/chunks/00bnu7r6428v0.js +0 -5
- package/.next/static/chunks/00w3emoohg-8r.js +0 -1
- 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/05xugzf8sfrxt.js +0 -1
- package/.next/static/chunks/05z4egti~pj9t.js +0 -1
- package/.next/static/chunks/073hnld9_qq5g.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/0e3ds9mkx7.~v.js +0 -1
- package/.next/static/chunks/0eaf903zc7v~5.js +0 -1
- package/.next/static/chunks/0fri59ogcsfbl.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/0j15hn~z~i56..js +0 -1
- package/.next/static/chunks/0jffu_yb.90.i.js +0 -1
- package/.next/static/chunks/0mfem_s.3s4r-.js +0 -1
- package/.next/static/chunks/0n3b0fpsgml2x.js +0 -1
- 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/0t.xvj-t_vtrp.js +0 -25
- 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/0vivqt8njmkpv.js +0 -1
- package/.next/static/chunks/0vktbjh2e4xpg.js +0 -1
- package/.next/static/chunks/0v~gg~hn-8_k2.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/0zaa6zhrjsaik.js +0 -1
- package/.next/static/chunks/0zimhqr6r4xlz.js +0 -1
- package/.next/static/chunks/0~7d6m~du_b.d.js +0 -1
- package/.next/static/chunks/0~nct--xt2~bi.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/16s5r16k361sd.js +0 -1
- package/.next/static/chunks/16tqshshex~qk.js +0 -1
- package/.next/static/chunks/17846-azlpszq.js +0 -1
- package/.next/static/chunks/17b2~cmid8qeu.js +0 -3
- package/.next/static/chunks/17rcecfesskxn.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 → safety}/page/build-manifest.json +0 -0
- /package/.next/server/app/settings/{messaging → safety}/page/server-reference-manifest.json +0 -0
- /package/.next/static/{i_QR0WWkZFeICcOMbfuUs → 4Wu33OvzutxPxXUu1PWPC}/_buildManifest.js +0 -0
- /package/.next/static/{i_QR0WWkZFeICcOMbfuUs → 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,74490,e=>{"use strict";var t=e.i(54710),r=e.i(81471);let n=(0,e.i(94237).cva)("rounded-xl border p-5 shadow-[0_1px_3px_rgb(0_0_0/0.04)]",{variants:{tone:{default:"border-border bg-card",warning:"border-amber-200 bg-amber-50/50 dark:border-amber-900 dark:bg-amber-950/30",success:"border-emerald-200 bg-emerald-50/50 dark:border-emerald-900 dark:bg-emerald-950/30",error:"border-red-200 bg-red-50/50 dark:border-red-900 dark:bg-red-950/30"},interactive:{true:"transition-shadow duration-150 hover:shadow-[0_4px_6px_rgb(0_0_0/0.06)]",false:""}},defaultVariants:{tone:"default",interactive:!1}});e.s(["Card",0,function({className:e,tone:a,interactive:l,...s}){return(0,t.jsx)("div",{className:(0,r.cn)(n({tone:a,interactive:l}),e),...s})},"CardHeader",0,function({className:e,...n}){return(0,t.jsx)("div",{className:(0,r.cn)("mb-3 flex items-center justify-between",e),...n})},"CardStatLabel",0,function({className:e,...n}){return(0,t.jsx)("h3",{className:(0,r.cn)("text-sm font-medium text-muted-foreground",e),...n})},"CardTitle",0,function({className:e,...n}){return(0,t.jsx)("h3",{className:(0,r.cn)("text-lg font-semibold text-foreground",e),...n})},"CardValue",0,function({className:e,...n}){return(0,t.jsx)("div",{className:(0,r.cn)("text-3xl font-bold text-foreground",e),...n})}])},39982,e=>{"use strict";var t=e.i(54710),r=e.i(81471);e.s(["PageHeader",0,function({title:e,description:n,icon:a,badge:l,actions:s,children:o,className:i}){return(0,t.jsxs)("header",{className:(0,r.cn)("flex flex-col gap-1",i),children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between gap-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[a&&(0,t.jsx)(a,{className:"h-5 w-5 text-muted-foreground"}),(0,t.jsx)("h1",{className:"text-2xl font-semibold text-foreground",children:e}),l]}),s&&(0,t.jsx)("div",{className:"flex items-center gap-2",children:s})]}),n&&(0,t.jsx)("p",{className:"max-w-3xl text-sm text-muted-foreground",children:n}),o]})}])},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)},90925,e=>{"use strict";let t=(0,e.i(77379).default)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);e.s(["Trash2",0,t],90925)},21682,e=>{"use strict";let t=(0,e.i(77379).default)("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);e.s(["Pencil",0,t],21682)},55575,e=>{"use strict";let t=(0,e.i(77379).default)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);e.s(["FolderOpen",0,t],55575)},66127,e=>{"use strict";var t=e.i(65268);async function r({title:e,defaultPath:n}){let a=await t.api.post("/system/pick-directory",{title:e,...n?{defaultPath:n}:{}});if("selected"===a.status&&a.path)return a.path;if("cancelled"===a.status)return null;throw Error(a.message??"Folder picker is unavailable.")}e.s(["pickDirectoryFromDesktop",0,r])},25795,e=>{"use strict";let t=(0,e.i(77379).default)("RotateCcw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);e.s(["RotateCcw",0,t],25795)},58436,e=>{"use strict";var t=e.i(54710),r=e.i(34416),n=e.i(55575),a=e.i(72740),l=e.i(20014),s=e.i(8652),o=e.i(66127),i=e.i(81471);e.s(["DirectoryPickerField",0,function({id:e,value:d,onChange:c,title:u,placeholder:m="Choose a folder...",defaultPath:p,disabled:h=!1,className:f,inputClassName:x,buttonLabel:b="Choose"}){let[g,v]=(0,r.useState)(!1),[k,w]=(0,r.useState)(null),y=async()=>{v(!0),w(null);try{let e=await (0,o.pickDirectoryFromDesktop)({title:u,defaultPath:d.trim()||p});e&&c(e)}catch(e){w(e instanceof Error?e.message:"Folder picker is unavailable.")}finally{v(!1)}};return(0,t.jsxs)("div",{className:(0,i.cn)("space-y-1",f),children:[(0,t.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row",children:[(0,t.jsx)(s.Input,{id:e,value:d,onChange:e=>{c(e.target.value),w(null)},placeholder:m,className:(0,i.cn)("font-mono text-sm",x),disabled:h||g}),(0,t.jsxs)(l.Button,{type:"button",variant:"outline",onClick:y,disabled:h||g,className:"shrink-0 gap-2",children:[g?(0,t.jsx)(a.Loader2,{className:"h-4 w-4 animate-spin"}):(0,t.jsx)(n.FolderOpen,{className:"h-4 w-4"}),g?"Opening...":b]})]}),k&&(0,t.jsx)("p",{className:"text-xs text-destructive",children:k})]})}])},75750,e=>{"use strict";let t=(0,e.i(77379).default)("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["XCircle",0,t],75750)},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 l={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."}},s={claude:"Claude",codex:"Codex",gemini:"Gemini",opencode:"OpenCode"},o={claude:["#7C2D12","#B54B2D","#E15B40","#F97316","#FDBA74"],codex:["#86198F","#A21CAF","#D946EF","#E879F9","#F5D0FE"],gemini:["#1E3A8A","#1D4ED8","#1C69FF","#60A5FA","#93C5FD"],opencode:["#7C2D12","#C2410C","#FF7300","#F59E0B","#FCD34D"]},i=["#6b7280","#9ca3af","#4b5563","#374151"],d={claude:"orange",codex:"pink",gemini:"blue",opencode:"orange"},c={"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 m(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,d,"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=m(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?i:o[e],a=n.length;n.forEach((e,n)=>{let l;l=a>=t.length?n%t.length:1===a?Math.floor(t.length/2):Math.floor((n+.5)*t.length/a),r[e]=t[l]})}return r},"detectBackendFromModel",0,m,"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 l[e]??null},"getBackendLabel",0,function(e){return r[e]},"getBackendShortLabel",0,function(e){return s[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 c[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=m(e);return t?d[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}])},59134,e=>{"use strict";let t=(0,e.i(77379).default)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);e.s(["RefreshCw",0,t],59134)},70986,e=>{"use strict";var t=e.i(34416),r=e.i(91967),n=e.i(9413),a=e.i(36567),l=e.i(18731),s=e.i(22353),o=e.i(85565),i=e.i(90816),d=e.i(11207),c=e.i(54710),u="Collapsible",[m,p]=(0,n.createContextScope)(u),[h,f]=m(u),x=t.forwardRef((e,r)=>{let{__scopeCollapsible:n,open:l,defaultOpen:s,disabled:i,onOpenChange:m,...p}=e,[f,x]=(0,a.useControllableState)({prop:l,defaultProp:s??!1,onChange:m,caller:u});return(0,c.jsx)(h,{scope:n,disabled:i,contentId:(0,d.useId)(),open:f,onOpenToggle:t.useCallback(()=>x(e=>!e),[x]),children:(0,c.jsx)(o.Primitive.div,{"data-state":y(f),"data-disabled":i?"":void 0,...p,ref:r})})});x.displayName=u;var b="CollapsibleTrigger",g=t.forwardRef((e,t)=>{let{__scopeCollapsible:n,...a}=e,l=f(b,n);return(0,c.jsx)(o.Primitive.button,{type:"button","aria-controls":l.contentId,"aria-expanded":l.open||!1,"data-state":y(l.open),"data-disabled":l.disabled?"":void 0,disabled:l.disabled,...a,ref:t,onClick:(0,r.composeEventHandlers)(e.onClick,l.onOpenToggle)})});g.displayName=b;var v="CollapsibleContent",k=t.forwardRef((e,t)=>{let{forceMount:r,...n}=e,a=f(v,e.__scopeCollapsible);return(0,c.jsx)(i.Presence,{present:r||a.open,children:({present:e})=>(0,c.jsx)(w,{...n,ref:t,present:e})})});k.displayName=v;var w=t.forwardRef((e,r)=>{let{__scopeCollapsible:n,present:a,children:i,...d}=e,u=f(v,n),[m,p]=t.useState(a),h=t.useRef(null),x=(0,s.useComposedRefs)(r,h),b=t.useRef(0),g=b.current,k=t.useRef(0),w=k.current,j=u.open||m,C=t.useRef(j),S=t.useRef(void 0);return t.useEffect(()=>{let e=requestAnimationFrame(()=>C.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,l.useLayoutEffect)(()=>{let e=h.current;if(e){S.current=S.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";let t=e.getBoundingClientRect();b.current=t.height,k.current=t.width,C.current||(e.style.transitionDuration=S.current.transitionDuration,e.style.animationName=S.current.animationName),p(a)}},[u.open,a]),(0,c.jsx)(o.Primitive.div,{"data-state":y(u.open),"data-disabled":u.disabled?"":void 0,id:u.contentId,hidden:!j,...d,ref:x,style:{"--radix-collapsible-content-height":g?`${g}px`:void 0,"--radix-collapsible-content-width":w?`${w}px`:void 0,...e.style},children:j&&i})});function y(e){return e?"open":"closed"}e.s(["Collapsible",0,x,"CollapsibleContent",0,k,"CollapsibleTrigger",0,g],70986)},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})}])},13707,e=>{"use strict";var t=e.i(54710),r=e.i(34416),n=e.i(85565),a=e.i(90816),l=e.i(9413),s=e.i(22353),o=e.i(88248),i=e.i(75649),d=e.i(18731),c=e.i(27069),u=e.i(91967),m="ScrollArea",[p,h]=(0,l.createContextScope)(m),[f,x]=p(m),b=r.forwardRef((e,a)=>{let{__scopeScrollArea:l,type:o="hover",dir:d,scrollHideDelay:c=600,...u}=e,[m,p]=r.useState(null),[h,x]=r.useState(null),[b,g]=r.useState(null),[v,k]=r.useState(null),[w,y]=r.useState(null),[j,C]=r.useState(0),[S,N]=r.useState(0),[_,E]=r.useState(!1),[R,T]=r.useState(!1),P=(0,s.useComposedRefs)(a,e=>p(e)),B=(0,i.useDirection)(d);return(0,t.jsx)(f,{scope:l,type:o,dir:B,scrollHideDelay:c,scrollArea:m,viewport:h,onViewportChange:x,content:b,onContentChange:g,scrollbarX:v,onScrollbarXChange:k,scrollbarXEnabled:_,onScrollbarXEnabledChange:E,scrollbarY:w,onScrollbarYChange:y,scrollbarYEnabled:R,onScrollbarYEnabledChange:T,onCornerWidthChange:C,onCornerHeightChange:N,children:(0,t.jsx)(n.Primitive.div,{dir:B,...u,ref:P,style:{position:"relative","--radix-scroll-area-corner-width":j+"px","--radix-scroll-area-corner-height":S+"px",...e.style}})})});b.displayName=m;var g="ScrollAreaViewport",v=r.forwardRef((e,a)=>{let{__scopeScrollArea:l,children:o,nonce:i,...d}=e,c=x(g,l),u=r.useRef(null),m=(0,s.useComposedRefs)(a,u,c.onViewportChange);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:i}),(0,t.jsx)(n.Primitive.div,{"data-radix-scroll-area-viewport":"",...d,ref:m,style:{overflowX:c.scrollbarXEnabled?"scroll":"hidden",overflowY:c.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,t.jsx)("div",{ref:c.onContentChange,style:{minWidth:"100%",display:"table"},children:o})})]})});v.displayName=g;var k="ScrollAreaScrollbar",w=r.forwardRef((e,n)=>{let{forceMount:a,...l}=e,s=x(k,e.__scopeScrollArea),{onScrollbarXEnabledChange:o,onScrollbarYEnabledChange:i}=s,d="horizontal"===e.orientation;return r.useEffect(()=>(d?o(!0):i(!0),()=>{d?o(!1):i(!1)}),[d,o,i]),"hover"===s.type?(0,t.jsx)(y,{...l,ref:n,forceMount:a}):"scroll"===s.type?(0,t.jsx)(j,{...l,ref:n,forceMount:a}):"auto"===s.type?(0,t.jsx)(C,{...l,ref:n,forceMount:a}):"always"===s.type?(0,t.jsx)(S,{...l,ref:n}):null});w.displayName=k;var y=r.forwardRef((e,n)=>{let{forceMount:l,...s}=e,o=x(k,e.__scopeScrollArea),[i,d]=r.useState(!1);return r.useEffect(()=>{let e=o.scrollArea,t=0;if(e){let r=()=>{window.clearTimeout(t),d(!0)},n=()=>{t=window.setTimeout(()=>d(!1),o.scrollHideDelay)};return e.addEventListener("pointerenter",r),e.addEventListener("pointerleave",n),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",r),e.removeEventListener("pointerleave",n)}}},[o.scrollArea,o.scrollHideDelay]),(0,t.jsx)(a.Presence,{present:l||i,children:(0,t.jsx)(C,{"data-state":i?"visible":"hidden",...s,ref:n})})}),j=r.forwardRef((e,n)=>{var l;let{forceMount:s,...o}=e,i=x(k,e.__scopeScrollArea),d="horizontal"===e.orientation,c=K(()=>p("SCROLL_END"),100),[m,p]=(l={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)=>l[e][t]??e,"hidden"));return r.useEffect(()=>{if("idle"===m){let e=window.setTimeout(()=>p("HIDE"),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[m,i.scrollHideDelay,p]),r.useEffect(()=>{let e=i.viewport,t=d?"scrollLeft":"scrollTop";if(e){let r=e[t],n=()=>{let n=e[t];r!==n&&(p("SCROLL"),c()),r=n};return e.addEventListener("scroll",n),()=>e.removeEventListener("scroll",n)}},[i.viewport,d,p,c]),(0,t.jsx)(a.Presence,{present:s||"hidden"!==m,children:(0,t.jsx)(S,{"data-state":"hidden"===m?"hidden":"visible",...o,ref:n,onPointerEnter:(0,u.composeEventHandlers)(e.onPointerEnter,()=>p("POINTER_ENTER")),onPointerLeave:(0,u.composeEventHandlers)(e.onPointerLeave,()=>p("POINTER_LEAVE"))})})}),C=r.forwardRef((e,n)=>{let l=x(k,e.__scopeScrollArea),{forceMount:s,...o}=e,[i,d]=r.useState(!1),c="horizontal"===e.orientation,u=K(()=>{if(l.viewport){let e=l.viewport.offsetWidth<l.viewport.scrollWidth,t=l.viewport.offsetHeight<l.viewport.scrollHeight;d(c?e:t)}},10);return q(l.viewport,u),q(l.content,u),(0,t.jsx)(a.Presence,{present:s||i,children:(0,t.jsx)(S,{"data-state":i?"visible":"hidden",...o,ref:n})})}),S=r.forwardRef((e,n)=>{let{orientation:a="vertical",...l}=e,s=x(k,e.__scopeScrollArea),o=r.useRef(null),i=r.useRef(0),[d,c]=r.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),u=F(d.viewport,d.content),m={...l,sizes:d,onSizesChange:c,hasThumb:!!(u>0&&u<1),onThumbChange:e=>o.current=e,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:e=>i.current=e};function p(e,t){return function(e,t,r,n="ltr"){let a=O(r),l=t||a/2,s=r.scrollbar.paddingStart+l,o=r.scrollbar.size-r.scrollbar.paddingEnd-(a-l),i=r.content-r.viewport;return U([s,o],"ltr"===n?[0,i]:[-1*i,0])(e)}(e,i.current,d,t)}return"horizontal"===a?(0,t.jsx)(N,{...m,ref:n,onThumbPositionChange:()=>{if(s.viewport&&o.current){let e=H(s.viewport.scrollLeft,d,s.dir);o.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{s.viewport&&(s.viewport.scrollLeft=e)},onDragScroll:e=>{s.viewport&&(s.viewport.scrollLeft=p(e,s.dir))}}):"vertical"===a?(0,t.jsx)(_,{...m,ref:n,onThumbPositionChange:()=>{if(s.viewport&&o.current){let e=H(s.viewport.scrollTop,d);o.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{s.viewport&&(s.viewport.scrollTop=e)},onDragScroll:e=>{s.viewport&&(s.viewport.scrollTop=p(e))}}):null}),N=r.forwardRef((e,n)=>{let{sizes:a,onSizesChange:l,...o}=e,i=x(k,e.__scopeScrollArea),[d,c]=r.useState(),u=r.useRef(null),m=(0,s.useComposedRefs)(n,u,i.onScrollbarXChange);return r.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),(0,t.jsx)(T,{"data-orientation":"horizontal",...o,ref:m,sizes:a,style:{bottom:0,left:"rtl"===i.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===i.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(i.viewport){var n,a;let l=i.viewport.scrollLeft+t.deltaX;e.onWheelScroll(l),n=l,a=r,n>0&&n<a&&t.preventDefault()}},onResize:()=>{u.current&&i.viewport&&d&&l({content:i.viewport.scrollWidth,viewport:i.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:I(d.paddingLeft),paddingEnd:I(d.paddingRight)}})}})}),_=r.forwardRef((e,n)=>{let{sizes:a,onSizesChange:l,...o}=e,i=x(k,e.__scopeScrollArea),[d,c]=r.useState(),u=r.useRef(null),m=(0,s.useComposedRefs)(n,u,i.onScrollbarYChange);return r.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),(0,t.jsx)(T,{"data-orientation":"vertical",...o,ref:m,sizes:a,style:{top:0,right:"ltr"===i.dir?0:void 0,left:"rtl"===i.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(i.viewport){var n,a;let l=i.viewport.scrollTop+t.deltaY;e.onWheelScroll(l),n=l,a=r,n>0&&n<a&&t.preventDefault()}},onResize:()=>{u.current&&i.viewport&&d&&l({content:i.viewport.scrollHeight,viewport:i.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:I(d.paddingTop),paddingEnd:I(d.paddingBottom)}})}})}),[E,R]=p(k),T=r.forwardRef((e,a)=>{let{__scopeScrollArea:l,sizes:i,hasThumb:d,onThumbChange:c,onThumbPointerUp:m,onThumbPointerDown:p,onThumbPositionChange:h,onDragScroll:f,onWheelScroll:b,onResize:g,...v}=e,w=x(k,l),[y,j]=r.useState(null),C=(0,s.useComposedRefs)(a,e=>j(e)),S=r.useRef(null),N=r.useRef(""),_=w.viewport,R=i.content-i.viewport,T=(0,o.useCallbackRef)(b),P=(0,o.useCallbackRef)(h),B=K(g,10);function L(e){S.current&&f({x:e.clientX-S.current.left,y:e.clientY-S.current.top})}return r.useEffect(()=>{let e=e=>{let t=e.target;y?.contains(t)&&T(e,R)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[_,y,R,T]),r.useEffect(P,[i,P]),q(y,B),q(w.content,B),(0,t.jsx)(E,{scope:l,scrollbar:y,hasThumb:d,onThumbChange:(0,o.useCallbackRef)(c),onThumbPointerUp:(0,o.useCallbackRef)(m),onThumbPositionChange:P,onThumbPointerDown:(0,o.useCallbackRef)(p),children:(0,t.jsx)(n.Primitive.div,{...v,ref:C,style:{position:"absolute",...v.style},onPointerDown:(0,u.composeEventHandlers)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),S.current=y.getBoundingClientRect(),N.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",w.viewport&&(w.viewport.style.scrollBehavior="auto"),L(e))}),onPointerMove:(0,u.composeEventHandlers)(e.onPointerMove,L),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=""),S.current=null})})})}),P="ScrollAreaThumb",B=r.forwardRef((e,r)=>{let{forceMount:n,...l}=e,s=R(P,e.__scopeScrollArea);return(0,t.jsx)(a.Presence,{present:n||s.hasThumb,children:(0,t.jsx)(L,{ref:r,...l})})}),L=r.forwardRef((e,a)=>{let{__scopeScrollArea:l,style:o,...i}=e,d=x(P,l),c=R(P,l),{onThumbPositionChange:m}=c,p=(0,s.useComposedRefs)(a,e=>c.onThumbChange(e)),h=r.useRef(void 0),f=K(()=>{h.current&&(h.current(),h.current=void 0)},100);return r.useEffect(()=>{let e=d.viewport;if(e){let t=()=>{f(),h.current||(h.current=W(e,m),m())};return m(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[d.viewport,f,m]),(0,t.jsx)(n.Primitive.div,{"data-state":c.hasThumb?"visible":"hidden",...i,ref:p,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...o},onPointerDownCapture:(0,u.composeEventHandlers)(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),r=e.clientX-t.left,n=e.clientY-t.top;c.onThumbPointerDown({x:r,y:n})}),onPointerUp:(0,u.composeEventHandlers)(e.onPointerUp,c.onThumbPointerUp)})});B.displayName=P;var D="ScrollAreaCorner",A=r.forwardRef((e,r)=>{let n=x(D,e.__scopeScrollArea),a=!!(n.scrollbarX&&n.scrollbarY);return"scroll"!==n.type&&a?(0,t.jsx)(M,{...e,ref:r}):null});A.displayName=D;var M=r.forwardRef((e,a)=>{let{__scopeScrollArea:l,...s}=e,o=x(D,l),[i,d]=r.useState(0),[c,u]=r.useState(0),m=!!(i&&c);return q(o.scrollbarX,()=>{let e=o.scrollbarX?.offsetHeight||0;o.onCornerHeightChange(e),u(e)}),q(o.scrollbarY,()=>{let e=o.scrollbarY?.offsetWidth||0;o.onCornerWidthChange(e),d(e)}),m?(0,t.jsx)(n.Primitive.div,{...s,ref:a,style:{width:i,height:c,position:"absolute",right:"ltr"===o.dir?0:void 0,left:"rtl"===o.dir?0:void 0,bottom:0,...e.style}}):null});function I(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 H(e,t,r="ltr"){let n=O(t),a=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,l=t.scrollbar.size-a,s=t.content-t.viewport,o=(0,c.clamp)(e,"ltr"===r?[0,s]:[-1*s,0]);return U([0,s],[0,l-n])(o)}function U(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 W=(e,t=()=>{})=>{let r={left:e.scrollLeft,top:e.scrollTop},n=0;return!function a(){let l={left:e.scrollLeft,top:e.scrollTop},s=r.left!==l.left,o=r.top!==l.top;(s||o)&&t(),r=l,n=window.requestAnimationFrame(a)}(),()=>window.cancelAnimationFrame(n)};function K(e,t){let n=(0,o.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 q(e,t){let r=(0,o.useCallbackRef)(t);(0,d.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 G=e.i(81471);let z=(0,r.forwardRef)(({className:e,children:r,...n},a)=>(0,t.jsxs)(b,{className:(0,G.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)(B,{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)(B,{className:"relative flex-1 rounded-full bg-border"})}),(0,t.jsx)(A,{})]}));z.displayName="ScrollArea",e.s(["ScrollArea",0,z],13707)},72010,e=>{"use strict";var t=e.i(54710),r=e.i(94237),n=e.i(72740),a=e.i(81471);let l=(0,r.cva)("animate-spin",{variants:{size:{xs:"h-3 w-3",sm:"h-3.5 w-3.5",md:"h-4 w-4",lg:"h-5 w-5"}},defaultVariants:{size:"md"}});e.s(["Spinner",0,function({className:e,size:r,...s}){return(0,t.jsx)(n.Loader2,{"aria-hidden":!0,className:(0,a.cn)(l({size:r}),e),...s})}])},86923,e=>{"use strict";var t=e.i(54710),r=e.i(34416),n=e.i(95486),a=e.i(72740),l=e.i(21682),s=e.i(7663),o=e.i(75750),i=e.i(74490),d=e.i(79634),c=e.i(48467),u=e.i(20014),m=e.i(8652),p=e.i(10427),h=e.i(65268),f=e.i(24756),x=e.i(87040),b=e.i(76176),g=e.i(81471),v=e.i(99758),k=e.i(59134),w=e.i(1718),y=e.i(27102),j=e.i(13707),C=e.i(57415),S=e.i(14260);function N({value:e,onChange:a,disabled:l,preferredTier:s,placeholder:o="Select model"}){let i,[p,f]=(0,r.useState)(!1),[x,b]=(0,r.useState)(""),[v,R]=(0,r.useState)(s??"all"),[T,P]=(0,r.useState)(!1),[B,L]=(0,r.useState)(!0),{data:D,isLoading:A,error:M}=(0,S.useQuery)({queryKey:["opencode-live-models"],queryFn:()=>h.api.get("/backends/opencode/live-models"),enabled:p,staleTime:3e5}),I=(i=(0,n.useQueryClient)(),(0,C.useMutation)({mutationFn:()=>h.api.get("/backends/opencode/live-models?refresh=1"),onSuccess:e=>{i.setQueryData(["opencode-live-models"],e)}})),F=(0,r.useMemo)(()=>{if(!D)return[];let e=x.trim().toLowerCase();return D.providers.map(t=>({...t,models:t.models.filter(t=>(!T||!!t.isFree)&&(!B||!!t.supportsToolUse)&&("all"===v||t.tier===v)&&(!e||t.modelId.toLowerCase().includes(e)||t.shortId.toLowerCase().includes(e)||t.name.toLowerCase().includes(e)||t.family.toLowerCase().includes(e)))})).filter(e=>e.models.length>0)},[D,x,v,T,B]),O=F.reduce((e,t)=>e+t.models.length,0),H=D?.providers.reduce((e,t)=>e+t.models.length,0)??0;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.Button,{type:"button",variant:"outline",disabled:l,onClick:()=>f(!0),className:"w-full justify-start truncate font-mono text-xs",children:e||(0,t.jsx)("span",{className:"text-muted-foreground italic",children:o})}),(0,t.jsx)(y.Dialog,{open:p,onOpenChange:f,children:(0,t.jsxs)(y.DialogContent,{className:"max-w-3xl",children:[(0,t.jsx)(y.DialogTitle,{children:"OpenCode model"}),(0,t.jsxs)(y.DialogDescription,{children:["Live catalogue from ",(0,t.jsx)("code",{children:"client.config.providers()"})," — every model your opencode server can route to. Selecting writes the full ",(0,t.jsx)("code",{children:"provider/model"})," composite."]}),(0,t.jsxs)("div",{className:"mt-3 flex items-center gap-2",children:[(0,t.jsxs)("div",{className:"relative flex-1",children:[(0,t.jsx)(w.Search,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),(0,t.jsx)(m.Input,{autoFocus:!0,placeholder:"Search by id, name, or family (e.g. gpt-oss, haiku, qwen)",value:x,onChange:e=>b(e.target.value),className:"pl-8"})]}),(0,t.jsx)(u.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>I.mutate(),disabled:I.isPending,title:"Re-enumerate after opencode auth changes",children:(0,t.jsx)(k.RefreshCw,{className:(0,g.cn)("h-3.5 w-3.5",I.isPending&&"animate-spin")})})]}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-2 text-xs",children:[(0,t.jsx)(_,{active:"all"===v,onClick:()=>R("all"),label:"All tiers"}),["lite","medium","high"].map(e=>(0,t.jsx)(_,{active:v===e,onClick:()=>R(e),label:e},e)),(0,t.jsx)("div",{className:"mx-1 h-4 w-px bg-border"}),(0,t.jsx)(_,{active:B,onClick:()=>L(e=>!e),label:"tool-use only"}),(0,t.jsx)(_,{active:T,onClick:()=>P(e=>!e),label:"free only"}),(0,t.jsxs)("span",{className:"ml-auto text-muted-foreground",children:[O,"/",H," models"]})]}),A&&(0,t.jsx)("p",{className:"mt-4 text-sm text-muted-foreground",children:"Loading…"}),M&&(0,t.jsxs)(d.Alert,{variant:"warning",className:"mt-3 text-xs",children:["Failed to enumerate models: ",M instanceof Error?M.message:"unknown error",". Confirm the daemon is running and the opencode server has at least one provider configured."]}),D&&(0,t.jsxs)(j.ScrollArea,{className:"mt-3 h-[420px] rounded-md border border-border",children:[0===F.length&&(0,t.jsx)("div",{className:"px-3 py-6 text-center text-sm text-muted-foreground",children:"No models match these filters."}),F.map(r=>(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"sticky top-0 z-10 flex items-center gap-2 border-b border-border bg-muted/95 px-3 py-1.5 backdrop-blur",children:[(0,t.jsx)("span",{className:"text-xs font-semibold uppercase tracking-wider text-foreground",children:r.name}),(0,t.jsx)(c.Badge,{variant:"gray",className:"text-[10px]",children:r.source}),(0,t.jsx)("span",{className:"ml-auto text-xs text-muted-foreground",children:r.models.length})]}),r.models.map(r=>(0,t.jsx)(E,{model:r,selected:r.modelId===e,onSelect:()=>{a(r.modelId),f(!1)}},r.modelId))]},r.id))]}),D&&(0,t.jsxs)("p",{className:"mt-2 text-[11px] text-muted-foreground",children:[D.cached?"Cached":"Fresh"," as of ",new Date(D.fetchedAt).toLocaleTimeString(),". Add providers via ",(0,t.jsx)("code",{children:"opencode auth login"}),", then click Refresh."]})]})})]})}function _({active:e,onClick:r,label:n}){return(0,t.jsx)("button",{type:"button",onClick:r,className:(0,g.cn)("rounded-full border px-2 py-0.5 transition-colors",e?"border-foreground bg-foreground text-background":"border-border bg-background text-muted-foreground hover:bg-muted"),children:n})}function E({model:e,selected:r,onSelect:n}){return(0,t.jsxs)("button",{type:"button",onClick:n,className:(0,g.cn)("flex w-full items-center gap-3 border-b border-border/40 px-3 py-2 text-left transition-colors hover:bg-muted/50",r&&"bg-accent/40"),children:[(0,t.jsx)(v.Check,{className:(0,g.cn)("h-3.5 w-3.5 shrink-0",r?"text-foreground":"text-transparent")}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"truncate text-sm font-medium text-foreground",children:e.name}),(0,t.jsx)("div",{className:"truncate font-mono text-[11px] text-muted-foreground",children:e.modelId})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-1.5",children:[e.isFree&&(0,t.jsx)(c.Badge,{variant:"green",className:"text-[10px]",children:"free"}),!e.supportsToolUse&&(0,t.jsx)(c.Badge,{variant:"gray",className:"text-[10px] text-muted-foreground",children:"no tools"}),(0,t.jsx)(c.Badge,{variant:"gray",className:"text-[10px]",children:e.tier}),!e.isFree&&null!==e.usdPer1kIn&&(0,t.jsxs)("span",{className:"font-mono text-[10px] tabular-nums text-muted-foreground",children:["$",e.usdPer1kIn.toFixed(4),"/$",e.usdPer1kOut?.toFixed(4)??"?"]})]})]})}let R={"message.dm":"DM response quality may degrade. Sonnet is recommended for important conversations.","message.mention":"Mention response quality may degrade. Sonnet is recommended.","dashboard.chat":"Dashboard chat response quality may degrade. Sonnet is recommended.","routine.morning_routine":"Long-form generation may produce shorter/rougher output with Haiku. Sonnet is recommended.","routine.evening_review":"Long-form generation may produce shorter/rougher output with Haiku. Sonnet is recommended.","routine.weekly_review":"Weekly reviews require reasoning depth. Haiku may produce less coherent output.","routine.monthly_review":"Monthly reviews require reasoning depth. Haiku may produce less coherent output.","agent.task":"Sonnet is recommended for complex task execution. Haiku may make rougher tool-use decisions."};function T(e){return!(e&&e.mainModel.trim()&&(!e.fallbackBackend||e.fallbackModel?.trim()))}function P(e,t,r){let n,a=(n=e.filter(e=>e.tier===t)).length>0?n:e;return r&&a.some(e=>e.modelId===r)?r:a[0]?.modelId??e[0]?.modelId??""}function B(e,t){return t?e.find(e=>e.modelId===t)?.label??(0,b.formatModelName)(t):"Disabled"}e.s(["BackendSettingsSection",0,function({onToast:e,sections:v=["processes"],processKeys:k,title:w="Process Routing",description:y}){let j=v.includes("processes"),C=(0,n.useQueryClient)(),{data:S,error:_,isLoading:E}=(0,f.useBackends)({enabled:j}),{data:L,error:D,isLoading:A}=(0,x.useProcessConfig)({enabled:j}),[M,I]=(0,r.useState)(null),[F,O]=(0,r.useState)(null),[H,U]=(0,r.useState)(!1),W=(0,r.useCallback)(async()=>{await Promise.all([C.invalidateQueries({queryKey:["backends"]}),C.invalidateQueries({queryKey:["process-config"]}),C.invalidateQueries({queryKey:["cost"]}),C.invalidateQueries({queryKey:["metrics"]})])},[C]),K=j?_??D:null;if(K){let e=K instanceof h.ApiError&&503===K.status;return(0,t.jsxs)(i.Card,{children:[(0,t.jsx)(i.CardHeader,{children:(0,t.jsx)(i.CardTitle,{children:"Process Routing"})}),(0,t.jsx)("p",{className:"max-w-prose text-sm text-muted-foreground",children:e?"Multi-backend tables are not available yet. Run migrations first.":K instanceof Error?K.message:"Failed to load process routing."})]})}if(!j)return null;if(E||!S||A||!L)return(0,t.jsxs)(i.Card,{children:[(0,t.jsx)(i.CardHeader,{children:(0,t.jsx)(i.CardTitle,{children:"Process Routing"})}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading process routing…"})]});let q=new Map(S.backends.map(e=>[e.id,e])),G=S.backends.filter(e=>e.enabled),z=(k?L.configs.filter(e=>k.includes(e.processKey)):L.configs).reduce((e,t)=>{let r=(0,b.getProcessGroup)(t.processKey),n=e.find(e=>e.group===r);return n?n.configs.push(t):e.push({group:r,configs:[t]}),e},[]);async function V(){if(F){U(!0);try{let t=await h.api.put(`/process-config/${F.processKey}`,{mainBackend:F.mainBackend,mainModel:F.mainModel,fallbackBackend:F.fallbackBackend,fallbackModel:F.fallbackModel,maxTurns:F.maxTurns,maxBudgetUsd:F.maxBudgetUsd});await W(),t.warnings?.length?e("warning",`Saved — ${t.warnings.map(e=>e.message).join("; ")}`):e("success",`${(0,b.getProcessLabel)(F.processKey)} updated`),I(null),O(null)}catch(t){e("error",function(e){if(!(e instanceof h.ApiError))return e instanceof Error?e.message:"Request failed";let t=e.body,r="string"==typeof t?.error?t.error:null,n=Array.isArray(t?.processKeys)?t.processKeys.filter(e=>"string"==typeof e):[];switch(r){case"backend_in_use":return`This backend is still used by: ${n.join(", ")}. Reassign those processes first.`;case"default_backend":return"Reassign the default backend before disabling it.";case"main_backend_disabled":return"The selected main backend is disabled. Enable it first.";case"fallback_backend_disabled":return"The selected fallback backend is disabled. Enable it first.";case"fallback_same_as_main":return"Fallback backend must differ from the main backend.";case"fallback_incomplete":return"Fallback backend and fallback model must either both be set or both be disabled.";case"invalid_main_model":return"The selected main model does not belong to the chosen backend.";case"invalid_fallback_model":return"The selected fallback model does not belong to the chosen fallback backend.";case"multi_backend_unavailable":return"Multi-backend tables are not available yet. Run migrations first.";default:return e.message}}(t))}finally{U(!1)}}}return(0,t.jsxs)(i.Card,{children:[(0,t.jsx)(i.CardHeader,{className:"items-start",children:(0,t.jsxs)("div",{children:[(0,t.jsx)(i.CardTitle,{children:w}),(0,t.jsx)("p",{className:"mt-1 max-w-3xl text-sm text-muted-foreground",children:y??(0,t.jsxs)(t.Fragment,{children:["One row per process (event-handling pipeline). Each row shows the resolved main backend and model, an optional fallback, and the per-run limits. Click ",(0,t.jsx)("em",{children:"Edit"})," to override any of them. Fallback kicks in only on ",(0,t.jsx)("em",{children:"decisive"})," main-backend failures (quota exhausted, auth broken, model unavailable, timeout — not ordinary rate limiting)."," ","“Default” badges mean the value is inherited from the main backend’s preset defaults above."]})})]})}),(0,t.jsx)("div",{className:"space-y-3",children:z.map(e=>(0,t.jsxs)("div",{className:"space-y-3",children:[!k&&(0,t.jsx)("h3",{className:"px-1 text-xs font-semibold uppercase text-muted-foreground",children:e.group}),e.configs.map(e=>{var r;let n,i=q.get(e.mainBackend),h=e.fallbackBackend?q.get(e.fallbackBackend):null,f=M===e.processKey&&F,x=f?q.get(F.mainBackend)?.models??[]:[],v=f&&F.fallbackBackend?q.get(F.fallbackBackend)?.models??[]:[];return(0,t.jsxs)("div",{className:"rounded-xl border border-border p-4",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between",children:[(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsx)("p",{className:"text-base font-medium text-foreground",children:(0,b.getProcessLabel)(e.processKey)}),(0,t.jsxs)(c.Badge,{variant:"high"===e.defaultTier?"purple":"medium"===e.defaultTier?"blue":"default",children:["Default ",e.defaultTier]})]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:e.processKey}),(n=function(e,t,r){if("routine.morning_routine"===e&&"claude"===t){let e=r.find(e=>"high"===e.tier&&e.available&&!e.deprecated);return e?`Defaults to Sonnet to preserve Claude quota — ${e.label} depletes the 5h window much faster. If you want better instruction-following or more thorough day-plan output, switch Main Model to ${e.label}.`:null}return null}(e.processKey,e.mainBackend,i?.models??[]))?(0,t.jsx)(d.Alert,{variant:"info",className:"mt-2 text-xs",children:n}):null]}),(0,t.jsxs)("div",{className:"grid gap-3 text-sm text-muted-foreground md:grid-cols-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"Main"}),(0,t.jsx)("p",{children:i?(0,b.getBackendLabel)(i.id):e.mainBackend}),(0,t.jsx)("p",{children:i?B(i.models,e.mainModel):e.mainModel})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"Fallback"}),h&&e.fallbackModel?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{children:(0,b.getBackendLabel)(h.id)}),(0,t.jsx)("p",{children:B(h.models,e.fallbackModel)})]}):(0,t.jsx)("p",{children:"Disabled"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"Limits"}),(0,t.jsxs)("p",{children:[e.maxTurns," turns"]}),(0,t.jsxs)("p",{children:[(0,g.formatCurrency)(e.maxBudgetUsd)," soft budget"]})]})]})]}),(0,t.jsxs)(u.Button,{variant:"outline",onClick:()=>{I(e.processKey),O({processKey:e.processKey,defaultTier:e.defaultTier,mainBackend:e.mainBackend,mainModel:e.mainModel,fallbackBackend:e.fallbackBackend,fallbackModel:e.fallbackModel,maxTurns:e.maxTurns,maxBudgetUsd:e.maxBudgetUsd})},children:[(0,t.jsx)(l.Pencil,{className:"h-3.5 w-3.5"}),"Edit"]})]}),f&&F&&(0,t.jsxs)("div",{className:"mt-4 grid gap-4 rounded-xl border border-border/80 bg-muted/30 p-4 md:grid-cols-2",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Main backend"}),(0,t.jsxs)(p.Select,{value:F.mainBackend,onValueChange:e=>(function(e){let t=q.get(e);if(!t||!F)return;let r=F.fallbackBackend===e,n="opencode"===e?t.models.some(e=>e.modelId===F.mainModel)?F.mainModel:"":P(t.models,F.defaultTier,F.mainModel);O({...F,mainBackend:e,mainModel:n,fallbackBackend:r?null:F.fallbackBackend,fallbackModel:r?null:F.fallbackModel})})(e),children:[(0,t.jsx)(p.SelectTrigger,{children:(0,t.jsx)(p.SelectValue,{placeholder:"Select backend"})}),(0,t.jsx)(p.SelectContent,{children:S.backends.map(e=>{let r=(0,b.isUiPreviewOnlyBackend)(e.id);return(0,t.jsxs)(p.SelectItem,{value:e.id,disabled:!e.enabled||r,children:[(0,b.getBackendLabel)(e.id),r?b.UI_PREVIEW_ONLY_BADGE_SUFFIX:""]},e.id)})})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Main model"}),"opencode"===F.mainBackend?(0,t.jsx)(N,{value:F.mainModel,onChange:e=>O(t=>t?{...t,mainModel:e}:t),preferredTier:F.defaultTier}):(0,t.jsxs)(p.Select,{value:F.mainModel,onValueChange:e=>O(t=>t?{...t,mainModel:e}:t),children:[(0,t.jsx)(p.SelectTrigger,{children:(0,t.jsx)(p.SelectValue,{placeholder:"Select model"})}),(0,t.jsx)(p.SelectContent,{children:x.map(e=>(0,t.jsx)(p.SelectItem,{value:e.modelId,children:e.label},e.modelId))})]}),!!(r=F.mainModel)&&r.toLowerCase().includes("haiku")&&R[F.processKey]&&(0,t.jsx)(d.Alert,{variant:"warning",className:"mt-2 text-xs",children:R[F.processKey]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Fallback backend"}),(0,t.jsxs)(p.Select,{value:F.fallbackBackend??"__none__",onValueChange:e=>(function(e){if(!F)return;if(!e)return void O({...F,fallbackBackend:null,fallbackModel:null});let t=q.get(e);if(!t)return;let r="opencode"===e?F.fallbackModel&&t.models.some(e=>e.modelId===F.fallbackModel)?F.fallbackModel:"":P(t.models,F.defaultTier,F.fallbackModel);O({...F,fallbackBackend:e,fallbackModel:r})})("__none__"===e?null:e),children:[(0,t.jsx)(p.SelectTrigger,{children:(0,t.jsx)(p.SelectValue,{placeholder:"Select backend"})}),(0,t.jsxs)(p.SelectContent,{children:[(0,t.jsx)(p.SelectItem,{value:"__none__",children:"Disabled"}),S.backends.map(e=>{let r=(0,b.isUiPreviewOnlyBackend)(e.id);return(0,t.jsxs)(p.SelectItem,{value:e.id,disabled:!e.enabled||e.id===F.mainBackend||r,children:[(0,b.getBackendLabel)(e.id),r?b.UI_PREVIEW_ONLY_BADGE_SUFFIX:""]},e.id)})]})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Fallback model"}),"opencode"===F.fallbackBackend?(0,t.jsx)(N,{value:F.fallbackModel??"",onChange:e=>O(t=>t?{...t,fallbackModel:e}:t),preferredTier:F.defaultTier,placeholder:"Select fallback model"}):(0,t.jsxs)(p.Select,{disabled:!F.fallbackBackend,value:F.fallbackModel??"__none__",onValueChange:e=>O(t=>t?{...t,fallbackModel:"__none__"===e?null:e}:t),children:[(0,t.jsx)(p.SelectTrigger,{children:(0,t.jsx)(p.SelectValue,{placeholder:"Select model"})}),(0,t.jsxs)(p.SelectContent,{children:[(0,t.jsx)(p.SelectItem,{value:"__none__",children:"Disabled"}),v.map(e=>(0,t.jsx)(p.SelectItem,{value:e.modelId,children:e.label},e.modelId))]})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Max turns"}),(0,t.jsx)(m.Input,{type:"number",min:1,max:1e3,value:F.maxTurns,onChange:e=>O(t=>t?{...t,maxTurns:Number(e.target.value)||1}:t)}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Hard cap on agent turns per run for this process. One turn = one model response (possibly with tool calls). When reached, the run stops mid-task — raise this if you see ",(0,t.jsx)("code",{children:"max_turns_reached"})," in the audit log."]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Soft budget (USD)"}),(0,t.jsx)(m.Input,{type:"number",min:0,max:1e4,step:"0.01",value:F.maxBudgetUsd,onChange:e=>O(t=>t?{...t,maxBudgetUsd:Number(e.target.value)||0}:t)}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Per-run spend cap in USD. “Soft” because the check happens between turns, so a single long turn can overshoot slightly. Runs that exceed the cap are aborted. Set to 0 to disable and rely only on the turn cap."})]}),(0,t.jsxs)("div",{className:"md:col-span-2 flex items-center justify-between gap-3",children:[(0,t.jsxs)("p",{className:"max-w-xl text-xs text-muted-foreground",children:[(0,t.jsx)("strong",{children:"Fallback backend/model"})," is consulted only on decisive failures: quota exhaustion, auth breakage, model refusal, timeout, or unrecoverable provider errors. Transient 5xx and ordinary rate limits are retried on the main backend first."]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsxs)(u.Button,{variant:"outline",onClick:()=>{I(null),O(null)},children:[(0,t.jsx)(o.XCircle,{className:"h-4 w-4"}),"Cancel"]}),(0,t.jsxs)(u.Button,{onClick:V,disabled:H||T(F),title:T(F)?"Pick a main model first — opencode requires an explicit selection from the live catalogue.":void 0,children:[H?(0,t.jsx)(a.Loader2,{className:"h-4 w-4 animate-spin"}):(0,t.jsx)(s.Save,{className:"h-4 w-4"}),"Save Process"]})]})]})]})]},e.processKey)})]},e.group))}),G.length<2&&(0,t.jsx)(d.Alert,{variant:"warning",className:"mt-4 rounded-xl px-4 py-3 text-sm",children:"Enable another backend if you want fallback routing to be available for any process."})]})}],86923)}]);
|
|
@@ -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,74490,e=>{"use strict";var t=e.i(54710),s=e.i(81471);let a=(0,e.i(94237).cva)("rounded-xl border p-5 shadow-[0_1px_3px_rgb(0_0_0/0.04)]",{variants:{tone:{default:"border-border bg-card",warning:"border-amber-200 bg-amber-50/50 dark:border-amber-900 dark:bg-amber-950/30",success:"border-emerald-200 bg-emerald-50/50 dark:border-emerald-900 dark:bg-emerald-950/30",error:"border-red-200 bg-red-50/50 dark:border-red-900 dark:bg-red-950/30"},interactive:{true:"transition-shadow duration-150 hover:shadow-[0_4px_6px_rgb(0_0_0/0.06)]",false:""}},defaultVariants:{tone:"default",interactive:!1}});e.s(["Card",0,function({className:e,tone:n,interactive:i,...r}){return(0,t.jsx)("div",{className:(0,s.cn)(a({tone:n,interactive:i}),e),...r})},"CardHeader",0,function({className:e,...a}){return(0,t.jsx)("div",{className:(0,s.cn)("mb-3 flex items-center justify-between",e),...a})},"CardStatLabel",0,function({className:e,...a}){return(0,t.jsx)("h3",{className:(0,s.cn)("text-sm font-medium text-muted-foreground",e),...a})},"CardTitle",0,function({className:e,...a}){return(0,t.jsx)("h3",{className:(0,s.cn)("text-lg font-semibold text-foreground",e),...a})},"CardValue",0,function({className:e,...a}){return(0,t.jsx)("div",{className:(0,s.cn)("text-3xl font-bold text-foreground",e),...a})}])},39982,e=>{"use strict";var t=e.i(54710),s=e.i(81471);e.s(["PageHeader",0,function({title:e,description:a,icon:n,badge:i,actions:r,children:l,className:o}){return(0,t.jsxs)("header",{className:(0,s.cn)("flex flex-col gap-1",o),children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between gap-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[n&&(0,t.jsx)(n,{className:"h-5 w-5 text-muted-foreground"}),(0,t.jsx)("h1",{className:"text-2xl font-semibold text-foreground",children:e}),i]}),r&&(0,t.jsx)("div",{className:"flex items-center gap-2",children:r})]}),a&&(0,t.jsx)("p",{className:"max-w-3xl text-sm text-muted-foreground",children:a}),l]})}])},21682,e=>{"use strict";let t=(0,e.i(77379).default)("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);e.s(["Pencil",0,t],21682)},90925,e=>{"use strict";let t=(0,e.i(77379).default)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);e.s(["Trash2",0,t],90925)},60168,e=>{"use strict";let t=(0,e.i(77379).default)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",0,t],60168)},99758,e=>{"use strict";let t=(0,e.i(77379).default)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",0,t],99758)},55575,e=>{"use strict";let t=(0,e.i(77379).default)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);e.s(["FolderOpen",0,t],55575)},66127,e=>{"use strict";var t=e.i(65268);async function s({title:e,defaultPath:a}){let n=await t.api.post("/system/pick-directory",{title:e,...a?{defaultPath:a}:{}});if("selected"===n.status&&n.path)return n.path;if("cancelled"===n.status)return null;throw Error(n.message??"Folder picker is unavailable.")}e.s(["pickDirectoryFromDesktop",0,s])},25795,e=>{"use strict";let t=(0,e.i(77379).default)("RotateCcw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);e.s(["RotateCcw",0,t],25795)},82239,e=>{"use strict";var t=e.i(54710),s=e.i(25795),a=e.i(10628);e.s(["RestartRequiredBadge",0,function(){return(0,t.jsxs)(a.Tooltip,{children:[(0,t.jsx)(a.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded-sm bg-amber-100 px-1 py-0.5 text-[10px] font-medium text-amber-700 dark:bg-amber-900/40 dark:text-amber-300",children:[(0,t.jsx)(s.RotateCcw,{className:"h-2.5 w-2.5"}),"restart"]})}),(0,t.jsx)(a.TooltipContent,{side:"top",className:"max-w-[220px] text-xs",children:"Changing this value requires a daemon restart to take effect."})]})}])},49681,e=>{"use strict";var t=e.i(54710),s=e.i(7771),a=e.i(95486),n=e.i(8011),i=e.i(10628),r=e.i(81471);e.s(["DocsHelpInline",0,function({docId:e,anchor:l=null,label:o,className:d}){let c=(0,a.useQueryClient)(),u=o??"Help";return(0,t.jsx)(i.TooltipProvider,{delayDuration:300,children:(0,t.jsxs)(i.Tooltip,{children:[(0,t.jsx)(i.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",onClick:t=>{t.preventDefault(),t.stopPropagation(),(0,n.openDocsHelpSlideover)(c,{docId:e,anchor:l,autoFocusComposer:!1})},className:(0,r.cn)("inline-flex h-5 w-5 items-center justify-center rounded-full text-muted-foreground/70 transition hover:bg-accent hover:text-foreground",d),"aria-label":`Open help — ${u}`,"data-testid":"docs-help-inline",children:(0,t.jsx)(s.HelpCircle,{className:"h-3.5 w-3.5","aria-hidden":"true"})})}),(0,t.jsx)(i.TooltipContent,{side:"top",children:(0,t.jsx)("span",{children:u})})]})})}])},88,e=>{"use strict";var t=e.i(54710),s=e.i(34416),a=e.i(99758),n=e.i(55575),i=e.i(21682),r=e.i(60168),l=e.i(25795),o=e.i(90925),d=e.i(36451);e.i(18446);var c=e.i(28444),u=e.i(48467),x=e.i(20014),m=e.i(74490),f=e.i(8652),h=e.i(82239),p=e.i(49681),b=e.i(66127),g=e.i(36413);let y=new Set(c.RESTART_REQUIRED_KEY_TUPLE);function v(e){return null===e?"":String(e)}e.s(["ConfigSection",0,function({title:e,children:s,helpDocId:a,helpAnchor:n}){return(0,t.jsxs)(m.Card,{children:[(0,t.jsx)(m.CardHeader,{children:(0,t.jsxs)(m.CardTitle,{className:"flex items-center gap-1.5",children:[(0,t.jsx)("span",{children:e}),a&&(0,t.jsx)(p.DocsHelpInline,{docId:a,anchor:n??null,label:e})]})}),(0,t.jsx)("div",{className:"space-y-0.5 [&>p]:max-w-prose",children:s})]})},"EditableArrayField",0,function({label:e,values:a,configKey:i,variant:l="gray",placeholder:o="Add item...",directoryPicker:c,modified:m,onSave:p}){let g=y.has(i),[v,j]=(0,s.useState)(""),[k,w]=(0,s.useState)(!1),[N,C]=(0,s.useState)(null),S=async()=>{let e=v.trim();if(!(!e||a.includes(e))){w(!0),C(null);try{await p(i,[...a,e]),j("")}catch{}finally{w(!1)}}},E=async e=>{w(!0);try{await p(i,a.filter(t=>t!==e))}finally{w(!1)}},F=async()=>{if(c){w(!0),C(null);try{let e=await (0,b.pickDirectoryFromDesktop)({title:c.title,defaultPath:v.trim()||c.defaultPath});if(!e)return;if(a.includes(e)){j(e),C("That directory is already in the list.");return}await p(i,[...a,e]),j("")}catch(e){C(e instanceof Error?e.message:"Folder picker is unavailable.")}finally{w(!1)}}};return(0,t.jsxs)("div",{className:`py-2${m?" border-l-2 border-blue-500 pl-2 -ml-1 rounded":""}`,"data-config-key":i,children:[(0,t.jsxs)("p",{className:"text-sm text-muted-foreground mb-2 inline-flex items-center gap-1.5",children:[e,g&&(0,t.jsx)(h.RestartRequiredBadge,{}),m&&(0,t.jsx)("span",{className:"text-[10px] font-medium text-blue-600 dark:text-blue-400",children:"modified"})]}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-1.5 mb-2",children:[a.map(e=>(0,t.jsxs)(u.Badge,{variant:l,className:"gap-1 pr-1",children:[e,(0,t.jsx)("button",{onClick:()=>E(e),disabled:k,className:"ml-0.5 rounded-sm hover:bg-black/10 dark:hover:bg-white/10 p-0.5 transition-colors",children:(0,t.jsx)(d.X,{className:"h-3 w-3"})})]},e)),0===a.length&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground italic",children:"No items"})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(f.Input,{value:v,onChange:e=>j(e.target.value),onKeyDown:e=>{"Enter"===e.key&&S()},placeholder:o,className:"max-w-[320px]",disabled:k}),c&&(0,t.jsxs)(x.Button,{size:"sm",variant:"outline",onClick:F,disabled:k,children:[(0,t.jsx)(n.FolderOpen,{className:"h-3.5 w-3.5 mr-1"}),c.buttonLabel??"Choose"]}),(0,t.jsxs)(x.Button,{size:"sm",variant:"outline",onClick:S,disabled:!v.trim()||k,children:[(0,t.jsx)(r.Plus,{className:"h-3.5 w-3.5 mr-1"}),"Add"]})]}),N&&(0,t.jsx)("p",{className:"mt-1 text-xs text-destructive",children:N})]})},"EditableBooleanField",0,function({label:e,value:a,configKey:n,description:i,modified:r,defaultValue:o,onSave:d}){let[c,u]=(0,s.useState)(!1),m=y.has(n),f=void 0!==o&&a===o,p=async()=>{u(!0);try{await d(n,!a)}finally{u(!1)}},b=async()=>{if(void 0!==o){u(!0);try{await d(n,o)}finally{u(!1)}}};return(0,t.jsx)("div",{className:`py-1.5 group${r?" border-l-2 border-blue-500 pl-2 -ml-1 rounded":""}`,"data-config-key":n,children:(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("p",{className:"text-sm text-muted-foreground inline-flex items-center gap-1.5",children:[e,m&&(0,t.jsx)(h.RestartRequiredBadge,{}),r&&(0,t.jsx)("span",{className:"text-[10px] font-medium text-blue-600 dark:text-blue-400",children:"modified"}),void 0!==o&&!f&&!r&&(0,t.jsxs)("button",{type:"button",onClick:b,className:"text-[10px] text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-0.5 opacity-0 group-hover:opacity-100",children:[(0,t.jsx)(l.RotateCcw,{className:"h-2.5 w-2.5"}),"reset"]})]}),i&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:i})]}),(0,t.jsx)(x.Button,{variant:a?"default":"outline",size:"sm",onClick:p,disabled:c,children:a?"Enabled":"Disabled"})]})})},"EditableField",0,function({label:e,value:n,configKey:r,type:c="text",suffix:u,description:m,min:p,max:b,nullable:j=!1,emptyLabel:k="Not set",modified:w,defaultValue:N,onSave:C}){let S=y.has(r),[E,F]=(0,s.useState)(!1),[B,L]=(0,s.useState)(v(n)),[T,M]=(0,s.useState)(!1),[P,D]=(0,s.useState)(null),R=(0,s.useRef)(null),K=(0,g.useDiscardGeneration)(),A=(0,s.useRef)(K);(0,s.useEffect)(()=>{K!==A.current&&(A.current=K,F(!1),D(null))},[K]),(0,s.useEffect)(()=>{E&&R.current?.focus()},[E]),(0,s.useEffect)(()=>{E||L(v(n))},[n,E]);let $=void 0!==N&&n===N,q=async e=>{if(e.stopPropagation(),void 0!==N){M(!0);try{await C(r,N)}finally{M(!1)}}},H=async e=>{e.stopPropagation(),M(!0);try{await C(r,null)}finally{M(!1)}},z=async()=>{let e=B.trim(),t=j&&""===e?null:"number"===c?Number(B):B;if(t===n)return void F(!1);if(null!==t&&"number"===c&&(void 0!==p||void 0!==b)&&(void 0!==p&&t<p||void 0!==b&&t>b))return void D(`Must be ${p??""}–${b??""}`);D(null),M(!0);try{await C(r,t),F(!1)}catch{}finally{M(!1)}};return E?(0,t.jsxs)("div",{className:"py-1.5","data-config-key":r,children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("span",{className:"text-sm text-muted-foreground shrink-0 min-w-[140px] inline-flex items-center gap-1.5",children:[e,S&&(0,t.jsx)(h.RestartRequiredBadge,{})]}),(0,t.jsx)(f.Input,{ref:R,type:c,value:B,onChange:e=>{L(e.target.value),D(null)},onKeyDown:e=>{"Enter"===e.key&&z(),"Escape"===e.key&&(L(v(n)),F(!1))},className:"max-w-[240px]",disabled:T,min:p,max:b}),u&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:u}),(0,t.jsx)(x.Button,{size:"sm",variant:"ghost",onClick:z,disabled:T,className:"h-7 w-7 p-0",children:(0,t.jsx)(a.Check,{className:"h-3.5 w-3.5"})}),(0,t.jsx)(x.Button,{size:"sm",variant:"ghost",onClick:()=>{L(v(n)),D(null),F(!1)},className:"h-7 w-7 p-0",children:(0,t.jsx)(d.X,{className:"h-3.5 w-3.5"})})]}),P&&(0,t.jsx)("p",{className:"text-xs text-destructive mt-1 ml-[148px]",children:P}),m&&!P&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground mt-1 ml-[148px]",children:m})]}):(0,t.jsxs)("div",{className:`py-1.5 group cursor-pointer rounded px-1 -mx-1 hover:bg-muted/50 transition-colors${w?" border-l-2 border-blue-500 pl-2":""}`,"data-config-key":r,onClick:()=>F(!0),children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("span",{className:"text-sm text-muted-foreground inline-flex items-center gap-1.5",children:[e,S&&(0,t.jsx)(h.RestartRequiredBadge,{})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[w&&(0,t.jsx)("span",{className:"text-[10px] font-medium text-blue-600 dark:text-blue-400",children:"modified"}),void 0!==N&&!$&&!w&&(0,t.jsxs)("button",{type:"button",onClick:q,className:"text-[10px] text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-0.5 opacity-0 group-hover:opacity-100",children:[(0,t.jsx)(l.RotateCcw,{className:"h-2.5 w-2.5"}),"reset"]}),j&&null!==n&&!w&&(0,t.jsxs)("button",{type:"button",onClick:H,title:`Clear — sets ${e} to ${k}`,className:"text-[10px] text-muted-foreground hover:text-destructive transition-colors inline-flex items-center gap-0.5 opacity-0 group-hover:opacity-100",children:[(0,t.jsx)(o.Trash2,{className:"h-2.5 w-2.5"}),"clear"]}),(0,t.jsx)("span",{className:"text-sm font-medium text-foreground",children:null===n?k:"$"===u?`$${n}`:u?`${n} ${u}`:String(n)}),(0,t.jsx)(i.Pencil,{className:"h-3 w-3 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity"})]})]}),m&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:m})]})}])},44178,e=>{"use strict";var t=e.i(57415),s=e.i(14260),a=e.i(95486),n=e.i(65268);class i extends Error{conflict;constructor(e){super("context_conflict"),this.conflict=e,this.name="ContextConflictError"}}e.s(["ContextConflictError",0,i,"useContextFile",0,function(e,t){return(0,s.useQuery)({queryKey:["context",e],queryFn:()=>n.api.get(`/context/${e}`),enabled:!!e&&t?.enabled!==!1,refetchOnWindowFocus:t?.enabled!==!1})},"useContextList",0,function(e){return(0,s.useQuery)({queryKey:["context-list",e],queryFn:()=>n.api.get(`/context/list/${e}`)})},"useDeleteContextFile",0,function(){let e=(0,a.useQueryClient)();return(0,t.useMutation)({mutationFn:async({path:e})=>n.api.delete(`/context/${e}`),onSuccess:(t,{path:s})=>{e.removeQueries({queryKey:["context",s]}),e.invalidateQueries({queryKey:["snapshots",s]});let a=s.includes("/")?s.split("/")[0]:null;a&&e.invalidateQueries({queryKey:["context-list",a]}),s.startsWith("policies/routines/custom/")&&e.invalidateQueries({queryKey:["context-list","routines"]})}})},"useUpdateContextFile",0,function(){let e=(0,a.useQueryClient)();return(0,t.useMutation)({mutationFn:async({path:e,content:t,expectedMtime:s})=>{try{return await n.api.put(`/context/${e}`,{content:t,...void 0!==s?{expectedMtime:s}:{}})}catch(e){if(e instanceof n.ApiError&&409===e.status&&e.body?.error==="conflict"){let t=e.body;throw new i({currentMtime:t.currentMtime??"",currentContent:t.currentContent??""})}throw e}},onSuccess:(t,{path:s,content:a})=>{e.setQueryData(["context",s],e=>e?{...e,content:a,lastModified:t.lastModified}:{content:a,lastModified:t.lastModified,editable:!0}),e.invalidateQueries({queryKey:["snapshots",s]});let n=s.includes("/")?s.split("/")[0]:null;n&&e.invalidateQueries({queryKey:["context-list",n]})}})}])},40893,e=>{"use strict";var t=e.i(54710),s=e.i(81187),a=e.i(20014),n=e.i(81471);e.s(["FileConflictBanner",0,function({onReload:e,onOverwrite:i,isPending:r=!1,reloadLabel:l="Reload latest",className:o}){return(0,t.jsxs)("div",{role:"alert","aria-live":"assertive",className:(0,n.cn)("rounded-md border border-amber-500/50 bg-amber-500/10 p-3 text-xs",o),children:[(0,t.jsxs)("div",{className:"mb-2 flex items-center gap-2 font-semibold text-amber-900 dark:text-amber-200",children:[(0,t.jsx)(s.AlertTriangle,{className:"h-3.5 w-3.5"}),"File was modified by another process"]}),(0,t.jsx)("p",{className:"mb-3 text-amber-900/90 dark:text-amber-100/90",children:"The agent or another tab wrote to this file after you started editing. Your unsaved draft is preserved — choose how to proceed."}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(a.Button,{size:"sm",variant:"outline",onClick:e,disabled:r,className:"h-7",children:l}),(0,t.jsx)(a.Button,{size:"sm",variant:"destructive",onClick:i,disabled:r,className:"h-7",children:r?"Overwriting…":"Overwrite with my edits"})]})]})}])},28309,e=>{"use strict";var t=e.i(54710),s=e.i(34416),a=e.i(65268),n=e.i(88423),i=e.i(36413),r=e.i(14260),l=e.i(44178),o=e.i(79634),d=e.i(48467),c=e.i(20014),u=e.i(74490),x=e.i(39982),m=e.i(88),f=e.i(40893),h=e.i(81471);function p(e,t){return t<=0?0:Math.min(100,Math.max(0,Math.round(e/t*100)))}function b(e){return e>=100?"full":e>=80?"warn":"ok"}function g(){let{data:e}=(0,n.useConfig)(),{df:s}=(0,n.useConfigDefaults)(),{deferSaveFor:a,dv:r,dirtyFields:l}=(0,i.useDirtyFields)();if(!e)return(0,t.jsx)(u.Card,{className:"p-4",children:(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading…"})});let o=a(e),d=r("feedbackLearningEnabled",e.feedbackLearningEnabled);return(0,t.jsxs)(m.ConfigSection,{title:"Feedback learning",children:[(0,t.jsx)(m.EditableBooleanField,{label:"Enable feedback learning",value:d,configKey:"feedbackLearningEnabled",description:"Master switch. While off, no signals are consolidated and no lessons are injected — capture continues but nothing new takes effect.",modified:l.has("feedbackLearningEnabled"),defaultValue:s("feedbackLearningEnabled"),onSave:o}),(0,t.jsx)(m.EditableField,{label:"Promotion threshold",value:r("feedbackPromotionThreshold",e.feedbackPromotionThreshold),configKey:"feedbackPromotionThreshold",type:"number",min:1,max:10,description:"Weighted evidence a behavioral/self-critique signal must reach before it becomes an injectable lesson. An explicit owner directive promotes on the first occurrence regardless. Higher = slower to learn, fewer false lessons.",modified:l.has("feedbackPromotionThreshold"),defaultValue:s("feedbackPromotionThreshold"),onSave:o}),(0,t.jsx)(m.EditableField,{label:"Global lessons byte cap",value:r("feedbackLessonMaxBytesGlobal",e.feedbackLessonMaxBytesGlobal),configKey:"feedbackLessonMaxBytesGlobal",type:"number",suffix:"B",min:1024,max:32768,description:"Hard size cap for policies/agent-lessons.md. Over cap, the lowest-signal lessons are evicted during consolidation.",modified:l.has("feedbackLessonMaxBytesGlobal"),defaultValue:s("feedbackLessonMaxBytesGlobal"),onSave:o}),(0,t.jsx)(m.EditableField,{label:"Per-agent lessons byte cap",value:r("feedbackLessonMaxBytesPerAgent",e.feedbackLessonMaxBytesPerAgent),configKey:"feedbackLessonMaxBytesPerAgent",type:"number",suffix:"B",min:512,max:16384,description:"Hard size cap for each policies/agents/<slug>/lessons.md store.",modified:l.has("feedbackLessonMaxBytesPerAgent"),defaultValue:s("feedbackLessonMaxBytesPerAgent"),onSave:o}),(0,t.jsx)(m.EditableField,{label:"Lesson staleness horizon",value:r("feedbackLessonStaleDays",e.feedbackLessonStaleDays),configKey:"feedbackLessonStaleDays",type:"number",suffix:"days",min:7,max:365,description:"A lesson not reinforced within this window is pruned at the next consolidation — unless it is a durable constraint, which never expires.",modified:l.has("feedbackLessonStaleDays"),defaultValue:s("feedbackLessonStaleDays"),onSave:o}),(0,t.jsx)(m.EditableField,{label:"Signal retention",value:r("feedbackSignalRetentionDays",e.feedbackSignalRetentionDays),configKey:"feedbackSignalRetentionDays",type:"number",suffix:"days",min:30,max:365,description:"How long consumed raw feedback signals are kept before the nightly retention sweep drops them. Unconsolidated signals are never swept.",modified:l.has("feedbackSignalRetentionDays"),defaultValue:s("feedbackSignalRetentionDays"),onSave:o})]})}function y(){let{data:e,isLoading:n,error:i}=(0,r.useQuery)({queryKey:["feedback-lessons"],queryFn:()=>a.api.get("/feedback/lessons"),staleTime:3e4}),[l,d]=(0,s.useState)(null);return(0,t.jsxs)(u.Card,{className:"flex flex-col gap-3 p-4",children:[(0,t.jsx)(u.CardHeader,{className:"p-0",children:(0,t.jsx)(u.CardTitle,{className:"text-sm font-semibold",children:"Lesson stores"})}),n&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading lesson stores…"}),i&&(0,t.jsxs)(o.Alert,{variant:"error",children:["Failed to load lesson stores:"," ",i?.message??"unknown error"]}),e&&(0,t.jsxs)(t.Fragment,{children:[!e.enabled&&(0,t.jsx)(o.Alert,{variant:"warning",children:"Feedback learning is turned off — existing lessons are not being injected and no new ones are forming. Toggle it on above to resume."}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:[e.pendingSignals," signal",1===e.pendingSignals?"":"s"," ","awaiting the next nightly consolidation · promotion threshold"," ",e.promotionThreshold]}),(0,t.jsx)("ul",{className:"flex flex-col divide-y",children:e.stores.map(e=>(0,t.jsx)(j,{store:e,open:l===e.path,onToggle:()=>d(t=>t===e.path?null:e.path)},e.path))})]})]})}let v={ok:"bg-primary",warn:"bg-amber-500",full:"bg-destructive"};function j({store:e,open:s,onToggle:a}){var n;let i,r,l,o=(i={ok:0,warn:1,full:2},r=b(p(e.bytes,e.capBytes)),l=b(p(e.entries,e.maxEntries)),e.overCap?"full":i[r]>=i[l]?r:l),d=Math.max(p(e.bytes,e.capBytes),p(e.entries,e.maxEntries));return(0,t.jsxs)("li",{className:"py-3 first:pt-0",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.jsx)("p",{className:"text-sm font-medium",children:"agent"===(n=e.scope)?"Global — all agents & routines":n.startsWith("agent:")?n.slice(6):n}),(0,t.jsx)("p",{className:"truncate font-mono text-[11px] text-muted-foreground",children:e.path}),(0,t.jsx)("p",{className:"pt-0.5 text-xs text-muted-foreground",children:function(e){if(!e.exists)return"Not created yet — no lessons consolidated";let t=[`${e.active} active`];return e.provisional>0&&t.push(`${e.provisional} provisional`),t.push(`${e.bytes}/${e.capBytes} B`),e.overCap&&t.push("over cap"),t.join(" · ")}(e)}),e.exists&&(0,t.jsx)("div",{className:"mt-1.5 h-1.5 w-full max-w-xs overflow-hidden rounded-full bg-muted",children:(0,t.jsx)("div",{className:(0,h.cn)("h-full rounded-full transition-all",v[o]),style:{width:`${d}%`}})})]}),(0,t.jsx)(c.Button,{type:"button",size:"sm",variant:s?"secondary":"outline",disabled:!e.exists,onClick:a,children:e.exists?s?"Close":"Edit":"Empty"})]}),s&&e.exists&&(0,t.jsx)("div",{className:"pt-3",children:(0,t.jsx)(k,{path:e.path})})]})}function k({path:e}){let s=(0,l.useContextFile)(e);return s.isLoading?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading…"}):s.error||!s.data?(0,t.jsxs)("p",{className:"text-sm text-destructive",children:["Failed to load ",e,":"," ",s.error?.message??"unknown error"]}):(0,t.jsx)(w,{path:e,initial:s.data,editable:!1!==s.data.editable},e)}function w({path:e,initial:n,editable:i}){let[r,o]=(0,s.useState)(n.content),[d,u]=(0,s.useState)({content:n.content,mtime:n.lastModified}),[x,m]=(0,s.useState)(null),[p,b]=(0,s.useState)(null),[g,y]=(0,s.useState)(null),v=(0,l.useUpdateContextFile)(),j=r!==d.content;(0,s.useEffect)(()=>{if(!j)return;let e=e=>{e.preventDefault(),e.returnValue=""};return window.addEventListener("beforeunload",e),()=>window.removeEventListener("beforeunload",e)},[j]);let k=async t=>{b(null);try{let s=await v.mutateAsync({path:e,content:r,expectedMtime:t});u({content:r,mtime:s.lastModified}),y(null),m("Saved."),window.setTimeout(()=>m(null),2500)}catch(e){e instanceof l.ContextConflictError?y({mtime:e.conflict.currentMtime,content:e.conflict.currentContent}):(a.ApiError,b(e.message))}},N=()=>k(d.mtime);return(0,t.jsxs)("div",{className:"flex flex-col gap-2 rounded-md border border-border bg-muted/20 p-3",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,t.jsxs)("p",{className:"text-[11px] text-muted-foreground",children:["Last modified: ",(0,h.formatAbsoluteTime)(d.mtime)]}),(0,t.jsx)(c.Button,{type:"button",size:"sm",onClick:N,disabled:!j||!i||v.isPending||null!==g,children:v.isPending?"Saving…":"Save"})]}),g&&(0,t.jsx)(f.FileConflictBanner,{onReload:()=>{g&&(o(g.content),u({content:g.content,mtime:g.mtime}),y(null),b(null))},onOverwrite:()=>{g&&k(g.mtime)},isPending:v.isPending}),(0,t.jsx)("textarea",{value:r,onChange:e=>o(e.target.value),onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&"s"===e.key.toLowerCase()&&(e.preventDefault(),j&&i&&!v.isPending&&N())},disabled:!i,spellCheck:!1,className:"min-h-[320px] w-full resize-y rounded-md border border-border bg-background p-3 font-mono text-xs leading-relaxed focus:outline-none focus:ring-2 focus:ring-ring"}),(0,t.jsxs)("p",{className:"text-[11px] text-muted-foreground",children:["Edits go through the same context write path the nightly consolidation uses. Keep the ",(0,t.jsx)("code",{children:"## Lessons"})," bullets and their"," ",(0,t.jsx)("code",{children:"<!-- ev=… -->"})," trailers intact so the consolidator can keep merging them."]}),x&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:x}),p&&(0,t.jsx)("p",{className:"text-xs text-destructive",children:p})]})}e.s(["default",0,function(){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(x.PageHeader,{title:"Lessons",badge:(0,t.jsx)(d.Badge,{variant:"amber",children:"Preview"}),description:(0,t.jsx)(t.Fragment,{children:"The agent calibrates its own behaviour from your feedback: when you correct it, state a preference, or its weekly self-critique flags a pattern, the signal is captured, consolidated each night into a scoped “lesson”, and injected back into exactly the agents that can act on it. Global lessons steer notification discipline and operating style; a per-agent lesson is injected only into that one Agent's runs. Tune how aggressively lessons form and review or hand-edit the stores below."})}),(0,t.jsx)(g,{}),(0,t.jsx)(y,{})]})}],28309)}]);
|