@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
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,32077,e=>{"use strict";var t=e.i(54710),n=e.i(34416),a=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 w={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 N(e){let t=w[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 n=t-1;return`Delegated mode supports one Google account. Your other ${n} Gmail ${1===n?"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 n=B[e.key],a=t.join(" + ");return{secretKeys:t,optionDescription:`Deletes ${a} from the keychain after the mode flip. Reverting to direct later will require ${n.setupPhrase}. Asks for a second confirmation.`,confirmTitle:`Purge ${e.displayName} credentials?`,confirmDescription:`This removes ${a} from the keychain. To restore direct mode later you will need to redo ${n.setupPhrase}.`}}var _=e.i(72740),D=e.i(43477),O=e.i(76176);function I(e){let{open:n,onOpenChange:a,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:n,backend:a}=e,{toMode:s,toBackend:r}=t;if(n===s)return"delegated"===n&&r&&r!==a?{kind:"delegated-backend-change",toBackend:r}:{kind:"no-op"};if("native"===s){if(!r)throw Error("toBackend required for native flip");return"direct"!==n&&"delegated"!==n&&"disabled"!==n?{kind:"to-native",fromMode:"disabled",toBackend:r}:{kind:"to-native",fromMode:n,toBackend:r}}if("native"===n){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"===n&&"delegated"===s){if(!r)throw Error("toBackend required for direct→delegated");return{kind:"direct-to-delegated",toBackend:r}}if("delegated"===n&&"direct"===s)return{kind:"delegated-to-direct",needsOauthSetup:!e.directCredentialsPresent};if("disabled"===n){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,w="direct"===r&&"delegated"===o&&m&&null!==s.directSetup;return(0,t.jsx)(D.Sheet,{open:n,onOpenChange:a,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 n="direct"===t.to?"direct":`delegated to ${t.toBackend??"?"}`;return`Enable ${e} (${n})?`}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 n=(0,O.isUiPreviewOnlyBackend)(e);return(0,t.jsxs)(u.SelectItem,{value:e,disabled:n,children:[e,n?O.UI_PREVIEW_ONLY_BADGE_SUFFIX:""]},e)})})]})]}),y&&(0,t.jsx)(L,{action:y,descriptor:s,gmailAccountCount:g}),w&&(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:()=>a(!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:n,gmailAccountCount:a}){var s,r,i,o,l,c,u;if("direct-to-delegated"===e.kind){let s=function(e,t,n){let a=[];"gmail"===e&&a.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&&a.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 activity scan.",reversible:!0}),"notion"===e&&a.push({message:"Notion poller stops observing database edits. Recent-edit awareness shifts from per-poll to inline notion-search inside the activity scan, 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&&a.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&&a.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&&a.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&&a.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=n.backendConnectors[t];if(s&&"gmail"===e)for(let e of["send","forward","delete","read_attachment"].filter(e=>!s.optionalCapabilities.includes(e)))a.push({message:`${N(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 a}(n.key,e.toBackend,n),r=S(n.key,a);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,n)=>(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-warning"}),(0,t.jsx)("span",{className:"text-muted-foreground",children:e.message})]},n))})]})}if("delegated-to-direct"===e.kind){let a,i=(n.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=n.key,r=!e.needsOauthSetup,a=B[s],r?`${a.presentClause}. Switching back re-enables polling with no re-consent step.`:`${a.absentClause}. Switching to direct will walk through ${a.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=n.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 activity_scan 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 activity_scan 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 activity_scan 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(n.key,a):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 ",n.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 / activity_scan turn."})]}),g&&(0,t.jsx)(d.Alert,{variant:"warning",children:g}),(0,t.jsxs)("div",{className:"rounded-md border border-warning/40 bg-warning/10 p-3 text-xs",children:[(0,t.jsx)("p",{className:"font-medium text-warning",children:"Estimated cost shift (typical workload)"}),(0,t.jsxs)("p",{className:"mt-1 text-warning/80",children:["From ",p.fromLabel," ",(0,t.jsxs)("code",{className:"rounded bg-warning/15 px-1 py-0.5 font-mono text-[11px]",children:["≈ ",M(p.fromDailyUsd),"/day"]})," ","→ native MCP on ",e.toBackend," ",(0,t.jsxs)("code",{className:"rounded bg-warning/15 px-1 py-0.5 font-mono text-[11px]",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-warning/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,n)=>(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-warning":"bg-destructive"}`}),(0,t.jsx)("span",{className:"text-muted-foreground",children:e.message})]},n))})]})]})}if("native-to-direct"===e.kind){let a;return(0,t.jsx)(d.Alert,{variant:e.needsOauthSetup?"warning":"success",children:(0,t.jsx)("p",{className:"text-sm",children:(c=n.key,u=!e.needsOauthSetup,a=B[c],u?`${a.presentClause} from a previous direct-mode setup. Switching back re-enables polling without re-consent.`:`${a.absentClause} — native mode left credential management to the backend. Switching to direct will walk through ${a.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 ",n.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 ",n.displayName,". No background poller, no in-turn fetch — the activity scan 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:n,disabled:a,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:a,onSelect:()=>n("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:a,onSelect:()=>n("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:n,onSelect:a,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"} ${n?"pointer-events-none opacity-50":""}`,children:[(0,t.jsx)("input",{type:"radio",name:"token-handling",className:"mt-0.5",checked:e,disabled:n,onChange:a}),(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:a,onSelectMode:r,delegatedBackendCount:i,mainBackend:o,disabled:l=!1,groupId:d}){let[c,u]=(0,n.useState)(()=>new Set),m=d??`mode-explainer-${a.key}`,g=A(a),p=null!=o&&g.includes(o),x=a.supportedModes.includes("native")?o?p?null:`Your main backend (${o}) ships no native connector for ${a.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:a.supportedModes.map(n=>{let d=function(e,t,n=null){let a=t.displayName;if("direct"===e)return{title:"Direct",brief:`The daemon talks to ${a} itself using credentials you provide.`,details:[`Lowest token cost — your conversation backend (Claude / Codex / Gemini) does not pay tokens to fetch ${a} 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 ${a}.`,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 ${a}.`,details:[`When the agent needs ${a} data, the daemon invokes the chosen CLI (Claude Code / Codex / Gemini) which calls ${a} 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 ${a}; 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 ${a}; 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 ${a} 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"}}(n);return{title:`Native — via ${e}`,brief:`Your DM agent (${e}) reaches ${a} directly through its own connector — no background polling and no daemon-side proxy.`,details:[`Pick this when you already use ${e}'s ${a} connector for ad-hoc work and just want the agent's activity scan 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 ${a}.`,'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 activity-scan awareness entirely.',`${e} must already have its ${a} connector configured (e.g. claude.ai/connections for Claude, an MCP entry for Codex, an extension for Gemini). The daemon never sees your ${a} 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 ${a} connector wired up and you want the agent to use it for activity scan / 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 ${a} at all.`,details:[`The agent loses awareness of ${a} entirely — no observers, no skill body, no task-flow guidance. It will not bring up ${a} data on its own.`,`Pick this when the backend you DM with already has ${a} access through its own connectors and you do not need cross-backend delegation. Your agent can still answer ad-hoc questions about ${a} via that backend's native tools, but the daemon will not orchestrate it.`,`Pick this when you simply do not use ${a}.`,"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."}}(n,a,o??null),g=n===e,p=c.has(n),f="delegated"===n&&0===i,b="native"===n&&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(n)},"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-warning",children:"No backend connector is registered for this integration — Delegated mode cannot be activated."}),b&&x&&(0,t.jsx)("p",{className:"text-xs text-warning",children:x})]})]}),(0,t.jsxs)(h.Collapsible,{open:p,onOpenChange:e=>{u(t=>{let a=new Set(t);return e?a.add(n):a.delete(n),a})},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,n)=>(0,t.jsx)("li",{children:e},n))}),d.footnote&&(0,t.jsx)("p",{className:"rounded bg-muted/50 px-2 py-1 text-[11px] italic text-foreground/80",children:d.footnote})]})})]})]},n)})})]})}var E=e.i(96263),F=e.i(40974),U=e.i(10628);function Y(e){let t=new Set,n=[];for(let a of e.split(/\r?\n/)){let e=a.trim();e&&(t.has(e)||(t.add(e),n.push(e)))}return n}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:n}){let a=K[e]?.[n];return(0,t.jsxs)(c.Card,{className:"bg-warning/5",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."}),a&&(0,t.jsxs)("div",{className:"mt-3 space-y-2 text-xs",children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:a.heading}),a.preamble&&(0,t.jsx)("p",{className:"text-muted-foreground",children:a.preamble}),(0,t.jsx)("ul",{className:"ml-4 list-disc space-y-1 text-muted-foreground",children:a.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,n.useState)(i??[]),[g,p]=(0,n.useState)(!1),[f,b]=(0,n.useState)(null),[y,k]=(0,n.useState)(!1),j=(0,x.usePatchIntegration)();(0,n.useEffect)(()=>{let e=[...i??[]];m(t=>!function(e,t){if(e.length!==t.length)return!1;let n=new Set(e);for(let e of t)if(!n.has(e))return!1;return!0}(t,e)?g?t:e:(p(!1),t))},[i,r]),(0,n.useEffect)(()=>{b(null),k(!1)},[r]);let w=(0,n.useMemo)(()=>(function(e,t,n){if(!t)return null;let a=e.backendConnectors[t];if(!a)return null;let s=new Set(n??[]),r=new Set(a.requiredCapabilities),i=new Set,o=[];for(let e of a.optionalCapabilities){if(i.has(e))continue;i.add(e);let t=[...a.capabilityTools[e]??[]],n=t.length>0&&t.every(e=>s.has(e));o.push({capability:e,label:N(e),tools:t,required:r.has(e),denied:n})}for(let e of a.requiredCapabilities){if(i.has(e))continue;i.add(e);let t=[...a.capabilityTools[e]??[]];o.push({capability:e,label:N(e),tools:t,required:!0,denied:!1})}let l=new Set;for(let e of Object.values(a.capabilityTools))for(let t of e)l.add(t);return{rows:o,staleDeniedTools:(n??[]).filter(e=>!l.has(e)),softEnforcement:"claude"!==t}})(s,r,h),[s,r,h]);if("delegated"!==u||!w)return null;let C=w.rows.filter(e=>!e.required),A=w.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,n){let a=new Set(e);if(n)for(let e of t.tools)a.add(e);else for(let e of t.tools)a.delete(e);return[...a]}(h,e,!e.denied)),p(!0),b(null),k(!1))}},e.capability))}),A.length>0&&(0,t.jsx)(X,{rows:A}),w.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:[w.staleDeniedTools.length," stale entr",1===w.staleDeniedTools.length?"y":"ies"," from a previous backend"]}),(0,t.jsx)("ul",{className:"font-mono text-[11px]",children:w.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===w.staleDeniedTools.length)return;let e=new Set(w.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-success",children:[(0,t.jsx)(a.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:a}){let[r,i]=(0,n.useState)(!1),[o,l]=(0,n.useState)(e.join("\n"));return(0,n.useEffect)(()=>{let t=Y(o);t.length===e.length&&t.every((t,n)=>t===e[n])||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),a(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:a}){let[r,i]=(0,n.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:a}),(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,n.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)(a.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:n,children:a}){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}),n]}),a]})}function Z(e){if(e instanceof v.ApiError){let t=e.body;if(t?.error==="missing_variants"){let e=[...t.missingSkills??[],...t.missingTaskFlows??[]],n="native"===t.mode?"native":"delegated";return`Missing variant file(s) for ${n} 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:n,mode:a}){let s=n?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.`}}(n,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"===a?"Native":"Delegated"," mode requires you to register an MCP server or connector on the ",n??"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,w]=(0,n.useState)(null);if(u.userManagedConnector)return(0,t.jsx)(J,{descriptor:u,backend:b,mode:"delegated"});let N=async()=>{if(b){w(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"?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.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 N(),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)(a.Check,{className:"h-3 w-3 text-success"}):(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)(),[w,N]=(0,n.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){N(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"?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.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 activity_scan 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"]})]}),w&&(0,t.jsx)(d.Alert,{variant:"error",children:(0,t.jsx)("p",{className:"text-xs",children:w})}),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)(a.Check,{className:"h-3 w-3 text-success"}):(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 en({integrationKey:e,delegatedBackend:a,delegatedModel:s,currentMode:r}){var i,c;let h=(0,x.useProxyModels)(a),m=(0,x.usePatchIntegration)(),[g,p]=(0,n.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,w=async t=>{p(null);let n=t===T?null:t;if(n!==s)try{await m.mutateAsync({key:e,body:{mode:"delegated",delegatedBackend:a,delegatedModel:n}})}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 w(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:a}),". 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 w(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 ea({integrationKey:e,credentialsPresent:n}){let a=es[e].present,s=es[e].absent;return(0,t.jsx)(d.Alert,{variant:n?"success":"warning",children:(0,t.jsx)("p",{className:"text-xs",children:n?a: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 n=(0,x.useRecentProxyCalls)(e),a=n.data?.calls??[],r=a.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",!n.isLoading&&(0,t.jsxs)("span",{className:"text-muted-foreground/70",children:["(",a.length,r&&(0,t.jsx)("span",{className:"ml-1 text-warning",children:"· failures"}),")"]})]}),(0,t.jsxs)(h.CollapsibleContent,{className:"pt-2",children:[n.isLoading&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Loading…"}),n.error&&(0,t.jsx)(d.Alert,{variant:"error",children:(0,t.jsxs)("p",{className:"text-xs",children:["Could not load recent calls:"," ",n.error instanceof Error?n.error.message:"Unexpected error"]})}),!n.isLoading&&!n.error&&0===a.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."]}),a.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:a.map(e=>{var n,a;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 n=new Date(e);return Number.isNaN(n.getTime())?e:n.getFullYear()===t.getFullYear()&&n.getMonth()===t.getMonth()&&n.getDate()===t.getDate()?n.toLocaleTimeString():n.toLocaleString()}(e.startedAt)}),(0,t.jsx)("td",{className:"py-1 pr-3 font-mono",children:function(e){if(!e)return"—";let t=e.split("__"),n=t[t.length-1];return n&&n.length>0?n: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===(n=e.durationMs)?"—":n<1e3?`${n}ms`:`${(n/1e3).toFixed(1)}s`}),(0,t.jsx)("td",{className:"py-1 pr-3 text-muted-foreground",children:null===(a=e.costUsd)?"—":0===a?"$0":a<.001?"<$0.001":a<.01?`$${a.toFixed(4)}`:`$${a.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-warning",title:e.errorMessage??void 0,children:e.errorClass??e.result??"failed"})})]},e.id)})})]})})]})]})}e.s(["IntegrationCard",0,function({integrationKey:e,gmailAccountCount:a=0,children:s}){var r,i,c,h,y;let k=(0,x.useIntegrations)(),j=(0,p.useHealth)(),w=(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,n.useState)(null),[q,E]=(0,n.useState)("keep"),[F,U]=(0,n.useState)(null),[Y,K]=(0,n.useState)(null),[z,H]=(0,n.useState)(!1),W=(0,n.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=w.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:n,stateLastChangedAt:a,dismissedLocally:s}=e;if(s||void 0===n||"disabled"!==t)return!1;if(null===n.startedAt)return!0;let r=$(a),i=$(n.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,n){if(null===e||null===n)return[];let a=t.backendConnectors[n];if(!a)return[];let s=new Set(a.requiredCapabilities),r=new Set,i=[];for(let t of[...a.requiredCapabilities,...a.optionalCapabilities])r.has(t)||(r.add(t),i.push({capability:t,label:N(t),present:!0===e[t],required:s.has(t)}));return i.sort((e,t)=>{let n=e=>e.present&&e.required?0:e.present?1:e.required?2:3,a=n(e)-n(t);return 0!==a?a: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 n=(0,O.isUiPreviewOnlyBackend)(e);return(0,t.jsxs)(u.SelectItem,{value:e,disabled:n,children:[e,n?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)(en,{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)(ea,{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:a,tokenHandling:q,onTokenHandlingChange:E,onConfirm:eg,isPending:S.isPending,error:F})]})}],32077)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,11457,e=>{"use strict";var t=e.i(54710),s=e.i(34416),n=e.i(71060),a=e.i(75187),r=e.i(17532),i=e.i(14260),l=e.i(65268),o=e.i(42455),d=e.i(74490),c=e.i(81471),u=e.i(68894);function m({ok:e,pulse:s}){return(0,t.jsx)("span",{className:(0,c.cn)("inline-block h-2 w-2 rounded-full",e?"bg-success":"bg-destructive",e&&s&&"animate-pulse")})}function h({status:e}){return e&&e.configured?(0,t.jsx)(m,{ok:e.connected}):(0,t.jsx)("span",{className:"inline-block h-2 w-2 rounded-full bg-muted-foreground/30"})}let x={google:"Google (Calendar / Gmail)",obsidian:"Obsidian",notion:"Notion"};function p({health:e}){let{connected:s}=(0,u.useSSE)(),n=[{label:"Database",ok:e?.dbConnected??!1},{label:"Context Files",ok:e?.contextFilesOk??!1},{label:"Live Updates",ok:s,pulse:!0}];return(0,t.jsxs)(d.Card,{children:[(0,t.jsx)(d.CardHeader,{children:(0,t.jsx)(d.CardTitle,{children:"System Health"})}),(0,t.jsxs)("div",{className:"space-y-3",children:[n.map(e=>(0,t.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:e.label}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(m,{ok:e.ok,pulse:e.pulse}),(0,t.jsx)("span",{className:e.ok?"text-success":"text-destructive",children:e.ok?"Connected":"Disconnected"})]})]},e.label)),(0,t.jsxs)("div",{className:"border-t border-border pt-3",children:[(0,t.jsx)("p",{className:"mb-2 text-xs font-medium uppercase tracking-wider text-muted-foreground",children:"Integrations"}),["google","obsidian","notion"].map(s=>{let n=e?.integrations?.[s];return(0,t.jsxs)("div",{className:"flex items-center justify-between text-sm py-0.5",children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:x[s]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(h,{status:n}),(0,t.jsx)("span",{className:n&&n.configured?n.connected?"text-success":"text-destructive":"text-muted-foreground/70",children:n&&n.configured?n.connected?"Connected":"Error":"Not Configured"})]})]},s)})]}),(0,t.jsxs)("div",{className:"border-t border-border pt-3",children:[(0,t.jsx)("p",{className:"mb-2 text-xs font-medium uppercase tracking-wider text-muted-foreground",children:"Runtime"}),(0,t.jsxs)("div",{className:"grid grid-cols-3 gap-2",children:[(0,t.jsxs)("div",{className:"text-center",children:[(0,t.jsx)("p",{className:"text-lg font-semibold text-foreground",children:e?.activeSessions??0}),(0,t.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"Active"})]}),(0,t.jsxs)("div",{className:"text-center",children:[(0,t.jsx)("p",{className:"text-lg font-semibold text-foreground",children:e?.todaySessions??0}),(0,t.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"Today"})]}),(0,t.jsxs)("div",{className:"text-center",children:[(0,t.jsx)("p",{className:"text-lg font-semibold text-foreground",children:e?.eventBusSize??0}),(0,t.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"Event Bus"})]})]})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:"Uptime"}),(0,t.jsx)("span",{className:"font-mono text-xs",children:e?(0,c.formatUptime)(e.uptime):"—"})]})]})]})}var f=e.i(45958),g=e.i(93512),y=e.i(48467),v=e.i(10628),j=e.i(36516),w=e.i(76176),b=e.i(31703),N=e.i(68741);function k(){let e=(0,b.useEventStream)(10),{data:s}=(0,N.useEvents)(),n=s?.pages[0]?.events.slice(0,10)??[],a=new Set,r=[];for(let t of[...e,...n])a.has(t.id)||(a.add(t.id),r.push(t));let i=r.sort((e,t)=>(0,c.parseUtcDate)(t.started_at).getTime()-(0,c.parseUtcDate)(e.started_at).getTime()).slice(0,10);return(0,t.jsxs)(d.Card,{children:[(0,t.jsxs)(d.CardHeader,{children:[(0,t.jsx)(d.CardTitle,{children:"Recent Events"}),(0,t.jsxs)(f.default,{href:"/activity",className:"flex items-center gap-1 text-xs text-primary hover:underline",children:["View all ",(0,t.jsx)(g.ArrowRight,{className:"h-3 w-3"})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[0===i.length&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"No events yet"}),i.map(e=>{let s=j.EVENT_TYPE_COLORS[e.action_type]??"gray",n=j.RESULT_COLORS[e.result]??"gray",a=e.model_used?(0,w.modelBadgeVariant)(e.model_used):void 0;return(0,t.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,t.jsxs)(v.Tooltip,{children:[(0,t.jsx)(v.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{className:"w-24 shrink-0 font-mono tabular-nums text-muted-foreground",children:(0,c.formatShortDateTime)(e.started_at)})}),(0,t.jsxs)(v.TooltipContent,{children:[(0,c.formatAbsoluteTime)(e.started_at)," (",(0,c.formatRelativeTime)(e.started_at),")"]})]}),(0,t.jsx)(y.Badge,{variant:s,className:"shrink-0",children:e.action_type.split(".").pop()}),a&&"gray"!==a&&(0,t.jsx)(y.Badge,{variant:a,className:"shrink-0",children:(0,w.formatShortModelName)(e.model_used)}),(0,t.jsx)("span",{className:"ml-auto font-mono text-muted-foreground",children:(0,c.formatCurrency)(e.cost_usd)}),(0,t.jsx)(y.Badge,{variant:n,className:"shrink-0",children:e.result})]},e.id)})]})]})}var C=e.i(19660),S=e.i(71816),T=e.i(49214),_=e.i(30902);function D(){let{data:e}=(0,i.useQuery)({queryKey:["calendar"],queryFn:()=>l.api.get("/calendar/events",{date:"today",days:1}),refetchInterval:3e5}),{data:s}=(0,a.useHealth)(),{regenerate:n,target:r,status:o,error:u,dismiss:m}=(0,S.useRegenerate)(),h=e?.events??[];return s?.integrationModes?.google_calendar?.mode==="delegated"?(0,t.jsxs)(d.Card,{children:[(0,t.jsx)(d.CardHeader,{children:(0,t.jsx)(d.CardTitle,{children:"Today's Calendar"})}),(0,t.jsxs)("div",{className:"flex items-start gap-2 text-sm text-muted-foreground",children:[(0,t.jsx)(C.Bot,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,t.jsx)("p",{children:"Calendar is delegated to the agent's backend connector — ask the agent directly for today's schedule. The daemon doesn't poll events while in delegated mode."})]})]}):(0,t.jsxs)(d.Card,{children:[(0,t.jsx)(d.CardHeader,{children:(0,t.jsxs)("div",{className:"flex items-center justify-between w-full",children:[(0,t.jsx)(d.CardTitle,{children:"Today's Calendar"}),(0,t.jsx)(T.RegenerateButton,{target:"today",label:"Refresh",currentTarget:r,status:o,error:u,onRegenerate:n,onDismiss:m,variant:"ghost",className:"h-7 px-2 text-xs text-muted-foreground"})]})}),(0,t.jsxs)("div",{className:"space-y-2",children:[0===h.length&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"No events today"}),h.map(e=>(0,t.jsxs)("div",{className:"flex items-start gap-3 text-sm",children:[(0,t.jsx)("span",{className:"shrink-0 font-mono text-xs text-muted-foreground",children:e.allDay?"All day":`${(0,_.format)((0,c.parseUtcDate)(e.start),"HH:mm")}–${(0,_.format)((0,c.parseUtcDate)(e.end),"HH:mm")}`}),(0,t.jsx)("span",{className:"text-foreground",children:e.summary})]},e.id))]})]})}var A=e.i(51226),R=e.i(34855),M=e.i(21420);function O(){let{data:e}=(0,A.useCost)("daily"),{data:s}=(0,R.useMetrics)(),n=s?.cost.last7dUsd??0,a=e?.byPeriod.slice(-7).map(e=>e.total_cost)??[];return(0,t.jsxs)(d.Card,{children:[(0,t.jsxs)(d.CardHeader,{children:[(0,t.jsx)(d.CardTitle,{children:"Cost Summary"}),(0,t.jsxs)(f.default,{href:"/analytics",className:"flex items-center gap-1 text-xs text-primary hover:underline",children:["Details ",(0,t.jsx)(g.ArrowRight,{className:"h-3 w-3"})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Last 7 days"}),(0,t.jsx)("span",{className:"text-lg font-semibold text-foreground",children:(0,c.formatCurrency)(n)})]}),a.length>=2&&(0,t.jsx)(M.Sparkline,{values:a,color:"var(--color-primary)",width:200,height:32})]})]})}var B=e.i(77910),z=e.i(90826),E=e.i(20014),H=e.i(81187),L=e.i(99758),U=e.i(36451);function P(){let{data:e}=(0,B.useApprovals)(),s=(0,B.useApproveAction)(),n=(0,B.useDenyAction)(),a=(0,z.useConfirm)(),r=e?.approvals??[];if(0===r.length)return null;let i=async(e,t)=>{await a({title:"Deny this approval?",description:`"${t}" will be permanently denied.`,confirmLabel:"Deny",variant:"destructive"})&&n.mutate(e)};return(0,t.jsxs)(d.Card,{tone:"warning",children:[(0,t.jsx)(d.CardHeader,{className:"mb-2",children:(0,t.jsxs)(d.CardTitle,{className:"flex items-center gap-2 text-sm",children:[(0,t.jsx)(H.AlertTriangle,{className:"h-4 w-4 text-warning"}),r.length," pending approval",1!==r.length?"s":""]})}),(0,t.jsx)("div",{className:"space-y-3",children:r.map(e=>(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"truncate text-sm text-foreground",children:e.task_description}),(0,t.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,t.jsx)(y.Badge,{variant:"blue",className:"text-[10px]",children:e.task_type}),(0,t.jsxs)(v.Tooltip,{children:[(0,t.jsx)(v.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{className:"font-mono tabular-nums",children:(0,c.formatShortDateTime)(e.created_at)})}),(0,t.jsxs)(v.TooltipContent,{children:[(0,c.formatAbsoluteTime)(e.created_at)," (",(0,c.formatRelativeTime)(e.created_at),")"]})]})]})]}),(0,t.jsxs)("div",{className:"flex shrink-0 gap-1.5",children:[(0,t.jsxs)(E.Button,{size:"sm",className:"h-7 bg-success/15 px-2.5 text-success hover:bg-success/25",onClick:()=>s.mutate(e.id),disabled:s.isPending,children:[(0,t.jsx)(L.Check,{className:"mr-1 h-3 w-3"}),"Approve"]}),(0,t.jsx)(E.Button,{size:"sm",variant:"outline",className:"h-7 border-destructive/40 px-2.5 text-destructive hover:bg-destructive/10",onClick:()=>i(e.id,e.task_description),disabled:n.isPending,children:(0,t.jsx)(U.X,{className:"h-3 w-3"})})]})]},e.id))})]})}var $=e.i(16047),I=e.i(77379);let F=(0,I.default)("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var q=e.i(79634);let G="pa.alerts.snoozed.",K="pa.alerts.dismissed.",W={error:0,warning:1,info:2};function V(e){return`${e.id}:${e.fingerprint}`}function Q(e){return`${G}${V(e)}`}function Y(e){return`${K}${V(e)}`}let X=new Set,J=new Map,Z=new Set;function ee(e){Z.add(e);let t=t=>{(null===t.key||t.key.startsWith(G)||t.key.startsWith(K))&&e()};return window.addEventListener("storage",t),()=>{Z.delete(e),window.removeEventListener("storage",t)}}function et(){return 0}let es=0;function en(){return es}function ea(e){if(!e.dismissable)return;let t=V(e);"info"===e.severity?X.add(t):"warning"===e.severity&&J.set(t,Date.now()+864e5);try{"info"===e.severity?window.localStorage.setItem(Y(e),"1"):"warning"===e.severity&&window.localStorage.setItem(Q(e),String(J.get(t)))}catch{}for(let e of(es+=1,Z))e()}let er=new Set,ei=0,el=null;function eo(e){return 0===er.size&&(ei=Date.now(),el=setInterval(()=>{for(let e of(ei=Date.now(),er))e()},5e3)),er.add(e),()=>{er.delete(e),0===er.size&&null!==el&&(clearInterval(el),el=null)}}function ed(){return ei}function ec(){return 0}let eu={error:"error",warning:"warning",info:"info"};function em(e,t){if(e===t)return!0;if(!e.startsWith(t))return!1;let s=e.charAt(t.length);return"/"===s||"?"===s||"#"===s}function eh({alert:e,onDismiss:s}){var n;return(0,t.jsx)(q.Alert,{variant:eu[e.severity],children:(0,t.jsxs)("div",{className:"flex w-full items-start gap-2",children:[(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("p",{className:"font-medium leading-snug",children:e.title}),e.description&&(0,t.jsx)("p",{className:"mt-0.5 text-[11px] leading-snug opacity-80",children:e.description}),e.href&&(0,t.jsx)("p",{className:"mt-1",children:(0,t.jsx)(f.default,{href:e.href,className:"text-[11px] font-medium underline underline-offset-2 hover:no-underline",children:em(n=e.href,"/connections")?"Open connection settings":em(n,"/settings")?"Open settings":em(n,"/setup")?"Open setup wizard":"View details"})})]}),e.dismissable&&s&&(0,t.jsx)(E.Button,{variant:"ghost",size:"sm",onClick:()=>s(e),"aria-label":"warning"===e.severity?"Snooze for 24 hours":"Dismiss notification",title:"warning"===e.severity?"Snooze for 24 hours":"Dismiss",children:(0,t.jsx)(U.X,{className:"h-3.5 w-3.5"})})]})})}function ex(){let{alerts:e}=function(){let{data:e,isError:t}=(0,a.useHealth)();(0,s.useSyncExternalStore)(ee,en,et);let n=(0,s.useSyncExternalStore)(eo,ed,ec);return(0,s.useMemo)(()=>{let s=[],a=n?new Date(n).toISOString():"",r=!t,i=!1;if(r){if(e){let t=e.lastTickAt;if(n>0&&"number"==typeof t&&n-t>9e4){i=!0;let e=Math.round((n-t)/1e3);s.push({id:"system.daemon_frozen",severity:"error",title:"Daemon appears frozen",description:`No heartbeat for ${e}s. The event loop may be blocked. Restart the daemon if this persists.`,href:"/health",source:"system",dismissable:!1,detectedAt:a,fingerprint:`stale:${30*Math.floor(e/30)}s`})}e.alerts&&s.push(...e.alerts)}}else s.push({id:"system.daemon_offline",severity:"error",title:"Daemon is offline",description:"The dashboard cannot reach the daemon. Check that the daemon process is running and listening on the expected port.",href:"/health",source:"system",dismissable:!1,detectedAt:a,fingerprint:"offline"});return{alerts:s.filter(e=>!function(e){let t=V(e);if("info"===e.severity&&X.has(t))return!0;if("warning"===e.severity){let e=J.get(t);if(void 0!==e){if(Date.now()<e)return!0;J.delete(t)}}try{if("info"===e.severity)return"1"===window.localStorage.getItem(Y(e));if("warning"===e.severity){let t=window.localStorage.getItem(Q(e));if(!t)return!1;let s=Number(t);if(Number.isNaN(s))return!1;return Date.now()<s}return!1}catch{return!1}}(e)).sort((e,t)=>{let s=W[e.severity]-W[t.severity];return 0!==s?s:t.detectedAt.localeCompare(e.detectedAt)}),daemonOnline:r,daemonFrozen:i}},[e,t,n])}();return(0,t.jsx)(ep,{alerts:e,onDismiss:ea})}function ep({alerts:e,onDismiss:n}){let[a,r]=(0,s.useState)(!1);if(0===e.length)return null;let i=e.filter(e=>"error"===e.severity),l=e.filter(e=>"error"!==e.severity),o=a?l:l.slice(0,Math.max(0,5-i.length)),d=l.length-o.length;return(0,t.jsxs)("section",{"aria-label":"Notifications",className:"space-y-2",children:[i.map(e=>(0,t.jsx)(eh,{alert:e},e.id)),o.map(e=>(0,t.jsx)(eh,{alert:e,onDismiss:n},e.id)),d>0&&(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsx)(E.Button,{variant:"ghost",size:"sm",onClick:()=>r(e=>!e),className:"text-xs text-muted-foreground",children:a?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(F,{className:"mr-1 h-3.5 w-3.5"}),"Show fewer"]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)($.ChevronDown,{className:"mr-1 h-3.5 w-3.5"}),"Show ",d," more"]})})})]})}var ef=e.i(89883);function eg(){let{data:e}=(0,a.useHealth)(),s=e?.integrationModes?.gmail;return s?.mode!=="delegated"||"draft-only"!==s.subTier?null:(0,t.jsxs)(d.Card,{children:[(0,t.jsx)(d.CardHeader,{children:(0,t.jsx)(d.CardTitle,{children:"Drafts awaiting send"})}),(0,t.jsxs)("div",{className:"flex items-start gap-2 text-sm text-muted-foreground",children:[(0,t.jsx)(ef.Mail,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,t.jsxs)("p",{children:["Gmail is delegated in Draft-Only mode — the agent creates drafts and DMs you the link; you finalize sends in Gmail. Open"," ",(0,t.jsx)(f.default,{href:"https://mail.google.com/mail/u/0/#drafts",target:"_blank",rel:"noopener noreferrer",className:"underline underline-offset-2",children:"your drafts folder"})," ","to review."]})]})]})}let ey={success:"text-success",warning:"text-warning",error:"text-destructive"};function ev({label:e,children:s}){return(0,t.jsxs)("div",{className:"flex flex-col gap-1.5 p-5",children:[(0,t.jsx)(d.CardStatLabel,{children:e}),s]})}function ej({health:e,nextCheckLabel:s,nextCheckAtLabel:n,nextCheckActive:a,scheduledNextLabel:r,onRunNow:i,runNowRunning:l,runNowFeedback:o}){let u=e?.status==="ok";return(0,t.jsxs)(d.Card,{className:"grid divide-y divide-border p-0 sm:grid-cols-3 sm:divide-x sm:divide-y-0",children:[(0,t.jsxs)(ev,{label:"Agent",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:(0,c.cn)("inline-block h-2.5 w-2.5 rounded-full",u?"bg-success":"bg-destructive",u&&"animate-pulse")}),(0,t.jsx)("span",{className:"font-display text-xl font-semibold tracking-tight text-foreground",children:e?u?"Operational":"Attention needed":"—"})]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:e?`Up ${(0,c.formatUptime)(e.uptime)} \xb7 ${e.activeSessions} active session${1!==e.activeSessions?"s":""}`:"Waiting for daemon…"})]}),(0,t.jsxs)(ev,{label:"Next check",children:[(0,t.jsx)("p",{className:"font-display text-xl font-semibold tracking-tight text-foreground",children:s}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:[n?`${n} \xb7 `:"",a?"Inside active window":"Outside active window",r?` \xb7 next scheduled ${r}`:""]}),(0,t.jsxs)("div",{className:"mt-1 flex flex-wrap items-center gap-2",children:[(0,t.jsx)(E.Button,{size:"sm",variant:"outline",className:"h-7 px-2.5 text-xs",onClick:i,disabled:l,"aria-busy":l,children:l?"Running…":"Run now"}),(0,t.jsx)("p",{role:"status",className:(0,c.cn)("text-xs",o&&ey[o.tone]),children:o?.message})]})]}),(0,t.jsxs)(ev,{label:"Today",children:[(0,t.jsx)("p",{className:"font-display text-xl font-semibold tracking-tight text-foreground",children:e?(0,c.formatCurrency)(e.todayCostUsd):"—"}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:[e?.todaySessions??0," session",(e?.todaySessions??0)!==1?"s":""," so far today"]})]})]})}var ew=e.i(75314),eb=e.i(15553),eN=e.i(59481),ek=e.i(73405),eC=e.i(82782),eS=e.i(3360),eT=e.i(26181);let e_=[{label:"Knowledge",href:"/knowledge",icon:ew.Brain,description:"All MD — projects, today, weekly, user notes.",status:{kind:"ready"}},{label:"Reading",href:"/reading",icon:eb.BookOpen,description:"Books, highlights, and reading progress.",status:{kind:"ready"}},{label:"Git",href:"/git",icon:eN.GitBranch,description:"Repos and event-driven Triggers.",status:{kind:"soon",label:"Preview"}},{label:"Trip",href:"/trip",icon:ek.Plane,description:"Trips, itineraries, and post-trip notes.",status:{kind:"soon",label:"Soon"},hidden:!0},{label:"Finance",href:"/finance",icon:eC.Wallet,description:"Receipts, budgets, and trends.",status:{kind:"soon",label:"Soon"},hidden:!0},{label:"Health",href:"/health",icon:eS.Heart,description:"Activity, sleep, habits, and journaling.",status:{kind:"skeleton",label:"Skeleton"},hidden:!0}];function eD(){return(0,t.jsxs)("section",{className:"space-y-2.5",children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between",children:[(0,t.jsx)("h2",{className:"text-xs font-semibold uppercase tracking-[0.08em] text-muted-foreground",children:"Your Life"}),(0,t.jsx)("span",{className:"text-[11px] text-muted-foreground/70",children:"Domain lenses over Knowledge"})]}),(0,t.jsx)("div",{className:"grid grid-cols-2 gap-2.5 sm:grid-cols-4",children:e_.filter(e=>!e.hidden).map(e=>(0,t.jsx)(eA,{lens:e},e.href))})]})}function eA({lens:e}){let s=e.icon,n="ready"!==e.status.kind;return(0,t.jsxs)(f.default,{href:e.href,title:e.description,className:(0,c.cn)("group flex items-center gap-2.5 rounded-xl border bg-card px-3.5 py-2.5 shadow-[0_1px_2px_rgb(0_0_0/0.03)] transition-all duration-150","hover:-translate-y-0.5 hover:border-primary/30 hover:shadow-[0_4px_12px_-6px_rgb(0_0_0/0.10)]",n&&"border-dashed"),children:[(0,t.jsx)(s,{className:"h-4 w-4 shrink-0 text-muted-foreground transition-colors group-hover:text-primary"}),(0,t.jsx)("span",{className:"truncate text-sm font-medium text-foreground",children:e.label}),"ready"!==e.status.kind&&(0,t.jsx)("span",{className:"rounded-full bg-muted px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wide text-muted-foreground",children:e.status.label}),(0,t.jsx)(eT.ArrowUpRight,{className:"ml-auto h-3.5 w-3.5 shrink-0 text-muted-foreground/40 transition-colors group-hover:text-primary"})]})}let eR=(0,I.default)("Lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);var eM=e.i(59134);let eO=[{id:"self-learning",badge:"Preview",title:"Self-learning mode tunes its own skills",description:"Let the agent analyze how you actually work and curate small overlays on top of its built-in skills — so the daily-surface (today, schedule, user-profile) gets sharper over time without you editing prompts.",href:"/settings/self-learning",cta:"Enable self-learning"},{id:"voice",title:"Voice messages, transcribed on-device",description:"Send a Telegram voice note or WhatsApp PTT and the daemon transcribes it locally with Whisper before the agent reads it. Audio never leaves your machine.",href:"/settings/infrastructure",cta:"Turn on Voice mode"},{id:"harness",title:"Reuses your CLI agent harness as-is",description:"The brain runs as Claude Code, Codex, or Gemini CLI — the same hooks, skills, MCP servers, and permission model you already use in the terminal apply here.",href:"/settings/models",cta:"Choose a backend"},{id:"process-routing",title:"Different models for different jobs",description:"Route deep work like morning routines and DMs to Sonnet or Opus, and light triage like mail classification to Haiku — per ProcessKey, swappable any time.",href:"/settings/models",cta:"Tune process routing"},{id:"md-memory",title:"Memory is plain Markdown you can read",description:"Every durable thing the agent learns lives in ~/.personal-agent/context/*.md. Open it in your editor, grep it, version it — there is no hidden vector store.",href:"/knowledge",cta:"Browse Knowledge"},{id:"messaging",title:"DM the agent on your favorite app",description:"Pair Slack, Telegram, Discord, or WhatsApp with a single magic phrase and chat with the agent from there. Single-owner only by design — no group chats.",href:"/connections/messaging",cta:"Set up messaging"},{id:"observations",title:"Hourly observations, not reactive polling",description:"Obsidian, Git, Notion, and Calendar changes flow into an observations queue. Once an hour the agent consolidates what changed and decides whether to act.",href:"/activity",cta:"See recent activity"},{id:"routines",title:"Morning, evening, and weekly routines",description:"Cron-driven agents reflect on your day, week, and month automatically — quiet hours respected, day boundary at 04:00 local. Each one's schedule, limits, and rulebook are editable.",href:"/agents",cta:"Open the Agents hub"},{id:"mail",title:"Multi-provider mail with offline FTS5 search",description:"Gmail, Outlook, Yahoo, iCloud, and any IMAP account stream into a single local index. Search instantly, even when you're offline.",href:"/connections/mail",cta:"Connect a mailbox"},{id:"schedule",title:"It schedules itself",description:"Say 'remind me Friday at 4pm' or 'every Monday morning summarize my open PRs' — the agent owns its own schedule rows and wakes itself when the time comes.",href:"/schedule",cta:"View schedule"},{id:"lifestyle",title:"Reading, receipts, trips — all in one chat",description:"Beyond engineering work, the agent tracks books you're reading, receipts you photograph, and trip itineraries you forward to it. Same chat surface, different lenses.",href:"/reading",cta:"Open Reading"},{id:"approvals",title:"Notify and Approve safety tiers",description:"Reads are autonomous; writes are classified Notify (proceed after pinging you) or Approve (require explicit confirmation). Even Allow mode keeps the absolute-block layer.",href:"/settings/safety",cta:"Review safety settings"}];function eB({tips:e=eO}={}){let[n,a]=(0,s.useState)(-1);if((0,s.useEffect)(()=>{0!==e.length&&a(Math.floor(Math.random()*e.length))},[e.length]),0===e.length)return null;let r=n>=0?e[n]:null;return(0,t.jsx)(ez,{tip:r,onCycle:()=>a(t=>(function(e,t){if(e<=0)return -1;if(1===e)return 0;if(t<0||t>=e)return Math.floor(Math.random()*e);let s=Math.floor(Math.random()*(e-1));return s<t?s:s+1})(e.length,t))})}function ez({tip:e,onCycle:s}){return(0,t.jsx)(d.Card,{className:"border-dashed bg-card/60 p-4",children:(0,t.jsxs)("div",{className:"flex items-start gap-3",children:[(0,t.jsx)("div",{className:"mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-primary/10 text-primary",children:(0,t.jsx)(eR,{className:"h-4 w-4","aria-hidden":"true"})}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-[0.08em] text-muted-foreground",children:"Did you know?"}),e?.badge&&(0,t.jsx)("span",{className:"rounded-full bg-primary/10 px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wide text-primary",children:e.badge})]}),(0,t.jsx)("div",{"aria-live":"polite","aria-atomic":"true",children:e?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"mt-1 text-sm font-medium text-foreground",children:e.title}),(0,t.jsx)("p",{className:"mt-1 text-[12px] leading-relaxed text-muted-foreground",children:e.description})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"mt-1 h-4 w-2/3 animate-pulse rounded bg-muted","aria-hidden":"true"}),(0,t.jsx)("p",{className:"mt-2 h-3 w-full animate-pulse rounded bg-muted","aria-hidden":"true"}),(0,t.jsx)("p",{className:"mt-1.5 h-3 w-5/6 animate-pulse rounded bg-muted","aria-hidden":"true"})]})}),e&&(0,t.jsxs)("div",{className:"mt-2.5 flex flex-wrap items-center gap-2",children:[e.href&&(0,t.jsx)(E.Button,{asChild:!0,size:"sm",variant:"outline",className:"h-7 px-2.5 text-xs",children:(0,t.jsxs)(f.default,{href:e.href,children:[e.cta??"Learn more",(0,t.jsx)(g.ArrowRight,{className:"ml-1 h-3 w-3","aria-hidden":"true"})]})}),s&&(0,t.jsxs)(E.Button,{size:"sm",variant:"ghost",className:"h-7 px-2 text-xs text-muted-foreground",onClick:s,"aria-label":"Show another tip",children:[(0,t.jsx)(eM.RefreshCw,{className:"mr-1 h-3 w-3","aria-hidden":"true"}),"Next tip"]})]})]})]})})}var eE=e.i(49785),eH=e.i(39982),eL=e.i(95486);e.s(["default",0,function(){let e=(0,n.useRouter)(),{data:d,isLoading:u}=(0,a.useHealth)(),{data:m}=(0,r.useSetupStatus)(),{data:h}=(0,i.useQuery)({queryKey:["next-check"],queryFn:()=>l.api.get("/dashboard/next-check"),refetchInterval:3e4}),{data:x}=(0,o.useScheduleNext)(),f=(0,eL.useQueryClient)(),[g,y]=(0,s.useState)("idle"),[v,j]=(0,s.useState)(null),w=(0,s.useRef)(0),b=(0,s.useRef)(null);(0,s.useEffect)(()=>{m?.needsSetup&&e.push("/setup")},[m?.needsSetup,e]);let N=h?.nextRunAt?(0,c.formatRelativeTime)(h.nextRunAt):"Disabled",C=h?.nextRunAt?(0,c.formatShortDateTime)(h.nextRunAt):null,S=(0,z.useConfirm)(),T=(0,s.useCallback)(()=>{w.current+=1,null!==b.current&&(window.clearTimeout(b.current),b.current=null)},[]);(0,s.useEffect)(()=>T,[T]);let _=(0,s.useCallback)(async()=>{await f.refetchQueries({queryKey:["next-check"],type:"active"})},[f]),A=(0,s.useCallback)(async(e,t)=>{await _();try{let s=await l.api.get("/events",{type:"routine.activity_scan",days:"1",page:1,limit:1});if(t!==w.current||function(e,t){let s=e[0];if(!s)return!1;let n=s.completed_at??s.started_at;return(0,c.parseUtcDate)(n).getTime()>=t}(s.events,e))return}catch{}t!==w.current||Date.now()-e>=6e4||(b.current=window.setTimeout(()=>{A(e,t)},1500))},[_]),R=async()=>{if(!await S({title:"Trigger activity scan now?",description:"This will run the reviewable observation queue immediately instead of waiting for the next scheduled check.",confirmLabel:"Run now"}))return;T(),y("running");let e=3e3;try{let e=Date.now(),t=await l.api.post("/agent/run-now",{reason:"dashboard"});if(j(function(e){if("queued"===e.status)return{tone:"success",message:"Queued successfully."};switch(e.reason){case"morning_routine_active":return{tone:"warning",message:"Skipped: morning routine is still running."};case"activity_scan_in_progress":return{tone:"warning",message:"Skipped: a previous activity scan is still running."};case"below_threshold":return{tone:"warning",message:"Skipped: there were no reviewable pending observations."};default:return{tone:"warning",message:"Skipped: activity scan was not queued."}}}(t)),await _(),"queued"===t.status){w.current+=1;let t=w.current;A(e,t)}}catch{j({tone:"error",message:"Failed to queue."}),e=1e4}finally{y("idle"),setTimeout(()=>j(null),e)}};return(0,t.jsxs)("div",{className:"mx-auto w-full max-w-7xl space-y-8 p-6",children:[(0,t.jsx)(eH.PageHeader,{title:"Overview",description:"Your agent at a glance — current status, today's activity, and anything that needs you."}),(0,t.jsx)(ex,{}),(0,t.jsx)(P,{}),u?(0,t.jsx)(eE.CardSkeleton,{count:3}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(ej,{health:d,nextCheckLabel:N,nextCheckAtLabel:C,nextCheckActive:h?.active??!1,scheduledNextLabel:x?.next?(0,c.formatShortDateTime)(x.next.scheduled_for):null,onRunNow:R,runNowRunning:"running"===g,runNowFeedback:v}),(0,t.jsxs)("div",{className:"grid gap-6 lg:grid-cols-3",children:[(0,t.jsx)("div",{className:"space-y-6 lg:col-span-2",children:(0,t.jsx)(k,{})}),(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsx)(D,{}),(0,t.jsx)(eg,{}),(0,t.jsx)(p,{health:d}),(0,t.jsx)(O,{})]})]}),(0,t.jsx)(eD,{}),(0,t.jsx)(eB,{})]})]})}],11457)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,78406,e=>{"use strict";let a=(0,e.i(77379).default)("LockOpen",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 9.9-1",key:"1mm8w8"}]]);e.s(["Unlock",0,a],78406)},16995,e=>{"use strict";var a=e.i(54710),s=e.i(59546),t=e.i(76610),r=e.i(72740),n=e.i(75750),l=e.i(34416),i=e.i(48467),o=e.i(20014),d=e.i(8652),c=e.i(10427),u=e.i(65268),p=e.i(76176),m=e.i(57415),h=e.i(14260),x=e.i(95486);let g=e=>["backend-api-key",e];e.i(18446);var f=e.i(28619);function v(e,a){switch((0,f.defaultApiKeyProvider)(e)){case"anthropic":return(0,f.isPlausibleAnthropicApiKey)(a);case"openai":return(0,f.isPlausibleOpenAiApiKey)(a);case"google":return(0,f.isPlausibleGeminiApiKey)(a);default:return!1}}function y(e){switch((0,f.defaultApiKeyProvider)(e)){case"anthropic":return"Anthropic key — starts with `sk-ant-…`.";case"openai":return"OpenAI key — starts with `sk-…` (not `sk-ant-…`).";case"google":return"Google API key — starts with `AIza…`, 39 chars total.";default:return"API key"}}let j={anthropic:"Anthropic API key",bedrock:"Amazon Bedrock",vertex:"Google Vertex AI",foundry:"Microsoft Foundry",openai:"OpenAI API key","azure-openai":"Azure OpenAI",google:"Google API key","gemini-vertex":"Google Vertex AI","opencode-server":"OpenCode server"},b={anthropic:"Direct Anthropic API key (`sk-ant-…`). Stored in the OS keychain and mirrored to `ANTHROPIC_API_KEY`.",bedrock:"Anthropic models on Amazon Bedrock. Sets `CLAUDE_CODE_USE_BEDROCK=1` plus AWS credentials. Required: `AWS_REGION`.",vertex:"Anthropic models on Google Vertex AI. Sets `CLAUDE_CODE_USE_VERTEX=1` plus GCP project / region. Auth via Application Default Credentials or a service-account key file.",foundry:"Anthropic models on Microsoft Foundry. Sets `CLAUDE_CODE_USE_FOUNDRY=1` plus the Foundry resource (or full base URL). API key optional — falls back to Azure DefaultAzureCredential (`az login`).",openai:"OpenAI API key (`sk-…`). Stored in the keychain and mirrored to `OPENAI_API_KEY`.","azure-openai":"Codex CLI on Azure OpenAI. Daemon writes a managed `config.toml` to `<dataDir>/codex-home/` and points `CODEX_HOME` there — your personal `~/.codex/` is untouched. Sets `AZURE_OPENAI_API_KEY`. **Important:** the daemon spawns codex with `--model <id>` from the model registry, which Codex treats as the deployment name on Azure. Name your Azure deployments to match the model IDs shown on the /settings/models page (e.g. `gpt-5-codex`).",google:"Direct Gemini API key (`AIza…`). Mirrored to `GEMINI_API_KEY` + `GOOGLE_API_KEY`.","gemini-vertex":"Gemini on Google Vertex AI. Sets `GOOGLE_GENAI_USE_VERTEXAI=true` plus GCP project / location. Auth via ADC, a service-account key file, or a Vertex API key.","opencode-server":"OpenCode server authentication. Stores the server URL, username, and optional password; the daemon mirrors username/password into OpenCode server env vars."};function k(e){let a=f.RECOMMENDED_PINNED_MODELS_BY_PROVIDER[e];return{defaultOpusModel:a.defaultOpusModel,defaultSonnetModel:a.defaultSonnetModel,defaultHaikuModel:a.defaultHaikuModel}}let C={useMantle:!1,mantleBaseUrl:"",skipMantleAuth:!1};function N(e){switch(e){case"anthropic":return{provider:"anthropic",apiKey:""};case"bedrock":return w("access_key");case"vertex":return{provider:"vertex",projectId:"",region:"",credentialsFile:"",vertexBaseUrl:"",...k("vertex")};case"foundry":return{provider:"foundry",endpointKind:"resource",resource:"",baseUrl:"",apiKey:"",...k("foundry")};case"openai":return{provider:"openai",apiKey:""};case"azure-openai":return{provider:"azure-openai",resource:"",apiKey:"",apiVersion:f.DEFAULT_AZURE_OPENAI_API_VERSION,deploymentName:""};case"google":return{provider:"google",apiKey:""};case"gemini-vertex":return A("adc");case"opencode-server":return{provider:"opencode-server",baseUrl:"http://127.0.0.1:4096",username:"opencode",password:""}}}function w(e){let a={awsRegion:"",bedrockBaseUrl:"",...C,...k("bedrock")};switch(e){case"access_key":return{provider:"bedrock",authMode:"access_key",awsAccessKeyId:"",awsSecretAccessKey:"",awsSessionToken:"",...a};case"bearer_token":return{provider:"bedrock",authMode:"bearer_token",awsBearerTokenBedrock:"",...a};case"profile":return{provider:"bedrock",authMode:"profile",awsProfile:"",...a}}}function A(e){let a={projectId:"",location:""};switch(e){case"adc":return{provider:"gemini-vertex",authMode:"adc",...a};case"service_account":return{provider:"gemini-vertex",authMode:"service_account",credentialsFile:"",...a};case"api_key":return{provider:"gemini-vertex",authMode:"api_key",apiKey:"",...a}}}function I(e){let a={};return e.defaultOpusModel.trim()&&(a.defaultOpusModel=e.defaultOpusModel.trim()),e.defaultSonnetModel.trim()&&(a.defaultSonnetModel=e.defaultSonnetModel.trim()),e.defaultHaikuModel.trim()&&(a.defaultHaikuModel=e.defaultHaikuModel.trim()),a}function S(e){switch(e.provider){case"anthropic":if(!e.apiKey.trim())return null;return{provider:"anthropic",apiKey:e.apiKey.trim()};case"bedrock":{let a=e.awsRegion.trim();if(!a)return null;let s=e.bedrockBaseUrl.trim(),t=s?{bedrockBaseUrl:s}:{},r={...e.useMantle?{useMantle:!0}:{},...e.mantleBaseUrl.trim()?{mantleBaseUrl:e.mantleBaseUrl.trim()}:{},...e.skipMantleAuth?{skipMantleAuth:!0}:{}},n=I(e);switch(e.authMode){case"access_key":if(!e.awsAccessKeyId.trim()||!e.awsSecretAccessKey.trim())break;return{provider:"bedrock",authMode:"access_key",awsAccessKeyId:e.awsAccessKeyId.trim(),awsSecretAccessKey:e.awsSecretAccessKey.trim(),...e.awsSessionToken.trim()?{awsSessionToken:e.awsSessionToken.trim()}:{},awsRegion:a,...t,...r,...n};case"bearer_token":if(!e.awsBearerTokenBedrock.trim())break;return{provider:"bedrock",authMode:"bearer_token",awsBearerTokenBedrock:e.awsBearerTokenBedrock.trim(),awsRegion:a,...t,...r,...n};case"profile":if(!e.awsProfile.trim())break;return{provider:"bedrock",authMode:"profile",awsProfile:e.awsProfile.trim(),awsRegion:a,...t,...r,...n}}return null}case"vertex":if(!e.projectId.trim()||!e.region.trim())return null;return{provider:"vertex",projectId:e.projectId.trim(),region:e.region.trim(),...e.credentialsFile.trim()?{credentialsFile:e.credentialsFile.trim()}:{},...e.vertexBaseUrl.trim()?{vertexBaseUrl:e.vertexBaseUrl.trim()}:{},...I(e)};case"foundry":{let a=e.resource.trim(),s=e.baseUrl.trim(),t=e.apiKey.trim(),r=I(e);if("resource"===e.endpointKind){if(!a)return null;return{provider:"foundry",resource:a,...t?{apiKey:t}:{},...r}}if(!s)return null;return{provider:"foundry",baseUrl:s,...t?{apiKey:t}:{},...r}}case"openai":if(!e.apiKey.trim())return null;return{provider:"openai",apiKey:e.apiKey.trim()};case"azure-openai":{let a=e.resource.trim(),s=e.apiKey.trim();if(!a||!s)return null;return{provider:"azure-openai",resource:a,apiKey:s,...e.apiVersion.trim()?{apiVersion:e.apiVersion.trim()}:{},...e.deploymentName.trim()?{deploymentName:e.deploymentName.trim()}:{}}}case"google":if(!e.apiKey.trim())return null;return{provider:"google",apiKey:e.apiKey.trim()};case"gemini-vertex":{let a=e.projectId.trim(),s=e.location.trim();if(!a||!s)return null;switch(e.authMode){case"adc":return{provider:"gemini-vertex",authMode:"adc",projectId:a,location:s};case"service_account":if(!e.credentialsFile.trim())break;return{provider:"gemini-vertex",authMode:"service_account",projectId:a,location:s,credentialsFile:e.credentialsFile.trim()};case"api_key":if(!e.apiKey.trim())break;return{provider:"gemini-vertex",authMode:"api_key",projectId:a,location:s,apiKey:e.apiKey.trim()}}return null}case"opencode-server":{let a=e.baseUrl.trim(),s=e.username.trim(),t=e.password.trim();if(!a||!s)return null;return{provider:"opencode-server",baseUrl:a,username:s,...t?{password:t}:{}}}}}function E(e){return"anthropic"===e||"openai"===e||"google"===e}function _({backendId:e,draft:s,onChange:t,disabled:r}){switch(s.provider){case"anthropic":case"openai":case"google":return(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)(d.Input,{type:"password",autoComplete:"off",spellCheck:!1,placeholder:y(e),value:s.apiKey,onChange:e=>t({...s,apiKey:e.target.value}),disabled:r,"aria-label":`${j[s.provider]} API key`}),(0,a.jsx)("p",{className:"text-[11px] text-muted-foreground",children:y(e)})]});case"bedrock":return(0,a.jsx)(P,{draft:s,onChange:t,disabled:r});case"opencode-server":return(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(O,{label:"Server URL",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,placeholder:"http://127.0.0.1:4096",value:s.baseUrl,onChange:e=>t({...s,baseUrl:e.target.value}),disabled:r})}),(0,a.jsxs)("div",{className:"grid gap-2 sm:grid-cols-2",children:[(0,a.jsx)(O,{label:"Username",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,placeholder:"opencode",value:s.username,onChange:e=>t({...s,username:e.target.value}),disabled:r})}),(0,a.jsx)(O,{label:"Password (optional)",children:(0,a.jsx)(d.Input,{type:"password",autoComplete:"off",spellCheck:!1,value:s.password,onChange:e=>t({...s,password:e.target.value}),disabled:r})})]})]});case"vertex":return(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"grid gap-2 sm:grid-cols-2",children:[(0,a.jsx)(O,{label:"GCP project id",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,placeholder:"my-gcp-project",value:s.projectId,onChange:e=>t({...s,projectId:e.target.value}),disabled:r})}),(0,a.jsx)(O,{label:"Vertex region",hint:"`global`, a multi-region (`us`, `eu`), or a region (e.g. `us-east5`).",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,placeholder:"us-east5",value:s.region,onChange:e=>t({...s,region:e.target.value}),disabled:r})})]}),(0,a.jsx)(O,{label:"Service account key file path (optional)",hint:"Absolute path to a service-account JSON file. Leave blank to use Application Default Credentials (`gcloud auth application-default login`).",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,placeholder:"/Users/me/keys/sa.json",value:s.credentialsFile,onChange:e=>t({...s,credentialsFile:e.target.value}),disabled:r})}),(0,a.jsx)(O,{label:"Vertex base URL (optional)",hint:"Override for custom endpoints / gateways.",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,placeholder:"https://aiplatform.googleapis.com",value:s.vertexBaseUrl,onChange:e=>t({...s,vertexBaseUrl:e.target.value}),disabled:r})}),(0,a.jsx)(M,{draft:s,onChange:t,disabled:r})]});case"foundry":return(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("span",{className:"text-xs font-medium text-foreground",children:"Endpoint"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsxs)(c.Select,{value:s.endpointKind,onValueChange:e=>t({...s,endpointKind:e}),children:[(0,a.jsx)(c.SelectTrigger,{className:"w-44",children:(0,a.jsx)(c.SelectValue,{})}),(0,a.jsxs)(c.SelectContent,{children:[(0,a.jsx)(c.SelectItem,{value:"resource",children:"Resource name"}),(0,a.jsx)(c.SelectItem,{value:"base_url",children:"Full base URL"})]})]}),"resource"===s.endpointKind?(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,placeholder:"my-foundry-resource",value:s.resource,onChange:e=>t({...s,resource:e.target.value}),disabled:r}):(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,placeholder:"https://my-foundry-resource.services.ai.azure.com/anthropic",value:s.baseUrl,onChange:e=>t({...s,baseUrl:e.target.value}),disabled:r})]}),(0,a.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Resource name is the simpler form; base URL is for custom gateways. Set exactly one."})]}),(0,a.jsx)(O,{label:"Foundry API key (optional)",hint:"Leave blank to use Azure DefaultAzureCredential (`az login`, managed identity, etc.).",children:(0,a.jsx)(d.Input,{type:"password",autoComplete:"off",spellCheck:!1,value:s.apiKey,onChange:e=>t({...s,apiKey:e.target.value}),disabled:r})}),(0,a.jsx)(M,{draft:s,onChange:t,disabled:r})]});case"azure-openai":return(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"rounded-md border border-warning/40 bg-warning/5 p-2 text-[11px] text-warning",children:[(0,a.jsx)("strong",{children:"Deployment-name alignment required."})," The daemon spawns codex with ",(0,a.jsx)("code",{children:"--model <id>"})," from the process-routing registry, which Codex treats as the Azure deployment name. Name your Azure deployments to match the model IDs configured on the ",(0,a.jsx)("code",{children:"/settings/models"})," ","page (e.g. ",(0,a.jsx)("code",{children:"gpt-5-codex"}),"). Renaming the deployment in Azure is the supported fix."]}),(0,a.jsxs)("div",{className:"grid gap-2 sm:grid-cols-2",children:[(0,a.jsx)(O,{label:"Azure resource name",hint:"The Foundry/Azure-OpenAI resource name (subdomain of `*.openai.azure.com`).",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,placeholder:"my-azure-resource",value:s.resource,onChange:e=>t({...s,resource:e.target.value}),disabled:r})}),(0,a.jsx)(O,{label:"Azure OpenAI API key",children:(0,a.jsx)(d.Input,{type:"password",autoComplete:"off",spellCheck:!1,value:s.apiKey,onChange:e=>t({...s,apiKey:e.target.value}),disabled:r})}),(0,a.jsx)(O,{label:"API version",hint:"Azure OpenAI API version (Codex uses the `responses` wire API).",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,value:s.apiVersion,onChange:e=>t({...s,apiVersion:e.target.value}),disabled:r})}),(0,a.jsx)(O,{label:"Default deployment name (optional)",hint:"Falls back when the daemon does not pass --model. Most invocations override this via --model from the routing registry — see warning above.",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,placeholder:"gpt-5-codex",value:s.deploymentName,onChange:e=>t({...s,deploymentName:e.target.value}),disabled:r})})]})]});case"gemini-vertex":return(0,a.jsx)(K,{draft:s,onChange:t,disabled:r})}}function P({draft:e,onChange:s,disabled:t}){return(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("span",{className:"text-xs font-medium text-foreground",children:"AWS authentication"}),(0,a.jsxs)(c.Select,{value:e.authMode,onValueChange:a=>{a!==e.authMode&&s(w(a))},children:[(0,a.jsx)(c.SelectTrigger,{className:"w-full",children:(0,a.jsx)(c.SelectValue,{})}),(0,a.jsxs)(c.SelectContent,{children:[(0,a.jsx)(c.SelectItem,{value:"access_key",children:"Access key id + secret"}),(0,a.jsx)(c.SelectItem,{value:"bearer_token",children:"Bedrock API key (`AWS_BEARER_TOKEN_BEDROCK`)"}),(0,a.jsx)(c.SelectItem,{value:"profile",children:"AWS profile (`~/.aws/config`)"})]})]})]}),"access_key"===e.authMode&&(0,a.jsxs)("div",{className:"grid gap-2 sm:grid-cols-2",children:[(0,a.jsx)(O,{label:"AWS access key id",hint:"`AKIA…` for IAM users; `ASIA…` for STS / Identity Center.",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,placeholder:"AKIAIOSFODNN7EXAMPLE",value:e.awsAccessKeyId,onChange:a=>s({...e,awsAccessKeyId:a.target.value}),disabled:t})}),(0,a.jsx)(O,{label:"AWS secret access key",children:(0,a.jsx)(d.Input,{type:"password",autoComplete:"off",spellCheck:!1,value:e.awsSecretAccessKey,onChange:a=>s({...e,awsSecretAccessKey:a.target.value}),disabled:t})}),(0,a.jsx)(O,{label:"AWS session token (optional)",hint:"Required for STS / Identity Center temporary credentials.",children:(0,a.jsx)(d.Input,{type:"password",autoComplete:"off",spellCheck:!1,value:e.awsSessionToken,onChange:a=>s({...e,awsSessionToken:a.target.value}),disabled:t})})]}),"bearer_token"===e.authMode&&(0,a.jsx)(O,{label:"Bedrock API key",hint:"See AWS docs: 'Bedrock API keys' for how to issue one.",children:(0,a.jsx)(d.Input,{type:"password",autoComplete:"off",spellCheck:!1,value:e.awsBearerTokenBedrock,onChange:a=>s({...e,awsBearerTokenBedrock:a.target.value}),disabled:t})}),"profile"===e.authMode&&(0,a.jsx)(O,{label:"AWS profile name",hint:"Resolves credentials from `~/.aws/config` and `~/.aws/credentials`.",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,placeholder:"default",value:e.awsProfile,onChange:a=>s({...e,awsProfile:a.target.value}),disabled:t})}),(0,a.jsxs)("div",{className:"grid gap-2 sm:grid-cols-2",children:[(0,a.jsx)(O,{label:"AWS region",hint:"Required by Claude Code regardless of auth mode.",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,placeholder:"us-east-1",value:e.awsRegion,onChange:a=>s({...e,awsRegion:a.target.value}),disabled:t})}),(0,a.jsx)(O,{label:"Bedrock base URL (optional)",hint:"Override for VPC endpoints / gateways.",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,placeholder:"https://bedrock-runtime.us-east-1.amazonaws.com",value:e.bedrockBaseUrl,onChange:a=>s({...e,bedrockBaseUrl:a.target.value}),disabled:t})})]}),(0,a.jsxs)("details",{className:"rounded-md border border-border p-2 text-xs",children:[(0,a.jsx)("summary",{className:"cursor-pointer font-medium text-foreground",children:"Mantle endpoint (advanced)"}),(0,a.jsxs)("div",{className:"mt-2 space-y-2",children:[(0,a.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Mantle is an alternate Bedrock endpoint that uses the native Anthropic API shape. Setting this alongside the standard Invoke API lets Claude Code route per model. Most operators should leave this off."}),(0,a.jsxs)("label",{className:"flex items-center gap-2 text-xs text-foreground",children:[(0,a.jsx)("input",{type:"checkbox",checked:e.useMantle,onChange:a=>s({...e,useMantle:a.target.checked}),disabled:t}),"Enable Mantle endpoint (`CLAUDE_CODE_USE_MANTLE=1`)"]}),(0,a.jsx)(O,{label:"Mantle base URL (optional)",hint:"Override the default Mantle endpoint URL.",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,value:e.mantleBaseUrl,onChange:a=>s({...e,mantleBaseUrl:a.target.value}),disabled:t||!e.useMantle})}),(0,a.jsxs)("label",{className:"flex items-center gap-2 text-xs text-foreground",children:[(0,a.jsx)("input",{type:"checkbox",checked:e.skipMantleAuth,onChange:a=>s({...e,skipMantleAuth:a.target.checked}),disabled:t||!e.useMantle}),"Skip client-side auth (gateway injects credentials)"]})]})]}),(0,a.jsx)(M,{draft:e,onChange:s,disabled:t})]})}function M({draft:e,onChange:s,disabled:t}){let r=a=>{s({...e,...a})};return(0,a.jsxs)("details",{className:"rounded-md border border-border p-2 text-xs",children:[(0,a.jsx)("summary",{className:"cursor-pointer font-medium text-foreground",children:"Pinned model IDs (recommended)"}),(0,a.jsxs)("div",{className:"mt-2 space-y-2",children:[(0,a.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Pinning prevents the `sonnet`/`opus`/`haiku` aliases from resolving to a model not yet enabled in your cloud account. Pre-filled with Anthropic's recommended defaults — edit only if your account is on a different model tier."}),(0,a.jsx)(O,{label:"Opus model ID (`ANTHROPIC_DEFAULT_OPUS_MODEL`)",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,value:e.defaultOpusModel,onChange:e=>r({defaultOpusModel:e.target.value}),disabled:t})}),(0,a.jsx)(O,{label:"Sonnet model ID (`ANTHROPIC_DEFAULT_SONNET_MODEL`)",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,value:e.defaultSonnetModel,onChange:e=>r({defaultSonnetModel:e.target.value}),disabled:t})}),(0,a.jsx)(O,{label:"Haiku model ID (`ANTHROPIC_DEFAULT_HAIKU_MODEL`)",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,value:e.defaultHaikuModel,onChange:e=>r({defaultHaikuModel:e.target.value}),disabled:t})})]})]})}function K({draft:e,onChange:s,disabled:t}){return(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"grid gap-2 sm:grid-cols-2",children:[(0,a.jsx)(O,{label:"GCP project id",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,placeholder:"my-gcp-project",value:e.projectId,onChange:a=>s({...e,projectId:a.target.value}),disabled:t})}),(0,a.jsx)(O,{label:"GCP location",hint:"e.g. `us-central1`",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,placeholder:"us-central1",value:e.location,onChange:a=>s({...e,location:a.target.value}),disabled:t})})]}),(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("span",{className:"text-xs font-medium text-foreground",children:"Authentication"}),(0,a.jsxs)(c.Select,{value:e.authMode,onValueChange:a=>{a!==e.authMode&&s(A(a))},children:[(0,a.jsx)(c.SelectTrigger,{className:"w-full",children:(0,a.jsx)(c.SelectValue,{})}),(0,a.jsxs)(c.SelectContent,{children:[(0,a.jsx)(c.SelectItem,{value:"adc",children:"Application Default Credentials (`gcloud auth`)"}),(0,a.jsx)(c.SelectItem,{value:"service_account",children:"Service-account JSON file path"}),(0,a.jsx)(c.SelectItem,{value:"api_key",children:"Vertex API key"})]})]})]}),"service_account"===e.authMode&&(0,a.jsx)(O,{label:"Service account key file path",children:(0,a.jsx)(d.Input,{autoComplete:"off",spellCheck:!1,placeholder:"/Users/me/keys/sa.json",value:e.credentialsFile,onChange:a=>s({...e,credentialsFile:a.target.value}),disabled:t})}),"api_key"===e.authMode&&(0,a.jsx)(O,{label:"Vertex API key",hint:"`AIza…`. Distinct from a direct Gemini API key — it goes to GOOGLE_API_KEY only and routes through Vertex.",children:(0,a.jsx)(d.Input,{type:"password",autoComplete:"off",spellCheck:!1,value:e.apiKey,onChange:a=>s({...e,apiKey:a.target.value}),disabled:t})})]})}function O({label:e,hint:s,children:t}){return(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("span",{className:"text-xs font-medium text-foreground",children:e}),t,s&&(0,a.jsx)("p",{className:"text-[11px] text-muted-foreground",children:s})]})}e.s(["BackendApiKeyPanel",0,function({backendId:e,onToast:d}){let k,C,{data:w,isLoading:A,error:I}=(0,h.useQuery)({queryKey:g(e),queryFn:()=>u.api.get(`/backends/${e}/api-key`),staleTime:3e4}),P=(k=(0,x.useQueryClient)(),(0,m.useMutation)({mutationFn:a=>u.api.put(`/backends/${e}/api-key`,a),onSuccess:()=>{k.invalidateQueries({queryKey:g(e)}),k.invalidateQueries({queryKey:["backends"]})}})),M=(C=(0,x.useQueryClient)(),(0,m.useMutation)({mutationFn:()=>u.api.delete(`/backends/${e}/api-key`),onSuccess:()=>{C.invalidateQueries({queryKey:g(e)}),C.invalidateQueries({queryKey:["backends"]})}})),K=(0,l.useMemo)(()=>w?.availableProviders??function(e){switch(e){case"claude":return["anthropic","bedrock","vertex","foundry"];case"codex":return["openai","azure-openai"];case"gemini":return["google","gemini-vertex"];case"opencode":return["opencode-server"]}}(e),[w?.availableProviders,e]),O=K.length>1,[B,D]=(0,l.useState)(null),R=B??w?.provider??K[0],[L,U]=(0,l.useState)(()=>N(R)),[T,z]=(0,l.useState)(null),V=w?.source??"none",F=w?.configured??!1,$=w?.provider??null,G=w?.envVarNames??function(e){switch(e){case"claude":return["ANTHROPIC_API_KEY"];case"codex":return["OPENAI_API_KEY"];case"gemini":return["GEMINI_API_KEY","GOOGLE_API_KEY"];case"opencode":return["OPENCODE_SERVER_PASSWORD"]}}(e),H=P.isPending,W=M.isPending,Y=async()=>{let a;if(z(null),E(R)){let s="apiKey"in L?L.apiKey.trim():"";if(!v(e,s))return void z({kind:"error",message:y(e)});a={apiKey:s}}else{let e=S(L);if(!e)return void z({kind:"error",message:"Fill in all required fields for this provider."});a={config:e}}try{let s=await P.mutateAsync(a);U(N(R));let t=s.auth?.detail??null,r=s.provider?j[s.provider]:p.BACKEND_PROVIDER_LABELS[e];if(s.auth?.ok){let e=t?`Saved (${r}) — ${t}`:`Saved (${r}).`;z({kind:"success",message:e}),d?.("success",`${r} configured.`)}else{let e=t?`Saved (${r}), but the provider rejected it — ${t}`:`Saved (${r}), but the provider probe did not succeed.`;z({kind:"error",message:e}),d?.("error",e)}}catch(a){let e=a instanceof u.ApiError||a instanceof Error?a.message:"Failed to save provider config";z({kind:"error",message:e}),d?.("error",e)}},q=async()=>{z(null);try{let a=await M.mutateAsync(),s="shell"===a.source?"Cleared from keychain — falling back to the shell-set env var.":"Cleared from keychain — backend will use CLI / OAuth auth.";z({kind:"success",message:s}),d?.("success",`${p.BACKEND_PROVIDER_LABELS[e]} provider config cleared.`)}catch(a){let e=a instanceof u.ApiError||a instanceof Error?a.message:"Failed to clear provider config";z({kind:"error",message:e}),d?.("error",e)}},Q=E(R)?function(e){if(e.saving)return!1;let a=e.draftValue.trim();return!!a&&v(e.backendId,a)}({backendId:e,draftValue:"apiKey"in L?L.apiKey:"",saving:H}):function(e){if(e.saving)return!1;let a=S(e.draft);return!!a&&null===(0,f.validateBackendApiKeyConfigFormat)(e.backendId,a)}({backendId:e,draft:L,saving:H});return(0,a.jsxs)("div",{className:"space-y-3 rounded-xl border border-border bg-card p-4 shadow-sm",children:[(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsx)(t.KeyRound,{className:"h-4 w-4 text-muted-foreground"}),(0,a.jsxs)("h3",{className:"text-sm font-semibold text-foreground",children:["Provider auth",(0,a.jsx)("span",{className:"ml-2 text-xs font-normal text-muted-foreground",children:"(optional)"})]}),F&&(0,a.jsx)(i.Badge,{variant:"keychain"===V?"green":"gray",children:"keychain"===V?`Saved${$?` (${j[$]})`:""}`:"From shell"})]}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:A?"Loading…":I?"Could not read provider config from the daemon.":function(e){switch(e){case"keychain":return"API key configured (stored in OS keychain).";case"shell":return"Using API key from shell environment. Save a key here to override.";case"none":return"No API key configured. Falling back to CLI login / OAuth."}}(V)}),(0,a.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Stored in the OS keychain. Leave blank to skip — the daemon falls back to local CLI / OAuth auth or your shell-set env vars."})]}),O&&(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("label",{htmlFor:`${e}-provider`,className:"text-xs font-medium text-foreground",children:"Provider"}),(0,a.jsxs)(c.Select,{value:R,onValueChange:e=>{e===R||K.includes(e)&&(D(e),U(N(e)),z(null))},children:[(0,a.jsx)(c.SelectTrigger,{id:`${e}-provider`,className:"w-full",children:(0,a.jsx)(c.SelectValue,{})}),(0,a.jsx)(c.SelectContent,{children:K.map(e=>(0,a.jsx)(c.SelectItem,{value:e,children:j[e]},e))})]}),(0,a.jsx)("p",{className:"text-[11px] text-muted-foreground",children:b[R]})]}),(0,a.jsx)(_,{backendId:e,draft:L,onChange:U,disabled:H||W}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsxs)(o.Button,{size:"sm",onClick:()=>{Y()},disabled:!Q,className:"gap-2",children:[H?(0,a.jsx)(r.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):null,F&&"keychain"===V?"Update provider":"Save provider"]}),"keychain"===V&&(0,a.jsxs)(o.Button,{size:"sm",variant:"outline",onClick:()=>{q()},disabled:H||W,className:"gap-2",children:[W?(0,a.jsx)(r.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):null,"Clear"]}),!O&&(0,a.jsxs)("span",{className:"text-[11px] text-muted-foreground",children:["Sets ",(0,a.jsx)("code",{className:"rounded bg-muted px-1",children:G.join(" / ")})]})]}),T&&(0,a.jsxs)("div",{role:"status",className:`flex items-start gap-2 rounded-md border p-2 text-xs ${"success"===T.kind?"border-success/30 bg-success/5 text-success":"border-destructive/30 bg-destructive/5 text-destructive"}`,children:["success"===T.kind?(0,a.jsx)(s.CheckCircle2,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}):(0,a.jsx)(n.XCircle,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),(0,a.jsx)("span",{children:T.message})]})]})}],16995)},17975,6131,e=>{"use strict";var a=e.i(54710),s=e.i(59546);let t=(0,e.i(77379).default)("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);var r=e.i(72740),n=e.i(12077),l=e.i(75750),i=e.i(48467),o=e.i(20014),d=e.i(81471),c=e.i(76176),u=e.i(10628);let p={ok:{variant:"green",label:"OK",icon:"✅"},expiring_soon:{variant:"amber",label:"Expiring Soon",icon:"🟡"},expired:{variant:"red",label:"Expired",icon:"🔴"},missing:{variant:"gray",label:"Missing",icon:"⚫"},recovering:{variant:"blue",label:"Recovering",icon:"🔄"},unknown:{variant:"gray",label:"Unknown",icon:"❓"}};function m({status:e,detail:s,firstExpiredAt:t,lastSuccessAt:n,notificationCount:l}){let o=e in p?e:"error"===e?"expired":"unknown",c=p[o],h="expired"===o||"missing"===o,x=h&&t?` (${function(e){let a=Math.floor((Date.now()-(0,d.parseUtcDate)(e).getTime())/6e4);if(a<60)return`${a}m`;let s=Math.floor(a/60);if(s<24)return`${s}h`;let t=Math.floor(s/24);return`${t}d`}(t)})`:"",g=[];return g.push(`Status: ${c.label}`),s&&g.push(`Detail: ${s}`),t&&h&&g.push(`Failed since: ${(0,d.formatRelativeTime)(t)}`),n&&g.push(`Last success: ${(0,d.formatRelativeTime)(n)}`),l>0&&g.push(`Notifications sent: ${l}`),(0,a.jsxs)(u.Tooltip,{children:[(0,a.jsx)(u.TooltipTrigger,{asChild:!0,children:(0,a.jsx)("span",{children:(0,a.jsxs)(i.Badge,{variant:c.variant,className:"gap-1",children:["recovering"===o?(0,a.jsx)(r.Loader2,{className:"h-3 w-3 animate-spin"}):null,"Auth: ",c.label,x]})})}),(0,a.jsx)(u.TooltipContent,{side:"bottom",className:"max-w-xs",children:(0,a.jsx)("div",{className:"space-y-0.5 text-xs",children:g.map((e,s)=>(0,a.jsx)("p",{children:e},s))})})]})}var h=e.i(34416),x=e.i(95486),g=e.i(18518),f=e.i(88175),v=e.i(52387),y=e.i(59134),j=e.i(10427),b=e.i(65268);function k({backendId:e,cliInstalled:t,compact:i=!1,onInstalled:d}){let u=(0,x.useQueryClient)(),[p,m]=(0,h.useState)(null),[C,N]=(0,h.useState)(!1),[w,A]=(0,h.useState)(""),[I,S]=(0,h.useState)(!1),[E,_]=(0,h.useState)(null),[P,M]=(0,h.useState)(null),[K,O]=(0,h.useState)(!1),B=(0,h.useCallback)(async()=>{if(!t){N(!0);try{let a=(await b.api.get("/backends/install-methods")).backends[e];m(a);let s=a.methods.find(e=>e.available);s&&A(s.id)}catch(e){M(e instanceof Error?e.message:"Failed to fetch install methods")}finally{N(!1)}}},[e,t]);(0,h.useEffect)(()=>{t||B()},[t,B]);let D=async()=>{if(w){S(!0),_(null),M(null);try{let a=await b.api.post(`/backends/${e}/install`,{method:w});_(a),a.ok&&a.cliInstalled&&(await u.invalidateQueries({queryKey:["backends"]}),d?.())}catch(e){M(e instanceof Error?e.message:"Install failed")}finally{S(!1)}}},R=async e=>{try{await navigator.clipboard.writeText(e),O(!0),setTimeout(()=>O(!1),2e3)}catch{}},L=()=>{_(null),M(null),B(),u.invalidateQueries({queryKey:["backends"]})},U=p?.docsUrl,T=c.BACKEND_LABELS[e];if(!1!==t&&!E?.ok)return i?null:!0===t?(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm text-success",children:[(0,a.jsx)(s.CheckCircle2,{className:"h-4 w-4"}),(0,a.jsxs)("span",{children:[T," CLI is installed and ready"]})]}):null;if(C)return(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,a.jsx)(r.Loader2,{className:"h-4 w-4 animate-spin"}),(0,a.jsx)("span",{children:"Detecting available install methods..."})]});let z=p?.methods??[],V=z.filter(e=>e.available),F=z.find(e=>e.id===w),$=F?.manualOnly??!1,G=V.filter(e=>e.id!==w);return E?.ok?(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm text-success",children:[(0,a.jsx)(s.CheckCircle2,{className:"h-4 w-4"}),(0,a.jsxs)("span",{children:[T," CLI installed successfully"]})]}),!i&&(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"Proceed to verify authentication below to confirm your credentials are working."})]}):(0,a.jsxs)("div",{className:i?"space-y-2":"space-y-3",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm text-warning",children:[(0,a.jsx)(f.Download,{className:"h-4 w-4 shrink-0"}),(0,a.jsxs)("span",{children:[T," CLI is not installed"]})]}),!i&&(0,a.jsxs)("p",{className:"text-xs text-muted-foreground",children:["The ",T," CLI must be installed on this machine for the agent to use it as a backend. Choose an install method below, or install manually in your terminal."]}),V.length>0?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:i?"flex items-center gap-2":"space-y-2",children:[(0,a.jsxs)(j.Select,{value:w,onValueChange:A,children:[(0,a.jsx)(j.SelectTrigger,{className:i?"w-[200px]":"w-full",children:(0,a.jsx)(j.SelectValue,{placeholder:"Choose install method"})}),(0,a.jsx)(j.SelectContent,{children:z.map(e=>(0,a.jsxs)(j.SelectItem,{value:e.id,disabled:!e.available,children:[e.label,!e.available&&" (not available)"]},e.id))})]}),$?(0,a.jsxs)(o.Button,{size:i?"sm":"default",variant:"outline",onClick:()=>F&&R(F.command),disabled:!w,className:"gap-2 shrink-0",children:[K?(0,a.jsx)(s.CheckCircle2,{className:"h-3.5 w-3.5 text-success"}):(0,a.jsx)(g.ClipboardCopy,{className:"h-3.5 w-3.5"}),K?"Copied!":"Copy Command"]}):(0,a.jsxs)(o.Button,{size:i?"sm":"default",variant:"outline",onClick:D,disabled:I||!w||!F?.available,className:"gap-2 shrink-0",children:[I?(0,a.jsx)(r.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,a.jsx)(n.Terminal,{className:"h-3.5 w-3.5"}),I?"Installing...":"Install"]})]}),F&&!i&&(0,a.jsxs)("div",{className:"rounded-md bg-muted/50 px-3 py-2",children:[(0,a.jsx)("p",{className:"mb-1 text-[10px] font-medium uppercase tracking-wider text-muted-foreground/60",children:$?"Run this command in your terminal":"Command to run"}),(0,a.jsxs)("code",{className:"text-xs text-muted-foreground",children:["$ ",F.command]})]}),$&&!i&&(0,a.jsxs)("p",{className:"text-xs text-muted-foreground",children:["This method requires you to run the command in your own terminal (it may need elevated permissions). After installing, click"," ",(0,a.jsx)("strong",{children:"Retry Detection"})," to verify."]}),$&&(0,a.jsxs)(o.Button,{size:"sm",variant:"outline",onClick:L,className:"gap-1.5",children:[(0,a.jsx)(y.RefreshCw,{className:"h-3 w-3"}),"Retry Detection"]})]}):(0,a.jsxs)("div",{className:"space-y-2 rounded-md border border-warning/40 bg-warning/10 p-3",children:[(0,a.jsx)("p",{className:"text-xs font-medium text-warning",children:"No supported package manager was detected on this system."}),(0,a.jsx)("p",{className:"text-xs text-warning",children:"Please install the CLI manually in your terminal:"}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("div",{className:"flex-1 rounded bg-muted px-2.5 py-1.5",children:(0,a.jsxs)("code",{className:"text-xs",children:["npm install -g"," ","claude"===e?"@anthropic-ai/claude-code":"codex"===e?"@openai/codex":"@google/gemini-cli"]})}),(0,a.jsx)(o.Button,{size:"sm",variant:"ghost",onClick:()=>R(`npm install -g ${"claude"===e?"@anthropic-ai/claude-code":"codex"===e?"@openai/codex":"@google/gemini-cli"}`),className:"shrink-0",children:K?(0,a.jsx)(s.CheckCircle2,{className:"h-3.5 w-3.5 text-success"}):(0,a.jsx)(g.ClipboardCopy,{className:"h-3.5 w-3.5"})})]}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 pt-1",children:[(0,a.jsxs)(o.Button,{size:"sm",variant:"outline",onClick:L,className:"gap-1.5",children:[(0,a.jsx)(y.RefreshCw,{className:"h-3 w-3"}),"Retry Detection"]}),U&&(0,a.jsxs)("a",{href:U,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-xs text-warning underline",children:[(0,a.jsx)(v.ExternalLink,{className:"h-3 w-3"}),"Official installation guide"]})]})]}),E&&!E.ok&&(0,a.jsxs)("div",{className:"space-y-2 rounded-md border border-destructive/40 bg-destructive/10 p-3",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-destructive",children:[(0,a.jsx)(l.XCircle,{className:"h-4 w-4 shrink-0"}),(0,a.jsx)("span",{children:E.timedOut?"Installation timed out (5 min limit)":`Installation failed (exit code ${E.exitCode})`})]}),E.stderr&&(0,a.jsx)("pre",{className:"max-h-32 overflow-auto rounded bg-destructive/10 p-2 text-xs text-destructive",children:E.stderr.slice(-1500)}),(0,a.jsxs)("div",{className:"space-y-1 text-xs text-destructive",children:[G.length>0&&(0,a.jsxs)("p",{children:["Try a different method: select"," ",G.map(e=>`"${e.label}"`).join(" or ")," from the dropdown above."]}),(0,a.jsxs)("p",{children:["You can also install manually in your terminal and then click"," ",(0,a.jsx)("strong",{children:"Retry Detection"})," below."]})]}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 pt-1",children:[(0,a.jsxs)(o.Button,{size:"sm",variant:"outline",onClick:L,className:"gap-1.5",children:[(0,a.jsx)(y.RefreshCw,{className:"h-3 w-3"}),"Retry Detection"]}),U&&(0,a.jsxs)("a",{href:U,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-xs text-destructive underline",children:[(0,a.jsx)(v.ExternalLink,{className:"h-3 w-3"}),"Official install guide"]})]})]}),P&&(0,a.jsx)("p",{className:"text-xs text-destructive",children:P})]})}function C(e){return"claude"===e}function N(e){return!e}function w(e){return!e}function A(e){return"wizard"===e.mode&&!e.isMain&&!e.cliInstalled}function I(e){return"allow"===e}e.s(["isAllowModeActive",0,I,"isContinueEligible",0,function(e){return null!==e.mainBackend},"isRecommended",0,C,"shouldEnableVerifyInstall",0,w,"shouldShowCliInstall",0,N,"shouldShowWizardConfigureLaterHint",0,A],6131),e.s(["BackendCard",0,function(e){let{backendId:u,mode:p,isMain:h,authStatus:x,authStatusDetail:g,authFirstExpiredAt:f,authLastSuccessAt:v,authNotificationCount:y,cliInstalled:j,enabled:b,webSearchEnabled:S,webSearchSupported:E,permissionMode:_,busy:P=!1,controlsDisabled:M=!1,disabledReason:K,installCheck:O,onCliInstalled:B,onVerifyInstall:D,onToggleEnable:R,onToggleWebSearch:L,renderExtra:U}=e,T=I(_),z=C(u),V=(0,c.getBackendDeprecation)(u),F=!M&&N(j),$=!M&&w(P),G=j&&O?.status!=="ok"&&O?.status!=="checking",H=A({mode:p,isMain:h,cliInstalled:j});return(0,a.jsxs)("div",{className:"rounded-xl border border-border bg-card p-4 shadow-sm",children:[(0,a.jsx)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:(0,a.jsx)("div",{className:"min-w-0 space-y-1.5",children:(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,a.jsx)(i.Badge,{variant:c.BACKEND_BADGE_VARIANTS[u],children:c.BACKEND_PROVIDER_LABELS[u]}),z&&(0,a.jsx)(i.Badge,{variant:"gray",className:"font-normal",children:"Recommended"}),h&&(0,a.jsx)(i.Badge,{variant:"amber",children:"MAIN"}),(0,a.jsx)(m,{status:x,detail:g??null,firstExpiredAt:f??null,lastSuccessAt:v??null,notificationCount:y??0}),"settings"===p&&T&&(0,a.jsx)("a",{href:"#execution-mode",className:"inline-flex",children:(0,a.jsx)(i.Badge,{variant:"red",className:"cursor-pointer",title:"Allow mode is on for this backend — click to jump to the Execution Mode card",children:"Allow"})}),"settings"===p&&(0,a.jsx)(i.Badge,{variant:b?"green":"gray",children:b?"Enabled":"Disabled"}),M&&(0,a.jsx)(i.Badge,{variant:"gray",children:"Preview"}),V&&(0,a.jsx)(i.Badge,{variant:"amber",title:V.reason,children:V.badgeLabel})]})})}),(0,a.jsxs)("div",{className:"mt-4 space-y-3 border-t border-border pt-4",children:[M&&K&&(0,a.jsx)("p",{className:"rounded-md border border-border bg-muted/40 px-3 py-2 text-xs text-muted-foreground",children:K}),V&&(0,a.jsx)("p",{className:"rounded-md border border-warning/40 bg-warning/10 px-3 py-2 text-xs text-warning",children:V.reason}),!M&&(0,a.jsxs)(a.Fragment,{children:[F?(0,a.jsx)(k,{backendId:u,cliInstalled:j,compact:!0,onInstalled:()=>{B?.()}}):(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm text-success",children:[(0,a.jsx)(s.CheckCircle2,{className:"h-4 w-4"}),(0,a.jsx)("span",{children:"CLI installed"})]}),(0,a.jsxs)("div",{className:(0,d.cn)("flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",G&&"rounded-lg border border-primary/40 bg-primary/5 p-3"),children:[(0,a.jsx)("div",{className:"space-y-1",children:G?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"text-sm font-semibold text-foreground",children:"Verify the CLI runs on this machine"}),(0,a.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Confirms the ",c.BACKEND_PROVIDER_LABELS[u]," CLI is on your"," ",(0,a.jsx)("code",{className:"rounded bg-muted px-1",children:"PATH"})," and responds to"," ",(0,a.jsx)("code",{className:"rounded bg-muted px-1",children:"--version"}),"."]})]}):(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:j?"Re-run this whenever you reinstall or update the CLI to confirm it still launches.":"Install the CLI first, then verify it runs."})}),(0,a.jsxs)(o.Button,{size:G?"default":"sm",variant:G?"default":"outline",disabled:!$,onClick:D,className:(0,d.cn)("gap-2",G&&"shrink-0 self-start ring-2 ring-primary/40 ring-offset-2 ring-offset-background sm:self-auto"),children:[O?.status==="checking"?(0,a.jsx)(r.Loader2,{className:(0,d.cn)("animate-spin",G?"h-4 w-4":"h-3.5 w-3.5")}):O?.status==="ok"?(0,a.jsx)(s.CheckCircle2,{className:(0,d.cn)("text-success",G?"h-4 w-4":"h-3.5 w-3.5")}):O?.status==="error"?(0,a.jsx)(l.XCircle,{className:(0,d.cn)("text-destructive",G?"h-4 w-4":"h-3.5 w-3.5")}):G?(0,a.jsx)(n.Terminal,{className:"h-4 w-4"}):null,O?.status==="checking"?"Checking…":"Verify install"]})]}),O?.status==="ok"&&O.version&&(0,a.jsxs)("p",{className:"text-xs text-success",children:["CLI runs OK —"," ",(0,a.jsx)("code",{className:"rounded bg-muted px-1",children:O.version})]}),O?.status==="error"&&O.error&&(0,a.jsx)("p",{className:"text-xs text-destructive",children:O.error}),H&&(0,a.jsxs)("p",{className:"text-xs text-muted-foreground",children:["You can install the CLI and verify it later from"," ",(0,a.jsx)("code",{className:"rounded bg-muted px-1",children:"/settings/models"}),"."]})]})]}),U&&(0,a.jsx)("div",{className:"mt-4 border-t border-border pt-4",children:U()}),"settings"===p&&(0,a.jsxs)("div",{className:"mt-4 space-y-4 border-t border-border pt-4",children:[R&&(0,a.jsx)("div",{className:"flex flex-wrap items-center justify-end gap-2",children:(0,a.jsx)(o.Button,{size:"sm",variant:b?"outline":"default",onClick:R,disabled:M||P,children:b?"Disable backend":"Enable backend"})}),L&&(0,a.jsxs)("div",{className:"flex flex-col gap-3 rounded-lg border border-border bg-muted/30 p-3 sm:flex-row sm:items-start sm:justify-between",children:[(0,a.jsxs)("div",{className:"min-w-0 space-y-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(t,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,a.jsx)("p",{className:"text-sm font-medium text-foreground",children:"Web search"}),(0,a.jsx)(i.Badge,{variant:S?"green":"gray",className:"text-[10px]",children:E?S?"On":"Off":"Not supported"})]}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:E?c.BACKEND_WEB_SEARCH_DESCRIPTIONS[u]:"This backend does not expose a web-search tool."}),E&&!b&&(0,a.jsx)("p",{className:"text-xs text-warning",children:"Enable the backend first to toggle web search."})]}),(0,a.jsx)(o.Button,{size:"sm",variant:S?"outline":"default",onClick:L,disabled:M||!E||!b||P,className:"shrink-0 self-start sm:self-center",children:S?"Disable web search":"Enable web search"})]})]})]})}],17975)},85462,e=>{"use strict";var a=e.i(54710),s=e.i(79634);e.s(["SubscriptionAuthWarning",0,function(){return(0,a.jsxs)(s.Alert,{variant:"warning",children:[(0,a.jsx)("p",{className:"font-semibold",children:"API key recommended — subscription auth is not supported by all providers"}),(0,a.jsxs)("p",{className:"mt-1 leading-relaxed",children:["You can skip API key setup and the daemon will fall back to each backend’s local CLI login (subscription auth). Most providers do not officially support running automated agents on a subscription plan; ",(0,a.jsx)("strong",{children:"Anthropic currently prohibits"})," ","using the Claude Agent SDK with a Claude Pro / Max subscription. Provider policies change often — to stay clear of the gray area, register a paid API key here."]})]})}])},36598,e=>{"use strict";e.i(18446);var a=e.i(38082);function s(e,s){if(null===e){if((0,a.getBackendIds)().some(e=>null==s[e]))return null;let e=function(e){let s=0,t=0;for(let r of(0,a.getBackendIds)())"safe"===e[r]?s++:"allow"===e[r]&&t++;if(s>t)return"safe";if(t>s)return"allow";for(let s of(0,a.getBackendIds)())if(null!==e[s])return e[s];return"safe"}(s),t={};for(let r of(0,a.getBackendIds)()){let a=s[r];null!==a&&a!==e&&(t[r]=a)}let r={mode:e};return Object.keys(t).length>0&&(r.perBackend=t),r}let t={};for(let r of(0,a.getBackendIds)()){let a=s[r];null!=a&&a!==e&&(t[r]=a)}let r={mode:e};return Object.keys(t).length>0&&(r.perBackend=t),r}e.s(["EMPTY_OVERRIDES",0,{claude:null,codex:null,gemini:null,opencode:null},"buildSetupModePayload",0,s,"canApply",0,function(e,a){return null!==s(e,a)},"hasDivergentOverride",0,function(e,s){return(0,a.getBackendIds)().some(a=>{let t=s[a];return null!=t&&t!==e})},"internalToUi",0,function(e){return"strict"===e?"safe":"allow"}])}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,61353,e=>{"use strict";var s=e.i(54710),t=e.i(34416),r=e.i(45958),i=e.i(57415),a=e.i(14260),n=e.i(95486),l=e.i(81187),d=e.i(77379);let o=(0,d.default)("ArchiveRestore",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h2",key:"tvwodi"}],["path",{d:"M20 8v11a2 2 0 0 1-2 2h-2",key:"1gkqxj"}],["path",{d:"m9 15 3-3 3 3",key:"1pd0qc"}],["path",{d:"M12 12v9",key:"192myk"}]]);var c=e.i(93512),u=e.i(16047);let h=(0,d.default)("Database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);var m=e.i(55575),x=e.i(84972),g=e.i(25795),p=e.i(7663),j=e.i(90925),f=e.i(65268),b=e.i(86923);let w=(0,d.default)("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var v=e.i(99758),y=e.i(81471);function k({text:e,className:r,iconSize:i="h-3.5 w-3.5",label:a,copiedLabel:n="Copied"}){let[l,d]=(0,t.useState)(!1),o=(0,t.useCallback)(()=>{navigator.clipboard.writeText(e).catch(()=>{}),d(!0),setTimeout(()=>d(!1),2e3)},[e]);return a?(0,s.jsxs)("button",{type:"button",onClick:o,className:(0,y.cn)("inline-flex h-7 items-center gap-1 whitespace-nowrap rounded-md px-2 text-xs font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",r),title:"Copy",children:[l?(0,s.jsx)(v.Check,{className:(0,y.cn)(i,"text-success")}):(0,s.jsx)(w,{className:i}),l?n:a]}):(0,s.jsx)("button",{type:"button",onClick:o,className:(0,y.cn)("inline-flex items-center text-muted-foreground hover:text-foreground transition-colors",r),title:"Copy",children:l?(0,s.jsx)(v.Check,{className:(0,y.cn)(i,"text-success")}):(0,s.jsx)(w,{className:i})})}var C=e.i(94328),N=e.i(72740),S=e.i(58436),E=e.i(79634);function P({value:e,onChange:r,onValidatedChange:i,defaultPath:n,disabled:l,id:d}){let o=e.trim(),c=(0,a.useQuery)({queryKey:["fs-probe",o],enabled:o.length>0,staleTime:3e4,retry:!1,queryFn:()=>f.api.get("/fs/probe",{params:{path:o}})}),u=(0,t.useMemo)(()=>{if(c.data)return c.data;if(c.error){let e="object"==typeof c.error.body&&null!==c.error.body?c.error.body:null;return{ok:!1,path:o,exists:!1,isDir:!1,writable:!1,collision:null,collisionMessage:null,hasObsidianStructure:!1,existingWiki:null,error:"string"==typeof e?.error?e.error:"request_failed",message:"string"==typeof e?.message?e.message:c.error.message}}return null},[c.data,c.error,o]),h=(0,t.useMemo)(()=>(function(e){if(!e)return{canConfirm:!1,lines:["Pick a directory to validate."],severity:null};if(!e.ok)return{canConfirm:!1,lines:[e.message??"Path is invalid."],severity:"error"};let s=[],t=null;if(e.collision){let r=function(e,s){if(null===e)return null;switch(e){case"primary_vault":return{severity:"error",text:"This path overlaps your primary memory vault. Pick a different directory."};case"external_obsidian":return{severity:"error",text:"This path overlaps your external Obsidian vault. Pick a different directory."};case"data_dir":return{severity:"error",text:"This path overlaps the daemon's data directory. Pick a different directory."};case"other_wiki":return{severity:"error",text:"Another wiki workspace already lives here. Pick a different directory."};case"system_path":return{severity:"error",text:"This path is under a system-managed location. Pick a directory inside your home folder."};case"not_writable":return{severity:"warning",text:"This directory is not writable from the daemon. Aitne will fall back to the Obsidian CLI when it is running."};default:return{severity:"error",text:s??"This path failed validation."}}}(e.collision,e.collisionMessage);r&&(s.push(r.text),t=r.severity??t)}return e.exists?e.isDir?e.writable||(s.push("Directory is not writable from the daemon (Obsidian CLI fallback applies)."),t=t??"warning"):(s.push("Path exists but is not a directory."),t="error"):(s.push("Directory will be created on save."),t=t??"info"),e.hasObsidianStructure&&(s.push("Detected an existing Obsidian vault (.obsidian directory present)."),t=t??"info"),e.existingWiki&&(s.push(`Detected an existing LLM-Wiki layout (${e.existingWiki.layers.join(", ")}). You will be prompted to Adopt or Migrate after saving.`),t=t??"info"),0===s.length&&(s.push("Directory is empty and writable. Ready to enable."),t="info"),{canConfirm:"error"!==t&&(!e.exists||e.isDir),lines:s,severity:t}})(u),[u]),m=(0,t.useRef)(i);(0,t.useEffect)(()=>{m.current=i}),(0,t.useEffect)(()=>{let e=m.current;!e||(0===o.length?e("",h):(c.isFetched||c.isError)&&e(o,h))},[o,h,c.isFetched,c.isError]);let x=o.length>0&&(c.isFetched||c.isError);return(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(S.DirectoryPickerField,{id:d,value:e,onChange:r,title:"Choose external wiki vault",placeholder:"/Users/you/Obsidian/Wiki",defaultPath:n,disabled:l}),c.isFetching&&(0,s.jsxs)("p",{className:"flex items-center gap-1 text-xs text-muted-foreground",role:"status","aria-live":"polite",children:[(0,s.jsx)(N.Loader2,{className:"h-3 w-3 animate-spin","aria-hidden":"true"}),"Validating path…"]}),x&&h.severity&&(0,s.jsx)(E.Alert,{variant:{error:"error",warning:"warning",info:"info"}[h.severity],children:(0,s.jsx)("ul",{className:"list-disc pl-4 space-y-0.5",children:h.lines.map(e=>(0,s.jsx)("li",{children:e},e))})})]})}var T=e.i(48467),A=e.i(20014),M=e.i(74490),_=e.i(70986),F=e.i(8652),O=e.i(39982),D=e.i(10427),W=e.i(72010),R=e.i(13451);e.i(18446);var I=e.i(57998);let B=[{tag:"en",label:"English"},{tag:"ja",label:"Japanese"},{tag:"zh",label:"Chinese"},{tag:"es",label:"Español (Spanish)"},{tag:"fr",label:"Français (French)"},{tag:"de",label:"Deutsch (German)"},{tag:"pt",label:"Português (Portuguese)"},{tag:"ko",label:"한국어 (Korean)"},{tag:"__custom__",label:"Other (BCP-47 tag…)"}],U=/^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})?$/;function L(e){return{language:e.language,dispatchMode:e.dispatchMode,concurrencyCap:e.concurrencyCap,dmAgentWriteEnabled:e.dmAgentWriteEnabled,bridgeEnabled:e.bridgeEnabled,bridgeMeasurementOnly:e.bridgeMeasurementOnly,bridgeMinConfidence:e.bridgeMinConfidence,fullCompileApprovalThresholdUsd:e.fullCompileApprovalThresholdUsd,writeStrategy:e.writeStrategy,gitPreCompileEnabled:e.gitPreCompileEnabled}}function q({value:e,onChange:r}){let i=B.some(s=>s.tag===e&&"__custom__"!==s.tag),[a,n]=(0,t.useState)(null),l=a??(i?e:"__custom__"),d="__custom__"===l&&e.trim().length>0&&!U.test(e.trim());return(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)(D.Select,{value:l,onValueChange:e=>{"__custom__"===e?n("__custom__"):(n(null),r(e))},children:[(0,s.jsx)(D.SelectTrigger,{children:(0,s.jsx)(D.SelectValue,{})}),(0,s.jsx)(D.SelectContent,{children:B.map(e=>(0,s.jsx)(D.SelectItem,{value:e.tag,children:e.label},e.tag))})]}),"__custom__"===l&&(0,s.jsxs)("div",{className:"space-y-1",children:[(0,s.jsx)(F.Input,{value:e,onChange:e=>r(e.target.value),placeholder:"e.g. zh-Hans or pt-BR"}),d&&(0,s.jsxs)("p",{className:"text-xs text-destructive",children:["Use a BCP-47 tag like ",(0,s.jsx)("code",{children:"en-US"})," or ",(0,s.jsx)("code",{children:"zh-Hans"}),"."]})]})]})}function z(){return(0,s.jsx)(O.PageHeader,{title:"Wiki",description:(0,s.jsxs)(s.Fragment,{children:["Long-form personal knowledge base. ",(0,s.jsx)("code",{children:"!ingest"})," captures sources, ",(0,s.jsx)("code",{children:"!compile"})," turns them into wiki pages, and"," ",(0,s.jsx)("code",{children:"!ask"})," / ",(0,s.jsx)("code",{children:"!trace"})," / ",(0,s.jsx)("code",{children:"!connect"})," produce answers and timelines."]})})}function K({defaultInternalRoot:e,externalPath:t,setExternalPath:r,probeSummary:i,onProbeChange:a,enableInternalPending:n,enableExternalPending:l,onEnableInternal:d,onEnableExternal:o}){return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(M.Card,{children:[(0,s.jsx)(M.CardHeader,{className:"items-start",children:(0,s.jsxs)("div",{children:[(0,s.jsx)(M.CardTitle,{children:"Set up your wiki"}),(0,s.jsx)("p",{className:"mt-1 max-w-3xl text-sm text-muted-foreground",children:"Pick where the wiki lives. You can switch later by archiving this workspace and setting up a new one."})]})}),(0,s.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(h,{className:"h-5 w-5 text-foreground"}),(0,s.jsx)("h3",{className:"text-base font-semibold",children:"Internal"}),(0,s.jsx)(T.Badge,{variant:"blue",children:"Recommended"})]}),(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:"Managed by Aitne in its data directory. Nothing to set up."}),(0,s.jsxs)("ul",{className:"space-y-1 text-xs text-muted-foreground",children:[(0,s.jsxs)("li",{children:["• Path: ",(0,s.jsx)("code",{className:"break-all",children:e??"~/.personal-agent/wiki"})]}),(0,s.jsx)("li",{children:"• Schema is seeded automatically"}),(0,s.jsx)("li",{children:"• Best for: starting fresh, no Obsidian vault yet"})]}),(0,s.jsxs)(A.Button,{className:"mt-auto",onClick:d,disabled:n,children:[n?(0,s.jsx)(W.Spinner,{}):(0,s.jsx)(c.ArrowRight,{className:"h-4 w-4"}),"Enable internal wiki"]})]}),(0,s.jsxs)("div",{className:"flex flex-col gap-3 rounded-lg border border-border bg-card p-4",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(m.FolderOpen,{className:"h-5 w-5 text-foreground"}),(0,s.jsx)("h3",{className:"text-base font-semibold",children:"Existing Obsidian vault"}),(0,s.jsx)(T.Badge,{variant:"purple",children:"External"})]}),(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:"Point Aitne at a folder you already own. The wiki layout is detected and migrated on demand."}),(0,s.jsxs)("ul",{className:"space-y-1 text-xs text-muted-foreground",children:[(0,s.jsx)("li",{children:"• Path must exist and be writable"}),(0,s.jsx)("li",{children:"• Cannot overlap your primary vault or Aitne’s data dir"}),(0,s.jsx)("li",{children:"• Best for: continuing an existing Obsidian knowledge base"})]}),(0,s.jsx)(P,{value:t,onChange:r,onValidatedChange:a,defaultPath:e}),(0,s.jsxs)(A.Button,{className:"mt-auto",variant:"secondary",onClick:o,disabled:!t||l||i?.canConfirm===!1,children:[l?(0,s.jsx)(W.Spinner,{}):(0,s.jsx)(c.ArrowRight,{className:"h-4 w-4"}),"Use this folder"]})]})]})]}),(0,s.jsx)(_.Collapsible,{children:(0,s.jsxs)(M.Card,{children:[(0,s.jsxs)(_.CollapsibleTrigger,{className:"flex w-full items-center justify-between text-left",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)(M.CardTitle,{className:"text-base",children:"What changes when wiki is on?"}),(0,s.jsxs)("p",{className:"mt-1 text-sm text-muted-foreground",children:["A small per-turn permission widening so ",(0,s.jsx)("code",{children:"!ingest"})," can reach the internet."]})]}),(0,s.jsx)(u.ChevronDown,{className:"h-4 w-4 text-muted-foreground"})]}),(0,s.jsx)(_.CollapsibleContent,{className:"mt-3",children:(0,s.jsx)(Z,{})})]})})]})}function $({workspace:e,reactivatePending:t,deletePending:r,onReactivate:i,onDelete:a}){return(0,s.jsxs)(M.Card,{children:[(0,s.jsx)(M.CardHeader,{className:"items-start",children:(0,s.jsxs)("div",{className:"flex items-start gap-3",children:[(0,s.jsx)("div",{className:"rounded-full bg-warning/15 p-2",children:(0,s.jsx)(l.AlertTriangle,{className:"h-5 w-5 text-warning"})}),(0,s.jsxs)("div",{children:[(0,s.jsx)(M.CardTitle,{children:"This wiki is archived"}),(0,s.jsxs)("p",{className:"mt-1 max-w-3xl text-sm text-muted-foreground",children:["The workspace ",(0,s.jsx)("code",{children:e.name})," still exists on disk but wiki commands (",(0,s.jsx)("code",{children:"!ingest"}),", ",(0,s.jsx)("code",{children:"!compile"}),","," ",(0,s.jsx)("code",{children:"!ask"}),") won’t run until you re-activate it."]})]})]})}),(0,s.jsxs)("dl",{className:"grid gap-3 rounded-lg border border-border bg-muted/40 p-3 text-sm sm:grid-cols-2",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("dt",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Mode"}),(0,s.jsx)("dd",{className:"text-foreground",children:(0,s.jsx)(T.Badge,{variant:"external"===e.kind?"purple":"blue",children:"external"===e.kind?"External":"Internal"})})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("dt",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Root path"}),(0,s.jsx)("dd",{className:"break-all font-mono text-xs text-foreground",children:e.rootPath})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("dt",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Wiki pages"}),(0,s.jsx)("dd",{className:"text-foreground",children:e.stats.wikiCount})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("dt",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Last activity"}),(0,s.jsx)("dd",{className:"text-foreground",children:(0,y.formatTimestamp)(e.lastCompileAt??e.lastIngestAt)})]})]}),(0,s.jsxs)("div",{className:"mt-4 flex flex-wrap gap-2",children:[(0,s.jsxs)(A.Button,{onClick:i,disabled:t,children:[t?(0,s.jsx)(W.Spinner,{}):(0,s.jsx)(o,{className:"h-4 w-4"}),"Re-activate wiki"]}),(0,s.jsxs)(A.Button,{variant:"outline",onClick:a,disabled:r,className:"text-destructive hover:bg-destructive/10 hover:text-destructive",children:[(0,s.jsx)(j.Trash2,{className:"h-4 w-4"}),"Remove registration"]})]}),(0,s.jsx)("p",{className:"mt-3 text-xs text-muted-foreground",children:"Removing the registration is non-destructive — the folder on disk is preserved."})]})}function H({workspace:e,sevenDayCost:t}){let i="external"===e.kind;return(0,s.jsxs)(M.Card,{children:[(0,s.jsx)(M.CardHeader,{className:"items-start",children:(0,s.jsxs)("div",{className:"flex w-full flex-col gap-3 lg:flex-row lg:items-start lg:justify-between",children:[(0,s.jsxs)("div",{className:"space-y-1",children:[(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,s.jsx)(M.CardTitle,{children:e.name}),(0,s.jsx)(T.Badge,{variant:i?"purple":"blue",children:i?"External":"Internal"}),(0,s.jsx)(T.Badge,{variant:"gray",children:e.language})]}),(0,s.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,s.jsx)("code",{className:"break-all text-xs text-muted-foreground",children:e.rootPath}),(0,s.jsx)(k,{text:e.rootPath,label:"Copy",iconSize:"h-3 w-3"})]})]}),(0,s.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,s.jsx)(A.Button,{asChild:!0,variant:"outline",size:"sm",children:(0,s.jsx)(r.default,{href:"/wiki",children:"Browse wiki"})}),(0,s.jsx)(A.Button,{asChild:!0,variant:"outline",size:"sm",children:(0,s.jsxs)(r.default,{href:"/wiki/timeline",children:[(0,s.jsx)(x.History,{className:"h-4 w-4"}),"Timeline & health"]})})]})]})}),(0,s.jsxs)("dl",{className:"grid gap-3 border-t border-border pt-3 text-sm sm:grid-cols-4",children:[(0,s.jsx)(V,{label:"Raw notes",value:e.stats.rawCount}),(0,s.jsx)(V,{label:"Wiki pages",value:e.stats.wikiCount}),(0,s.jsx)(V,{label:"Outputs",value:e.stats.outputCount}),(0,s.jsx)(V,{label:"7-day cost",value:(0,y.formatCurrency)(t)})]})]})}function V({label:e,value:t}){return(0,s.jsxs)("div",{children:[(0,s.jsx)("dt",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:e}),(0,s.jsx)("dd",{className:"mt-0.5 text-base font-semibold text-foreground",children:t})]})}function Q({data:e}){return(0,s.jsxs)(E.Alert,{variant:e.exceedsThreshold?"error":"info",children:[(0,s.jsxs)("p",{className:"text-sm",children:[(0,s.jsxs)("strong",{children:[(0,s.jsx)("code",{children:"!compile full"})," cost estimate:"]})," ","$",e.optimisticUsd.toFixed(2),"–$",e.pessimisticUsd.toFixed(2)," ","(expected $",e.expectedUsd.toFixed(2),") from ",e.rawCount," ","raw note",1===e.rawCount?"":"s","."," ",e.exceedsThreshold?(0,s.jsxs)(s.Fragment,{children:["Above the $",e.thresholdUsd.toFixed(2)," threshold — will require dashboard approval."]}):(0,s.jsx)(s.Fragment,{children:"Under the per-workspace threshold; will run autonomously."})]}),"per-file-chars"===e.method&&e.perFile&&e.perFile.length>0&&(0,s.jsxs)("details",{className:"mt-2 text-xs text-muted-foreground",children:[(0,s.jsxs)("summary",{className:"cursor-pointer",children:["Top ",e.perFile.length," raw notes by estimated cost"]}),(0,s.jsx)("ul",{className:"mt-1 space-y-0.5 font-mono",children:e.perFile.map(e=>(0,s.jsxs)("li",{children:[e.path," — ",e.estimatedTokens.toLocaleString()," tokens"," ","(",e.charCount.toLocaleString()," chars)"]},e.path))})]})]})}function G({draft:e,setDraft:t}){return(0,s.jsxs)(M.Card,{children:[(0,s.jsx)(M.CardHeader,{className:"items-start",children:(0,s.jsxs)("div",{children:[(0,s.jsx)(M.CardTitle,{children:"General"}),(0,s.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:"Language new pages are written in, and how multi-URL ingests are dispatched."})]})}),(0,s.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,s.jsx)(es,{label:"Writing language",hint:"Independent of your profile language. Existing pages are not rewritten.",children:(0,s.jsx)(q,{value:e.language,onChange:s=>t({...e,language:s})})}),(0,s.jsx)(es,{label:"Dispatch mode",hint:"Parallel ingests multiple URLs concurrently. Serial runs one at a time.",children:(0,s.jsxs)(D.Select,{value:e.dispatchMode,onValueChange:s=>t({...e,dispatchMode:s}),children:[(0,s.jsx)(D.SelectTrigger,{children:(0,s.jsx)(D.SelectValue,{})}),(0,s.jsxs)(D.SelectContent,{children:[(0,s.jsx)(D.SelectItem,{value:"parallel",children:"Parallel"}),(0,s.jsx)(D.SelectItem,{value:"serial",children:"Serial"})]})]})}),(0,s.jsxs)(es,{label:(0,s.jsxs)("span",{className:"flex items-center gap-2",children:["Concurrency cap",(0,s.jsx)("span",{className:"inline-flex min-w-[2rem] justify-center rounded-md border border-border bg-muted px-1.5 py-0.5 text-xs font-medium text-foreground",children:e.concurrencyCap})]}),hint:"serial"===e.dispatchMode?"Disabled — set Dispatch mode to Parallel to use this.":"Maximum simultaneous !ingest sessions.",children:[(0,s.jsx)("input",{type:"range",min:1,max:10,step:1,value:e.concurrencyCap,onChange:s=>t({...e,concurrencyCap:Math.max(1,Math.min(10,Number(s.target.value)||1))}),"aria-label":"Per-URL concurrency cap",className:"h-2 w-full cursor-pointer appearance-none rounded-lg bg-muted accent-foreground disabled:cursor-not-allowed disabled:opacity-50",disabled:"serial"===e.dispatchMode}),(0,s.jsxs)("div",{className:"mt-1 flex justify-between text-xs text-muted-foreground",children:[(0,s.jsx)("span",{children:"1"}),(0,s.jsx)("span",{children:"5"}),(0,s.jsx)("span",{children:"10"})]})]})]})]})}function Y({draft:e,setDraft:t,bridgeStats:r}){let i=e.bridgeEnabled&&e.dmAgentWriteEnabled;return(0,s.jsxs)(M.Card,{children:[(0,s.jsx)(M.CardHeader,{className:"items-start",children:(0,s.jsxs)("div",{className:"flex w-full items-start justify-between gap-2",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)(M.CardTitle,{children:"Capture insights from chat"}),(0,s.jsxs)("p",{className:"mt-1 max-w-3xl text-sm text-muted-foreground",children:["When you and Aitne land on something worth keeping in a DM, the agent can drop a draft into ",(0,s.jsx)("code",{children:"10_raw/bridge-*.md"})," for you to refine later. Both switches below must be on before any file is written."]})]}),(0,s.jsx)(T.Badge,{variant:i&&!e.bridgeMeasurementOnly?"blue":"gray",children:e.bridgeEnabled&&e.dmAgentWriteEnabled?e.bridgeMeasurementOnly?"Observing":"Writing":"Off"})]})}),(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)(et,{checked:e.bridgeEnabled,onChange:s=>t({...e,bridgeEnabled:s}),label:"Detect bridge candidates",hint:"The agent watches DM turns for ideas that look wiki-worthy."}),(0,s.jsx)(et,{checked:e.dmAgentWriteEnabled,onChange:s=>t({...e,dmAgentWriteEnabled:s}),label:"Let the agent write drafts",hint:"Required before any file is written. Without this, candidates are only logged.",disabled:!e.bridgeEnabled}),(0,s.jsx)(et,{checked:e.bridgeMeasurementOnly,onChange:s=>t({...e,bridgeMeasurementOnly:s}),label:"Observation mode (don't write yet)",hint:"Recommended for the first 1-2 weeks: log candidates only so you can review precision before opening the write gate.",disabled:!e.bridgeEnabled}),(0,s.jsx)(es,{label:"Minimum confidence",hint:"The agent's own confidence threshold (0–1). Lower = more drafts, more noise. Higher = fewer drafts, higher signal.",children:(0,s.jsx)(F.Input,{type:"number",min:0,max:1,step:"0.05",value:e.bridgeMinConfidence,onChange:s=>t({...e,bridgeMinConfidence:Math.min(1,Math.max(0,Number(s.target.value)||0))}),className:"max-w-[8rem]",disabled:!e.bridgeEnabled})}),r&&(0,s.jsxs)("div",{className:"rounded-lg border border-border bg-muted/40 p-3 text-xs text-muted-foreground",children:[(0,s.jsxs)("div",{className:"grid gap-2 sm:grid-cols-3",children:[(0,s.jsxs)("span",{children:[r.written," files written"]}),(0,s.jsxs)("span",{children:[r.candidates," candidates logged"]}),(0,s.jsxs)("span",{children:[r.deduplicated," dedup hits"]})]}),r.lastDetectedAt&&(0,s.jsxs)("p",{className:"mt-1.5",children:["Last activity: ",(0,y.formatTimestamp)(r.lastDetectedAt)]})]})]})]})}function J({draft:e,setDraft:t,isExternal:r,showGitToggle:i}){return(0,s.jsxs)(M.Card,{children:[(0,s.jsx)(M.CardHeader,{className:"items-start",children:(0,s.jsxs)("div",{children:[(0,s.jsx)(M.CardTitle,{children:"Compilation & writes"}),(0,s.jsxs)("p",{className:"mt-1 text-sm text-muted-foreground",children:["How ",(0,s.jsx)("code",{children:"!compile"})," handles large jobs and writes back to disk."]})]})}),(0,s.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,s.jsx)(es,{label:"Approval threshold for !compile full",hint:"If the estimated cost exceeds this, !compile full asks for dashboard approval instead of running autonomously.",children:(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"text-sm text-muted-foreground",children:"$"}),(0,s.jsx)(F.Input,{type:"number",min:0,step:"0.01",value:e.fullCompileApprovalThresholdUsd,onChange:s=>t({...e,fullCompileApprovalThresholdUsd:Number(s.target.value)||0})})]})}),r&&(0,s.jsx)(es,{label:"Write strategy",hint:"Vaults that Obsidian is actively syncing (iCloud, Obsidian Sync, etc.) need the Obsidian CLI for writes to propagate. Auto probes on the first write.",children:(0,s.jsxs)(D.Select,{value:e.writeStrategy,onValueChange:s=>t({...e,writeStrategy:s}),children:[(0,s.jsx)(D.SelectTrigger,{children:(0,s.jsx)(D.SelectValue,{})}),(0,s.jsxs)(D.SelectContent,{children:[(0,s.jsx)(D.SelectItem,{value:"auto",children:"Auto (probe on first write)"}),(0,s.jsx)(D.SelectItem,{value:"fs",children:"Direct filesystem"}),(0,s.jsx)(D.SelectItem,{value:"cli",children:"Obsidian CLI (for iCloud vaults)"})]})]})}),i&&(0,s.jsx)("div",{className:"md:col-span-2",children:(0,s.jsx)(et,{checked:e.gitPreCompileEnabled,onChange:s=>t({...e,gitPreCompileEnabled:s}),label:"Auto-commit before !compile full",hint:"Stages and commits any pending changes so a full compile starts from a clean tree. Skipped if the tree is dirty in unexpected ways."})})]})]})}function Z(){return(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("p",{className:"text-muted-foreground",children:["Only ",(0,s.jsx)("code",{children:"wiki.ingest_url"})," sessions (one per URL passed to"," ",(0,s.jsx)("code",{children:"!ingest"}),") are allowed to reach the internet."," ",(0,s.jsx)("code",{children:"wiki.compile"})," and ",(0,s.jsx)("code",{children:"wiki.ask"})," read locally through the daemon and never touch external hosts."]}),(0,s.jsxs)("details",{className:"rounded-lg border border-border bg-muted/40 p-3 text-xs",children:[(0,s.jsx)("summary",{className:"cursor-pointer font-medium text-foreground",children:"Per-backend details"}),(0,s.jsxs)("ul",{className:"mt-2 ml-4 list-disc space-y-1.5 text-muted-foreground",children:[(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{className:"text-foreground",children:"Claude"})," — adds"," ",(0,s.jsx)("code",{children:"WebFetch"})," to the per-turn allowed tools. The deny list and dontAsk permission mode still apply. If you customised"," ",(0,s.jsx)("code",{children:"allowedToolsOverride"}),", include ",(0,s.jsx)("code",{children:"WebFetch"})," ","yourself."]}),(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{className:"text-foreground",children:"Codex"})," — no change needed. The workspace-write sandbox already reaches the network."]}),(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{className:"text-foreground",children:"Gemini"})," — the strict admin policy flips just ",(0,s.jsx)("code",{children:"web_fetch"})," to allow for this turn. Container sandbox + context-dir chokepoint stay intact."]}),(0,s.jsxs)("li",{children:["If a backend is globally in ",(0,s.jsx)("code",{children:"allow"})," execution mode, the widening is a no-op."]})]})]})]})}function X({workspaceName:e,archivePending:t,deletePending:r,onArchive:i,onDelete:a}){return(0,s.jsxs)(M.Card,{className:"border-destructive/40",children:[(0,s.jsx)(M.CardHeader,{className:"items-start",children:(0,s.jsxs)("div",{children:[(0,s.jsx)(M.CardTitle,{className:"text-destructive",children:"Danger zone"}),(0,s.jsxs)("p",{className:"mt-1 text-sm text-muted-foreground",children:["Stop or remove the ",(0,s.jsx)("code",{children:e})," wiki. Files on disk are kept in both cases."]})]})}),(0,s.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,s.jsxs)("div",{className:"rounded-lg border border-border p-3",children:[(0,s.jsx)("h4",{className:"text-sm font-semibold text-foreground",children:"Archive"}),(0,s.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Pauses wiki commands. You can re-activate later from this page."}),(0,s.jsxs)(A.Button,{variant:"outline",size:"sm",className:"mt-3",onClick:i,disabled:t,children:[t?(0,s.jsx)(W.Spinner,{}):null,"Archive workspace"]})]}),(0,s.jsxs)("div",{className:"rounded-lg border border-destructive/40 p-3",children:[(0,s.jsx)("h4",{className:"text-sm font-semibold text-destructive",children:"Remove registration"}),(0,s.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Deletes the daemon’s record only. The folder on disk is preserved — re-add it later if you change your mind."}),(0,s.jsxs)(A.Button,{variant:"outline",size:"sm",className:"mt-3 text-destructive hover:bg-destructive/10 hover:text-destructive",onClick:a,disabled:r,children:[r?(0,s.jsx)(W.Spinner,{}):(0,s.jsx)(j.Trash2,{className:"h-4 w-4"}),"Remove"]})]})]})]})}function ee({saving:e,onSave:t,onDiscard:r}){return(0,s.jsxs)("div",{className:"sticky bottom-4 z-10 mt-4 flex items-center justify-between gap-3 rounded-lg border border-border bg-background/95 px-4 py-3 shadow-lg backdrop-blur",children:[(0,s.jsx)("p",{className:"text-sm text-foreground",children:"You have unsaved changes."}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsxs)(A.Button,{variant:"outline",size:"sm",onClick:r,disabled:e,children:[(0,s.jsx)(g.RotateCcw,{className:"h-4 w-4"}),"Discard"]}),(0,s.jsxs)(A.Button,{size:"sm",onClick:t,disabled:e,children:[e?(0,s.jsx)(W.Spinner,{}):(0,s.jsx)(p.Save,{className:"h-4 w-4"}),"Save changes"]})]})]})}function es({label:e,hint:t,children:r}){return(0,s.jsxs)("div",{className:"space-y-1.5",children:[(0,s.jsx)("p",{className:"text-sm font-medium text-foreground",children:e}),r,t&&(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:t})]})}function et({checked:e,onChange:t,label:r,hint:i,disabled:a}){return(0,s.jsxs)("label",{className:`flex items-start gap-3 rounded-lg border border-border p-3 text-sm ${a?"opacity-50":"cursor-pointer hover:bg-muted/40"}`,children:[(0,s.jsx)("input",{type:"checkbox",className:"mt-0.5",checked:e,onChange:e=>t(e.target.checked),disabled:a}),(0,s.jsxs)("div",{className:"space-y-0.5",children:[(0,s.jsx)("p",{className:"font-medium text-foreground",children:r}),i&&(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:i})]})]})}e.s(["default",0,function(){let e=(0,n.useQueryClient)(),{toast:r,showToast:l}=(0,R.useSaveConfig)(),{data:d,isLoading:o,error:c}=(0,a.useQuery)({queryKey:["wiki-workspaces"],queryFn:()=>f.api.get("/wiki/workspaces")}),h=d?.workspaces.find(e=>e.active)??null,m=h?null:d?.workspaces.find(e=>!e.active)??null,x=h??m,[g,p]=(0,t.useState)(null),[j,w]=(0,t.useState)(""),[v,k]=(0,t.useState)(null),[N,S]=(0,t.useState)(!1);(0,t.useEffect)(()=>{x&&p(L(x))},[x?.id]);let P=(0,t.useMemo)(()=>x?L(x):null,[x]),T=!!(g&&P&&(g.language!==P.language||g.dispatchMode!==P.dispatchMode||g.concurrencyCap!==P.concurrencyCap||g.dmAgentWriteEnabled!==P.dmAgentWriteEnabled||g.bridgeEnabled!==P.bridgeEnabled||g.bridgeMeasurementOnly!==P.bridgeMeasurementOnly||g.bridgeMinConfidence!==P.bridgeMinConfidence||g.fullCompileApprovalThresholdUsd!==P.fullCompileApprovalThresholdUsd||g.writeStrategy!==P.writeStrategy||g.gitPreCompileEnabled!==P.gitPreCompileEnabled)),A=(0,a.useQuery)({queryKey:["wiki-estimate",h?.name],enabled:!!h,queryFn:()=>f.api.get(`/wiki/${h.name}/estimate`,{headers:{"x-process-key":"wiki.compile"}})}),F=(0,i.useMutation)({mutationFn:async()=>x&&g?f.api.patch(`/wiki/workspaces/${x.name}`,g):null,onSuccess:async()=>{await e.invalidateQueries({queryKey:["wiki-workspaces"]}),l("success","Wiki settings saved")},onError:e=>l("error",(0,y.formatApiError)(e))}),O=(0,i.useMutation)({mutationFn:()=>f.api.post("/wiki/workspaces",{kind:"internal"}),onSuccess:async()=>{await e.invalidateQueries({queryKey:["wiki-workspaces"]}),l("success","Internal wiki enabled")},onError:e=>l("error",(0,y.formatApiError)(e))}),D=(0,i.useMutation)({mutationFn:async()=>{let e=await f.api.post("/wiki/workspaces/probe",{rootPath:j});if(!e.ok)throw new f.ApiError(400,{message:e.message??"External path failed validation."});return f.api.post("/wiki/workspaces",{kind:"external",rootPath:e.validation.resolvedPath??j})},onSuccess:async()=>{await e.invalidateQueries({queryKey:["wiki-workspaces"]}),l("success","External wiki created")},onError:e=>l("error",(0,y.formatApiError)(e))}),B=(0,i.useMutation)({mutationFn:()=>{if(!x)throw Error("No workspace to re-activate");return f.api.patch(`/wiki/workspaces/${x.name}`,{active:!0})},onSuccess:async()=>{await e.invalidateQueries({queryKey:["wiki-workspaces"]}),l("success","Wiki re-activated")},onError:e=>l("error",(0,y.formatApiError)(e))}),U=(0,i.useMutation)({mutationFn:()=>f.api.post(`/wiki/workspaces/${x?.name}/archive`),onSuccess:async()=>{await e.invalidateQueries({queryKey:["wiki-workspaces"]}),l("success","Wiki archived")},onError:e=>l("error",(0,y.formatApiError)(e))}),q=(0,i.useMutation)({mutationFn:()=>f.api.delete(`/wiki/workspaces/${x?.name}`),onSuccess:async()=>{await e.invalidateQueries({queryKey:["wiki-workspaces"]}),l("success","Wiki workspace removed (files preserved on disk)")},onError:e=>l("error",(0,y.formatApiError)(e))});if(o)return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(z,{}),(0,s.jsx)(M.Card,{children:(0,s.jsxs)("div",{className:"flex items-center gap-2 p-4 text-sm text-muted-foreground",children:[(0,s.jsx)(W.Spinner,{})," Loading wiki…"]})})]});if(c)return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(z,{}),(0,s.jsx)(E.Alert,{variant:"error",children:c instanceof Error?c.message:"Failed to load wiki settings."})]});if(!x)return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(z,{}),(0,s.jsx)(C.SettingsToast,{toast:r}),(0,s.jsx)(K,{defaultInternalRoot:d?.defaultInternalRoot,externalPath:j,setExternalPath:w,probeSummary:v,onProbeChange:(e,s)=>k(s),enableInternalPending:O.isPending,enableExternalPending:D.isPending,onEnableInternal:()=>O.mutate(),onEnableExternal:()=>D.mutate()})]});if(!x.active)return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(z,{}),(0,s.jsx)(C.SettingsToast,{toast:r}),(0,s.jsx)($,{workspace:x,reactivatePending:B.isPending,deletePending:q.isPending,onReactivate:()=>B.mutate(),onDelete:()=>{window.confirm("Delete this wiki workspace registration?\n\nThe folder on disk is preserved — only the daemon's record is removed.")&&q.mutate()}})]});if(!g)return null;let V="external"===x.kind,es=V&&!0===x.isGitRepo,et=x.recentCosts.reduce((e,s)=>e+Number(s.totalCostUsd??0),0);return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(z,{}),(0,s.jsx)(C.SettingsToast,{toast:r}),(0,s.jsx)(H,{workspace:x,sevenDayCost:et}),A.data?.estimate&&A.data.estimate.rawCount>0&&(0,s.jsx)(Q,{data:A.data.estimate}),(0,s.jsx)(G,{draft:g,setDraft:p}),(0,s.jsx)(Y,{draft:g,setDraft:p,bridgeStats:x.bridgeStats}),(0,s.jsx)(J,{draft:g,setDraft:p,isExternal:V,showGitToggle:es}),(0,s.jsx)(b.BackendSettingsSection,{onToast:l,sections:["processes"],processKeys:I.WIKI_PROCESS_KEYS,title:"Commands & models",description:"Pick the backend, model, turn limit, and per-run budget for each wiki command."}),(0,s.jsx)(_.Collapsible,{open:N,onOpenChange:S,children:(0,s.jsxs)(M.Card,{children:[(0,s.jsxs)(_.CollapsibleTrigger,{className:"flex w-full items-center justify-between text-left",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)(M.CardTitle,{children:"Advanced"}),(0,s.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:"External URL fetch policy, backend-specific notes."})]}),(0,s.jsx)(u.ChevronDown,{className:`h-5 w-5 text-muted-foreground transition-transform ${N?"rotate-180":""}`})]}),(0,s.jsx)(_.CollapsibleContent,{className:"mt-4",children:(0,s.jsx)(Z,{})})]})}),(0,s.jsx)(X,{workspaceName:x.name,archivePending:U.isPending,deletePending:q.isPending,onArchive:()=>{window.confirm("Archive this wiki workspace?\n\nWiki commands will stop working until you re-activate it. Files on disk are kept.")&&U.mutate()},onDelete:()=>{window.confirm("Permanently remove this workspace registration?\n\nThe folder on disk is preserved — only the daemon's record is deleted.")&&q.mutate()}}),T&&(0,s.jsx)(ee,{saving:F.isPending,onSave:()=>F.mutate(),onDiscard:()=>p(P)})]})}],61353)}]);
|