@aitne/dashboard 0.1.10 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +6 -9
- package/.next/build-manifest.json +3 -3
- package/.next/diagnostics/route-bundle-stats.json +592 -614
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +54 -126
- package/.next/routes-manifest.json +27 -45
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page/next-font-manifest.json +4 -2
- package/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +15 -15
- package/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
- package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/activity/page/next-font-manifest.json +4 -2
- package/.next/server/app/activity/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/activity/page.js.nft.json +1 -1
- package/.next/server/app/activity/page_client-reference-manifest.js +1 -1
- package/.next/server/app/activity.html +1 -1
- package/.next/server/app/activity.rsc +27 -25
- package/.next/server/app/activity.segments/_full.segment.rsc +27 -25
- package/.next/server/app/activity.segments/_head.segment.rsc +4 -4
- package/.next/server/app/activity.segments/_index.segment.rsc +10 -10
- package/.next/server/app/activity.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/activity.segments/activity/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/activity.segments/activity.segment.rsc +4 -4
- package/.next/server/app/agents/[slug]/executions/page/next-font-manifest.json +4 -2
- package/.next/server/app/agents/[slug]/executions/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/agents/[slug]/executions/page.js.nft.json +1 -1
- package/.next/server/app/agents/[slug]/executions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/agents/[slug]/page/next-font-manifest.json +4 -2
- package/.next/server/app/agents/[slug]/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/agents/[slug]/page.js.nft.json +1 -1
- package/.next/server/app/agents/[slug]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/agents/page/next-font-manifest.json +4 -2
- package/.next/server/app/agents/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/agents/page.js.nft.json +1 -1
- package/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/.next/server/app/agents.html +1 -1
- package/.next/server/app/agents.rsc +18 -17
- package/.next/server/app/agents.segments/_full.segment.rsc +18 -17
- package/.next/server/app/agents.segments/_head.segment.rsc +4 -4
- package/.next/server/app/agents.segments/_index.segment.rsc +10 -10
- package/.next/server/app/agents.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/agents.segments/agents.segment.rsc +3 -3
- package/.next/server/app/analytics/page/next-font-manifest.json +4 -2
- package/.next/server/app/analytics/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/analytics/page.js.nft.json +1 -1
- package/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
- package/.next/server/app/analytics.html +1 -1
- package/.next/server/app/analytics.rsc +25 -23
- package/.next/server/app/analytics.segments/_full.segment.rsc +25 -23
- package/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
- package/.next/server/app/analytics.segments/_index.segment.rsc +10 -10
- package/.next/server/app/analytics.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/analytics.segments/analytics.segment.rsc +4 -4
- package/.next/server/app/browser/page/app-paths-manifest.json +3 -0
- package/.next/server/app/browser/page/next-font-manifest.json +8 -0
- package/.next/server/app/{settings/advanced → browser}/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/browser/page.js +15 -0
- package/.next/server/app/browser/page.js.nft.json +1 -0
- package/.next/server/app/browser/page_client-reference-manifest.js +3 -0
- package/.next/server/app/browser-tasks/[id]/page/next-font-manifest.json +4 -2
- package/.next/server/app/browser-tasks/[id]/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/browser-tasks/[id]/page.js.nft.json +1 -1
- package/.next/server/app/browser-tasks/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/browser-tasks/page/next-font-manifest.json +4 -2
- package/.next/server/app/browser-tasks/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/browser-tasks/page.js.nft.json +1 -1
- package/.next/server/app/browser-tasks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/browser-tasks.html +1 -1
- package/.next/server/app/browser-tasks.rsc +18 -17
- package/.next/server/app/browser-tasks.segments/_full.segment.rsc +18 -17
- package/.next/server/app/browser-tasks.segments/_head.segment.rsc +4 -4
- package/.next/server/app/browser-tasks.segments/_index.segment.rsc +10 -10
- package/.next/server/app/browser-tasks.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/browser-tasks.segments/browser-tasks/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/browser-tasks.segments/browser-tasks.segment.rsc +3 -3
- package/.next/server/app/browser.html +1 -0
- package/.next/server/app/browser.meta +15 -0
- package/.next/server/app/browser.rsc +27 -0
- package/.next/server/app/browser.segments/_full.segment.rsc +27 -0
- package/.next/server/app/browser.segments/_head.segment.rsc +6 -0
- package/.next/server/app/browser.segments/_index.segment.rsc +11 -0
- package/.next/server/app/browser.segments/_tree.segment.rsc +3 -0
- package/.next/server/app/browser.segments/browser/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/browser.segments/browser.segment.rsc +5 -0
- package/.next/server/app/chat/page/next-font-manifest.json +4 -2
- package/.next/server/app/chat/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +18 -17
- package/.next/server/app/chat.segments/_full.segment.rsc +18 -17
- package/.next/server/app/chat.segments/_head.segment.rsc +4 -4
- package/.next/server/app/chat.segments/_index.segment.rsc +10 -10
- package/.next/server/app/chat.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/chat.segments/chat.segment.rsc +3 -3
- package/.next/server/app/connections/calendar/page/next-font-manifest.json +4 -2
- package/.next/server/app/connections/calendar/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/connections/calendar/page.js.nft.json +1 -1
- package/.next/server/app/connections/calendar/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections/calendar.html +1 -1
- package/.next/server/app/connections/calendar.rsc +19 -18
- package/.next/server/app/connections/calendar.segments/_full.segment.rsc +19 -18
- package/.next/server/app/connections/calendar.segments/_head.segment.rsc +4 -4
- package/.next/server/app/connections/calendar.segments/_index.segment.rsc +10 -10
- package/.next/server/app/connections/calendar.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/connections/calendar.segments/connections/calendar/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/connections/calendar.segments/connections/calendar.segment.rsc +3 -3
- package/.next/server/app/connections/calendar.segments/connections.segment.rsc +4 -4
- package/.next/server/app/connections/journal/page/next-font-manifest.json +4 -2
- package/.next/server/app/connections/journal/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/connections/journal/page.js.nft.json +1 -1
- package/.next/server/app/connections/journal/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections/journal.html +1 -1
- package/.next/server/app/connections/journal.rsc +18 -17
- package/.next/server/app/connections/journal.segments/_full.segment.rsc +18 -17
- package/.next/server/app/connections/journal.segments/_head.segment.rsc +4 -4
- package/.next/server/app/connections/journal.segments/_index.segment.rsc +10 -10
- package/.next/server/app/connections/journal.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/connections/journal.segments/connections/journal/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/connections/journal.segments/connections/journal.segment.rsc +3 -3
- package/.next/server/app/connections/journal.segments/connections.segment.rsc +4 -4
- package/.next/server/app/connections/mail/page/next-font-manifest.json +4 -2
- package/.next/server/app/connections/mail/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/connections/mail/page.js.nft.json +1 -1
- package/.next/server/app/connections/mail/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections/mail.html +1 -1
- package/.next/server/app/connections/mail.rsc +19 -18
- package/.next/server/app/connections/mail.segments/_full.segment.rsc +19 -18
- package/.next/server/app/connections/mail.segments/_head.segment.rsc +4 -4
- package/.next/server/app/connections/mail.segments/_index.segment.rsc +10 -10
- package/.next/server/app/connections/mail.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/connections/mail.segments/connections/mail/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/connections/mail.segments/connections/mail.segment.rsc +3 -3
- package/.next/server/app/connections/mail.segments/connections.segment.rsc +4 -4
- package/.next/server/app/connections/mcp/page/next-font-manifest.json +4 -2
- package/.next/server/app/connections/mcp/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/connections/mcp/page.js.nft.json +1 -1
- package/.next/server/app/connections/mcp/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections/mcp.html +1 -1
- package/.next/server/app/connections/mcp.rsc +19 -18
- package/.next/server/app/connections/mcp.segments/_full.segment.rsc +19 -18
- package/.next/server/app/connections/mcp.segments/_head.segment.rsc +4 -4
- package/.next/server/app/connections/mcp.segments/_index.segment.rsc +10 -10
- package/.next/server/app/connections/mcp.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/connections/mcp.segments/connections/mcp/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/connections/mcp.segments/connections/mcp.segment.rsc +3 -3
- package/.next/server/app/connections/mcp.segments/connections.segment.rsc +4 -4
- package/.next/server/app/connections/messaging/page/next-font-manifest.json +4 -2
- package/.next/server/app/connections/messaging/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/connections/messaging/page.js.nft.json +1 -1
- package/.next/server/app/connections/messaging/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections/messaging.html +1 -1
- package/.next/server/app/connections/messaging.rsc +19 -18
- package/.next/server/app/connections/messaging.segments/_full.segment.rsc +19 -18
- package/.next/server/app/connections/messaging.segments/_head.segment.rsc +4 -4
- package/.next/server/app/connections/messaging.segments/_index.segment.rsc +10 -10
- package/.next/server/app/connections/messaging.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/connections/messaging.segments/connections/messaging/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/connections/messaging.segments/connections/messaging.segment.rsc +3 -3
- package/.next/server/app/connections/messaging.segments/connections.segment.rsc +4 -4
- package/.next/server/app/connections/notes/page/app-paths-manifest.json +3 -0
- package/.next/server/app/connections/notes/page/next-font-manifest.json +8 -0
- package/.next/server/app/{settings/backends → connections/notes}/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/connections/{knowledge → notes}/page.js +6 -6
- package/.next/server/app/{settings/schedule → connections/notes}/page.js.nft.json +1 -1
- package/.next/server/app/connections/notes/page_client-reference-manifest.js +3 -0
- package/.next/server/app/connections/notes.html +1 -0
- package/.next/server/app/connections/{knowledge.meta → notes.meta} +3 -3
- package/.next/server/app/connections/notes.rsc +28 -0
- package/.next/server/app/connections/notes.segments/_full.segment.rsc +28 -0
- package/.next/server/app/connections/notes.segments/_head.segment.rsc +6 -0
- package/.next/server/app/connections/notes.segments/_index.segment.rsc +11 -0
- package/.next/server/app/connections/notes.segments/_tree.segment.rsc +3 -0
- package/.next/server/app/connections/notes.segments/connections/notes/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/connections/notes.segments/connections/notes.segment.rsc +5 -0
- package/.next/server/app/connections/notes.segments/connections.segment.rsc +5 -0
- package/.next/server/app/connections/page/next-font-manifest.json +4 -2
- package/.next/server/app/connections/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/connections/page.js.nft.json +1 -1
- package/.next/server/app/connections/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections/repositories/page/next-font-manifest.json +4 -2
- package/.next/server/app/connections/repositories/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/connections/repositories/page.js.nft.json +1 -1
- package/.next/server/app/connections/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections/repositories.html +1 -1
- package/.next/server/app/connections/repositories.rsc +23 -21
- package/.next/server/app/connections/repositories.segments/_full.segment.rsc +23 -21
- package/.next/server/app/connections/repositories.segments/_head.segment.rsc +4 -4
- package/.next/server/app/connections/repositories.segments/_index.segment.rsc +10 -10
- package/.next/server/app/connections/repositories.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/connections/repositories.segments/connections/repositories/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/connections/repositories.segments/connections/repositories.segment.rsc +3 -3
- package/.next/server/app/connections/repositories.segments/connections.segment.rsc +4 -4
- package/.next/server/app/connections/routines/page/next-font-manifest.json +4 -2
- package/.next/server/app/connections/routines/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/connections/routines/page.js.nft.json +1 -1
- package/.next/server/app/connections/routines/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections/routines.html +1 -1
- package/.next/server/app/connections/routines.rsc +18 -17
- package/.next/server/app/connections/routines.segments/_full.segment.rsc +18 -17
- package/.next/server/app/connections/routines.segments/_head.segment.rsc +4 -4
- package/.next/server/app/connections/routines.segments/_index.segment.rsc +10 -10
- package/.next/server/app/connections/routines.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/connections/routines.segments/connections/routines/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/connections/routines.segments/connections/routines.segment.rsc +3 -3
- package/.next/server/app/connections/routines.segments/connections.segment.rsc +4 -4
- package/.next/server/app/connections.html +1 -1
- package/.next/server/app/connections.rsc +17 -16
- package/.next/server/app/connections.segments/_full.segment.rsc +17 -16
- package/.next/server/app/connections.segments/_head.segment.rsc +4 -4
- package/.next/server/app/connections.segments/_index.segment.rsc +10 -10
- package/.next/server/app/connections.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/connections.segments/connections/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/connections.segments/connections.segment.rsc +4 -4
- package/.next/server/app/conversations/[id]/page/next-font-manifest.json +4 -2
- package/.next/server/app/conversations/[id]/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/conversations/[id]/page.js.nft.json +1 -1
- package/.next/server/app/conversations/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/conversations/page/next-font-manifest.json +4 -2
- package/.next/server/app/conversations/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/conversations/page.js.nft.json +1 -1
- package/.next/server/app/conversations/page_client-reference-manifest.js +1 -1
- package/.next/server/app/conversations.html +1 -1
- package/.next/server/app/conversations.rsc +16 -15
- package/.next/server/app/conversations.segments/_full.segment.rsc +16 -15
- package/.next/server/app/conversations.segments/_head.segment.rsc +4 -4
- package/.next/server/app/conversations.segments/_index.segment.rsc +10 -10
- package/.next/server/app/conversations.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/conversations.segments/conversations/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/conversations.segments/conversations.segment.rsc +3 -3
- package/.next/server/app/docs/[[...slug]]/page/next-font-manifest.json +4 -2
- package/.next/server/app/docs/[[...slug]]/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/docs/[[...slug]]/page.js.nft.json +1 -1
- package/.next/server/app/docs/[[...slug]]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/finance/page/next-font-manifest.json +4 -2
- package/.next/server/app/finance/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/finance/page.js.nft.json +1 -1
- package/.next/server/app/finance/page_client-reference-manifest.js +1 -1
- package/.next/server/app/finance.html +1 -1
- package/.next/server/app/finance.rsc +18 -17
- package/.next/server/app/finance.segments/_full.segment.rsc +18 -17
- package/.next/server/app/finance.segments/_head.segment.rsc +4 -4
- package/.next/server/app/finance.segments/_index.segment.rsc +10 -10
- package/.next/server/app/finance.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/finance.segments/finance/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/finance.segments/finance.segment.rsc +3 -3
- package/.next/server/app/git/page/next-font-manifest.json +4 -2
- package/.next/server/app/git/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/git/page.js.nft.json +1 -1
- package/.next/server/app/git/page_client-reference-manifest.js +1 -1
- package/.next/server/app/git.html +1 -1
- package/.next/server/app/git.rsc +18 -17
- package/.next/server/app/git.segments/_full.segment.rsc +18 -17
- package/.next/server/app/git.segments/_head.segment.rsc +4 -4
- package/.next/server/app/git.segments/_index.segment.rsc +10 -10
- package/.next/server/app/git.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/git.segments/git/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/git.segments/git.segment.rsc +3 -3
- package/.next/server/app/health/page/next-font-manifest.json +4 -2
- package/.next/server/app/health/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/health/page.js.nft.json +1 -1
- package/.next/server/app/health/page_client-reference-manifest.js +1 -1
- package/.next/server/app/health.html +1 -1
- package/.next/server/app/health.rsc +18 -17
- package/.next/server/app/health.segments/_full.segment.rsc +18 -17
- package/.next/server/app/health.segments/_head.segment.rsc +4 -4
- package/.next/server/app/health.segments/_index.segment.rsc +10 -10
- package/.next/server/app/health.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/health.segments/health/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/health.segments/health.segment.rsc +3 -3
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +18 -17
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/index.segments/_full.segment.rsc +18 -17
- package/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/server/app/index.segments/_index.segment.rsc +10 -10
- package/.next/server/app/index.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/knowledge/page/next-font-manifest.json +4 -2
- package/.next/server/app/knowledge/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/knowledge/page.js.nft.json +1 -1
- package/.next/server/app/knowledge/page_client-reference-manifest.js +1 -1
- package/.next/server/app/knowledge.html +1 -1
- package/.next/server/app/knowledge.rsc +19 -18
- package/.next/server/app/knowledge.segments/_full.segment.rsc +19 -18
- package/.next/server/app/knowledge.segments/_head.segment.rsc +4 -4
- package/.next/server/app/knowledge.segments/_index.segment.rsc +10 -10
- package/.next/server/app/knowledge.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/knowledge.segments/knowledge/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/knowledge.segments/knowledge.segment.rsc +4 -4
- package/.next/server/app/page/next-font-manifest.json +4 -2
- package/.next/server/app/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/reading/page/next-font-manifest.json +4 -2
- package/.next/server/app/reading/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/reading/page.js.nft.json +1 -1
- package/.next/server/app/reading/page_client-reference-manifest.js +1 -1
- package/.next/server/app/reading.html +1 -1
- package/.next/server/app/reading.rsc +18 -17
- package/.next/server/app/reading.segments/_full.segment.rsc +18 -17
- package/.next/server/app/reading.segments/_head.segment.rsc +4 -4
- package/.next/server/app/reading.segments/_index.segment.rsc +10 -10
- package/.next/server/app/reading.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/reading.segments/reading/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/reading.segments/reading.segment.rsc +3 -3
- package/.next/server/app/schedule/page/next-font-manifest.json +4 -2
- package/.next/server/app/schedule/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/schedule/page.js.nft.json +1 -1
- package/.next/server/app/schedule/page_client-reference-manifest.js +1 -1
- package/.next/server/app/schedule.html +1 -1
- package/.next/server/app/schedule.rsc +18 -17
- package/.next/server/app/schedule.segments/_full.segment.rsc +18 -17
- package/.next/server/app/schedule.segments/_head.segment.rsc +4 -4
- package/.next/server/app/schedule.segments/_index.segment.rsc +10 -10
- package/.next/server/app/schedule.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/schedule.segments/schedule/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/schedule.segments/schedule.segment.rsc +3 -3
- package/.next/server/app/settings/commands/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/commands/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/commands/page.js.nft.json +1 -1
- package/.next/server/app/settings/commands/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/commands.html +1 -1
- package/.next/server/app/settings/commands.rsc +19 -18
- package/.next/server/app/settings/commands.segments/_full.segment.rsc +19 -18
- package/.next/server/app/settings/commands.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/commands.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/commands.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings/commands.segments/settings/commands/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/commands.segments/settings/commands.segment.rsc +3 -3
- package/.next/server/app/settings/commands.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/danger-zone/page/app-paths-manifest.json +3 -0
- package/.next/server/app/settings/danger-zone/page/next-font-manifest.json +8 -0
- package/.next/server/app/{connections/knowledge → settings/danger-zone}/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/{advanced → danger-zone}/page.js +6 -6
- package/.next/server/app/settings/{connections → danger-zone}/page.js.nft.json +1 -1
- package/.next/server/app/settings/danger-zone/page_client-reference-manifest.js +3 -0
- package/.next/server/app/settings/danger-zone.html +1 -0
- package/.next/server/app/settings/{advanced.meta → danger-zone.meta} +3 -3
- package/.next/server/app/settings/danger-zone.rsc +28 -0
- package/.next/server/app/settings/danger-zone.segments/_full.segment.rsc +28 -0
- package/.next/server/app/settings/danger-zone.segments/_head.segment.rsc +6 -0
- package/.next/server/app/settings/danger-zone.segments/_index.segment.rsc +11 -0
- package/.next/server/app/settings/danger-zone.segments/_tree.segment.rsc +3 -0
- package/.next/server/app/settings/danger-zone.segments/settings/danger-zone/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/settings/danger-zone.segments/settings/danger-zone.segment.rsc +5 -0
- package/.next/server/app/settings/danger-zone.segments/settings.segment.rsc +5 -0
- package/.next/server/app/settings/hours/page/app-paths-manifest.json +3 -0
- package/.next/server/app/settings/hours/page/next-font-manifest.json +8 -0
- package/.next/server/app/settings/{connections → hours}/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/{routines → hours}/page.js +6 -6
- package/.next/server/app/settings/{journal → hours}/page.js.nft.json +1 -1
- package/.next/server/app/settings/hours/page_client-reference-manifest.js +3 -0
- package/.next/server/app/settings/hours.html +1 -0
- package/.next/server/app/settings/{journal.meta → hours.meta} +3 -3
- package/.next/server/app/settings/hours.rsc +28 -0
- package/.next/server/app/settings/hours.segments/_full.segment.rsc +28 -0
- package/.next/server/app/settings/hours.segments/_head.segment.rsc +6 -0
- package/.next/server/app/settings/hours.segments/_index.segment.rsc +11 -0
- package/.next/server/app/settings/hours.segments/_tree.segment.rsc +3 -0
- package/.next/server/app/settings/hours.segments/settings/hours/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/settings/hours.segments/settings/hours.segment.rsc +5 -0
- package/.next/server/app/settings/hours.segments/settings.segment.rsc +5 -0
- package/.next/server/app/settings/infrastructure/page/app-paths-manifest.json +3 -0
- package/.next/server/app/settings/infrastructure/page/next-font-manifest.json +8 -0
- package/.next/server/app/settings/infrastructure/page/react-loadable-manifest.json +8 -0
- package/.next/server/app/settings/{schedule → infrastructure}/page.js +6 -6
- package/.next/server/app/settings/{backends → infrastructure}/page.js.nft.json +1 -1
- package/.next/server/app/settings/infrastructure/page_client-reference-manifest.js +3 -0
- package/.next/server/app/settings/infrastructure.html +1 -0
- package/.next/server/app/settings/{connections.meta → infrastructure.meta} +3 -3
- package/.next/server/app/settings/infrastructure.rsc +28 -0
- package/.next/server/app/settings/infrastructure.segments/_full.segment.rsc +28 -0
- package/.next/server/app/settings/infrastructure.segments/_head.segment.rsc +6 -0
- package/.next/server/app/settings/infrastructure.segments/_index.segment.rsc +11 -0
- package/.next/server/app/settings/infrastructure.segments/_tree.segment.rsc +3 -0
- package/.next/server/app/settings/infrastructure.segments/settings/infrastructure/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/settings/infrastructure.segments/settings/infrastructure.segment.rsc +5 -0
- package/.next/server/app/settings/infrastructure.segments/settings.segment.rsc +5 -0
- package/.next/server/app/settings/integrations/browser-history/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/integrations/browser-history/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/integrations/browser-history/page.js.nft.json +1 -1
- package/.next/server/app/settings/integrations/browser-history/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed/b4/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/integrations/browser-history-managed/b4/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed/b4/page.js.nft.json +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed/b4/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed/b4.html +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed/b4.rsc +19 -18
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/_full.segment.rsc +19 -18
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings/integrations/browser-history-managed/b4/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings/integrations/browser-history-managed/b4.segment.rsc +3 -3
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings/integrations/browser-history-managed.segment.rsc +3 -3
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings/integrations.segment.rsc +3 -3
- package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/integrations/browser-history-managed/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/integrations/browser-history-managed/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed/page.js.nft.json +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed.html +1 -1
- package/.next/server/app/settings/integrations/browser-history-managed.rsc +19 -18
- package/.next/server/app/settings/integrations/browser-history-managed.segments/_full.segment.rsc +19 -18
- package/.next/server/app/settings/integrations/browser-history-managed.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/integrations/browser-history-managed.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/integrations/browser-history-managed.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings/integrations/browser-history-managed.segments/settings/integrations/browser-history-managed/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/integrations/browser-history-managed.segments/settings/integrations/browser-history-managed.segment.rsc +3 -3
- package/.next/server/app/settings/integrations/browser-history-managed.segments/settings/integrations.segment.rsc +3 -3
- package/.next/server/app/settings/integrations/browser-history-managed.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/integrations/browser-history.html +1 -1
- package/.next/server/app/settings/integrations/browser-history.rsc +19 -18
- package/.next/server/app/settings/integrations/browser-history.segments/_full.segment.rsc +19 -18
- package/.next/server/app/settings/integrations/browser-history.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/integrations/browser-history.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/integrations/browser-history.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings/integrations/browser-history.segments/settings/integrations/browser-history/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/integrations/browser-history.segments/settings/integrations/browser-history.segment.rsc +3 -3
- package/.next/server/app/settings/integrations/browser-history.segments/settings/integrations.segment.rsc +3 -3
- package/.next/server/app/settings/integrations/browser-history.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/lessons/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/lessons/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/lessons/page.js.nft.json +1 -1
- package/.next/server/app/settings/lessons/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/lessons.html +1 -1
- package/.next/server/app/settings/lessons.rsc +19 -18
- package/.next/server/app/settings/lessons.segments/_full.segment.rsc +19 -18
- package/.next/server/app/settings/lessons.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/lessons.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/lessons.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings/lessons.segments/settings/lessons/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/lessons.segments/settings/lessons.segment.rsc +3 -3
- package/.next/server/app/settings/lessons.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/management/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/management/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/management/page.js.nft.json +1 -1
- package/.next/server/app/settings/management/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/management.html +1 -1
- package/.next/server/app/settings/management.rsc +19 -18
- package/.next/server/app/settings/management.segments/_full.segment.rsc +19 -18
- package/.next/server/app/settings/management.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/management.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/management.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings/management.segments/settings/management/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/management.segments/settings/management.segment.rsc +3 -3
- package/.next/server/app/settings/management.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/models/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/models/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/models/page.js.nft.json +1 -1
- package/.next/server/app/settings/models/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/models.html +1 -1
- package/.next/server/app/settings/models.rsc +19 -18
- package/.next/server/app/settings/models.segments/_full.segment.rsc +19 -18
- package/.next/server/app/settings/models.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/models.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/models.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings/models.segments/settings/models/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/models.segments/settings/models.segment.rsc +3 -3
- package/.next/server/app/settings/models.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/safety/page/app-paths-manifest.json +3 -0
- package/.next/server/app/settings/safety/page/next-font-manifest.json +8 -0
- package/.next/server/app/settings/safety/page/react-loadable-manifest.json +8 -0
- package/.next/server/app/settings/{journal → safety}/page.js +6 -6
- package/.next/server/app/settings/{processes → safety}/page.js.nft.json +1 -1
- package/.next/server/app/settings/safety/page_client-reference-manifest.js +3 -0
- package/.next/server/app/settings/safety.html +1 -0
- package/.next/server/app/settings/{backends.meta → safety.meta} +3 -3
- package/.next/server/app/settings/safety.rsc +28 -0
- package/.next/server/app/settings/safety.segments/_full.segment.rsc +28 -0
- package/.next/server/app/settings/safety.segments/_head.segment.rsc +6 -0
- package/.next/server/app/settings/safety.segments/_index.segment.rsc +11 -0
- package/.next/server/app/settings/safety.segments/_tree.segment.rsc +3 -0
- package/.next/server/app/settings/safety.segments/settings/safety/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/settings/safety.segments/settings/safety.segment.rsc +5 -0
- package/.next/server/app/settings/safety.segments/settings.segment.rsc +5 -0
- package/.next/server/app/settings/self-learning/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/self-learning/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/self-learning/page.js.nft.json +1 -1
- package/.next/server/app/settings/self-learning/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/self-learning.html +1 -1
- package/.next/server/app/settings/self-learning.rsc +19 -18
- package/.next/server/app/settings/self-learning.segments/_full.segment.rsc +19 -18
- package/.next/server/app/settings/self-learning.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/self-learning.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/self-learning.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings/self-learning.segments/settings/self-learning/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/self-learning.segments/settings/self-learning.segment.rsc +3 -3
- package/.next/server/app/settings/self-learning.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/wiki/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/wiki/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/wiki/page.js.nft.json +1 -1
- package/.next/server/app/settings/wiki/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/wiki/timeline/page/next-font-manifest.json +4 -2
- package/.next/server/app/settings/wiki/timeline/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/wiki/timeline/page.js.nft.json +1 -1
- package/.next/server/app/settings/wiki/timeline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/wiki/timeline.html +1 -1
- package/.next/server/app/settings/wiki/timeline.rsc +17 -16
- package/.next/server/app/settings/wiki/timeline.segments/_full.segment.rsc +17 -16
- package/.next/server/app/settings/wiki/timeline.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/wiki/timeline.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/wiki/timeline.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings/wiki/timeline.segments/settings/wiki/timeline/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings/wiki/timeline.segments/settings/wiki/timeline.segment.rsc +3 -3
- package/.next/server/app/settings/wiki/timeline.segments/settings/wiki.segment.rsc +3 -3
- package/.next/server/app/settings/wiki/timeline.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings/wiki.html +1 -1
- package/.next/server/app/settings/wiki.rsc +19 -18
- package/.next/server/app/settings/wiki.segments/_full.segment.rsc +19 -18
- package/.next/server/app/settings/wiki.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/wiki.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings/wiki.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings/wiki.segments/settings/wiki/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/wiki.segments/settings/wiki.segment.rsc +3 -3
- package/.next/server/app/settings/wiki.segments/settings.segment.rsc +4 -4
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +19 -18
- package/.next/server/app/settings.segments/_full.segment.rsc +19 -18
- package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_index.segment.rsc +10 -10
- package/.next/server/app/settings.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings.segments/settings.segment.rsc +4 -4
- package/.next/server/app/setup/page/next-font-manifest.json +4 -2
- package/.next/server/app/setup/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/setup/page.js.nft.json +1 -1
- package/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/.next/server/app/setup.html +1 -1
- package/.next/server/app/setup.rsc +18 -17
- package/.next/server/app/setup.segments/_full.segment.rsc +18 -17
- package/.next/server/app/setup.segments/_head.segment.rsc +4 -4
- package/.next/server/app/setup.segments/_index.segment.rsc +10 -10
- package/.next/server/app/setup.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/setup.segments/setup.segment.rsc +3 -3
- package/.next/server/app/trip/page/next-font-manifest.json +4 -2
- package/.next/server/app/trip/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/trip/page.js.nft.json +1 -1
- package/.next/server/app/trip/page_client-reference-manifest.js +1 -1
- package/.next/server/app/trip.html +1 -1
- package/.next/server/app/trip.rsc +18 -17
- package/.next/server/app/trip.segments/_full.segment.rsc +18 -17
- package/.next/server/app/trip.segments/_head.segment.rsc +4 -4
- package/.next/server/app/trip.segments/_index.segment.rsc +10 -10
- package/.next/server/app/trip.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/trip.segments/trip/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/trip.segments/trip.segment.rsc +3 -3
- package/.next/server/app/wiki/page/next-font-manifest.json +4 -2
- package/.next/server/app/wiki/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/wiki/page.js.nft.json +1 -1
- package/.next/server/app/wiki/page_client-reference-manifest.js +1 -1
- package/.next/server/app/wiki/timeline/page/next-font-manifest.json +4 -2
- package/.next/server/app/wiki/timeline/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/wiki/timeline/page.js.nft.json +1 -1
- package/.next/server/app/wiki/timeline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/wiki/timeline.html +1 -1
- package/.next/server/app/wiki/timeline.rsc +18 -17
- package/.next/server/app/wiki/timeline.segments/_full.segment.rsc +18 -17
- package/.next/server/app/wiki/timeline.segments/_head.segment.rsc +4 -4
- package/.next/server/app/wiki/timeline.segments/_index.segment.rsc +10 -10
- package/.next/server/app/wiki/timeline.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/wiki/timeline.segments/wiki/timeline/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/wiki/timeline.segments/wiki/timeline.segment.rsc +3 -3
- package/.next/server/app/wiki/timeline.segments/wiki.segment.rsc +3 -3
- package/.next/server/app/wiki.html +1 -1
- package/.next/server/app/wiki.rsc +18 -17
- package/.next/server/app/wiki.segments/_full.segment.rsc +18 -17
- package/.next/server/app/wiki.segments/_head.segment.rsc +4 -4
- package/.next/server/app/wiki.segments/_index.segment.rsc +10 -10
- package/.next/server/app/wiki.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/wiki.segments/wiki/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/wiki.segments/wiki.segment.rsc +3 -3
- package/.next/server/app-paths-manifest.json +6 -9
- package/.next/server/chunks/0z~i_next_dist_esm_build_templates_app-route_0o_o_hp.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__02gp4s0._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0gckkni._.js +1 -1
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_connections_notes_page_actions_04zn1-i.js +3 -0
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_danger-zone_page_actions_0mp3gc-.js +3 -0
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_safety_page_actions_05rsfax.js +3 -0
- package/.next/server/chunks/ssr/0juq_dashboard_src_app_settings_integrations_browser-history_page_tsx_0.30t~j._.js +1 -1
- package/.next/server/chunks/ssr/0x9-__next-internal_server_app_settings_infrastructure_page_actions_0u8fwic.js +3 -0
- package/.next/server/chunks/ssr/0x9-_src_app_settings_integrations_browser-history-managed_b4_page_tsx_03zkdyv._.js +1 -1
- package/.next/server/chunks/ssr/0x9-_src_app_settings_integrations_browser-history-managed_page_tsx_0q.v5ph._.js +1 -1
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0-xf3nq.js +1 -1
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_05t.o5v.js +4 -0
- package/.next/server/chunks/ssr/{0z~i_next_dist_esm_build_templates_app-page_0rzk_wb.js → 0z~i_next_dist_esm_build_templates_app-page_07tjgqy.js} +3 -3
- package/.next/server/chunks/ssr/{0z~i_next_dist_esm_build_templates_app-page_0dgjd77.js → 0z~i_next_dist_esm_build_templates_app-page_08-8pml.js} +3 -3
- package/.next/server/chunks/ssr/{0z~i_next_dist_esm_build_templates_app-page_0~l1-oo.js → 0z~i_next_dist_esm_build_templates_app-page_0_hw.~x.js} +3 -3
- package/.next/server/chunks/ssr/{0z~i_next_dist_esm_build_templates_app-page_0i5nfg6.js → 0z~i_next_dist_esm_build_templates_app-page_0gja0sp.js} +3 -3
- package/.next/server/chunks/ssr/{0z~i_next_dist_esm_build_templates_app-page_0i3pbzc.js → 0z~i_next_dist_esm_build_templates_app-page_0xk7dvj.js} +3 -3
- package/.next/server/chunks/ssr/{[root-of-the-server]__0.oq_nd._.js → [root-of-the-server]__064iw-m._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0bcu47h._.js +3 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__0hxae6t._.js → [root-of-the-server]__0dz8grn._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0e3togs._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0own5qk._.js +7 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__0k4~6v4._.js → [root-of-the-server]__0p.rqkz._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0twuzim._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0v.2-w_._.js +9 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__0ku1mlh._.js → [root-of-the-server]__0x90fri._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__138v34b._.js → [root-of-the-server]__12ocbb6._.js} +2 -2
- package/.next/server/chunks/ssr/_0-fa0e6._.js +3 -0
- package/.next/server/chunks/ssr/_0-fv_sr._.js +1 -1
- package/.next/server/chunks/ssr/_0.83~vc._.js +3 -0
- package/.next/server/chunks/ssr/_0.buz~z._.js +3 -0
- package/.next/server/chunks/ssr/_00m~lu3._.js +3 -0
- package/.next/server/chunks/ssr/_00yd82b._.js +3 -0
- package/.next/server/chunks/ssr/_01u8_20._.js +1 -1
- package/.next/server/chunks/ssr/_02-~4_x._.js +3 -0
- package/.next/server/chunks/ssr/_03ylkmo._.js +1 -1
- package/.next/server/chunks/ssr/_042qll3._.js +3 -0
- package/.next/server/chunks/ssr/_05-nasq._.js +3 -0
- package/.next/server/chunks/ssr/_052c-d8._.js +1 -1
- package/.next/server/chunks/ssr/_05etcnw._.js +3 -0
- package/.next/server/chunks/ssr/_06pfh8i._.js +3 -0
- package/.next/server/chunks/ssr/_07y8~wo._.js +3 -0
- package/.next/server/chunks/ssr/_0837jo1._.js +1 -1
- package/.next/server/chunks/ssr/_095g5nv._.js +3 -0
- package/.next/server/chunks/ssr/_0_59iz5._.js +3 -0
- package/.next/server/chunks/ssr/_0_mohhy._.js +3 -0
- package/.next/server/chunks/ssr/_0_qa7ix._.js +3 -0
- package/.next/server/chunks/ssr/_0a0gitj._.js +3 -0
- package/.next/server/chunks/ssr/_0bbgll1._.js +3 -0
- package/.next/server/chunks/ssr/_0bsns8f._.js +3 -0
- package/.next/server/chunks/ssr/_0cus~q3._.js +3 -0
- package/.next/server/chunks/ssr/_0cwcz17._.js +1 -1
- package/.next/server/chunks/ssr/_0do3r93._.js +3 -0
- package/.next/server/chunks/ssr/_0eoqkp.._.js +3 -0
- package/.next/server/chunks/ssr/_0fse1qi._.js +3 -0
- package/.next/server/chunks/ssr/_0g7_r5i._.js +1 -1
- package/.next/server/chunks/ssr/_0h-mq6i._.js +3 -0
- package/.next/server/chunks/ssr/_0h7l~qt._.js +3 -0
- package/.next/server/chunks/ssr/_0hojxqy._.js +1 -1
- package/.next/server/chunks/ssr/_0jlpcde._.js +3 -0
- package/.next/server/chunks/ssr/_0kn1u4v._.js +3 -0
- package/.next/server/chunks/ssr/_0l7uzol._.js +3 -0
- package/.next/server/chunks/ssr/_0m~vcd.._.js +3 -0
- package/.next/server/chunks/ssr/_0n2_n8d._.js +3 -0
- package/.next/server/chunks/ssr/_0p4ugyq._.js +3 -0
- package/.next/server/chunks/ssr/_0pbcc~c._.js +3 -0
- package/.next/server/chunks/ssr/_0q6ga5s._.js +3 -0
- package/.next/server/chunks/ssr/_0rcvmzk._.js +3 -0
- package/.next/server/chunks/ssr/_0tl98en._.js +1 -1
- package/.next/server/chunks/ssr/_0vtof91._.js +3 -0
- package/.next/server/chunks/ssr/_0wj-xi-._.js +1 -1
- package/.next/server/chunks/ssr/_0y-w3is._.js +1 -1
- package/.next/server/chunks/ssr/_0ys19k1._.js +3 -0
- package/.next/server/chunks/ssr/_0zegd8c._.js +3 -0
- package/.next/server/chunks/ssr/_0zskdhg._.js +3 -0
- package/.next/server/chunks/ssr/_0~5jogr._.js +3 -0
- package/.next/server/chunks/ssr/_10t~mm1._.js +5 -0
- package/.next/server/chunks/ssr/_12yrbbd._.js +3 -0
- package/.next/server/chunks/ssr/_12~voz0._.js +3 -0
- package/.next/server/chunks/ssr/_13x8vt3._.js +3 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_0hiwu9~._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard__next-internal_server_app_browser_page_actions_09ozuw5.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard__next-internal_server_app_settings_hours_page_actions_090o.uf.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_08ni3k2._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_0dzu4m3._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_0l-df62._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_0somi_b._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_0uxs9-.._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_0wg3sud._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_0yi7124._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_0zhdaa4._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_13g~g03._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_activity_loading_tsx_0rzsqef._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_activity_page_tsx_08yep46._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_agents_[slug]_page_tsx_038yph.._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_agents_page_tsx_0simg3k._.js +2 -2
- package/.next/server/chunks/ssr/packages_dashboard_src_app_analytics_page_tsx_0tb_amd._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_browser-tasks_[id]_page_tsx_0.80q8e._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_chat_page_tsx_0i0_8pw._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_connections_mcp_page_tsx_0lc.low._.js +2 -2
- package/.next/server/chunks/ssr/packages_dashboard_src_app_connections_repositories_page_tsx_08y6paq._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_git_page_tsx_0ah19-6._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_knowledge_page_tsx_0uf4..4._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_page_tsx_0.p6n1a._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_schedule_page_tsx_0znc404._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_commands_page_tsx_0nacqrh._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_hours_page_tsx_0shgzxo._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_infrastructure_page_tsx_0c9oi1c._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_management_page_tsx_09mnin5._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_models_page_tsx_0djsx88._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_page_tsx_13_rdav._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_self-learning_page_tsx_0noj6fo._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_wiki_page_tsx_0..1tkb._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_app_setup_page_tsx_06k3via._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_components_0c08h~y._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_components_agents_AgentEditor_tsx_1379k-6._.js +2 -2
- package/.next/server/chunks/ssr/packages_dashboard_src_components_connections_integration-card_tsx_0yh1a-~._.js +2 -2
- package/.next/server/chunks/ssr/packages_dashboard_src_components_connections_slack-card_tsx_0mahejj._.js +1 -1
- package/.next/server/chunks/ssr/packages_dashboard_src_components_logs_event-row_tsx_0gwfgqo._.js +3 -0
- package/.next/server/chunks/ssr/packages_dashboard_src_components_mail_gmail-card_tsx_0kpway8._.js +1 -1
- package/.next/server/chunks/ssr/packages_shared_dist_index_0kuvow-.js +1 -1
- package/.next/server/edge/chunks/[root-of-the-server]__0iap10r._.js +1 -1
- package/.next/server/middleware/middleware-manifest.json +29 -5
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/middleware-manifest.json +29 -5
- package/.next/server/next-font-manifest.js +1 -1
- package/.next/server/next-font-manifest.json +51 -2
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/{i_QR0WWkZFeICcOMbfuUs → 4Wu33OvzutxPxXUu1PWPC}/_clientMiddlewareManifest.js +24 -0
- package/.next/static/chunks/0-sq9td.e1huw.js +1 -0
- package/.next/static/chunks/0-~s5n1hsw0xz.css +1 -0
- package/.next/static/chunks/0.1mo3ft90qg_.js +1 -0
- package/.next/static/chunks/0.eu.rxoo07x6.js +1 -0
- package/.next/static/chunks/0147tjztlthxv.js +1 -0
- package/.next/static/chunks/01~5c-.ttg~hv.js +1 -0
- package/.next/static/chunks/02jrxwgg0c4jp.js +1 -0
- package/.next/static/chunks/02tb-nh0a2y6t.js +1 -0
- package/.next/static/chunks/03ndokpk6o0.5.js +1 -0
- package/.next/static/chunks/03qz~hx5zgr~d.js +1 -0
- package/.next/static/chunks/042u~0qpgty0o.js +10 -0
- package/.next/static/chunks/050-z9-4lo_4l.js +1 -0
- package/.next/static/chunks/051m0t~qz1jvu.js +1 -0
- package/.next/static/chunks/0755mii5h~0jr.js +1 -0
- package/.next/static/chunks/07_-k85izz7.j.js +1 -0
- package/.next/static/chunks/07qdiaq4h1bev.js +1 -0
- package/.next/static/chunks/07w_f8nwejvtm.js +1 -0
- package/.next/static/chunks/087m534nojkn2.js +1 -0
- package/.next/static/chunks/08tuvmjn9p090.js +1 -0
- package/.next/static/chunks/09k746-3cizz1.js +19 -0
- package/.next/static/chunks/09sekcnc01we8.js +1 -0
- package/.next/static/chunks/0_-a6t77lnxg4.js +1 -0
- package/.next/static/chunks/0_b4esx30vjxq.js +1 -0
- package/.next/static/chunks/0_r~att41ue.r.js +1 -0
- package/.next/static/chunks/0cj6iorqj7he_.js +1 -0
- package/.next/static/chunks/0c~_onh_gv7zj.js +1 -0
- package/.next/static/chunks/0d13hqow~d37h.js +1 -0
- package/.next/static/chunks/0drk956_8nbwg.js +1 -0
- package/.next/static/chunks/0e-txs97b3.x9.js +1 -0
- package/.next/static/chunks/0ezl44_wv~csn.js +1 -0
- package/.next/static/chunks/0g-eqp3qwkojl.js +1 -0
- package/.next/static/chunks/0h5rf~pu59~hu.js +1 -0
- package/.next/static/chunks/0i8.oj~1w~u~..js +1 -0
- package/.next/static/chunks/0iichp621kqto.js +1 -0
- package/.next/static/chunks/{0afrwc5vvwfx4.js → 0iscxmienbk2m.js} +1 -1
- package/.next/static/chunks/0iv9k-z7~xtww.js +1 -0
- package/.next/static/chunks/0k6jf41ge3u~8.js +1 -0
- package/.next/static/chunks/0k9-e5pear~t4.js +3 -0
- package/.next/static/chunks/0kib-9vm23r0j.js +1 -0
- package/.next/static/chunks/0kj.5xdofdrz7.js +1 -0
- package/.next/static/chunks/0lbnukk03a8nv.js +1 -0
- package/.next/static/chunks/0m8e4hy-r8y-4.js +1 -0
- package/.next/static/chunks/{02k085x_j4_bz.js → 0mkryl3ctt_xh.js} +1 -1
- package/.next/static/chunks/0mxp..4l7j1dn.js +1 -0
- package/.next/static/chunks/0o61x2xdye~o2.js +1 -0
- package/.next/static/chunks/0os-c6-aqwq4d.js +1 -0
- package/.next/static/chunks/0pxjn_pm269cw.js +1 -0
- package/.next/static/chunks/0qyxjj5z_is.d.js +1 -0
- package/.next/static/chunks/0s.cyrhyscm8x.js +1 -0
- package/.next/static/chunks/0wvyy~m_e1q5c.js +3 -0
- package/.next/static/chunks/0x96~upcinv2_.js +1 -0
- package/.next/static/chunks/0zo_ws6shrfnh.js +1 -0
- package/.next/static/chunks/0~kj3qxs7kx58.js +1 -0
- package/.next/static/chunks/10rtk-h9y-705.js +2 -0
- package/.next/static/chunks/115_4xjsk0jzh.js +1 -0
- package/.next/static/chunks/12zmqqk8p-b.~.js +1 -0
- package/.next/static/chunks/135nkfxk7so9p.js +1 -0
- package/.next/static/chunks/153z3m3.a2ubk.js +5 -0
- package/.next/static/chunks/15fpord4hyosp.js +1 -0
- package/.next/static/chunks/15~h2wegwdbf4.js +1 -0
- package/.next/static/chunks/16-i4p1ipmpts.js +1 -0
- package/.next/static/chunks/171j55n_9gyxb.js +1 -0
- package/.next/static/chunks/17c6~kld51ls5.js +11 -0
- package/.next/static/chunks/17tv5jbg2hiup.js +1 -0
- package/.next/static/chunks/187a-majiuj8r.js +1 -0
- package/.next/static/media/fraunces-latin-ext-wght-normal.08-a-oz-atsnn.woff2 +0 -0
- package/.next/static/media/fraunces-latin-wght-normal.0l9v6sgnyeoq8.woff2 +0 -0
- package/.next/static/media/fraunces-vietnamese-wght-normal.05ntv1..6v~z7.woff2 +0 -0
- package/.next/static/media/instrument-sans-latin-ext-wght-normal.0td0--1m0lec9.woff2 +0 -0
- package/.next/static/media/instrument-sans-latin-wght-normal.10bj0-z630vnn.woff2 +0 -0
- package/.next/types/routes.d.ts +7 -10
- package/.next/types/validator.ts +33 -60
- package/package.json +4 -2
- package/.next/server/app/connections/knowledge/page/app-paths-manifest.json +0 -3
- package/.next/server/app/connections/knowledge/page/next-font-manifest.json +0 -6
- package/.next/server/app/connections/knowledge/page.js.nft.json +0 -1
- package/.next/server/app/connections/knowledge/page_client-reference-manifest.js +0 -3
- package/.next/server/app/connections/knowledge.html +0 -1
- package/.next/server/app/connections/knowledge.rsc +0 -27
- package/.next/server/app/connections/knowledge.segments/_full.segment.rsc +0 -27
- package/.next/server/app/connections/knowledge.segments/_head.segment.rsc +0 -6
- package/.next/server/app/connections/knowledge.segments/_index.segment.rsc +0 -11
- package/.next/server/app/connections/knowledge.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/connections/knowledge.segments/connections/knowledge/__PAGE__.segment.rsc +0 -9
- package/.next/server/app/connections/knowledge.segments/connections/knowledge.segment.rsc +0 -5
- package/.next/server/app/connections/knowledge.segments/connections.segment.rsc +0 -5
- package/.next/server/app/settings/advanced/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/advanced/page/next-font-manifest.json +0 -6
- package/.next/server/app/settings/advanced/page.js.nft.json +0 -1
- package/.next/server/app/settings/advanced/page_client-reference-manifest.js +0 -3
- package/.next/server/app/settings/advanced.html +0 -1
- package/.next/server/app/settings/advanced.rsc +0 -27
- package/.next/server/app/settings/advanced.segments/_full.segment.rsc +0 -27
- package/.next/server/app/settings/advanced.segments/_head.segment.rsc +0 -6
- package/.next/server/app/settings/advanced.segments/_index.segment.rsc +0 -11
- package/.next/server/app/settings/advanced.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/settings/advanced.segments/settings/advanced/__PAGE__.segment.rsc +0 -9
- package/.next/server/app/settings/advanced.segments/settings/advanced.segment.rsc +0 -5
- package/.next/server/app/settings/advanced.segments/settings.segment.rsc +0 -5
- package/.next/server/app/settings/backends/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/backends/page/next-font-manifest.json +0 -6
- package/.next/server/app/settings/backends/page.js +0 -17
- package/.next/server/app/settings/backends/page_client-reference-manifest.js +0 -3
- package/.next/server/app/settings/backends.html +0 -1
- package/.next/server/app/settings/backends.rsc +0 -24
- package/.next/server/app/settings/backends.segments/_full.segment.rsc +0 -24
- package/.next/server/app/settings/backends.segments/_head.segment.rsc +0 -6
- package/.next/server/app/settings/backends.segments/_index.segment.rsc +0 -11
- package/.next/server/app/settings/backends.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/settings/backends.segments/settings/backends/__PAGE__.segment.rsc +0 -6
- package/.next/server/app/settings/backends.segments/settings/backends.segment.rsc +0 -5
- package/.next/server/app/settings/backends.segments/settings.segment.rsc +0 -5
- package/.next/server/app/settings/connections/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/connections/page/next-font-manifest.json +0 -6
- package/.next/server/app/settings/connections/page.js +0 -17
- package/.next/server/app/settings/connections/page_client-reference-manifest.js +0 -3
- package/.next/server/app/settings/connections.html +0 -1
- package/.next/server/app/settings/connections.rsc +0 -24
- package/.next/server/app/settings/connections.segments/_full.segment.rsc +0 -24
- package/.next/server/app/settings/connections.segments/_head.segment.rsc +0 -6
- package/.next/server/app/settings/connections.segments/_index.segment.rsc +0 -11
- package/.next/server/app/settings/connections.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/settings/connections.segments/settings/connections/__PAGE__.segment.rsc +0 -6
- package/.next/server/app/settings/connections.segments/settings/connections.segment.rsc +0 -5
- package/.next/server/app/settings/connections.segments/settings.segment.rsc +0 -5
- package/.next/server/app/settings/journal/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/journal/page/next-font-manifest.json +0 -6
- package/.next/server/app/settings/journal/page/react-loadable-manifest.json +0 -8
- package/.next/server/app/settings/journal/page_client-reference-manifest.js +0 -3
- package/.next/server/app/settings/journal.html +0 -1
- package/.next/server/app/settings/journal.rsc +0 -27
- package/.next/server/app/settings/journal.segments/_full.segment.rsc +0 -27
- package/.next/server/app/settings/journal.segments/_head.segment.rsc +0 -6
- package/.next/server/app/settings/journal.segments/_index.segment.rsc +0 -11
- package/.next/server/app/settings/journal.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/settings/journal.segments/settings/journal/__PAGE__.segment.rsc +0 -9
- package/.next/server/app/settings/journal.segments/settings/journal.segment.rsc +0 -5
- package/.next/server/app/settings/journal.segments/settings.segment.rsc +0 -5
- package/.next/server/app/settings/messaging/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/messaging/page/next-font-manifest.json +0 -6
- package/.next/server/app/settings/messaging/page/react-loadable-manifest.json +0 -8
- package/.next/server/app/settings/messaging/page.js +0 -17
- package/.next/server/app/settings/messaging/page.js.nft.json +0 -1
- package/.next/server/app/settings/messaging/page_client-reference-manifest.js +0 -3
- package/.next/server/app/settings/messaging.html +0 -1
- package/.next/server/app/settings/messaging.meta +0 -16
- package/.next/server/app/settings/messaging.rsc +0 -24
- package/.next/server/app/settings/messaging.segments/_full.segment.rsc +0 -24
- package/.next/server/app/settings/messaging.segments/_head.segment.rsc +0 -6
- package/.next/server/app/settings/messaging.segments/_index.segment.rsc +0 -11
- package/.next/server/app/settings/messaging.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/settings/messaging.segments/settings/messaging/__PAGE__.segment.rsc +0 -6
- package/.next/server/app/settings/messaging.segments/settings/messaging.segment.rsc +0 -5
- package/.next/server/app/settings/messaging.segments/settings.segment.rsc +0 -5
- package/.next/server/app/settings/processes/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/processes/page/build-manifest.json +0 -18
- package/.next/server/app/settings/processes/page/next-font-manifest.json +0 -6
- package/.next/server/app/settings/processes/page/react-loadable-manifest.json +0 -8
- package/.next/server/app/settings/processes/page/server-reference-manifest.json +0 -4
- package/.next/server/app/settings/processes/page.js +0 -17
- package/.next/server/app/settings/processes/page_client-reference-manifest.js +0 -3
- package/.next/server/app/settings/processes.html +0 -1
- package/.next/server/app/settings/processes.meta +0 -16
- package/.next/server/app/settings/processes.rsc +0 -24
- package/.next/server/app/settings/processes.segments/_full.segment.rsc +0 -24
- package/.next/server/app/settings/processes.segments/_head.segment.rsc +0 -6
- package/.next/server/app/settings/processes.segments/_index.segment.rsc +0 -11
- package/.next/server/app/settings/processes.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/settings/processes.segments/settings/processes/__PAGE__.segment.rsc +0 -6
- package/.next/server/app/settings/processes.segments/settings/processes.segment.rsc +0 -5
- package/.next/server/app/settings/processes.segments/settings.segment.rsc +0 -5
- package/.next/server/app/settings/routines/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/routines/page/build-manifest.json +0 -18
- package/.next/server/app/settings/routines/page/next-font-manifest.json +0 -6
- package/.next/server/app/settings/routines/page/react-loadable-manifest.json +0 -8
- package/.next/server/app/settings/routines/page/server-reference-manifest.json +0 -4
- package/.next/server/app/settings/routines/page.js.nft.json +0 -1
- package/.next/server/app/settings/routines/page_client-reference-manifest.js +0 -3
- package/.next/server/app/settings/routines.html +0 -1
- package/.next/server/app/settings/routines.meta +0 -16
- package/.next/server/app/settings/routines.rsc +0 -27
- package/.next/server/app/settings/routines.segments/_full.segment.rsc +0 -27
- package/.next/server/app/settings/routines.segments/_head.segment.rsc +0 -6
- package/.next/server/app/settings/routines.segments/_index.segment.rsc +0 -11
- package/.next/server/app/settings/routines.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/settings/routines.segments/settings/routines/__PAGE__.segment.rsc +0 -9
- package/.next/server/app/settings/routines.segments/settings/routines.segment.rsc +0 -5
- package/.next/server/app/settings/routines.segments/settings.segment.rsc +0 -5
- package/.next/server/app/settings/schedule/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/schedule/page/build-manifest.json +0 -18
- package/.next/server/app/settings/schedule/page/next-font-manifest.json +0 -6
- package/.next/server/app/settings/schedule/page/react-loadable-manifest.json +0 -8
- package/.next/server/app/settings/schedule/page/server-reference-manifest.json +0 -4
- package/.next/server/app/settings/schedule/page_client-reference-manifest.js +0 -3
- package/.next/server/app/settings/schedule.html +0 -1
- package/.next/server/app/settings/schedule.meta +0 -16
- package/.next/server/app/settings/schedule.rsc +0 -27
- package/.next/server/app/settings/schedule.segments/_full.segment.rsc +0 -27
- package/.next/server/app/settings/schedule.segments/_head.segment.rsc +0 -6
- package/.next/server/app/settings/schedule.segments/_index.segment.rsc +0 -11
- package/.next/server/app/settings/schedule.segments/_tree.segment.rsc +0 -2
- package/.next/server/app/settings/schedule.segments/settings/schedule/__PAGE__.segment.rsc +0 -9
- package/.next/server/app/settings/schedule.segments/settings/schedule.segment.rsc +0 -5
- package/.next/server/app/settings/schedule.segments/settings.segment.rsc +0 -5
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_connections_knowledge_page_actions_06w7ski.js +0 -3
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_advanced_page_actions_0x06bjx.js +0 -3
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_backends_page_actions_0z3vipu.js +0 -3
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_connections_page_actions_0n0b1rb.js +0 -3
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_journal_page_actions_0_.h.-y.js +0 -3
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_messaging_page_actions_0czehcp.js +0 -3
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_processes_page_actions_0zbumx3.js +0 -3
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_routines_page_actions_0-37ia4.js +0 -3
- package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_schedule_page_actions_045j4zv.js +0 -3
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0s6jb_7.js +0 -4
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0wu80v6.js +0 -4
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0~yic40.js +0 -4
- package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_113c8xj.js +0 -4
- package/.next/server/chunks/ssr/[root-of-the-server]__00ch_ms._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__00s5z4o._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__03yuq_v._.js +0 -7
- package/.next/server/chunks/ssr/[root-of-the-server]__0kcivrd._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0kvyeu1._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0t-9jvt._.js +0 -3
- package/.next/server/chunks/ssr/_0-3uzu1._.js +0 -3
- package/.next/server/chunks/ssr/_0.yhrky._.js +0 -3
- package/.next/server/chunks/ssr/_0.zct4p._.js +0 -3
- package/.next/server/chunks/ssr/_00_--i0._.js +0 -3
- package/.next/server/chunks/ssr/_00ej8j9._.js +0 -3
- package/.next/server/chunks/ssr/_03bq.de._.js +0 -3
- package/.next/server/chunks/ssr/_04jkn8c._.js +0 -3
- package/.next/server/chunks/ssr/_04kt9.8._.js +0 -3
- package/.next/server/chunks/ssr/_05jfize._.js +0 -3
- package/.next/server/chunks/ssr/_06_m-vp._.js +0 -3
- package/.next/server/chunks/ssr/_09-o1vq._.js +0 -3
- package/.next/server/chunks/ssr/_095u19_._.js +0 -3
- package/.next/server/chunks/ssr/_0_qwmiz._.js +0 -3
- package/.next/server/chunks/ssr/_0bzj8lx._.js +0 -3
- package/.next/server/chunks/ssr/_0cccma-._.js +0 -3
- package/.next/server/chunks/ssr/_0da0k2u._.js +0 -3
- package/.next/server/chunks/ssr/_0evcd7w._.js +0 -3
- package/.next/server/chunks/ssr/_0e~4oah._.js +0 -3
- package/.next/server/chunks/ssr/_0ibeuw6._.js +0 -3
- package/.next/server/chunks/ssr/_0ixicrb._.js +0 -3
- package/.next/server/chunks/ssr/_0jg6hy0._.js +0 -3
- package/.next/server/chunks/ssr/_0jrxrig._.js +0 -3
- package/.next/server/chunks/ssr/_0mbbas-._.js +0 -3
- package/.next/server/chunks/ssr/_0n5nlcq._.js +0 -3
- package/.next/server/chunks/ssr/_0nvpv18._.js +0 -3
- package/.next/server/chunks/ssr/_0o~hk.m._.js +0 -3
- package/.next/server/chunks/ssr/_0pdbiu.._.js +0 -9
- package/.next/server/chunks/ssr/_0pg6_56._.js +0 -3
- package/.next/server/chunks/ssr/_0q8o~q1._.js +0 -3
- package/.next/server/chunks/ssr/_0r1lb0f._.js +0 -3
- package/.next/server/chunks/ssr/_0r25vcp._.js +0 -3
- package/.next/server/chunks/ssr/_0r9.4nv._.js +0 -3
- package/.next/server/chunks/ssr/_0tf7hjz._.js +0 -3
- package/.next/server/chunks/ssr/_0xmdrbq._.js +0 -3
- package/.next/server/chunks/ssr/_0zz58.-._.js +0 -5
- package/.next/server/chunks/ssr/_0~62r4-._.js +0 -3
- package/.next/server/chunks/ssr/_0~fi8o-._.js +0 -3
- package/.next/server/chunks/ssr/_10s6iy.._.js +0 -3
- package/.next/server/chunks/ssr/_11pdc0s._.js +0 -3
- package/.next/server/chunks/ssr/_12u1eq4._.js +0 -3
- package/.next/server/chunks/ssr/_12~0n.1._.js +0 -3
- package/.next/server/chunks/ssr/_139rl~~._.js +0 -3
- package/.next/server/chunks/ssr/node_modules__pnpm_0ehnn5t._.js +0 -3
- package/.next/server/chunks/ssr/packages_dashboard_src_0ylj~og._.js +0 -3
- package/.next/server/chunks/ssr/packages_dashboard_src_0z~3g5n._.js +0 -3
- package/.next/server/chunks/ssr/packages_dashboard_src_app_connections_knowledge_page_tsx_027jwd3._.js +0 -3
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_advanced_page_tsx_0o~_885._.js +0 -3
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_routines_page_tsx_0wcgtqz._.js +0 -27
- package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_schedule_page_tsx_0b8zr2l._.js +0 -3
- package/.next/static/chunks/0-7buty0ytvtv.js +0 -1
- package/.next/static/chunks/0-dw-4a8vg9m8.js +0 -1
- package/.next/static/chunks/0.42rv-zt_0x9.js +0 -1
- package/.next/static/chunks/0.za~0o8~5n1~.css +0 -1
- package/.next/static/chunks/0.~7m9beb0bmp.js +0 -11
- package/.next/static/chunks/00bnu7r6428v0.js +0 -5
- package/.next/static/chunks/00w3emoohg-8r.js +0 -1
- package/.next/static/chunks/01v7jn283j2tm.js +0 -1
- package/.next/static/chunks/04l41qp5lpt_e.js +0 -1
- package/.next/static/chunks/04ufv2_7i_b6..js +0 -1
- package/.next/static/chunks/053f~_moi~csx.js +0 -2
- package/.next/static/chunks/05xugzf8sfrxt.js +0 -1
- package/.next/static/chunks/05z4egti~pj9t.js +0 -1
- package/.next/static/chunks/073hnld9_qq5g.js +0 -1
- package/.next/static/chunks/08ql4siwtlgpn.js +0 -1
- package/.next/static/chunks/08wmxlql_xq.d.js +0 -1
- package/.next/static/chunks/0e3ds9mkx7.~v.js +0 -1
- package/.next/static/chunks/0eaf903zc7v~5.js +0 -1
- package/.next/static/chunks/0fri59ogcsfbl.js +0 -1
- package/.next/static/chunks/0gj-lf~wlbr8e.js +0 -1
- package/.next/static/chunks/0gurc-kqffso6.js +0 -1
- package/.next/static/chunks/0gyst06ap~-n~.js +0 -19
- package/.next/static/chunks/0g~py-0sje~1m.js +0 -1
- package/.next/static/chunks/0hk8v-849puw8.js +0 -1
- package/.next/static/chunks/0hlvfkk1o66wf.js +0 -1
- package/.next/static/chunks/0hog4tqr3.skm.js +0 -10
- package/.next/static/chunks/0igwe6jdxslbt.js +0 -1
- package/.next/static/chunks/0ikm~jl5uiw6-.js +0 -1
- package/.next/static/chunks/0j15hn~z~i56..js +0 -1
- package/.next/static/chunks/0jffu_yb.90.i.js +0 -1
- package/.next/static/chunks/0mfem_s.3s4r-.js +0 -1
- package/.next/static/chunks/0n3b0fpsgml2x.js +0 -1
- package/.next/static/chunks/0p.w04inifyq..js +0 -1
- package/.next/static/chunks/0qqty6t-yyty4.js +0 -3
- package/.next/static/chunks/0q~dvm61tpf3~.js +0 -1
- package/.next/static/chunks/0rt76ki54i~hm.js +0 -1
- package/.next/static/chunks/0scggusqhhid7.js +0 -1
- package/.next/static/chunks/0t.xvj-t_vtrp.js +0 -25
- package/.next/static/chunks/0t9rda60_m-vk.js +0 -1
- package/.next/static/chunks/0u9qsqnsm-skj.js +0 -1
- package/.next/static/chunks/0urw8_v9f97en.js +0 -1
- package/.next/static/chunks/0vcwfsuf878wc.js +0 -1
- package/.next/static/chunks/0vivqt8njmkpv.js +0 -1
- package/.next/static/chunks/0vktbjh2e4xpg.js +0 -1
- package/.next/static/chunks/0v~gg~hn-8_k2.js +0 -1
- package/.next/static/chunks/0ws8mq3rp~572.js +0 -1
- package/.next/static/chunks/0x..-zi0av524.js +0 -1
- package/.next/static/chunks/0xsb_r_t_1r-u.js +0 -1
- package/.next/static/chunks/0zaa6zhrjsaik.js +0 -1
- package/.next/static/chunks/0zimhqr6r4xlz.js +0 -1
- package/.next/static/chunks/0~7d6m~du_b.d.js +0 -1
- package/.next/static/chunks/0~nct--xt2~bi.js +0 -1
- package/.next/static/chunks/1121be2-kv8g~.js +0 -1
- package/.next/static/chunks/1257_06cutyq_.js +0 -1
- package/.next/static/chunks/12ee4r9-orwi8.js +0 -1
- package/.next/static/chunks/13kdqs0pmjqy5.js +0 -1
- package/.next/static/chunks/13tf0oa.w743m.js +0 -1
- package/.next/static/chunks/16s5r16k361sd.js +0 -1
- package/.next/static/chunks/16tqshshex~qk.js +0 -1
- package/.next/static/chunks/17846-azlpszq.js +0 -1
- package/.next/static/chunks/17b2~cmid8qeu.js +0 -3
- package/.next/static/chunks/17rcecfesskxn.js +0 -1
- /package/.next/server/app/{connections/knowledge → browser}/page/build-manifest.json +0 -0
- /package/.next/server/app/{connections/knowledge → browser}/page/server-reference-manifest.json +0 -0
- /package/.next/server/app/{settings/advanced → connections/notes}/page/build-manifest.json +0 -0
- /package/.next/server/app/{settings/advanced → connections/notes}/page/server-reference-manifest.json +0 -0
- /package/.next/server/app/settings/{backends → danger-zone}/page/build-manifest.json +0 -0
- /package/.next/server/app/settings/{backends → danger-zone}/page/server-reference-manifest.json +0 -0
- /package/.next/server/app/settings/{connections → hours}/page/build-manifest.json +0 -0
- /package/.next/server/app/settings/{connections → hours}/page/server-reference-manifest.json +0 -0
- /package/.next/server/app/settings/{journal → infrastructure}/page/build-manifest.json +0 -0
- /package/.next/server/app/settings/{journal → infrastructure}/page/server-reference-manifest.json +0 -0
- /package/.next/server/app/settings/{messaging → safety}/page/build-manifest.json +0 -0
- /package/.next/server/app/settings/{messaging → safety}/page/server-reference-manifest.json +0 -0
- /package/.next/static/{i_QR0WWkZFeICcOMbfuUs → 4Wu33OvzutxPxXUu1PWPC}/_buildManifest.js +0 -0
- /package/.next/static/{i_QR0WWkZFeICcOMbfuUs → 4Wu33OvzutxPxXUu1PWPC}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[39312,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(82508),e=a.i(40410),f=a.i(96459),g=a.i(62588),h=a.i(59974),i=a.i(75674),j=a.i(30400),k=a.i(48558),l=a.i(34043);function m({ok:a,pulse:c}){return(0,b.jsx)("span",{className:(0,k.cn)("inline-block h-2 w-2 rounded-full",a?"bg-emerald-500":"bg-red-500",a&&c&&"animate-pulse")})}function n({status:a}){return a&&a.configured?(0,b.jsx)(m,{ok:a.connected}):(0,b.jsx)("span",{className:"inline-block h-2 w-2 rounded-full bg-gray-300 dark:bg-gray-600"})}let o={google:"Google (Calendar / Gmail)",obsidian:"Obsidian",notion:"Notion"};function p({health:a}){let{connected:c}=(0,l.useSSE)(),d=[{label:"Database",ok:a?.dbConnected??!1},{label:"Context Files",ok:a?.contextFilesOk??!1},{label:"Live Updates",ok:c,pulse:!0}];return(0,b.jsxs)(j.Card,{children:[(0,b.jsx)(j.CardHeader,{children:(0,b.jsx)(j.CardTitle,{children:"System Health"})}),(0,b.jsxs)("div",{className:"space-y-3",children:[d.map(a=>(0,b.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:a.label}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(m,{ok:a.ok,pulse:a.pulse}),(0,b.jsx)("span",{className:a.ok?"text-emerald-600 dark:text-emerald-400":"text-red-600 dark:text-red-400",children:a.ok?"Connected":"Disconnected"})]})]},a.label)),(0,b.jsxs)("div",{className:"border-t border-border pt-3",children:[(0,b.jsx)("p",{className:"mb-2 text-xs font-medium uppercase tracking-wider text-muted-foreground",children:"Integrations"}),["google","obsidian","notion"].map(c=>{let d=a?.integrations?.[c];return(0,b.jsxs)("div",{className:"flex items-center justify-between text-sm py-0.5",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:o[c]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(n,{status:d}),(0,b.jsx)("span",{className:d&&d.configured?d.connected?"text-emerald-600 dark:text-emerald-400":"text-red-600 dark:text-red-400":"text-gray-400 dark:text-gray-500",children:d&&d.configured?d.connected?"Connected":"Error":"Not Configured"})]})]},c)})]}),(0,b.jsxs)("div",{className:"border-t border-border pt-3",children:[(0,b.jsx)("p",{className:"mb-2 text-xs font-medium uppercase tracking-wider text-muted-foreground",children:"Runtime"}),(0,b.jsxs)("div",{className:"grid grid-cols-3 gap-2",children:[(0,b.jsxs)("div",{className:"text-center",children:[(0,b.jsx)("p",{className:"text-lg font-semibold text-foreground",children:a?.activeSessions??0}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"Active"})]}),(0,b.jsxs)("div",{className:"text-center",children:[(0,b.jsx)("p",{className:"text-lg font-semibold text-foreground",children:a?.todaySessions??0}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"Today"})]}),(0,b.jsxs)("div",{className:"text-center",children:[(0,b.jsx)("p",{className:"text-lg font-semibold text-foreground",children:a?.eventBusSize??0}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"Event Bus"})]})]})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:"Uptime"}),(0,b.jsx)("span",{className:"font-mono text-xs",children:a?(0,k.formatUptime)(a.uptime):"—"})]})]})]})}var q=a.i(62988),r=a.i(45787),s=a.i(7384),t=a.i(869),u=a.i(19958),v=a.i(40091),w=a.i(65760),x=a.i(16316);function y(){let a=(0,w.useEventStream)(10),{data:c}=(0,x.useEvents)(),d=c?.pages[0]?.events.slice(0,10)??[],e=new Set,f=[];for(let b of[...a,...d])e.has(b.id)||(e.add(b.id),f.push(b));let g=f.sort((a,b)=>(0,k.parseUtcDate)(b.started_at).getTime()-(0,k.parseUtcDate)(a.started_at).getTime()).slice(0,10);return(0,b.jsxs)(j.Card,{children:[(0,b.jsxs)(j.CardHeader,{children:[(0,b.jsx)(j.CardTitle,{children:"Recent Events"}),(0,b.jsxs)(q.default,{href:"/activity",className:"flex items-center gap-1 text-xs text-primary hover:underline",children:["View all ",(0,b.jsx)(r.ArrowRight,{className:"h-3 w-3"})]})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[0===g.length&&(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"No events yet"}),g.map(a=>{let c=u.EVENT_TYPE_COLORS[a.action_type]??"gray",d=u.RESULT_COLORS[a.result]??"gray",e=a.model_used?(0,v.modelBadgeVariant)(a.model_used):void 0;return(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"w-24 shrink-0 font-mono tabular-nums text-muted-foreground",children:(0,k.formatShortDateTime)(a.started_at)})}),(0,b.jsxs)(t.TooltipContent,{children:[(0,k.formatAbsoluteTime)(a.started_at)," (",(0,k.formatRelativeTime)(a.started_at),")"]})]}),(0,b.jsx)(s.Badge,{variant:c,className:"shrink-0",children:a.action_type.split(".").pop()}),e&&"gray"!==e&&(0,b.jsx)(s.Badge,{variant:e,className:"shrink-0",children:(0,v.formatShortModelName)(a.model_used)}),(0,b.jsx)("span",{className:"ml-auto font-mono text-muted-foreground",children:(0,k.formatCurrency)(a.cost_usd)}),(0,b.jsx)(s.Badge,{variant:d,className:"shrink-0",children:a.result})]},a.id)})]})]})}var z=a.i(80196),A=a.i(40294),B=a.i(93929),C=a.i(73608);function D(){let{data:a}=(0,g.useQuery)({queryKey:["calendar"],queryFn:()=>h.api.get("/calendar/events",{date:"today",days:1}),refetchInterval:3e5}),{data:c}=(0,e.useHealth)(),{regenerate:d,target:f,status:i,error:l,dismiss:m}=(0,A.useRegenerate)(),n=a?.events??[];return c?.integrationModes?.google_calendar?.mode==="delegated"?(0,b.jsxs)(j.Card,{children:[(0,b.jsx)(j.CardHeader,{children:(0,b.jsx)(j.CardTitle,{children:"Today's Calendar"})}),(0,b.jsxs)("div",{className:"flex items-start gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(z.Bot,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,b.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,b.jsxs)(j.Card,{children:[(0,b.jsx)(j.CardHeader,{children:(0,b.jsxs)("div",{className:"flex items-center justify-between w-full",children:[(0,b.jsx)(j.CardTitle,{children:"Today's Calendar"}),(0,b.jsx)(B.RegenerateButton,{target:"today",label:"Refresh",currentTarget:f,status:i,error:l,onRegenerate:d,onDismiss:m,variant:"ghost",className:"h-7 px-2 text-xs text-muted-foreground"})]})}),(0,b.jsxs)("div",{className:"space-y-2",children:[0===n.length&&(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"No events today"}),n.map(a=>(0,b.jsxs)("div",{className:"flex items-start gap-3 text-sm",children:[(0,b.jsx)("span",{className:"shrink-0 font-mono text-xs text-muted-foreground",children:a.allDay?"All day":`${(0,C.format)((0,k.parseUtcDate)(a.start),"HH:mm")}–${(0,C.format)((0,k.parseUtcDate)(a.end),"HH:mm")}`}),(0,b.jsx)("span",{className:"text-foreground",children:a.summary})]},a.id))]})]})}var E=a.i(55522),F=a.i(45663),G=a.i(5260);function H(){let{data:a}=(0,E.useCost)("daily"),{data:c}=(0,F.useMetrics)(),d=c?.cost.last7dUsd??0,e=a?.byPeriod.slice(-7).map(a=>a.total_cost)??[];return(0,b.jsxs)(j.Card,{children:[(0,b.jsxs)(j.CardHeader,{children:[(0,b.jsx)(j.CardTitle,{children:"Cost Summary"}),(0,b.jsxs)(q.default,{href:"/analytics",className:"flex items-center gap-1 text-xs text-primary hover:underline",children:["Details ",(0,b.jsx)(r.ArrowRight,{className:"h-3 w-3"})]})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-baseline justify-between",children:[(0,b.jsx)("span",{className:"text-sm text-muted-foreground",children:"Last 7 days"}),(0,b.jsx)("span",{className:"text-lg font-semibold text-foreground",children:(0,k.formatCurrency)(d)})]}),e.length>=2&&(0,b.jsx)(G.Sparkline,{values:e,color:"var(--color-primary)",width:200,height:32})]})]})}var I=a.i(33952),J=a.i(38375);function K(){let{data:a}=(0,J.useBooksSummary)(3),{data:c}=(0,J.useBooks)({status:"reading",limit:3}),d=a?.byStatus??[];if(0===d.reduce((a,b)=>a+b.count,0))return null;let e=d.find(a=>"reading"===a.status)?.count??0,f=a?.monthlyCompleted?.[0]?.count??0,g=c?.books??[];return(0,b.jsxs)(j.Card,{children:[(0,b.jsx)(j.CardHeader,{children:(0,b.jsxs)("div",{className:"flex items-center justify-between w-full",children:[(0,b.jsx)(j.CardTitle,{children:(0,b.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,b.jsx)(I.BookOpen,{className:"h-4 w-4 text-blue-500"}),"Reading"]})}),(0,b.jsx)(q.default,{href:"/reading",className:"text-xs text-muted-foreground hover:text-foreground",children:"View all →"})]})}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-4 text-sm",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("span",{className:"font-medium text-foreground",children:e}),(0,b.jsx)("span",{className:"text-muted-foreground",children:" in progress"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("span",{className:"font-medium text-foreground",children:f}),(0,b.jsx)("span",{className:"text-muted-foreground",children:" completed this month"})]})]}),g.length>0?(0,b.jsx)("ul",{className:"space-y-1 text-sm",children:g.map(a=>(0,b.jsxs)("li",{className:"flex items-baseline justify-between gap-2",children:[(0,b.jsx)("span",{className:"truncate text-foreground",children:a.title}),(0,b.jsxs)("span",{className:"shrink-0 text-xs text-muted-foreground",children:[a.highlightCount," hl"]})]},a.id))}):(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"No active reads."})]})]})}var L=a.i(20283),M=a.i(28314),N=a.i(21218),O=a.i(32307),P=a.i(54506),Q=a.i(85857);function R(){let{data:a}=(0,L.useApprovals)(),c=(0,L.useApproveAction)(),d=(0,L.useDenyAction)(),e=(0,M.useConfirm)(),f=a?.approvals??[];if(0===f.length)return null;let g=async(a,b)=>{await e({title:"Deny this approval?",description:`"${b}" will be permanently denied.`,confirmLabel:"Deny",variant:"destructive"})&&d.mutate(a)};return(0,b.jsxs)(j.Card,{tone:"warning",children:[(0,b.jsx)(j.CardHeader,{className:"mb-2",children:(0,b.jsxs)(j.CardTitle,{className:"flex items-center gap-2 text-sm",children:[(0,b.jsx)(O.AlertTriangle,{className:"h-4 w-4 text-amber-600 dark:text-amber-400"}),f.length," pending approval",1!==f.length?"s":""]})}),(0,b.jsx)("div",{className:"space-y-3",children:f.map(a=>(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("p",{className:"truncate text-sm text-foreground",children:a.task_description}),(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,b.jsx)(s.Badge,{variant:"blue",className:"text-[10px]",children:a.task_type}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"font-mono tabular-nums",children:(0,k.formatShortDateTime)(a.created_at)})}),(0,b.jsxs)(t.TooltipContent,{children:[(0,k.formatAbsoluteTime)(a.created_at)," (",(0,k.formatRelativeTime)(a.created_at),")"]})]})]})]}),(0,b.jsxs)("div",{className:"flex shrink-0 gap-1.5",children:[(0,b.jsxs)(N.Button,{size:"sm",className:"h-7 bg-emerald-600 px-2.5 hover:bg-emerald-700",onClick:()=>c.mutate(a.id),disabled:c.isPending,children:[(0,b.jsx)(P.Check,{className:"mr-1 h-3 w-3"}),"Approve"]}),(0,b.jsx)(N.Button,{size:"sm",variant:"outline",className:"h-7 border-red-300 px-2.5 text-red-600 hover:bg-red-50 dark:border-red-700 dark:text-red-400 dark:hover:bg-red-950",onClick:()=>g(a.id,a.task_description),disabled:d.isPending,children:(0,b.jsx)(Q.X,{className:"h-3 w-3"})})]})]},a.id))})]})}var S=a.i(78019),T=a.i(5423);let U=(0,T.default)("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var V=a.i(29629);let W={error:0,warning:1,info:2};function X(a){return`${a.id}:${a.fingerprint}`}let Y=new Set,Z=new Map,$=new Set;function _(a){return $.add(a),()=>{$.delete(a)}}function aa(){return 0}let ab=0;function ac(){return ab}function ad(a){if(!a.dismissable)return;let b=X(a);for(let c of("info"===a.severity?Y.add(b):"warning"===a.severity&&Z.set(b,Date.now()+864e5),ab+=1,$))c()}let ae=new Set,af=null;function ag(a){return ae.add(a),()=>{ae.delete(a),0===ae.size&&null!==af&&(clearInterval(af),af=null)}}function ah(){return 0}function ai(){return 0}let aj={error:"error",warning:"warning",info:"info"};function ak(a,b){if(a===b)return!0;if(!a.startsWith(b))return!1;let c=a.charAt(b.length);return"/"===c||"?"===c||"#"===c}function al({alert:a,onDismiss:c}){var d;return(0,b.jsx)(V.Alert,{variant:aj[a.severity],children:(0,b.jsxs)("div",{className:"flex w-full items-start gap-2",children:[(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsx)("p",{className:"font-medium leading-snug",children:a.title}),a.description&&(0,b.jsx)("p",{className:"mt-0.5 text-[11px] leading-snug opacity-80",children:a.description}),a.href&&(0,b.jsx)("p",{className:"mt-1",children:(0,b.jsx)(q.default,{href:a.href,className:"text-[11px] font-medium underline underline-offset-2 hover:no-underline",children:ak(d=a.href,"/connections")?"Open connection settings":ak(d,"/settings")?"Open settings":ak(d,"/setup")?"Open setup wizard":"View details"})})]}),a.dismissable&&c&&(0,b.jsx)(N.Button,{variant:"ghost",size:"sm",onClick:()=>c(a),"aria-label":"warning"===a.severity?"Snooze for 24 hours":"Dismiss notification",title:"warning"===a.severity?"Snooze for 24 hours":"Dismiss",children:(0,b.jsx)(Q.X,{className:"h-3.5 w-3.5"})})]})})}function am(){let{alerts:a}=function(){let{data:a,isError:b}=(0,e.useHealth)();(0,c.useSyncExternalStore)(_,ac,aa);let d=(0,c.useSyncExternalStore)(ag,ah,ai);return(0,c.useMemo)(()=>{let c=[],e=d?new Date(d).toISOString():"",f=!b,g=!1;if(f){if(a){let b=a.lastTickAt;if(d>0&&"number"==typeof b&&d-b>9e4){g=!0;let a=Math.round((d-b)/1e3);c.push({id:"system.daemon_frozen",severity:"error",title:"Daemon appears frozen",description:`No heartbeat for ${a}s. The event loop may be blocked. Restart the daemon if this persists.`,href:"/health",source:"system",dismissable:!1,detectedAt:e,fingerprint:`stale:${30*Math.floor(a/30)}s`})}a.alerts&&c.push(...a.alerts)}}else c.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:e,fingerprint:"offline"});return{alerts:c.filter(a=>!function(a){let b=X(a);if("info"===a.severity&&Y.has(b))return!0;if("warning"===a.severity){let a=Z.get(b);if(void 0!==a){if(Date.now()<a)return!0;Z.delete(b)}}return!1}(a)).sort((a,b)=>{let c=W[a.severity]-W[b.severity];return 0!==c?c:b.detectedAt.localeCompare(a.detectedAt)}),daemonOnline:f,daemonFrozen:g}},[a,b,d])}();return(0,b.jsx)(an,{alerts:a,onDismiss:ad})}function an({alerts:a,onDismiss:d}){let[e,f]=(0,c.useState)(!1);if(0===a.length)return null;let g=a.filter(a=>"error"===a.severity),h=a.filter(a=>"error"!==a.severity),i=e?h:h.slice(0,Math.max(0,5-g.length)),j=h.length-i.length;return(0,b.jsxs)("section",{"aria-label":"Notifications",className:"space-y-2",children:[g.map(a=>(0,b.jsx)(al,{alert:a},a.id)),i.map(a=>(0,b.jsx)(al,{alert:a,onDismiss:d},a.id)),j>0&&(0,b.jsx)("div",{className:"flex justify-end",children:(0,b.jsx)(N.Button,{variant:"ghost",size:"sm",onClick:()=>f(a=>!a),className:"text-xs text-muted-foreground",children:e?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(U,{className:"mr-1 h-3.5 w-3.5"}),"Show fewer"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(S.ChevronDown,{className:"mr-1 h-3.5 w-3.5"}),"Show ",j," more"]})})})]})}var ao=a.i(36608);function ap(){let{data:a}=(0,e.useHealth)(),c=a?.integrationModes?.gmail;return c?.mode!=="delegated"||"draft-only"!==c.subTier?null:(0,b.jsxs)(j.Card,{children:[(0,b.jsx)(j.CardHeader,{children:(0,b.jsx)(j.CardTitle,{children:"Drafts awaiting send"})}),(0,b.jsxs)("div",{className:"flex items-start gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(ao.Mail,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,b.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,b.jsx)(q.default,{href:"https://mail.google.com/mail/u/0/#drafts",target:"_blank",rel:"noopener noreferrer",className:"underline underline-offset-2",children:"your drafts folder"})," ","to review."]})]})]})}var aq=a.i(96211),ar=a.i(43095),as=a.i(34436),at=a.i(77257),au=a.i(36271),av=a.i(33432);let aw=[{label:"Knowledge",href:"/knowledge",icon:aq.Brain,description:"All MD — projects, today, weekly, user notes.",status:{kind:"ready"}},{label:"Reading",href:"/reading",icon:I.BookOpen,description:"Books, highlights, and reading progress.",status:{kind:"ready"}},{label:"Git",href:"/git",icon:ar.GitBranch,description:"Repos and event-driven Triggers.",status:{kind:"soon",label:"Preview"}},{label:"Trip",href:"/trip",icon:as.Plane,description:"Trips, itineraries, and post-trip notes.",status:{kind:"soon",label:"Soon"},hidden:!0},{label:"Finance",href:"/finance",icon:at.Wallet,description:"Receipts, budgets, and trends.",status:{kind:"soon",label:"Soon"},hidden:!0},{label:"Health",href:"/health",icon:au.Heart,description:"Activity, sleep, habits, and journaling.",status:{kind:"skeleton",label:"Skeleton"},hidden:!0}];function ax(){return(0,b.jsxs)("section",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-baseline justify-between",children:[(0,b.jsx)("h2",{className:"text-sm font-medium text-foreground",children:"Your Life"}),(0,b.jsx)("span",{className:"text-[11px] text-muted-foreground",children:"Domain lenses over Knowledge"})]}),(0,b.jsx)("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-4",children:aw.filter(a=>!a.hidden).map(a=>(0,b.jsx)(ay,{lens:a},a.href))})]})}function ay({lens:a}){let c=a.icon,d="ready"!==a.status.kind;return(0,b.jsxs)(q.default,{href:a.href,className:(0,k.cn)("group relative flex flex-col rounded-xl border bg-card p-4 shadow-[0_1px_3px_rgb(0_0_0/0.04)] transition-all duration-150","hover:shadow-[0_4px_8px_rgb(0_0_0/0.06)] hover:-translate-y-0.5 hover:border-border/80",d&&"border-dashed"),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)(c,{className:"h-4 w-4 text-muted-foreground"}),(0,b.jsx)(av.ArrowUpRight,{className:"h-3.5 w-3.5 text-muted-foreground/40 transition-colors group-hover:text-muted-foreground"})]}),(0,b.jsxs)("div",{className:"mt-3 flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-foreground",children:a.label}),"ready"!==a.status.kind&&(0,b.jsx)("span",{className:"rounded-full bg-muted px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wide text-muted-foreground",children:a.status.label})]}),(0,b.jsx)("p",{className:"mt-1 text-[11px] leading-relaxed text-muted-foreground",children:a.description})]})}let az=(0,T.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 aA=a.i(39293);let aB=[{id:"self-learning",badge:"Preview",title:"Self-learning mode tunes its own skills",description:"Let the agent analyze how you actually work and curate small overlays on top of its built-in skills — so the daily-surface (today, schedule, user-profile) gets sharper over time without you editing prompts.",href:"/settings/self-learning",cta:"Enable self-learning"},{id:"voice",title:"Voice messages, transcribed on-device",description:"Send a Telegram voice note or WhatsApp PTT and the daemon transcribes it locally with Whisper before the agent reads it. Audio never leaves your machine.",href:"/settings/advanced",cta:"Turn on Voice mode"},{id:"harness",title:"Reuses your CLI agent harness as-is",description:"The brain runs as Claude Code, Codex, or Gemini CLI — the same hooks, skills, MCP servers, and permission model you already use in the terminal apply here.",href:"/settings/models",cta:"Choose a backend"},{id:"process-routing",title:"Different models for different jobs",description:"Route deep work like morning routines and DMs to Sonnet or Opus, and light triage like mail classification to Haiku — per ProcessKey, swappable any time.",href:"/settings/processes",cta:"Tune process routing"},{id:"md-memory",title:"Memory is plain Markdown you can read",description:"Every durable thing the agent learns lives in ~/.personal-agent/context/*.md. Open it in your editor, grep it, version it — there is no hidden vector store.",href:"/knowledge",cta:"Browse Knowledge"},{id:"messaging",title:"DM the agent on your favorite app",description:"Pair Slack, Telegram, Discord, or WhatsApp with a single magic phrase and chat with the agent from there. Single-owner only by design — no group chats.",href:"/settings/messaging",cta:"Set up messaging"},{id:"observations",title:"Hourly observations, not reactive polling",description:"Obsidian, Git, Notion, and Calendar changes flow into an observations queue. Once an hour the agent consolidates what changed and decides whether to act.",href:"/activity",cta:"See recent activity"},{id:"routines",title:"Morning, evening, and weekly routines",description:"Cron-driven routines reflect on your day, week, and month automatically — quiet hours respected, day boundary at 04:00 local. Fully customizable.",href:"/settings/routines",cta:"Customize routines"},{id:"mail",title:"Multi-provider mail with offline FTS5 search",description:"Gmail, Outlook, Yahoo, iCloud, and any IMAP account stream into a single local index. Search instantly, even when you're offline.",href:"/connections/mail",cta:"Connect a mailbox"},{id:"schedule",title:"It schedules itself",description:"Say 'remind me Friday at 4pm' or 'every Monday morning summarize my open PRs' — the agent owns its own schedule rows and wakes itself when the time comes.",href:"/schedule",cta:"View schedule"},{id:"lifestyle",title:"Reading, receipts, trips — all in one chat",description:"Beyond engineering work, the agent tracks books you're reading, receipts you photograph, and trip itineraries you forward to it. Same chat surface, different lenses.",href:"/reading",cta:"Open Reading"},{id:"approvals",title:"Notify and Approve safety tiers",description:"Reads are autonomous; writes are classified Notify (proceed after pinging you) or Approve (require explicit confirmation). Even Allow mode keeps the absolute-block layer.",href:"/settings/advanced",cta:"Review safety settings"}];function aC({tips:a=aB}={}){let[d,e]=(0,c.useState)(-1);if((0,c.useEffect)(()=>{0!==a.length&&e(Math.floor(Math.random()*a.length))},[a.length]),0===a.length)return null;let f=d>=0?a[d]:null;return(0,b.jsx)(aD,{tip:f,onCycle:()=>e(b=>(function(a,b){if(a<=0)return -1;if(1===a)return 0;if(b<0||b>=a)return Math.floor(Math.random()*a);let c=Math.floor(Math.random()*(a-1));return c<b?c:c+1})(a.length,b))})}function aD({tip:a,onCycle:c}){return(0,b.jsx)(j.Card,{className:"border-amber-200/70 bg-amber-50/40 dark:border-amber-900/60 dark:bg-amber-950/20",children:(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[(0,b.jsx)("div",{className:"mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-amber-100 text-amber-700 dark:bg-amber-900/50 dark:text-amber-300",children:(0,b.jsx)(az,{className:"h-4 w-4","aria-hidden":"true"})}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-[11px] font-medium uppercase tracking-wider text-amber-700 dark:text-amber-400",children:"Did you know?"}),a?.badge&&(0,b.jsx)("span",{className:"rounded-full bg-amber-200/70 px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wide text-amber-900 dark:bg-amber-900/60 dark:text-amber-200",children:a.badge})]}),(0,b.jsx)("div",{"aria-live":"polite","aria-atomic":"true",children:a?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"mt-1 text-sm font-medium text-foreground",children:a.title}),(0,b.jsx)("p",{className:"mt-1 text-[12px] leading-relaxed text-muted-foreground",children:a.description})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"mt-1 h-4 w-2/3 animate-pulse rounded bg-muted","aria-hidden":"true"}),(0,b.jsx)("p",{className:"mt-2 h-3 w-full animate-pulse rounded bg-muted","aria-hidden":"true"}),(0,b.jsx)("p",{className:"mt-1.5 h-3 w-5/6 animate-pulse rounded bg-muted","aria-hidden":"true"})]})}),a&&(0,b.jsxs)("div",{className:"mt-2.5 flex flex-wrap items-center gap-2",children:[a.href&&(0,b.jsx)(N.Button,{asChild:!0,size:"sm",variant:"outline",className:"h-7 px-2.5 text-xs",children:(0,b.jsxs)(q.default,{href:a.href,children:[a.cta??"Learn more",(0,b.jsx)(r.ArrowRight,{className:"ml-1 h-3 w-3","aria-hidden":"true"})]})}),c&&(0,b.jsxs)(N.Button,{size:"sm",variant:"ghost",className:"h-7 px-2 text-xs text-muted-foreground",onClick:c,"aria-label":"Show another tip",children:[(0,b.jsx)(aA.RefreshCw,{className:"mr-1 h-3 w-3","aria-hidden":"true"}),"Next tip"]})]})]})]})})}var aE=a.i(41010),aF=a.i(87206),aG=a.i(81130);a.s(["default",0,function(){let a=(0,d.useRouter)(),{data:l,isLoading:m}=(0,e.useHealth)(),{data:n}=(0,f.useSetupStatus)(),{data:o}=(0,g.useQuery)({queryKey:["next-check"],queryFn:()=>h.api.get("/dashboard/next-check"),refetchInterval:3e4}),{data:q}=(0,i.useScheduleNext)(),r=(0,aG.useQueryClient)(),[s,t]=(0,c.useState)("idle"),[u,v]=(0,c.useState)(null),w=(0,c.useRef)(0),x=(0,c.useRef)(null);(0,c.useEffect)(()=>{n?.needsSetup&&a.push("/setup")},[n?.needsSetup,a]);let z=(0,c.useMemo)(()=>o?.nextRunAt?(0,k.parseUtcDate)(o.nextRunAt).toLocaleString():"Disabled",[o?.nextRunAt]),A=(0,M.useConfirm)(),B=(0,c.useCallback)(()=>{w.current+=1,null!==x.current&&(window.clearTimeout(x.current),x.current=null)},[]);(0,c.useEffect)(()=>B,[B]);let C=(0,c.useCallback)(async()=>{await r.refetchQueries({queryKey:["next-check"],type:"active"})},[r]),E=(0,c.useCallback)(async(a,b)=>{await C();try{let c=await h.api.get("/events",{type:"routine.hourly_check",days:"1",page:1,limit:1});if(b!==w.current||function(a,b){let c=a[0];if(!c)return!1;let d=c.completed_at??c.started_at;return(0,k.parseUtcDate)(d).getTime()>=b}(c.events,a))return}catch{}b!==w.current||Date.now()-a>=6e4||(x.current=window.setTimeout(()=>{E(a,b)},1500))},[C]),F=async()=>{if(!await A({title:"Trigger hourly check now?",description:"This will run the reviewable observation queue immediately instead of waiting for the next scheduled check.",confirmLabel:"Run now"}))return;B(),t("running");let a=3e3;try{let a=Date.now(),b=await h.api.post("/agent/run-now",{reason:"dashboard"});if(v(function(a){if("queued"===a.status)return{tone:"success",message:"Queued successfully."};switch(a.reason){case"morning_routine_active":return{tone:"warning",message:"Skipped: morning routine is still running."};case"hourly_check_in_progress":return{tone:"warning",message:"Skipped: a previous hourly check is still running."};case"below_threshold":return{tone:"warning",message:"Skipped: there were no reviewable pending observations."};default:return{tone:"warning",message:"Skipped: hourly check was not queued."}}}(b)),await C(),"queued"===b.status){w.current+=1;let b=w.current;E(a,b)}}catch{v({tone:"error",message:"Failed to queue."}),a=1e4}finally{t("idle"),setTimeout(()=>v(null),a)}};return(0,b.jsxs)("div",{className:"space-y-6 p-6",children:[(0,b.jsx)(aF.PageHeader,{title:"Overview",description:(0,b.jsxs)(b.Fragment,{children:["Live snapshot of your agent. The cards below show when the next automatic hourly check will run and today’s spend. Everything auto-refreshes. Use ",(0,b.jsx)("em",{children:"Run now"}),"to trigger the hourly check immediately when you’re impatient."]})}),(0,b.jsx)(am,{}),m?(0,b.jsx)(aE.CardSkeleton,{count:3}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[(0,b.jsxs)(j.Card,{children:[(0,b.jsx)(j.CardHeader,{children:(0,b.jsx)(j.CardStatLabel,{children:"Next Check"})}),(0,b.jsx)("p",{className:"text-sm font-medium text-foreground",children:z}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:o?.active?"Active window":"Outside active window"}),q?.next&&(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:["Scheduled: ",(0,k.formatAbsoluteTime)(q.next.scheduled_for)]}),(0,b.jsx)(N.Button,{size:"sm",variant:"outline",className:"mt-3 w-full",onClick:F,disabled:"running"===s,children:"running"===s?"Running...":"Run hourly check now"}),u?.tone==="success"&&(0,b.jsx)("p",{className:"mt-1 text-xs text-emerald-600 dark:text-emerald-400",children:u.message}),u?.tone==="warning"&&(0,b.jsx)("p",{className:"mt-1 text-xs text-amber-600 dark:text-amber-400",children:u.message}),u?.tone==="error"&&(0,b.jsx)("p",{className:"mt-1 text-xs text-red-600 dark:text-red-400",children:u.message})]}),(0,b.jsxs)(j.Card,{children:[(0,b.jsx)(j.CardHeader,{children:(0,b.jsx)(j.CardStatLabel,{children:"Today's Cost"})}),(0,b.jsx)(j.CardValue,{children:l?(0,k.formatCurrency)(l.todayCostUsd):"—"}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:[l?.todaySessions??0," session",(l?.todaySessions??0)!==1?"s":""]})]})]}),(0,b.jsx)(aC,{}),(0,b.jsx)(ax,{}),(0,b.jsxs)("div",{className:"grid gap-6 lg:grid-cols-3",children:[(0,b.jsxs)("div",{className:"space-y-6 lg:col-span-2",children:[(0,b.jsx)(R,{}),(0,b.jsx)(y,{})]}),(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsx)(p,{health:l}),(0,b.jsx)(D,{}),(0,b.jsx)(ap,{}),(0,b.jsx)(K,{}),(0,b.jsx)(H,{})]})]})]})]})}],39312)}];
|
|
1
|
+
module.exports=[39312,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(82508),e=a.i(40410),f=a.i(96459),g=a.i(62588),h=a.i(59974),i=a.i(75674),j=a.i(30400),k=a.i(48558),l=a.i(34043);function m({ok:a,pulse:c}){return(0,b.jsx)("span",{className:(0,k.cn)("inline-block h-2 w-2 rounded-full",a?"bg-success":"bg-destructive",a&&c&&"animate-pulse")})}function n({status:a}){return a&&a.configured?(0,b.jsx)(m,{ok:a.connected}):(0,b.jsx)("span",{className:"inline-block h-2 w-2 rounded-full bg-muted-foreground/30"})}let o={google:"Google (Calendar / Gmail)",obsidian:"Obsidian",notion:"Notion"};function p({health:a}){let{connected:c}=(0,l.useSSE)(),d=[{label:"Database",ok:a?.dbConnected??!1},{label:"Context Files",ok:a?.contextFilesOk??!1},{label:"Live Updates",ok:c,pulse:!0}];return(0,b.jsxs)(j.Card,{children:[(0,b.jsx)(j.CardHeader,{children:(0,b.jsx)(j.CardTitle,{children:"System Health"})}),(0,b.jsxs)("div",{className:"space-y-3",children:[d.map(a=>(0,b.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:a.label}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(m,{ok:a.ok,pulse:a.pulse}),(0,b.jsx)("span",{className:a.ok?"text-success":"text-destructive",children:a.ok?"Connected":"Disconnected"})]})]},a.label)),(0,b.jsxs)("div",{className:"border-t border-border pt-3",children:[(0,b.jsx)("p",{className:"mb-2 text-xs font-medium uppercase tracking-wider text-muted-foreground",children:"Integrations"}),["google","obsidian","notion"].map(c=>{let d=a?.integrations?.[c];return(0,b.jsxs)("div",{className:"flex items-center justify-between text-sm py-0.5",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:o[c]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(n,{status:d}),(0,b.jsx)("span",{className:d&&d.configured?d.connected?"text-success":"text-destructive":"text-muted-foreground/70",children:d&&d.configured?d.connected?"Connected":"Error":"Not Configured"})]})]},c)})]}),(0,b.jsxs)("div",{className:"border-t border-border pt-3",children:[(0,b.jsx)("p",{className:"mb-2 text-xs font-medium uppercase tracking-wider text-muted-foreground",children:"Runtime"}),(0,b.jsxs)("div",{className:"grid grid-cols-3 gap-2",children:[(0,b.jsxs)("div",{className:"text-center",children:[(0,b.jsx)("p",{className:"text-lg font-semibold text-foreground",children:a?.activeSessions??0}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"Active"})]}),(0,b.jsxs)("div",{className:"text-center",children:[(0,b.jsx)("p",{className:"text-lg font-semibold text-foreground",children:a?.todaySessions??0}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"Today"})]}),(0,b.jsxs)("div",{className:"text-center",children:[(0,b.jsx)("p",{className:"text-lg font-semibold text-foreground",children:a?.eventBusSize??0}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"Event Bus"})]})]})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:"Uptime"}),(0,b.jsx)("span",{className:"font-mono text-xs",children:a?(0,k.formatUptime)(a.uptime):"—"})]})]})]})}var q=a.i(62988),r=a.i(45787),s=a.i(7384),t=a.i(869),u=a.i(19958),v=a.i(40091),w=a.i(65760),x=a.i(16316);function y(){let a=(0,w.useEventStream)(10),{data:c}=(0,x.useEvents)(),d=c?.pages[0]?.events.slice(0,10)??[],e=new Set,f=[];for(let b of[...a,...d])e.has(b.id)||(e.add(b.id),f.push(b));let g=f.sort((a,b)=>(0,k.parseUtcDate)(b.started_at).getTime()-(0,k.parseUtcDate)(a.started_at).getTime()).slice(0,10);return(0,b.jsxs)(j.Card,{children:[(0,b.jsxs)(j.CardHeader,{children:[(0,b.jsx)(j.CardTitle,{children:"Recent Events"}),(0,b.jsxs)(q.default,{href:"/activity",className:"flex items-center gap-1 text-xs text-primary hover:underline",children:["View all ",(0,b.jsx)(r.ArrowRight,{className:"h-3 w-3"})]})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[0===g.length&&(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"No events yet"}),g.map(a=>{let c=u.EVENT_TYPE_COLORS[a.action_type]??"gray",d=u.RESULT_COLORS[a.result]??"gray",e=a.model_used?(0,v.modelBadgeVariant)(a.model_used):void 0;return(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"w-24 shrink-0 font-mono tabular-nums text-muted-foreground",children:(0,k.formatShortDateTime)(a.started_at)})}),(0,b.jsxs)(t.TooltipContent,{children:[(0,k.formatAbsoluteTime)(a.started_at)," (",(0,k.formatRelativeTime)(a.started_at),")"]})]}),(0,b.jsx)(s.Badge,{variant:c,className:"shrink-0",children:a.action_type.split(".").pop()}),e&&"gray"!==e&&(0,b.jsx)(s.Badge,{variant:e,className:"shrink-0",children:(0,v.formatShortModelName)(a.model_used)}),(0,b.jsx)("span",{className:"ml-auto font-mono text-muted-foreground",children:(0,k.formatCurrency)(a.cost_usd)}),(0,b.jsx)(s.Badge,{variant:d,className:"shrink-0",children:a.result})]},a.id)})]})]})}var z=a.i(80196),A=a.i(40294),B=a.i(93929),C=a.i(73608);function D(){let{data:a}=(0,g.useQuery)({queryKey:["calendar"],queryFn:()=>h.api.get("/calendar/events",{date:"today",days:1}),refetchInterval:3e5}),{data:c}=(0,e.useHealth)(),{regenerate:d,target:f,status:i,error:l,dismiss:m}=(0,A.useRegenerate)(),n=a?.events??[];return c?.integrationModes?.google_calendar?.mode==="delegated"?(0,b.jsxs)(j.Card,{children:[(0,b.jsx)(j.CardHeader,{children:(0,b.jsx)(j.CardTitle,{children:"Today's Calendar"})}),(0,b.jsxs)("div",{className:"flex items-start gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(z.Bot,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,b.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,b.jsxs)(j.Card,{children:[(0,b.jsx)(j.CardHeader,{children:(0,b.jsxs)("div",{className:"flex items-center justify-between w-full",children:[(0,b.jsx)(j.CardTitle,{children:"Today's Calendar"}),(0,b.jsx)(B.RegenerateButton,{target:"today",label:"Refresh",currentTarget:f,status:i,error:l,onRegenerate:d,onDismiss:m,variant:"ghost",className:"h-7 px-2 text-xs text-muted-foreground"})]})}),(0,b.jsxs)("div",{className:"space-y-2",children:[0===n.length&&(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"No events today"}),n.map(a=>(0,b.jsxs)("div",{className:"flex items-start gap-3 text-sm",children:[(0,b.jsx)("span",{className:"shrink-0 font-mono text-xs text-muted-foreground",children:a.allDay?"All day":`${(0,C.format)((0,k.parseUtcDate)(a.start),"HH:mm")}–${(0,C.format)((0,k.parseUtcDate)(a.end),"HH:mm")}`}),(0,b.jsx)("span",{className:"text-foreground",children:a.summary})]},a.id))]})]})}var E=a.i(55522),F=a.i(45663),G=a.i(5260);function H(){let{data:a}=(0,E.useCost)("daily"),{data:c}=(0,F.useMetrics)(),d=c?.cost.last7dUsd??0,e=a?.byPeriod.slice(-7).map(a=>a.total_cost)??[];return(0,b.jsxs)(j.Card,{children:[(0,b.jsxs)(j.CardHeader,{children:[(0,b.jsx)(j.CardTitle,{children:"Cost Summary"}),(0,b.jsxs)(q.default,{href:"/analytics",className:"flex items-center gap-1 text-xs text-primary hover:underline",children:["Details ",(0,b.jsx)(r.ArrowRight,{className:"h-3 w-3"})]})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-baseline justify-between",children:[(0,b.jsx)("span",{className:"text-sm text-muted-foreground",children:"Last 7 days"}),(0,b.jsx)("span",{className:"text-lg font-semibold text-foreground",children:(0,k.formatCurrency)(d)})]}),e.length>=2&&(0,b.jsx)(G.Sparkline,{values:e,color:"var(--color-primary)",width:200,height:32})]})]})}var I=a.i(20283),J=a.i(28314),K=a.i(21218),L=a.i(32307),M=a.i(54506),N=a.i(85857);function O(){let{data:a}=(0,I.useApprovals)(),c=(0,I.useApproveAction)(),d=(0,I.useDenyAction)(),e=(0,J.useConfirm)(),f=a?.approvals??[];if(0===f.length)return null;let g=async(a,b)=>{await e({title:"Deny this approval?",description:`"${b}" will be permanently denied.`,confirmLabel:"Deny",variant:"destructive"})&&d.mutate(a)};return(0,b.jsxs)(j.Card,{tone:"warning",children:[(0,b.jsx)(j.CardHeader,{className:"mb-2",children:(0,b.jsxs)(j.CardTitle,{className:"flex items-center gap-2 text-sm",children:[(0,b.jsx)(L.AlertTriangle,{className:"h-4 w-4 text-warning"}),f.length," pending approval",1!==f.length?"s":""]})}),(0,b.jsx)("div",{className:"space-y-3",children:f.map(a=>(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("p",{className:"truncate text-sm text-foreground",children:a.task_description}),(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,b.jsx)(s.Badge,{variant:"blue",className:"text-[10px]",children:a.task_type}),(0,b.jsxs)(t.Tooltip,{children:[(0,b.jsx)(t.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"font-mono tabular-nums",children:(0,k.formatShortDateTime)(a.created_at)})}),(0,b.jsxs)(t.TooltipContent,{children:[(0,k.formatAbsoluteTime)(a.created_at)," (",(0,k.formatRelativeTime)(a.created_at),")"]})]})]})]}),(0,b.jsxs)("div",{className:"flex shrink-0 gap-1.5",children:[(0,b.jsxs)(K.Button,{size:"sm",className:"h-7 bg-success/15 px-2.5 text-success hover:bg-success/25",onClick:()=>c.mutate(a.id),disabled:c.isPending,children:[(0,b.jsx)(M.Check,{className:"mr-1 h-3 w-3"}),"Approve"]}),(0,b.jsx)(K.Button,{size:"sm",variant:"outline",className:"h-7 border-destructive/40 px-2.5 text-destructive hover:bg-destructive/10",onClick:()=>g(a.id,a.task_description),disabled:d.isPending,children:(0,b.jsx)(N.X,{className:"h-3 w-3"})})]})]},a.id))})]})}var P=a.i(78019),Q=a.i(5423);let R=(0,Q.default)("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var S=a.i(29629);let T={error:0,warning:1,info:2};function U(a){return`${a.id}:${a.fingerprint}`}let V=new Set,W=new Map,X=new Set;function Y(a){return X.add(a),()=>{X.delete(a)}}function Z(){return 0}let $=0;function _(){return $}function aa(a){if(!a.dismissable)return;let b=U(a);for(let c of("info"===a.severity?V.add(b):"warning"===a.severity&&W.set(b,Date.now()+864e5),$+=1,X))c()}let ab=new Set,ac=null;function ad(a){return ab.add(a),()=>{ab.delete(a),0===ab.size&&null!==ac&&(clearInterval(ac),ac=null)}}function ae(){return 0}function af(){return 0}let ag={error:"error",warning:"warning",info:"info"};function ah(a,b){if(a===b)return!0;if(!a.startsWith(b))return!1;let c=a.charAt(b.length);return"/"===c||"?"===c||"#"===c}function ai({alert:a,onDismiss:c}){var d;return(0,b.jsx)(S.Alert,{variant:ag[a.severity],children:(0,b.jsxs)("div",{className:"flex w-full items-start gap-2",children:[(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsx)("p",{className:"font-medium leading-snug",children:a.title}),a.description&&(0,b.jsx)("p",{className:"mt-0.5 text-[11px] leading-snug opacity-80",children:a.description}),a.href&&(0,b.jsx)("p",{className:"mt-1",children:(0,b.jsx)(q.default,{href:a.href,className:"text-[11px] font-medium underline underline-offset-2 hover:no-underline",children:ah(d=a.href,"/connections")?"Open connection settings":ah(d,"/settings")?"Open settings":ah(d,"/setup")?"Open setup wizard":"View details"})})]}),a.dismissable&&c&&(0,b.jsx)(K.Button,{variant:"ghost",size:"sm",onClick:()=>c(a),"aria-label":"warning"===a.severity?"Snooze for 24 hours":"Dismiss notification",title:"warning"===a.severity?"Snooze for 24 hours":"Dismiss",children:(0,b.jsx)(N.X,{className:"h-3.5 w-3.5"})})]})})}function aj(){let{alerts:a}=function(){let{data:a,isError:b}=(0,e.useHealth)();(0,c.useSyncExternalStore)(Y,_,Z);let d=(0,c.useSyncExternalStore)(ad,ae,af);return(0,c.useMemo)(()=>{let c=[],e=d?new Date(d).toISOString():"",f=!b,g=!1;if(f){if(a){let b=a.lastTickAt;if(d>0&&"number"==typeof b&&d-b>9e4){g=!0;let a=Math.round((d-b)/1e3);c.push({id:"system.daemon_frozen",severity:"error",title:"Daemon appears frozen",description:`No heartbeat for ${a}s. The event loop may be blocked. Restart the daemon if this persists.`,href:"/health",source:"system",dismissable:!1,detectedAt:e,fingerprint:`stale:${30*Math.floor(a/30)}s`})}a.alerts&&c.push(...a.alerts)}}else c.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:e,fingerprint:"offline"});return{alerts:c.filter(a=>!function(a){let b=U(a);if("info"===a.severity&&V.has(b))return!0;if("warning"===a.severity){let a=W.get(b);if(void 0!==a){if(Date.now()<a)return!0;W.delete(b)}}return!1}(a)).sort((a,b)=>{let c=T[a.severity]-T[b.severity];return 0!==c?c:b.detectedAt.localeCompare(a.detectedAt)}),daemonOnline:f,daemonFrozen:g}},[a,b,d])}();return(0,b.jsx)(ak,{alerts:a,onDismiss:aa})}function ak({alerts:a,onDismiss:d}){let[e,f]=(0,c.useState)(!1);if(0===a.length)return null;let g=a.filter(a=>"error"===a.severity),h=a.filter(a=>"error"!==a.severity),i=e?h:h.slice(0,Math.max(0,5-g.length)),j=h.length-i.length;return(0,b.jsxs)("section",{"aria-label":"Notifications",className:"space-y-2",children:[g.map(a=>(0,b.jsx)(ai,{alert:a},a.id)),i.map(a=>(0,b.jsx)(ai,{alert:a,onDismiss:d},a.id)),j>0&&(0,b.jsx)("div",{className:"flex justify-end",children:(0,b.jsx)(K.Button,{variant:"ghost",size:"sm",onClick:()=>f(a=>!a),className:"text-xs text-muted-foreground",children:e?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(R,{className:"mr-1 h-3.5 w-3.5"}),"Show fewer"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(P.ChevronDown,{className:"mr-1 h-3.5 w-3.5"}),"Show ",j," more"]})})})]})}var al=a.i(36608);function am(){let{data:a}=(0,e.useHealth)(),c=a?.integrationModes?.gmail;return c?.mode!=="delegated"||"draft-only"!==c.subTier?null:(0,b.jsxs)(j.Card,{children:[(0,b.jsx)(j.CardHeader,{children:(0,b.jsx)(j.CardTitle,{children:"Drafts awaiting send"})}),(0,b.jsxs)("div",{className:"flex items-start gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(al.Mail,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,b.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,b.jsx)(q.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 an={success:"text-success",warning:"text-warning",error:"text-destructive"};function ao({label:a,children:c}){return(0,b.jsxs)("div",{className:"flex flex-col gap-1.5 p-5",children:[(0,b.jsx)(j.CardStatLabel,{children:a}),c]})}function ap({health:a,nextCheckLabel:c,nextCheckAtLabel:d,nextCheckActive:e,scheduledNextLabel:f,onRunNow:g,runNowRunning:h,runNowFeedback:i}){let l=a?.status==="ok";return(0,b.jsxs)(j.Card,{className:"grid divide-y divide-border p-0 sm:grid-cols-3 sm:divide-x sm:divide-y-0",children:[(0,b.jsxs)(ao,{label:"Agent",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:(0,k.cn)("inline-block h-2.5 w-2.5 rounded-full",l?"bg-success":"bg-destructive",l&&"animate-pulse")}),(0,b.jsx)("span",{className:"font-display text-xl font-semibold tracking-tight text-foreground",children:a?l?"Operational":"Attention needed":"—"})]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:a?`Up ${(0,k.formatUptime)(a.uptime)} \xb7 ${a.activeSessions} active session${1!==a.activeSessions?"s":""}`:"Waiting for daemon…"})]}),(0,b.jsxs)(ao,{label:"Next check",children:[(0,b.jsx)("p",{className:"font-display text-xl font-semibold tracking-tight text-foreground",children:c}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:[d?`${d} \xb7 `:"",e?"Inside active window":"Outside active window",f?` \xb7 next scheduled ${f}`:""]}),(0,b.jsxs)("div",{className:"mt-1 flex flex-wrap items-center gap-2",children:[(0,b.jsx)(K.Button,{size:"sm",variant:"outline",className:"h-7 px-2.5 text-xs",onClick:g,disabled:h,"aria-busy":h,children:h?"Running…":"Run now"}),(0,b.jsx)("p",{role:"status",className:(0,k.cn)("text-xs",i&&an[i.tone]),children:i?.message})]})]}),(0,b.jsxs)(ao,{label:"Today",children:[(0,b.jsx)("p",{className:"font-display text-xl font-semibold tracking-tight text-foreground",children:a?(0,k.formatCurrency)(a.todayCostUsd):"—"}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:[a?.todaySessions??0," session",(a?.todaySessions??0)!==1?"s":""," so far today"]})]})]})}var aq=a.i(96211),ar=a.i(33952),as=a.i(43095),at=a.i(34436),au=a.i(77257),av=a.i(36271),aw=a.i(33432);let ax=[{label:"Knowledge",href:"/knowledge",icon:aq.Brain,description:"All MD — projects, today, weekly, user notes.",status:{kind:"ready"}},{label:"Reading",href:"/reading",icon:ar.BookOpen,description:"Books, highlights, and reading progress.",status:{kind:"ready"}},{label:"Git",href:"/git",icon:as.GitBranch,description:"Repos and event-driven Triggers.",status:{kind:"soon",label:"Preview"}},{label:"Trip",href:"/trip",icon:at.Plane,description:"Trips, itineraries, and post-trip notes.",status:{kind:"soon",label:"Soon"},hidden:!0},{label:"Finance",href:"/finance",icon:au.Wallet,description:"Receipts, budgets, and trends.",status:{kind:"soon",label:"Soon"},hidden:!0},{label:"Health",href:"/health",icon:av.Heart,description:"Activity, sleep, habits, and journaling.",status:{kind:"skeleton",label:"Skeleton"},hidden:!0}];function ay(){return(0,b.jsxs)("section",{className:"space-y-2.5",children:[(0,b.jsxs)("div",{className:"flex items-baseline justify-between",children:[(0,b.jsx)("h2",{className:"text-xs font-semibold uppercase tracking-[0.08em] text-muted-foreground",children:"Your Life"}),(0,b.jsx)("span",{className:"text-[11px] text-muted-foreground/70",children:"Domain lenses over Knowledge"})]}),(0,b.jsx)("div",{className:"grid grid-cols-2 gap-2.5 sm:grid-cols-4",children:ax.filter(a=>!a.hidden).map(a=>(0,b.jsx)(az,{lens:a},a.href))})]})}function az({lens:a}){let c=a.icon,d="ready"!==a.status.kind;return(0,b.jsxs)(q.default,{href:a.href,title:a.description,className:(0,k.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)]",d&&"border-dashed"),children:[(0,b.jsx)(c,{className:"h-4 w-4 shrink-0 text-muted-foreground transition-colors group-hover:text-primary"}),(0,b.jsx)("span",{className:"truncate text-sm font-medium text-foreground",children:a.label}),"ready"!==a.status.kind&&(0,b.jsx)("span",{className:"rounded-full bg-muted px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wide text-muted-foreground",children:a.status.label}),(0,b.jsx)(aw.ArrowUpRight,{className:"ml-auto h-3.5 w-3.5 shrink-0 text-muted-foreground/40 transition-colors group-hover:text-primary"})]})}let aA=(0,Q.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 aB=a.i(39293);let aC=[{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 aD({tips:a=aC}={}){let[d,e]=(0,c.useState)(-1);if((0,c.useEffect)(()=>{0!==a.length&&e(Math.floor(Math.random()*a.length))},[a.length]),0===a.length)return null;let f=d>=0?a[d]:null;return(0,b.jsx)(aE,{tip:f,onCycle:()=>e(b=>(function(a,b){if(a<=0)return -1;if(1===a)return 0;if(b<0||b>=a)return Math.floor(Math.random()*a);let c=Math.floor(Math.random()*(a-1));return c<b?c:c+1})(a.length,b))})}function aE({tip:a,onCycle:c}){return(0,b.jsx)(j.Card,{className:"border-dashed bg-card/60 p-4",children:(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[(0,b.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,b.jsx)(aA,{className:"h-4 w-4","aria-hidden":"true"})}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-[0.08em] text-muted-foreground",children:"Did you know?"}),a?.badge&&(0,b.jsx)("span",{className:"rounded-full bg-primary/10 px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wide text-primary",children:a.badge})]}),(0,b.jsx)("div",{"aria-live":"polite","aria-atomic":"true",children:a?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"mt-1 text-sm font-medium text-foreground",children:a.title}),(0,b.jsx)("p",{className:"mt-1 text-[12px] leading-relaxed text-muted-foreground",children:a.description})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"mt-1 h-4 w-2/3 animate-pulse rounded bg-muted","aria-hidden":"true"}),(0,b.jsx)("p",{className:"mt-2 h-3 w-full animate-pulse rounded bg-muted","aria-hidden":"true"}),(0,b.jsx)("p",{className:"mt-1.5 h-3 w-5/6 animate-pulse rounded bg-muted","aria-hidden":"true"})]})}),a&&(0,b.jsxs)("div",{className:"mt-2.5 flex flex-wrap items-center gap-2",children:[a.href&&(0,b.jsx)(K.Button,{asChild:!0,size:"sm",variant:"outline",className:"h-7 px-2.5 text-xs",children:(0,b.jsxs)(q.default,{href:a.href,children:[a.cta??"Learn more",(0,b.jsx)(r.ArrowRight,{className:"ml-1 h-3 w-3","aria-hidden":"true"})]})}),c&&(0,b.jsxs)(K.Button,{size:"sm",variant:"ghost",className:"h-7 px-2 text-xs text-muted-foreground",onClick:c,"aria-label":"Show another tip",children:[(0,b.jsx)(aB.RefreshCw,{className:"mr-1 h-3 w-3","aria-hidden":"true"}),"Next tip"]})]})]})]})})}var aF=a.i(41010),aG=a.i(87206),aH=a.i(81130);a.s(["default",0,function(){let a=(0,d.useRouter)(),{data:j,isLoading:l}=(0,e.useHealth)(),{data:m}=(0,f.useSetupStatus)(),{data:n}=(0,g.useQuery)({queryKey:["next-check"],queryFn:()=>h.api.get("/dashboard/next-check"),refetchInterval:3e4}),{data:o}=(0,i.useScheduleNext)(),q=(0,aH.useQueryClient)(),[r,s]=(0,c.useState)("idle"),[t,u]=(0,c.useState)(null),v=(0,c.useRef)(0),w=(0,c.useRef)(null);(0,c.useEffect)(()=>{m?.needsSetup&&a.push("/setup")},[m?.needsSetup,a]);let x=n?.nextRunAt?(0,k.formatRelativeTime)(n.nextRunAt):"Disabled",z=n?.nextRunAt?(0,k.formatShortDateTime)(n.nextRunAt):null,A=(0,J.useConfirm)(),B=(0,c.useCallback)(()=>{v.current+=1,null!==w.current&&(window.clearTimeout(w.current),w.current=null)},[]);(0,c.useEffect)(()=>B,[B]);let C=(0,c.useCallback)(async()=>{await q.refetchQueries({queryKey:["next-check"],type:"active"})},[q]),E=(0,c.useCallback)(async(a,b)=>{await C();try{let c=await h.api.get("/events",{type:"routine.activity_scan",days:"1",page:1,limit:1});if(b!==v.current||function(a,b){let c=a[0];if(!c)return!1;let d=c.completed_at??c.started_at;return(0,k.parseUtcDate)(d).getTime()>=b}(c.events,a))return}catch{}b!==v.current||Date.now()-a>=6e4||(w.current=window.setTimeout(()=>{E(a,b)},1500))},[C]),F=async()=>{if(!await A({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;B(),s("running");let a=3e3;try{let a=Date.now(),b=await h.api.post("/agent/run-now",{reason:"dashboard"});if(u(function(a){if("queued"===a.status)return{tone:"success",message:"Queued successfully."};switch(a.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."}}}(b)),await C(),"queued"===b.status){v.current+=1;let b=v.current;E(a,b)}}catch{u({tone:"error",message:"Failed to queue."}),a=1e4}finally{s("idle"),setTimeout(()=>u(null),a)}};return(0,b.jsxs)("div",{className:"mx-auto w-full max-w-7xl space-y-8 p-6",children:[(0,b.jsx)(aG.PageHeader,{title:"Overview",description:"Your agent at a glance — current status, today's activity, and anything that needs you."}),(0,b.jsx)(aj,{}),(0,b.jsx)(O,{}),l?(0,b.jsx)(aF.CardSkeleton,{count:3}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(ap,{health:j,nextCheckLabel:x,nextCheckAtLabel:z,nextCheckActive:n?.active??!1,scheduledNextLabel:o?.next?(0,k.formatShortDateTime)(o.next.scheduled_for):null,onRunNow:F,runNowRunning:"running"===r,runNowFeedback:t}),(0,b.jsxs)("div",{className:"grid gap-6 lg:grid-cols-3",children:[(0,b.jsx)("div",{className:"space-y-6 lg:col-span-2",children:(0,b.jsx)(y,{})}),(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsx)(D,{}),(0,b.jsx)(am,{}),(0,b.jsx)(p,{health:j}),(0,b.jsx)(H,{})]})]}),(0,b.jsx)(ay,{}),(0,b.jsx)(aD,{})]})]})}],39312)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=packages_dashboard_src_app_page_tsx_0.p6n1a._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[330,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(13925),e=a.i(59974),f=a.i(75674),g=a.i(40294),h=a.i(93929),i=a.i(27727),j=a.i(41010),k=a.i(7384),l=a.i(21218),m=a.i(30400),n=a.i(9306),o=a.i(87206),p=a.i(869),q=a.i(48558),r=a.i(23780),s=a.i(40091),t=a.i(3504),u=a.i(5423);let v=(0,u.default)("AlarmClock",[["circle",{cx:"12",cy:"13",r:"8",key:"3y4lt7"}],["path",{d:"M12 9v4l2 2",key:"1c63tq"}],["path",{d:"M5 3 2 6",key:"18tl5t"}],["path",{d:"m22 6-3-3",key:"1opdir"}],["path",{d:"M6.38 18.7 4 21",key:"17xu3x"}],["path",{d:"M17.64 18.67 20 21",key:"kv2oe2"}]]);var w=a.i(43179),x=a.i(61213),y=a.i(29629),z=a.i(8212);a.i(70010);var A=a.i(68255),B=a.i(58906),C=a.i(47696),D=a.i(62588);let E=["schedule-options"],F="__default__";function G({value:a,onChange:d,id:f,disabled:g}){let{data:h,isLoading:i,isError:j}=(0,D.useQuery)({queryKey:E,queryFn:()=>e.api.get("/schedule/options"),staleTime:3e5}),k=(0,c.useMemo)(()=>(function(a){if(!a)return[];let b=[],c=[];for(let b of Object.keys(a.modelAliases)){let d=a.modelAliases[b];c.push({value:b,label:`${b.charAt(0).toUpperCase()}${b.slice(1)}`,hint:`Legacy alias → ${d} tier`})}for(let d of(c.length>0&&b.push({label:"Tier aliases",options:c}),B.BACKEND_IDS)){if((0,s.isBackendSelectionDisabled)(d))continue;let c=a.models[d]??[];if(0===c.length)continue;let e=(0,s.getBackendDeprecation)(d);b.push({label:e?`${s.BACKEND_LABELS[d]}${e.shortSuffix}`:s.BACKEND_LABELS[d],options:c.map(a=>({value:a.id,label:a.id,hint:a.deprecated?`${a.tier} tier \xb7 deprecated`:`${a.tier} tier`,deprecated:a.deprecated}))})}return b})(h),[h]),l=0===a.trim().length?F:a,m=l===F||k.some(a=>a.options.some(a=>a.value===l));return(0,b.jsxs)(C.Select,{value:l,disabled:g||i||j,onValueChange:a=>d(a===F?"":a),children:[(0,b.jsx)(C.SelectTrigger,{id:f,className:"h-9 w-full",children:(0,b.jsx)(C.SelectValue,{placeholder:"Default",children:function(a,b){if(0===a.trim().length)return"Default (process config)";for(let c of b)for(let b of c.options)if(b.value===a)return b.deprecated?`${b.label} (deprecated)`:b.label;return`${a} (unrecognised)`}(a,k)})}),(0,b.jsxs)(C.SelectContent,{children:[(0,b.jsx)(C.SelectGroup,{children:(0,b.jsx)(C.SelectItem,{value:F,children:"Default (process config)"})}),m?null:(0,b.jsxs)(C.SelectGroup,{children:[(0,b.jsx)(C.SelectLabel,{children:"Current pin"}),(0,b.jsx)(C.SelectItem,{value:l,children:(0,b.jsxs)("span",{className:"flex flex-col",children:[(0,b.jsx)("span",{children:a}),(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:"Not in the live registry — keeping the existing pin"})]})})]}),k.map(a=>(0,b.jsxs)(C.SelectGroup,{children:[(0,b.jsx)(C.SelectLabel,{children:a.label}),a.options.map(a=>(0,b.jsx)(C.SelectItem,{value:a.value,children:(0,b.jsxs)("span",{className:"flex flex-col",children:[(0,b.jsxs)("span",{children:[a.label,a.deprecated?(0,b.jsx)("span",{className:"ml-2 rounded-sm bg-amber-100 px-1 text-[10px] font-medium uppercase tracking-wide text-amber-700 dark:bg-amber-900/40 dark:text-amber-300",children:"deprecated"}):null]}),a.hint?(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:a.hint}):null]})},a.value))]},a.label))]})]})}let H=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],I=Array.from({length:31},(a,b)=>b+1),J={frequency:"once",oneOffDateTime:"",recurringTime:"09:00",intervalHours:1,minuteOfHour:0,daysOfWeek:[],daysOfMonth:[],onMissingDay:"",model:"",description:"",prompt:""};function K(a){let b={},c=a.description.trim(),d=a.prompt.trim();if("once"===a.frequency?(0===d.length?b.prompt="Prompt is required — it is the agent's only instruction at fire time.":d.length>A.SCHEDULE_PROMPT_MAX_CHARS&&(b.prompt=`Prompt must be at most ${A.SCHEDULE_PROMPT_MAX_CHARS} characters.`),c.length>A.SCHEDULE_DESCRIPTION_MAX_CHARS&&(b.description=`Description (the list label) must be at most ${A.SCHEDULE_DESCRIPTION_MAX_CHARS} characters.`)):(c.length<20&&(b.description="Description must be at least 20 characters — when no prompt override is set, this text is the agent's only context."),d.length>0&&d.length<20&&(b.prompt="Prompt override must be at least 20 characters, or leave empty to use the description as the agent body.")),"once"===a.frequency)if(a.oneOffDateTime){let c=new Date(a.oneOffDateTime).getTime();Number.isNaN(c)?b.oneOffDateTime="Invalid date/time.":c<Date.now()-6e4&&(b.oneOffDateTime="Must be at least a minute in the future.")}else b.oneOffDateTime="Required.";else if("hourly"===a.frequency){let c;Object.assign(b,(c={},(!Number.isInteger(a.intervalHours)||a.intervalHours<1||a.intervalHours>23)&&(c.intervalHours="Interval must be an integer between 1 and 23."),(!Number.isInteger(a.minuteOfHour)||a.minuteOfHour<0||a.minuteOfHour>59)&&(c.minuteOfHour="Minute must be an integer between 0 and 59."),c))}else/^\d{2}:\d{2}$/.test(a.recurringTime)||(b.recurringTime="Time must be HH:MM."),"weekly"===a.frequency&&0===a.daysOfWeek.length&&(b.daysOfWeek="Select at least one weekday."),"monthly"===a.frequency&&0===a.daysOfMonth.length&&(b.daysOfMonth="Select at least one day of the month.");return 0===Object.keys(b).length?null:b}function L(a){let b,c=a.description.trim(),d=a.prompt.trim(),e=d.length>0?d:void 0,f="custom",g=0===(b=a.model.trim()).length?{}:{model:b};return"once"===a.frequency?{kind:"once",body:{time:new Date(a.oneOffDateTime).toISOString(),taskType:f,prompt:d,...c?{description:c}:{},...g,taskContext:{source:"dashboard_manual"}}}:{kind:"recurring",body:{taskType:f,description:c,...e?{prompt:e}:{},recurrenceRule:function(a){if("hourly"===a.frequency)return{frequency:"hourly",...1!==a.intervalHours?{intervalHours:a.intervalHours}:{},...0!==a.minuteOfHour?{minuteOfHour:a.minuteOfHour}:{}};if("weekly"===a.frequency)return{frequency:"weekly",time:a.recurringTime,daysOfWeek:[...a.daysOfWeek].sort((a,b)=>a-b)};if("monthly"===a.frequency){let b=[...a.daysOfMonth].sort((a,b)=>a-b),c=b.some(a=>a>=29);return{frequency:"monthly",time:a.recurringTime,daysOfMonth:b,...c&&""!==a.onMissingDay?{onMissingDay:a.onMissingDay}:{}}}return{frequency:"daily",time:a.recurringTime}}(a),...g,taskContext:{source:"dashboard_manual"}}}}function M({state:a,onChange:d,lockFrequency:e,hideFrequency:f,errors:g,onEdit:h}){let i=(b,c)=>{d({...a,[b]:c}),h?.()},[j]=(0,c.useState)(()=>{let a=new Date(Date.now()+6e4),b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}-${b(a.getMonth()+1)}-${b(a.getDate())}T${b(a.getHours())}:${b(a.getMinutes())}`}),k="monthly"===a.frequency&&a.daysOfMonth.some(a=>a>=29),m="once"===a.frequency,n=a.description.trim().length,o=a.prompt.trim().length;return(0,b.jsxs)("div",{className:"space-y-4",children:[f?null:(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",children:"Frequency"}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1",role:"radiogroup","aria-label":"Frequency",children:["once","hourly","daily","weekly","monthly"].map(c=>(0,b.jsx)(l.Button,{type:"button",size:"sm",variant:a.frequency===c?"default":"outline",disabled:e,onClick:()=>i("frequency",c),"aria-pressed":a.frequency===c,children:"once"===c?"One-off":c.charAt(0).toUpperCase()+c.slice(1)},c))})]}),"once"===a.frequency?(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",htmlFor:"schedule-one-off-time",children:"When"}),(0,b.jsx)(z.Input,{id:"schedule-one-off-time",type:"datetime-local",value:a.oneOffDateTime,min:j,onChange:a=>i("oneOffDateTime",a.target.value),className:"h-9"}),g?.oneOffDateTime?(0,b.jsx)("p",{className:"mt-1 text-xs text-red-600",children:g.oneOffDateTime}):(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Local time. The daemon stores it as UTC."})]}):"hourly"===a.frequency?(0,b.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",htmlFor:"schedule-interval-hours",children:"Every N hours"}),(0,b.jsx)(z.Input,{id:"schedule-interval-hours",type:"number",inputMode:"numeric",min:1,max:23,value:a.intervalHours,onChange:a=>i("intervalHours",Number.parseInt(a.target.value,10)||1),className:"h-9 w-32"}),g?.intervalHours?(0,b.jsx)("p",{className:"mt-1 text-xs text-red-600",children:g.intervalHours}):(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"1–23. Anchored at midnight local time, so “every 2 hours” fires at 00, 02, 04, …"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",htmlFor:"schedule-minute-of-hour",children:"At minute"}),(0,b.jsx)(z.Input,{id:"schedule-minute-of-hour",type:"number",inputMode:"numeric",min:0,max:59,value:a.minuteOfHour,onChange:a=>i("minuteOfHour",Number.parseInt(a.target.value,10)||0),className:"h-9 w-32"}),g?.minuteOfHour?(0,b.jsx)("p",{className:"mt-1 text-xs text-red-600",children:g.minuteOfHour}):(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"0–59. e.g. set to 30 for HH:30."})]})]}):(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",htmlFor:"schedule-recurring-time",children:"Time of day"}),(0,b.jsx)(z.Input,{id:"schedule-recurring-time",type:"time",value:a.recurringTime,onChange:a=>i("recurringTime",a.target.value),className:"h-9 w-32"}),g?.recurringTime?(0,b.jsx)("p",{className:"mt-1 text-xs text-red-600",children:g.recurringTime}):(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Interpreted in the daemon’s configured timezone."})]}),"weekly"===a.frequency?(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",children:"Days of week"}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1",children:H.map((c,d)=>{let e=a.daysOfWeek.includes(d);return(0,b.jsx)(l.Button,{type:"button",size:"sm",variant:e?"default":"outline",onClick:()=>i("daysOfWeek",e?a.daysOfWeek.filter(a=>a!==d):[...a.daysOfWeek,d]),"aria-pressed":e,children:c},c)})}),g?.daysOfWeek?(0,b.jsx)("p",{className:"mt-1 text-xs text-red-600",children:g.daysOfWeek}):null]}):null,"monthly"===a.frequency?(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",children:"Days of month"}),(0,b.jsx)("div",{className:"grid grid-cols-7 gap-1 sm:grid-cols-10",children:I.map(c=>{let d=a.daysOfMonth.includes(c);return(0,b.jsx)("button",{type:"button",onClick:()=>i("daysOfMonth",d?a.daysOfMonth.filter(a=>a!==c):[...a.daysOfMonth,c]),"aria-pressed":d,className:(0,q.cn)("h-7 rounded-md border text-xs tabular-nums transition-colors",d?"border-primary bg-primary text-primary-foreground":"border-input bg-background hover:bg-muted"),children:c},c)})}),g?.daysOfMonth?(0,b.jsx)("p",{className:"mt-1 text-xs text-red-600",children:g.daysOfMonth}):null]}):null,k?(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",htmlFor:"schedule-on-missing-day",children:"When month is too short (e.g. Feb 30, Apr 31)"}),(0,b.jsxs)("select",{id:"schedule-on-missing-day",value:a.onMissingDay,onChange:a=>i("onMissingDay",a.target.value),className:"h-9 w-full rounded-md border border-input bg-background px-3 text-sm focus:outline-none focus:ring-2 focus:ring-ring sm:w-72",children:[(0,b.jsx)("option",{value:"",children:"Default (fall back to last day of month)"}),(0,b.jsx)("option",{value:"skip",children:"Skip the month entirely"})]}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:["Controls behavior when ",(0,b.jsx)("code",{children:"daysOfMonth"})," contains 29-31 and the month is shorter. Default preserves bit-identical behavior with the pre-redesign clamp."]})]}):null,(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",htmlFor:"schedule-model",children:"Model"}),(0,b.jsx)(G,{id:"schedule-model",value:a.model,onChange:a=>i("model",a)}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:["“Default” lets the dispatcher pick using the",(0,b.jsx)("code",{className:"mx-1",children:"scheduled.task"}),"process binding. Aliases (",(0,b.jsx)("code",{children:"sonnet"}),", ",(0,b.jsx)("code",{children:"opus"}),") rewrite to the matching tier server-side; registered IDs pin the row to that specific",(0,b.jsx)("code",{className:"mx-1",children:"(backend, model)"}),"."]})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",htmlFor:"schedule-description",children:["Description"," ",m?(0,b.jsx)("span",{className:"text-muted-foreground/70",children:"(optional label)"}):null]}),(0,b.jsx)("textarea",{id:"schedule-description",value:a.description,onChange:a=>i("description",a.target.value),rows:m?2:4,className:"w-full rounded-md border border-input bg-background p-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring",placeholder:m?"Optional short label shown in the schedule list. The agent reads the Prompt below, not this.":"Short summary shown in the schedule list. When no prompt override is set, this is also what the agent reads."}),g?.description?(0,b.jsx)("p",{className:"mt-1 text-xs text-red-600",children:g.description}):(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:m?`${n} / ${A.SCHEDULE_DESCRIPTION_MAX_CHARS} characters max. Optional.`:`${n} / 20 characters minimum.`})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",htmlFor:"schedule-prompt",children:["Prompt"," ",m?(0,b.jsx)("span",{className:"text-muted-foreground/70",children:"(required — the agent’s instruction)"}):(0,b.jsx)("span",{className:"text-muted-foreground/70",children:"(optional override)"})]}),(0,b.jsx)("textarea",{id:"schedule-prompt",value:a.prompt,onChange:a=>i("prompt",a.target.value),rows:m?8:6,className:"w-full rounded-md border border-input bg-background p-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring",placeholder:m?"The full instruction the agent runs at fire time — what to do, why, and the expected output. It starts with no memory, so this is its only context.":"Leave empty to use the description above as the agent body. Fill in to give the agent a fuller, separate instruction."}),g?.prompt?(0,b.jsx)("p",{className:"mt-1 text-xs text-red-600",children:g.prompt}):m?(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:[o," / ",A.SCHEDULE_PROMPT_MAX_CHARS," characters. Required."]}):(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:0===o?"Empty — description will be used as the agent body.":`${o} / 20 characters minimum (when set).`})]})]})}function N({warnings:a,title:c="Saved with warnings"}){return a&&0!==a.length?(0,b.jsxs)(y.Alert,{variant:"warning",children:[(0,b.jsx)("div",{className:"font-medium",children:c}),(0,b.jsx)("ul",{className:"mt-1 list-disc space-y-1 pl-5 text-xs",children:a.map((a,c)=>(0,b.jsxs)("li",{children:[(0,b.jsx)("span",{className:"font-mono text-[11px] text-muted-foreground",children:a.code}),(0,b.jsx)("span",{className:"ml-2",children:a.hint})]},`${a.code}:${c}`))})]}):null}function O(a){if(a instanceof e.ApiError){let b=a.body;return{summary:b?.summary??`${a.message} (${a.status})`,issues:(b?.errors??[]).map(a=>({code:a.code,field:a.field,received:a.received,expected:a.expected,hint:a.hint,validValues:a.validValues,docsUrl:a.docsUrl}))}}return a instanceof Error?{summary:a.message,issues:[]}:{summary:"Unknown error",issues:[]}}var P=a.i(8753),Q=a.i(81130);let R=["schedule-list","schedule-next"];function S(a){for(let b of R)a.invalidateQueries({queryKey:[b]})}function T({trigger:a}){let d,[f,g]=(0,c.useState)(!1),[h,i]=(0,c.useState)(J),[j,k]=(0,c.useState)(null),[m,n]=(0,c.useState)(null),[o,p]=(0,c.useState)([]),[q,r]=(0,c.useState)([]),[s,t]=(0,c.useState)(!1),u=(d=(0,Q.useQueryClient)(),(0,P.useMutation)({mutationFn:a=>e.api.post("/schedule",a),onSuccess:()=>S(d)})),v=u.isPending,w=()=>{i(J),k(null),n(null),p([]),r([]),t(!1)},z=async()=>{if(s){g(!1),w();return}let a=K(h);if(k(a),a)return;n(null),p([]),r([]);let b=L(h);if("once"!==b.kind)return void n("Recurring tasks are now Agents — create them on the Agents page.");try{let a=(await u.mutateAsync(b.body)).warnings??[];if(a.length>0){r(a),t(!0);return}g(!1),w()}catch(c){let{summary:a,issues:b}=O(c);n(a),p(b)}};return(0,b.jsxs)(x.Sheet,{open:f,onOpenChange:a=>{g(a),a||w()},children:[(0,b.jsx)(x.SheetTrigger,{asChild:!0,children:a}),(0,b.jsxs)(x.SheetContent,{className:"flex flex-col gap-4 overflow-y-auto",children:[(0,b.jsxs)(x.SheetHeader,{className:"pr-8",children:[(0,b.jsx)(x.SheetTitle,{children:"New scheduled task"}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Runs in a fresh per-session workdir. The",(0,b.jsx)("code",{className:"mx-1",children:"notify"}),"and",(0,b.jsx)("code",{className:"mx-1",children:"schedule"}),"skills are provisioned, so the agent can DM you and reschedule itself."]})]}),(0,b.jsx)(M,{state:h,onChange:i,errors:j,hideFrequency:!0,onEdit:()=>{j&&k(null),m&&n(null),o.length>0&&p([]),s&&(t(!1),r([]))}}),m?(0,b.jsxs)(y.Alert,{variant:"error",children:[(0,b.jsx)("div",{className:"font-medium",children:m}),o.length>0?(0,b.jsx)("ul",{className:"mt-1 list-disc space-y-1 pl-5 text-xs",children:o.map((a,c)=>(0,b.jsxs)("li",{children:[(0,b.jsx)("span",{className:"font-mono text-[11px] opacity-80",children:a.code}),(0,b.jsx)("span",{className:"ml-2",children:a.hint})]},`${a.code}:${c}`))}):null]}):null,(0,b.jsx)(N,{warnings:q}),(0,b.jsxs)("div",{className:"mt-2 flex justify-end gap-2",children:[(0,b.jsx)(l.Button,{variant:"outline",onClick:()=>{g(!1),w()},disabled:v,children:s?"Close":"Cancel"}),(0,b.jsx)(l.Button,{onClick:z,disabled:v,children:v?"Saving...":s?"Acknowledge":"Create"})]})]})]})}function U(a){let b=(0,q.parseUtcDate)(a),c=a=>String(a).padStart(2,"0");return`${b.getFullYear()}-${c(b.getMonth()+1)}-${c(b.getDate())}T${c(b.getHours())}:${c(b.getMinutes())}`}function V({row:a,open:c,onOpenChange:d}){return(0,b.jsx)(x.Sheet,{open:c,onOpenChange:d,children:a?(0,b.jsx)(W,{row:a,onClose:()=>d(!1)},a.id):null})}function W({row:a,onClose:d}){let f,g,[h,i]=(0,c.useState)(!1),j=a.model??"",[m,n]=(0,c.useState)(a.task_description??""),[o,p]=(0,c.useState)(a.task_prompt??""),[r,t]=(0,c.useState)(j),[u,v]=(0,c.useState)(()=>U(a.scheduled_for)),[w,B]=(0,c.useState)(null),[C,D]=(0,c.useState)([]),[E,F]=(0,c.useState)([]),H=(f=(0,Q.useQueryClient)(),(0,P.useMutation)({mutationFn:({id:a,...b})=>e.api.patch(`/schedule/${a}`,b),onSuccess:()=>S(f)})),I=(g=(0,Q.useQueryClient)(),(0,P.useMutation)({mutationFn:a=>e.api.delete(`/schedule/${a}`),onSuccess:()=>S(g)})),J=function(a){if(!a)return{};try{let b=JSON.parse(a);return b&&"object"==typeof b?b:{}}catch{return{}}}(a.task_context),K="pending"===a.status,L="dm"===a.task_type,M=async()=>{if(B(null),D([]),F([]),L){if(m.trim().length<1)return void B("Message cannot be empty.")}else{if(m.trim().length>A.SCHEDULE_DESCRIPTION_MAX_CHARS)return void B(`Description (the list label) must be at most ${A.SCHEDULE_DESCRIPTION_MAX_CHARS} characters.`);if(0===o.trim().length)return void B("Prompt cannot be empty — it is the agent's instruction.");if(o.trim().length>A.SCHEDULE_PROMPT_MAX_CHARS)return void B(`Prompt must be at most ${A.SCHEDULE_PROMPT_MAX_CHARS} characters.`)}let b=new Date(u).getTime();if(Number.isNaN(b))return void B("Invalid date/time.");if(b<Date.now()-6e4)return void B("Scheduled time must be at least a minute in the future.");let c={id:a.id};if(u!==U(a.scheduled_for)&&(c.time=new Date(u).toISOString()),m!==(a.task_description??"")&&(L?c.message=m:c.description=m),!L){let b=o.trim();b!==(a.task_prompt??"").trim()&&(c.prompt=b)}let d=r.trim();if(""===d?""!==j&&(c.model=null):d!==j&&(c.model=d),1===Object.keys(c).length)return void i(!1);try{let a=(await H.mutateAsync(c)).warnings??[];if(a.length>0){F(a),i(!1);return}i(!1)}catch(c){let{summary:a,issues:b}=O(c);B(a),D(b)}},R=async()=>{if(B(null),confirm("Cancel this scheduled task?"))try{await I.mutateAsync(a.id),d()}catch(a){B(O(a).summary)}};return(0,b.jsxs)(x.SheetContent,{className:"flex flex-col gap-4 overflow-y-auto",children:[(0,b.jsxs)(x.SheetHeader,{className:"pr-8",children:[(0,b.jsxs)(x.SheetTitle,{children:["Scheduled task #",a.id]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs",children:[(0,b.jsx)(k.Badge,{children:a.task_type}),(0,b.jsx)(k.Badge,{children:a.status}),a.model?(0,b.jsx)(k.Badge,{variant:(0,s.modelBadgeVariant)(a.model),children:(0,s.formatShortModelName)(a.model)}):(0,b.jsx)(k.Badge,{variant:"gray",children:"default model"}),void 0!==J.recurringScheduleId?(0,b.jsxs)(k.Badge,{variant:"purple",children:["from recurring #",String(J.recurringScheduleId)]}):null]})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h3",{className:"mb-1 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Scheduled for"}),h?(0,b.jsx)(z.Input,{type:"datetime-local",value:u,onChange:a=>v(a.target.value),className:"h-9"}):(0,b.jsxs)("p",{className:"text-sm text-foreground",children:[(0,q.formatAbsoluteTime)(a.scheduled_for)," ",(0,b.jsxs)("span",{className:"text-muted-foreground",children:["(",(0,q.formatRelativeTime)(a.scheduled_for),")"]})]})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h3",{className:"mb-1 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:L?"Message":"Description"}),h?(0,b.jsx)("textarea",{value:m,onChange:a=>n(a.target.value),rows:L?8:4,className:"w-full rounded-md border border-input bg-background p-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring"}):a.task_description?(0,b.jsx)("pre",{className:"whitespace-pre-wrap break-words rounded-md bg-muted p-2 text-xs text-foreground",children:a.task_description}):(0,b.jsx)("p",{className:"rounded-md bg-muted p-2 text-xs italic text-muted-foreground",children:"No label — see the Prompt below for the agent instruction."})]}),L?null:(0,b.jsxs)("section",{children:[(0,b.jsxs)("h3",{className:"mb-1 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:["Prompt ",(0,b.jsx)("span",{className:"normal-case tracking-normal text-muted-foreground/70",children:"(the agent’s instruction)"})]}),h?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("textarea",{value:o,onChange:a=>p(a.target.value),rows:8,className:"w-full rounded-md border border-input bg-background p-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring",placeholder:"The agent's instruction at fire time — what to do, why, and the expected output."}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:0===o.trim().length?"Required — the agent's instruction at fire time.":`${o.trim().length} / ${A.SCHEDULE_PROMPT_MAX_CHARS} characters max.`})]}):a.task_prompt&&a.task_prompt!==a.task_description?(0,b.jsx)("pre",{className:"whitespace-pre-wrap break-words rounded-md bg-muted p-2 text-xs text-foreground",children:a.task_prompt}):(0,b.jsx)("p",{className:"rounded-md bg-muted p-2 text-xs italic text-muted-foreground",children:"Same as the description above — this row uses one instruction as both its label and its agent body."})]}),!L&&h?(0,b.jsxs)("section",{children:[(0,b.jsx)("h3",{className:"mb-1 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Model"}),(0,b.jsx)(G,{value:r,onChange:t}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:["Pick “Default” to let the dispatcher use the",(0,b.jsx)("code",{className:"mx-1",children:"scheduled.task"}),"process binding. Setting a registered model id pins this row to that backend."]})]}):null,Object.keys(J).length>0?(0,b.jsxs)("section",{children:[(0,b.jsx)("h3",{className:"mb-1 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Task context"}),(0,b.jsx)("pre",{className:"overflow-x-auto rounded-md bg-muted p-2 font-mono text-[11px] text-muted-foreground",children:JSON.stringify(J,null,2)})]}):null,(0,b.jsxs)("section",{className:"text-xs text-muted-foreground",children:["Created ",(0,q.formatAbsoluteTime)(a.created_at)]}),w?(0,b.jsxs)(y.Alert,{variant:"error",children:[(0,b.jsx)("div",{className:"font-medium",children:w}),C.length>0?(0,b.jsx)("ul",{className:"mt-1 list-disc space-y-1 pl-5 text-xs",children:C.map((a,c)=>(0,b.jsxs)("li",{children:[(0,b.jsx)("span",{className:"font-mono text-[11px] opacity-80",children:a.code}),(0,b.jsx)("span",{className:"ml-2",children:a.hint})]},`${a.code}:${c}`))}):null]}):null,(0,b.jsx)(N,{warnings:E}),(0,b.jsxs)("div",{className:"mt-auto flex justify-between gap-2 pt-4",children:[K&&!h?(0,b.jsx)(l.Button,{variant:"outline",onClick:R,disabled:I.isPending,children:I.isPending?"Cancelling...":"Cancel task"}):(0,b.jsx)("span",{}),(0,b.jsxs)("div",{className:"flex gap-2",children:[K&&!h?(0,b.jsx)(l.Button,{onClick:()=>{n(a.task_description??""),p(a.task_prompt??""),t(j),v(U(a.scheduled_for)),B(null),D([]),F([]),i(!0)},children:"Edit"}):null,h?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(l.Button,{variant:"outline",onClick:()=>i(!1),disabled:H.isPending,children:"Discard"}),(0,b.jsx)(l.Button,{onClick:M,disabled:H.isPending,children:H.isPending?"Saving...":"Save"})]}):null]})]})]})}let X=(0,u.default)("CalendarRange",[["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M17 14h-6",key:"bkmgh3"}],["path",{d:"M13 18H7",key:"bb0bb7"}],["path",{d:"M7 14h.01",key:"1qa3f1"}],["path",{d:"M17 18h.01",key:"1bdyru"}]]);var Y=a.i(45133),Z=a.i(96336);let $=["recurring-schedules"];function _(){let a=(0,Q.useQueryClient)();return(0,P.useMutation)({mutationFn:({id:a,...b})=>e.api.patch(`/recurring-schedules/${a}`,b),onSuccess:()=>{a.invalidateQueries({queryKey:$}),a.invalidateQueries({queryKey:["schedule-list"]}),a.invalidateQueries({queryKey:["schedule-next"]})}})}function aa({dto:a,open:c,onOpenChange:d}){return(0,b.jsx)(x.Sheet,{open:c,onOpenChange:d,children:a&&(0,b.jsx)(ab,{dto:a,onClose:()=>d(!1)},a.id)})}function ab({dto:a,onClose:d}){let[e,f]=(0,c.useState)(()=>{let b;return b=a.recurrenceRule,{...J,frequency:b.frequency,oneOffDateTime:"",recurringTime:b.time??"00:00",intervalHours:b.intervalHours??1,minuteOfHour:b.minuteOfHour??0,daysOfWeek:b.daysOfWeek??[],daysOfMonth:b.daysOfMonth??[],onMissingDay:b.onMissingDay??"",model:a.model??"",description:a.description,prompt:a.prompt??""}}),[g,h]=(0,c.useState)(null),[i,j]=(0,c.useState)(null),[k,m]=(0,c.useState)([]),[n,o]=(0,c.useState)([]),[p,q]=(0,c.useState)(!1),r=_(),s=a.model??"",t=async()=>{if(p)return void d();let b=K(e);if(h(b),b)return;let c=L(e);if("recurring"!==c.kind)return void j("Cannot convert a scheduled DM to a one-off — delete and recreate.");try{let b=e.model.trim(),f=c.body.recurrenceRule.time!==a.recurrenceRule.time,g=(await r.mutateAsync({id:a.id,description:c.body.description,prompt:c.body.prompt??null,recurrenceRule:c.body.recurrenceRule,...f?{taskContext:{...a.taskContext,pin_to_quiet_hours_end:!1}}:{},...""===b?""!==s?{model:null}:{}:b!==s?{model:b}:{}})).warnings??[];if(g.length>0){o(g),q(!0);return}d()}catch(c){let{summary:a,issues:b}=O(c);j(a),m(b)}};return(0,b.jsxs)(x.SheetContent,{className:"flex flex-col gap-4 overflow-y-auto",children:[(0,b.jsx)(x.SheetHeader,{className:"pr-8",children:(0,b.jsxs)(x.SheetTitle,{children:["Edit scheduled DM #",a.id]})}),(0,b.jsx)(M,{state:e,onChange:f,errors:g,lockFrequency:!0,onEdit:()=>{g&&h(null),i&&j(null),k.length>0&&m([]),p&&(q(!1),o([]))}}),i?(0,b.jsxs)(y.Alert,{variant:"error",children:[(0,b.jsx)("div",{className:"font-medium",children:i}),k.length>0?(0,b.jsx)("ul",{className:"mt-1 list-disc space-y-1 pl-5 text-xs",children:k.map((a,c)=>(0,b.jsxs)("li",{children:[(0,b.jsx)("span",{className:"font-mono text-[11px] opacity-80",children:a.code}),(0,b.jsx)("span",{className:"ml-2",children:a.hint})]},`${a.code}:${c}`))}):null]}):null,(0,b.jsx)(N,{warnings:n}),(0,b.jsxs)("div",{className:"mt-2 flex justify-end gap-2",children:[(0,b.jsx)(l.Button,{variant:"outline",onClick:d,disabled:r.isPending,children:p?"Close":"Cancel"}),(0,b.jsx)(l.Button,{onClick:t,disabled:r.isPending,children:r.isPending?"Saving...":p?"Acknowledge":"Save"})]})]})}function ac(){let a,{data:d,isLoading:f,isError:g,error:h,refetch:m}=(0,D.useQuery)({queryKey:$,queryFn:()=>e.api.get("/recurring-schedules"),staleTime:3e4}),n=_(),o=(a=(0,Q.useQueryClient)(),(0,P.useMutation)({mutationFn:a=>e.api.delete(`/recurring-schedules/${a}`),onSuccess:()=>{a.invalidateQueries({queryKey:$}),a.invalidateQueries({queryKey:["schedule-list"]}),a.invalidateQueries({queryKey:["schedule-next"]})}})),[r,t]=(0,c.useState)(null),[u,v]=(0,c.useState)(null),w=async a=>{v(null);try{await n.mutateAsync({id:a.id,enabled:!a.enabled})}catch(a){v(O(a).summary)}},x=async a=>{if(v(null),confirm(`Delete scheduled DM "${a.description.slice(0,40)}..."?`))try{await o.mutateAsync(a.id)}catch(a){v(O(a).summary)}},z=(d?.items??[]).filter(a=>"dm_session"===a.taskType);return(0,b.jsxs)(b.Fragment,{children:[u?(0,b.jsx)(y.Alert,{variant:"error",children:u}):null,(0,b.jsx)(j.QueryResult,{isLoading:f,isError:g,error:h,onRetry:()=>m(),skeleton:(0,b.jsx)(j.TableSkeleton,{rows:3}),children:0===z.length?(0,b.jsx)(i.EmptyState,{icon:X,title:"No scheduled DMs",description:"Recurring DMs (e.g. the morning briefing) appear here. The agent creates them on request; recurring work runs as an Agent on the Agents page."}):(0,b.jsx)("div",{className:"overflow-x-auto rounded-xl border border-border",children:(0,b.jsxs)("table",{className:"w-full text-left","aria-label":"Scheduled DMs",children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{className:"border-b border-border bg-muted/50",children:[(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Cadence"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Description"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Model"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Next run"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Enabled"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Actions"})]})}),(0,b.jsx)("tbody",{children:z.map(a=>(0,b.jsxs)("tr",{className:"border-b border-border",children:[(0,b.jsx)("td",{className:"px-3 py-2 text-sm",children:a.recurrenceLabel}),(0,b.jsx)("td",{className:"max-w-md px-3 py-2 text-sm",children:(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsx)("span",{className:"line-clamp-2 flex-1",children:a.description}),a.prompt&&a.description&&a.prompt!==a.description?(0,b.jsxs)(p.Tooltip,{children:[(0,b.jsx)(p.TooltipTrigger,{children:(0,b.jsx)(k.Badge,{variant:"purple",className:"shrink-0",children:"prompt"})}),(0,b.jsx)(p.TooltipContent,{children:"Description above is the list label; a separate prompt is what the agent receives. Open the row to view or edit."})]}):null]})}),(0,b.jsx)("td",{className:"px-3 py-2",children:a.model?(0,b.jsx)(k.Badge,{variant:(0,s.modelBadgeVariant)(a.model),children:(0,s.formatShortModelName)(a.model)}):(0,b.jsx)(k.Badge,{variant:"gray",children:"default"})}),(0,b.jsx)("td",{className:"px-3 py-2 text-xs",children:a.nextRunAt?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{children:(0,q.formatAbsoluteTime)(a.nextRunAt)}),(0,b.jsx)("div",{className:"text-muted-foreground",children:(0,q.formatRelativeTime)(a.nextRunAt)})]}):(0,b.jsx)("span",{className:"text-muted-foreground",children:"—"})}),(0,b.jsx)("td",{className:"px-3 py-2",children:(0,b.jsx)(l.Button,{size:"sm",variant:a.enabled?"default":"outline",onClick:()=>w(a),disabled:n.isPending,children:a.enabled?"On":"Off"})}),(0,b.jsx)("td",{className:"px-3 py-2",children:(0,b.jsxs)("div",{className:"flex gap-1",children:[(0,b.jsx)(l.Button,{size:"sm",variant:"outline",onClick:()=>t(a),"aria-label":"Edit scheduled DM",children:(0,b.jsx)(Y.Edit2,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(l.Button,{size:"sm",variant:"outline",onClick:()=>x(a),disabled:o.isPending,"aria-label":"Delete scheduled DM",children:(0,b.jsx)(Z.Trash2,{className:"h-3.5 w-3.5"})})]})})]},a.id))})]})})}),(0,b.jsx)(aa,{dto:r,open:null!==r,onOpenChange:a=>{a||t(null)}})]})}let ad={pending:"blue",running:"amber",completed:"green",skipped:"gray",failed:"red"},ae={wake:"blue",dm:"blue",morning_routine:"green",evening_review:"green",custom:"purple"},af=["all","pending","running","completed","skipped","failed"],ag=["all","wake","dm","morning_routine","evening_review","custom"];a.s(["default",0,function(){var a;let[u,x]=(0,c.useState)("upcoming"),[y,z]=(0,c.useState)("all"),[A,B]=(0,c.useState)("all"),[C,D]=(0,c.useState)(null),{data:E}=(0,f.useScheduleNext)(),{data:F,fetchNextPage:G,hasNextPage:H,isFetchingNextPage:I,isLoading:J,isError:K,error:L,refetch:M}=(a={status:"all"===y?void 0:y,type:"all"===A?void 0:A},(0,d.useInfiniteQuery)({queryKey:["schedule-list",a],queryFn:({pageParam:b=1})=>e.api.get("/schedule/list",{page:b,limit:20,status:a?.status,type:a?.type}),getNextPageParam:a=>a.pagination.page<a.pagination.totalPages?a.pagination.page+1:void 0,initialPageParam:1})),N=F?.pages.flatMap(a=>a.schedules)??[],[O,P]=(0,c.useState)("");(0,c.useEffect)(()=>{if(!E?.next)return;let a=()=>{let a=(0,q.parseUtcDate)(E.next.scheduled_for).getTime()-Date.now();if(a<=0)return void P("Now");let b=Math.floor(a/36e5),c=Math.floor(a%36e5/6e4),d=Math.floor(a%6e4/1e3);P(b>0?`${b}h ${c}m ${d}s`:`${c}m ${d}s`)};a();let b=setInterval(a,1e3);return()=>clearInterval(b)},[E?.next]);let{regenerate:Q,target:R,status:S,error:U,dismiss:W}=(0,g.useRegenerate)();return(0,b.jsxs)("div",{className:"space-y-6 p-6",children:[(0,b.jsx)(o.PageHeader,{title:"Schedule",description:(0,b.jsxs)(b.Fragment,{children:["The scheduling queue plus recurring DM rules. ",(0,b.jsx)("strong",{children:"Upcoming"}),"is every materialized invocation about to run or recently run — wakes (",(0,b.jsx)("code",{children:"wake"}),"), DMs (",(0,b.jsx)("code",{children:"dm"}),"), one-off",(0,b.jsx)("code",{children:" custom"})," tasks, and routine / recurring-DM instances.",(0,b.jsx)("strong",{children:" Scheduled DMs"})," lists the recurring DM rules (e.g. the morning briefing) you can retime or turn off. Recurring ",(0,b.jsx)("em",{children:"work"}),"runs as an Agent on the Agents page."]}),actions:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(T,{trigger:(0,b.jsxs)(l.Button,{children:[(0,b.jsx)(w.Plus,{className:"mr-1 h-4 w-4"}),"Schedule"]})}),(0,b.jsx)(h.RegenerateButton,{target:"today",label:"Refresh Today",currentTarget:R,status:S,error:U,onRegenerate:Q,onDismiss:W})]})}),E?.next&&(0,b.jsxs)(m.Card,{className:"border-primary/30 bg-primary/10 dark:bg-primary/15",children:[(0,b.jsxs)(m.CardHeader,{children:[(0,b.jsx)(m.CardTitle,{children:"Next Up"}),(0,b.jsx)(v,{className:"h-4 w-4 text-primary"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("span",{className:"font-mono text-2xl font-bold text-foreground",children:O}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-sm text-foreground",children:E.next.task_description}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:(0,q.formatAbsoluteTime)(E.next.scheduled_for)})]})]})]}),(0,b.jsxs)(n.Tabs,{value:u,onValueChange:a=>x(a),children:[(0,b.jsxs)(n.TabsList,{children:[(0,b.jsx)(n.TabsTrigger,{value:"upcoming",children:"Upcoming"}),(0,b.jsx)(n.TabsTrigger,{value:"dms",children:"Scheduled DMs"})]}),(0,b.jsxs)(n.TabsContent,{value:"upcoming",className:"mt-4 space-y-4",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-3",role:"toolbar","aria-label":"Schedule filters",children:[(0,b.jsx)("div",{className:"flex flex-wrap gap-1",children:af.map(a=>(0,b.jsx)(l.Button,{variant:y===a?"default":"outline",size:"sm",onClick:()=>z(a),"aria-pressed":y===a,children:"all"===a?"All":a},a))}),(0,b.jsx)(r.Separator,{orientation:"vertical",className:"h-6"}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1",children:ag.map(a=>(0,b.jsx)(l.Button,{variant:A===a?"default":"outline",size:"sm",onClick:()=>B(a),"aria-pressed":A===a,children:"all"===a?"All types":a},a))})]}),(0,b.jsxs)(j.QueryResult,{isLoading:J,isError:K,error:L,onRetry:()=>M(),skeleton:(0,b.jsx)(j.TableSkeleton,{rows:5}),children:[(0,b.jsx)("div",{className:"overflow-x-auto rounded-xl border border-border",children:(0,b.jsxs)("table",{className:"w-full text-left","aria-label":"Scheduled tasks",children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{className:"border-b border-border bg-muted/50",children:[(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Scheduled For"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Type"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Description"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Model"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Status"}),(0,b.jsx)("th",{className:"hidden px-3 py-2 text-xs font-medium text-muted-foreground lg:table-cell",children:"Created"})]})}),(0,b.jsx)("tbody",{children:N.map(a=>(0,b.jsxs)("tr",{className:"cursor-pointer border-b border-border hover:bg-muted/30",onClick:()=>D(a),children:[(0,b.jsx)("td",{className:"px-3 py-2 text-sm",children:(0,b.jsxs)(p.Tooltip,{children:[(0,b.jsx)(p.TooltipTrigger,{children:(0,q.formatAbsoluteTime)(a.scheduled_for)}),(0,b.jsx)(p.TooltipContent,{children:(0,q.formatRelativeTime)(a.scheduled_for)})]})}),(0,b.jsx)("td",{className:"px-3 py-2",children:(0,b.jsx)(k.Badge,{variant:ae[a.task_type]??"gray",children:a.task_type})}),(0,b.jsx)("td",{className:"max-w-md px-3 py-2 text-sm text-foreground",children:(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsx)("span",{className:"line-clamp-2 flex-1",children:a.task_description||a.task_prompt||"—"}),a.task_prompt&&a.task_description&&a.task_prompt!==a.task_description?(0,b.jsxs)(p.Tooltip,{children:[(0,b.jsx)(p.TooltipTrigger,{children:(0,b.jsx)(k.Badge,{variant:"purple",className:"shrink-0",children:"prompt"})}),(0,b.jsx)(p.TooltipContent,{children:"Description above is the list label; a separate prompt is what the agent receives. Open the row to view or edit."})]}):null]})}),(0,b.jsx)("td",{className:"px-3 py-2",children:a.model&&(0,b.jsx)(k.Badge,{variant:(0,s.modelBadgeVariant)(a.model),children:(0,s.formatShortModelName)(a.model)})}),(0,b.jsx)("td",{className:"px-3 py-2",children:(0,b.jsx)(k.Badge,{variant:ad[a.status]??"gray",children:"running"===a.status?(0,b.jsxs)("span",{className:"flex items-center gap-1",children:[(0,b.jsx)("span",{className:"h-1.5 w-1.5 animate-pulse rounded-full bg-amber-500"}),a.status]}):a.status})}),(0,b.jsx)("td",{className:"hidden whitespace-nowrap px-3 py-2 font-mono text-xs tabular-nums text-muted-foreground lg:table-cell",children:(0,b.jsxs)(p.Tooltip,{children:[(0,b.jsx)(p.TooltipTrigger,{children:(0,q.formatAbsoluteTime)(a.created_at)}),(0,b.jsx)(p.TooltipContent,{children:(0,q.formatRelativeTime)(a.created_at)})]})})]},a.id))})]})}),0===N.length?(0,b.jsx)(i.EmptyState,{icon:t.Clock,title:"No scheduled tasks",description:"Tasks will appear here when the agent schedules wake-ups or routines"}):null,H&&(0,b.jsx)("div",{className:"flex justify-center",children:(0,b.jsx)(l.Button,{variant:"outline",onClick:()=>G(),disabled:I,children:I?"Loading...":"Load More"})})]})]}),(0,b.jsx)(n.TabsContent,{value:"dms",className:"mt-4 space-y-4",children:(0,b.jsx)(ac,{})})]}),(0,b.jsx)(V,{row:C,open:null!==C,onOpenChange:a=>{a||D(null)}})]})}],330)}];
|
|
1
|
+
module.exports=[330,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(87648),e=a.i(13925),f=a.i(59974),g=a.i(75674),h=a.i(40294),i=a.i(93929),j=a.i(27727),k=a.i(41010),l=a.i(34218),m=a.i(7384),n=a.i(21218),o=a.i(30400),p=a.i(9306),q=a.i(87206),r=a.i(869),s=a.i(48558),t=a.i(23780),u=a.i(40091),v=a.i(3504);let w=(0,a.i(5423).default)("AlarmClock",[["circle",{cx:"12",cy:"13",r:"8",key:"3y4lt7"}],["path",{d:"M12 9v4l2 2",key:"1c63tq"}],["path",{d:"M5 3 2 6",key:"18tl5t"}],["path",{d:"m22 6-3-3",key:"1opdir"}],["path",{d:"M6.38 18.7 4 21",key:"17xu3x"}],["path",{d:"M17.64 18.67 20 21",key:"kv2oe2"}]]);var x=a.i(43179),y=a.i(61213),z=a.i(29629),A=a.i(8212);a.i(70010);var B=a.i(68255),C=a.i(58906),D=a.i(47696),E=a.i(62588);let F=["schedule-options"],G="__default__";function H({value:a,onChange:d,id:e,disabled:g}){let{data:h,isLoading:i,isError:j}=(0,E.useQuery)({queryKey:F,queryFn:()=>f.api.get("/schedule/options"),staleTime:3e5}),k=(0,c.useMemo)(()=>(function(a){if(!a)return[];let b=[],c=[];for(let b of Object.keys(a.modelAliases)){let d=a.modelAliases[b];c.push({value:b,label:`${b.charAt(0).toUpperCase()}${b.slice(1)}`,hint:`Legacy alias → ${d} tier`})}for(let d of(c.length>0&&b.push({label:"Tier aliases",options:c}),C.BACKEND_IDS)){if((0,u.isBackendSelectionDisabled)(d))continue;let c=a.models[d]??[];if(0===c.length)continue;let e=(0,u.getBackendDeprecation)(d);b.push({label:e?`${u.BACKEND_LABELS[d]}${e.shortSuffix}`:u.BACKEND_LABELS[d],options:c.map(a=>({value:a.id,label:a.id,hint:a.deprecated?`${a.tier} tier \xb7 deprecated`:`${a.tier} tier`,deprecated:a.deprecated}))})}return b})(h),[h]),l=0===a.trim().length?G:a,m=l===G||k.some(a=>a.options.some(a=>a.value===l));return(0,b.jsxs)(D.Select,{value:l,disabled:g||i||j,onValueChange:a=>d(a===G?"":a),children:[(0,b.jsx)(D.SelectTrigger,{id:e,className:"h-9 w-full",children:(0,b.jsx)(D.SelectValue,{placeholder:"Default",children:function(a,b){if(0===a.trim().length)return"Default (process config)";for(let c of b)for(let b of c.options)if(b.value===a)return b.deprecated?`${b.label} (deprecated)`:b.label;return`${a} (unrecognised)`}(a,k)})}),(0,b.jsxs)(D.SelectContent,{children:[(0,b.jsx)(D.SelectGroup,{children:(0,b.jsx)(D.SelectItem,{value:G,children:"Default (process config)"})}),m?null:(0,b.jsxs)(D.SelectGroup,{children:[(0,b.jsx)(D.SelectLabel,{children:"Current pin"}),(0,b.jsx)(D.SelectItem,{value:l,children:(0,b.jsxs)("span",{className:"flex flex-col",children:[(0,b.jsx)("span",{children:a}),(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:"Not in the live registry — keeping the existing pin"})]})})]}),k.map(a=>(0,b.jsxs)(D.SelectGroup,{children:[(0,b.jsx)(D.SelectLabel,{children:a.label}),a.options.map(a=>(0,b.jsx)(D.SelectItem,{value:a.value,children:(0,b.jsxs)("span",{className:"flex flex-col",children:[(0,b.jsxs)("span",{children:[a.label,a.deprecated?(0,b.jsx)("span",{className:"ml-2 rounded-sm bg-warning/15 px-1 text-[10px] font-medium uppercase tracking-wide text-warning",children:"deprecated"}):null]}),a.hint?(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:a.hint}):null]})},a.value))]},a.label))]})]})}let I=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],J=Array.from({length:31},(a,b)=>b+1),K={frequency:"once",oneOffDateTime:"",recurringTime:"09:00",intervalHours:1,minuteOfHour:0,daysOfWeek:[],daysOfMonth:[],onMissingDay:"",model:"",description:"",prompt:""};function L(a){let b={},c=a.description.trim(),d=a.prompt.trim();if("once"===a.frequency?(0===d.length?b.prompt="Prompt is required — it is the agent's only instruction at fire time.":d.length>B.SCHEDULE_PROMPT_MAX_CHARS&&(b.prompt=`Prompt must be at most ${B.SCHEDULE_PROMPT_MAX_CHARS} characters.`),c.length>B.SCHEDULE_DESCRIPTION_MAX_CHARS&&(b.description=`Description (the list label) must be at most ${B.SCHEDULE_DESCRIPTION_MAX_CHARS} characters.`)):(c.length<20&&(b.description="Description must be at least 20 characters — when no prompt override is set, this text is the agent's only context."),d.length>0&&d.length<20&&(b.prompt="Prompt override must be at least 20 characters, or leave empty to use the description as the agent body.")),"once"===a.frequency)if(a.oneOffDateTime){let c=new Date(a.oneOffDateTime).getTime();Number.isNaN(c)?b.oneOffDateTime="Invalid date/time.":c<Date.now()-6e4&&(b.oneOffDateTime="Must be at least a minute in the future.")}else b.oneOffDateTime="Required.";else if("hourly"===a.frequency){let c;Object.assign(b,(c={},(!Number.isInteger(a.intervalHours)||a.intervalHours<1||a.intervalHours>23)&&(c.intervalHours="Interval must be an integer between 1 and 23."),(!Number.isInteger(a.minuteOfHour)||a.minuteOfHour<0||a.minuteOfHour>59)&&(c.minuteOfHour="Minute must be an integer between 0 and 59."),c))}else/^\d{2}:\d{2}$/.test(a.recurringTime)||(b.recurringTime="Time must be HH:MM."),"weekly"===a.frequency&&0===a.daysOfWeek.length&&(b.daysOfWeek="Select at least one weekday."),"monthly"===a.frequency&&0===a.daysOfMonth.length&&(b.daysOfMonth="Select at least one day of the month.");return 0===Object.keys(b).length?null:b}function M(a){let b,c=a.description.trim(),d=a.prompt.trim(),e=d.length>0?d:void 0,f="custom",g=0===(b=a.model.trim()).length?{}:{model:b};return"once"===a.frequency?{kind:"once",body:{time:new Date(a.oneOffDateTime).toISOString(),taskType:f,prompt:d,...c?{description:c}:{},...g,taskContext:{source:"dashboard_manual"}}}:{kind:"recurring",body:{taskType:f,description:c,...e?{prompt:e}:{},recurrenceRule:function(a){if("hourly"===a.frequency)return{frequency:"hourly",...1!==a.intervalHours?{intervalHours:a.intervalHours}:{},...0!==a.minuteOfHour?{minuteOfHour:a.minuteOfHour}:{}};if("weekly"===a.frequency)return{frequency:"weekly",time:a.recurringTime,daysOfWeek:[...a.daysOfWeek].sort((a,b)=>a-b)};if("monthly"===a.frequency){let b=[...a.daysOfMonth].sort((a,b)=>a-b),c=b.some(a=>a>=29);return{frequency:"monthly",time:a.recurringTime,daysOfMonth:b,...c&&""!==a.onMissingDay?{onMissingDay:a.onMissingDay}:{}}}return{frequency:"daily",time:a.recurringTime}}(a),...g,taskContext:{source:"dashboard_manual"}}}}function N({state:a,onChange:d,lockFrequency:e,hideFrequency:f,errors:g,onEdit:h}){let i=(b,c)=>{d({...a,[b]:c}),h?.()},[j]=(0,c.useState)(()=>{let a=new Date(Date.now()+6e4),b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}-${b(a.getMonth()+1)}-${b(a.getDate())}T${b(a.getHours())}:${b(a.getMinutes())}`}),k="monthly"===a.frequency&&a.daysOfMonth.some(a=>a>=29),l="once"===a.frequency,m=a.description.trim().length,o=a.prompt.trim().length;return(0,b.jsxs)("div",{className:"space-y-4",children:[f?null:(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",children:"Frequency"}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1",role:"radiogroup","aria-label":"Frequency",children:["once","hourly","daily","weekly","monthly"].map(c=>(0,b.jsx)(n.Button,{type:"button",size:"sm",variant:a.frequency===c?"default":"outline",disabled:e,onClick:()=>i("frequency",c),"aria-pressed":a.frequency===c,children:"once"===c?"One-off":c.charAt(0).toUpperCase()+c.slice(1)},c))})]}),"once"===a.frequency?(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",htmlFor:"schedule-one-off-time",children:"When"}),(0,b.jsx)(A.Input,{id:"schedule-one-off-time",type:"datetime-local",value:a.oneOffDateTime,min:j,onChange:a=>i("oneOffDateTime",a.target.value),className:"h-9"}),g?.oneOffDateTime?(0,b.jsx)("p",{className:"mt-1 text-xs text-destructive",children:g.oneOffDateTime}):(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Local time. The daemon stores it as UTC."})]}):"hourly"===a.frequency?(0,b.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",htmlFor:"schedule-interval-hours",children:"Every N hours"}),(0,b.jsx)(A.Input,{id:"schedule-interval-hours",type:"number",inputMode:"numeric",min:1,max:23,value:a.intervalHours,onChange:a=>i("intervalHours",Number.parseInt(a.target.value,10)||1),className:"h-9 w-32"}),g?.intervalHours?(0,b.jsx)("p",{className:"mt-1 text-xs text-destructive",children:g.intervalHours}):(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"1–23. Anchored at midnight local time, so “every 2 hours” fires at 00, 02, 04, …"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",htmlFor:"schedule-minute-of-hour",children:"At minute"}),(0,b.jsx)(A.Input,{id:"schedule-minute-of-hour",type:"number",inputMode:"numeric",min:0,max:59,value:a.minuteOfHour,onChange:a=>i("minuteOfHour",Number.parseInt(a.target.value,10)||0),className:"h-9 w-32"}),g?.minuteOfHour?(0,b.jsx)("p",{className:"mt-1 text-xs text-destructive",children:g.minuteOfHour}):(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"0–59. e.g. set to 30 for HH:30."})]})]}):(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",htmlFor:"schedule-recurring-time",children:"Time of day"}),(0,b.jsx)(A.Input,{id:"schedule-recurring-time",type:"time",value:a.recurringTime,onChange:a=>i("recurringTime",a.target.value),className:"h-9 w-32"}),g?.recurringTime?(0,b.jsx)("p",{className:"mt-1 text-xs text-destructive",children:g.recurringTime}):(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Interpreted in the daemon’s configured timezone."})]}),"weekly"===a.frequency?(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",children:"Days of week"}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1",children:I.map((c,d)=>{let e=a.daysOfWeek.includes(d);return(0,b.jsx)(n.Button,{type:"button",size:"sm",variant:e?"default":"outline",onClick:()=>i("daysOfWeek",e?a.daysOfWeek.filter(a=>a!==d):[...a.daysOfWeek,d]),"aria-pressed":e,children:c},c)})}),g?.daysOfWeek?(0,b.jsx)("p",{className:"mt-1 text-xs text-destructive",children:g.daysOfWeek}):null]}):null,"monthly"===a.frequency?(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",children:"Days of month"}),(0,b.jsx)("div",{className:"grid grid-cols-7 gap-1 sm:grid-cols-10",children:J.map(c=>{let d=a.daysOfMonth.includes(c);return(0,b.jsx)("button",{type:"button",onClick:()=>i("daysOfMonth",d?a.daysOfMonth.filter(a=>a!==c):[...a.daysOfMonth,c]),"aria-pressed":d,className:(0,s.cn)("h-7 rounded-md border text-xs tabular-nums transition-colors",d?"border-primary bg-primary text-primary-foreground":"border-input bg-background hover:bg-muted"),children:c},c)})}),g?.daysOfMonth?(0,b.jsx)("p",{className:"mt-1 text-xs text-destructive",children:g.daysOfMonth}):null]}):null,k?(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",htmlFor:"schedule-on-missing-day",children:"When month is too short (e.g. Feb 30, Apr 31)"}),(0,b.jsxs)("select",{id:"schedule-on-missing-day",value:a.onMissingDay,onChange:a=>i("onMissingDay",a.target.value),className:"h-9 w-full rounded-md border border-input bg-background px-3 text-sm focus:outline-none focus:ring-2 focus:ring-ring sm:w-72",children:[(0,b.jsx)("option",{value:"",children:"Default (fall back to last day of month)"}),(0,b.jsx)("option",{value:"skip",children:"Skip the month entirely"})]}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:["Controls behavior when ",(0,b.jsx)("code",{children:"daysOfMonth"})," contains 29-31 and the month is shorter. Default preserves bit-identical behavior with the pre-redesign clamp."]})]}):null,(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",htmlFor:"schedule-model",children:"Model"}),(0,b.jsx)(H,{id:"schedule-model",value:a.model,onChange:a=>i("model",a)}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:["“Default” lets the dispatcher pick using the",(0,b.jsx)("code",{className:"mx-1",children:"scheduled.task"}),"process binding. Aliases (",(0,b.jsx)("code",{children:"sonnet"}),", ",(0,b.jsx)("code",{children:"opus"}),") rewrite to the matching tier server-side; registered IDs pin the row to that specific",(0,b.jsx)("code",{className:"mx-1",children:"(backend, model)"}),"."]})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",htmlFor:"schedule-description",children:["Description"," ",l?(0,b.jsx)("span",{className:"text-muted-foreground/70",children:"(optional label)"}):null]}),(0,b.jsx)("textarea",{id:"schedule-description",value:a.description,onChange:a=>i("description",a.target.value),rows:l?2:4,className:"w-full rounded-md border border-input bg-background p-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring",placeholder:l?"Optional short label shown in the schedule list. The agent reads the Prompt below, not this.":"Short summary shown in the schedule list. When no prompt override is set, this is also what the agent reads."}),g?.description?(0,b.jsx)("p",{className:"mt-1 text-xs text-destructive",children:g.description}):(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:l?`${m} / ${B.SCHEDULE_DESCRIPTION_MAX_CHARS} characters max. Optional.`:`${m} / 20 characters minimum.`})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",htmlFor:"schedule-prompt",children:["Prompt"," ",l?(0,b.jsx)("span",{className:"text-muted-foreground/70",children:"(required — the agent’s instruction)"}):(0,b.jsx)("span",{className:"text-muted-foreground/70",children:"(optional override)"})]}),(0,b.jsx)("textarea",{id:"schedule-prompt",value:a.prompt,onChange:a=>i("prompt",a.target.value),rows:l?8:6,className:"w-full rounded-md border border-input bg-background p-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring",placeholder:l?"The full instruction the agent runs at fire time — what to do, why, and the expected output. It starts with no memory, so this is its only context.":"Leave empty to use the description above as the agent body. Fill in to give the agent a fuller, separate instruction."}),g?.prompt?(0,b.jsx)("p",{className:"mt-1 text-xs text-destructive",children:g.prompt}):l?(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:[o," / ",B.SCHEDULE_PROMPT_MAX_CHARS," characters. Required."]}):(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:0===o?"Empty — description will be used as the agent body.":`${o} / 20 characters minimum (when set).`})]})]})}function O({warnings:a,title:c="Saved with warnings"}){return a&&0!==a.length?(0,b.jsxs)(z.Alert,{variant:"warning",children:[(0,b.jsx)("div",{className:"font-medium",children:c}),(0,b.jsx)("ul",{className:"mt-1 list-disc space-y-1 pl-5 text-xs",children:a.map((a,c)=>(0,b.jsxs)("li",{children:[(0,b.jsx)("span",{className:"font-mono text-[11px] text-muted-foreground",children:a.code}),(0,b.jsx)("span",{className:"ml-2",children:a.hint})]},`${a.code}:${c}`))})]}):null}function P(a){if(a instanceof f.ApiError){let b=a.body;return{summary:b?.summary??`${a.message} (${a.status})`,issues:(b?.errors??[]).map(a=>({code:a.code,field:a.field,received:a.received,expected:a.expected,hint:a.hint,validValues:a.validValues,docsUrl:a.docsUrl}))}}return a instanceof Error?{summary:a.message,issues:[]}:{summary:"Unknown error",issues:[]}}var Q=a.i(8753),R=a.i(81130);let S=["schedule-list","schedule-next"];function T(a){for(let b of S)a.invalidateQueries({queryKey:[b]})}function U({trigger:a}){let d,[e,g]=(0,c.useState)(!1),[h,i]=(0,c.useState)(K),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)(null),[o,p]=(0,c.useState)([]),[q,r]=(0,c.useState)([]),[s,t]=(0,c.useState)(!1),u=(d=(0,R.useQueryClient)(),(0,Q.useMutation)({mutationFn:a=>f.api.post("/schedule",a),onSuccess:()=>T(d)})),v=u.isPending,w=()=>{i(K),k(null),m(null),p([]),r([]),t(!1)},x=async()=>{if(s){g(!1),w();return}let a=L(h);if(k(a),a)return;m(null),p([]),r([]);let b=M(h);if("once"!==b.kind)return void m("Recurring tasks are now Agents — create them on the Agents page.");try{let a=(await u.mutateAsync(b.body)).warnings??[];if(a.length>0){r(a),t(!0);return}g(!1),w()}catch(c){let{summary:a,issues:b}=P(c);m(a),p(b)}};return(0,b.jsxs)(y.Sheet,{open:e,onOpenChange:a=>{g(a),a||w()},children:[(0,b.jsx)(y.SheetTrigger,{asChild:!0,children:a}),(0,b.jsxs)(y.SheetContent,{className:"flex flex-col gap-4 overflow-y-auto",children:[(0,b.jsxs)(y.SheetHeader,{className:"pr-8",children:[(0,b.jsx)(y.SheetTitle,{children:"New scheduled task"}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Runs in a fresh per-session workdir. The",(0,b.jsx)("code",{className:"mx-1",children:"notify"}),"and",(0,b.jsx)("code",{className:"mx-1",children:"schedule"}),"skills are provisioned, so the agent can DM you and reschedule itself."]})]}),(0,b.jsx)(N,{state:h,onChange:i,errors:j,hideFrequency:!0,onEdit:()=>{j&&k(null),l&&m(null),o.length>0&&p([]),s&&(t(!1),r([]))}}),l?(0,b.jsxs)(z.Alert,{variant:"error",children:[(0,b.jsx)("div",{className:"font-medium",children:l}),o.length>0?(0,b.jsx)("ul",{className:"mt-1 list-disc space-y-1 pl-5 text-xs",children:o.map((a,c)=>(0,b.jsxs)("li",{children:[(0,b.jsx)("span",{className:"font-mono text-[11px] opacity-80",children:a.code}),(0,b.jsx)("span",{className:"ml-2",children:a.hint})]},`${a.code}:${c}`))}):null]}):null,(0,b.jsx)(O,{warnings:q}),(0,b.jsxs)("div",{className:"mt-2 flex justify-end gap-2",children:[(0,b.jsx)(n.Button,{variant:"outline",onClick:()=>{g(!1),w()},disabled:v,children:s?"Close":"Cancel"}),(0,b.jsx)(n.Button,{onClick:x,disabled:v,children:v?"Saving...":s?"Acknowledge":"Create"})]})]})]})}function V(a){let b=(0,s.parseUtcDate)(a),c=a=>String(a).padStart(2,"0");return`${b.getFullYear()}-${c(b.getMonth()+1)}-${c(b.getDate())}T${c(b.getHours())}:${c(b.getMinutes())}`}function W({row:a,open:c,onOpenChange:d}){return(0,b.jsx)(y.Sheet,{open:c,onOpenChange:d,children:a?(0,b.jsx)(X,{row:a,onClose:()=>d(!1)},a.id):null})}function X({row:a,onClose:d}){let e,g,[h,i]=(0,c.useState)(!1),j=a.model??"",[k,l]=(0,c.useState)(a.task_description??""),[o,p]=(0,c.useState)(a.task_prompt??""),[q,r]=(0,c.useState)(j),[t,v]=(0,c.useState)(()=>V(a.scheduled_for)),[w,x]=(0,c.useState)(null),[C,D]=(0,c.useState)([]),[E,F]=(0,c.useState)([]),G=(e=(0,R.useQueryClient)(),(0,Q.useMutation)({mutationFn:({id:a,...b})=>f.api.patch(`/schedule/${a}`,b),onSuccess:()=>T(e)})),I=(g=(0,R.useQueryClient)(),(0,Q.useMutation)({mutationFn:a=>f.api.delete(`/schedule/${a}`),onSuccess:()=>T(g)})),J=function(a){if(!a)return{};try{let b=JSON.parse(a);return b&&"object"==typeof b?b:{}}catch{return{}}}(a.task_context),K="pending"===a.status,L="dm"===a.task_type,M=async()=>{if(x(null),D([]),F([]),L){if(k.trim().length<1)return void x("Message cannot be empty.")}else{if(k.trim().length>B.SCHEDULE_DESCRIPTION_MAX_CHARS)return void x(`Description (the list label) must be at most ${B.SCHEDULE_DESCRIPTION_MAX_CHARS} characters.`);if(0===o.trim().length)return void x("Prompt cannot be empty — it is the agent's instruction.");if(o.trim().length>B.SCHEDULE_PROMPT_MAX_CHARS)return void x(`Prompt must be at most ${B.SCHEDULE_PROMPT_MAX_CHARS} characters.`)}let b=new Date(t).getTime();if(Number.isNaN(b))return void x("Invalid date/time.");if(b<Date.now()-6e4)return void x("Scheduled time must be at least a minute in the future.");let c={id:a.id};if(t!==V(a.scheduled_for)&&(c.time=new Date(t).toISOString()),k!==(a.task_description??"")&&(L?c.message=k:c.description=k),!L){let b=o.trim();b!==(a.task_prompt??"").trim()&&(c.prompt=b)}let d=q.trim();if(""===d?""!==j&&(c.model=null):d!==j&&(c.model=d),1===Object.keys(c).length)return void i(!1);try{let a=(await G.mutateAsync(c)).warnings??[];if(a.length>0){F(a),i(!1);return}i(!1)}catch(c){let{summary:a,issues:b}=P(c);x(a),D(b)}},N=async()=>{if(x(null),confirm("Cancel this scheduled task?"))try{await I.mutateAsync(a.id),d()}catch(a){x(P(a).summary)}};return(0,b.jsxs)(y.SheetContent,{className:"flex flex-col gap-4 overflow-y-auto",children:[(0,b.jsxs)(y.SheetHeader,{className:"pr-8",children:[(0,b.jsxs)(y.SheetTitle,{children:["Scheduled task #",a.id]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs",children:[(0,b.jsx)(m.Badge,{children:a.task_type}),(0,b.jsx)(m.Badge,{children:a.status}),a.model?(0,b.jsx)(m.Badge,{variant:(0,u.modelBadgeVariant)(a.model),children:(0,u.formatShortModelName)(a.model)}):(0,b.jsx)(m.Badge,{variant:"gray",children:"default model"}),void 0!==J.recurringScheduleId?(0,b.jsxs)(m.Badge,{variant:"purple",children:["from recurring #",String(J.recurringScheduleId)]}):null]})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h3",{className:"mb-1 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Scheduled for"}),h?(0,b.jsx)(A.Input,{type:"datetime-local",value:t,onChange:a=>v(a.target.value),className:"h-9"}):(0,b.jsxs)("p",{className:"text-sm text-foreground",children:[(0,s.formatAbsoluteTime)(a.scheduled_for)," ",(0,b.jsxs)("span",{className:"text-muted-foreground",children:["(",(0,s.formatRelativeTime)(a.scheduled_for),")"]})]})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h3",{className:"mb-1 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:L?"Message":"Description"}),h?(0,b.jsx)("textarea",{value:k,onChange:a=>l(a.target.value),rows:L?8:4,className:"w-full rounded-md border border-input bg-background p-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring"}):a.task_description?(0,b.jsx)("pre",{className:"whitespace-pre-wrap break-words rounded-md bg-muted p-2 text-xs text-foreground",children:a.task_description}):(0,b.jsx)("p",{className:"rounded-md bg-muted p-2 text-xs italic text-muted-foreground",children:"No label — see the Prompt below for the agent instruction."})]}),L?null:(0,b.jsxs)("section",{children:[(0,b.jsxs)("h3",{className:"mb-1 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:["Prompt ",(0,b.jsx)("span",{className:"normal-case tracking-normal text-muted-foreground/70",children:"(the agent’s instruction)"})]}),h?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("textarea",{value:o,onChange:a=>p(a.target.value),rows:8,className:"w-full rounded-md border border-input bg-background p-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring",placeholder:"The agent's instruction at fire time — what to do, why, and the expected output."}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:0===o.trim().length?"Required — the agent's instruction at fire time.":`${o.trim().length} / ${B.SCHEDULE_PROMPT_MAX_CHARS} characters max.`})]}):a.task_prompt&&a.task_prompt!==a.task_description?(0,b.jsx)("pre",{className:"whitespace-pre-wrap break-words rounded-md bg-muted p-2 text-xs text-foreground",children:a.task_prompt}):(0,b.jsx)("p",{className:"rounded-md bg-muted p-2 text-xs italic text-muted-foreground",children:"Same as the description above — this row uses one instruction as both its label and its agent body."})]}),!L&&h?(0,b.jsxs)("section",{children:[(0,b.jsx)("h3",{className:"mb-1 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Model"}),(0,b.jsx)(H,{value:q,onChange:r}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:["Pick “Default” to let the dispatcher use the",(0,b.jsx)("code",{className:"mx-1",children:"scheduled.task"}),"process binding. Setting a registered model id pins this row to that backend."]})]}):null,Object.keys(J).length>0?(0,b.jsxs)("section",{children:[(0,b.jsx)("h3",{className:"mb-1 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Task context"}),(0,b.jsx)("pre",{className:"overflow-x-auto rounded-md bg-muted p-2 font-mono text-[11px] text-muted-foreground",children:JSON.stringify(J,null,2)})]}):null,(0,b.jsxs)("section",{className:"text-xs text-muted-foreground",children:["Created ",(0,s.formatAbsoluteTime)(a.created_at)]}),w?(0,b.jsxs)(z.Alert,{variant:"error",children:[(0,b.jsx)("div",{className:"font-medium",children:w}),C.length>0?(0,b.jsx)("ul",{className:"mt-1 list-disc space-y-1 pl-5 text-xs",children:C.map((a,c)=>(0,b.jsxs)("li",{children:[(0,b.jsx)("span",{className:"font-mono text-[11px] opacity-80",children:a.code}),(0,b.jsx)("span",{className:"ml-2",children:a.hint})]},`${a.code}:${c}`))}):null]}):null,(0,b.jsx)(O,{warnings:E}),(0,b.jsxs)("div",{className:"mt-auto flex justify-between gap-2 pt-4",children:[K&&!h?(0,b.jsx)(n.Button,{variant:"outline",onClick:N,disabled:I.isPending,children:I.isPending?"Cancelling...":"Cancel task"}):(0,b.jsx)("span",{}),(0,b.jsxs)("div",{className:"flex gap-2",children:[K&&!h?(0,b.jsx)(n.Button,{onClick:()=>{l(a.task_description??""),p(a.task_prompt??""),r(j),v(V(a.scheduled_for)),x(null),D([]),F([]),i(!0)},children:"Edit"}):null,h?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(n.Button,{variant:"outline",onClick:()=>i(!1),disabled:G.isPending,children:"Discard"}),(0,b.jsx)(n.Button,{onClick:M,disabled:G.isPending,children:G.isPending?"Saving...":"Save"})]}):null]})]})]})}var Y=a.i(51962),Z=a.i(45133),$=a.i(96336);let _=["recurring-schedules"];function aa(){let a=(0,R.useQueryClient)();return(0,Q.useMutation)({mutationFn:({id:a,...b})=>f.api.patch(`/recurring-schedules/${a}`,b),onSuccess:()=>{a.invalidateQueries({queryKey:_}),a.invalidateQueries({queryKey:["schedule-list"]}),a.invalidateQueries({queryKey:["schedule-next"]})}})}function ab({dto:a,open:c,onOpenChange:d}){return(0,b.jsx)(y.Sheet,{open:c,onOpenChange:d,children:a&&(0,b.jsx)(ac,{dto:a,onClose:()=>d(!1)},a.id)})}function ac({dto:a,onClose:d}){let[e,f]=(0,c.useState)(()=>{let b;return b=a.recurrenceRule,{...K,frequency:b.frequency,oneOffDateTime:"",recurringTime:b.time??"00:00",intervalHours:b.intervalHours??1,minuteOfHour:b.minuteOfHour??0,daysOfWeek:b.daysOfWeek??[],daysOfMonth:b.daysOfMonth??[],onMissingDay:b.onMissingDay??"",model:a.model??"",description:a.description,prompt:a.prompt??""}}),[g,h]=(0,c.useState)(null),[i,j]=(0,c.useState)(null),[k,l]=(0,c.useState)([]),[m,o]=(0,c.useState)([]),[p,q]=(0,c.useState)(!1),r=aa(),s=a.model??"",t=async()=>{if(p)return void d();let b=L(e);if(h(b),b)return;let c=M(e);if("recurring"!==c.kind)return void j("Cannot convert a scheduled DM to a one-off — delete and recreate.");try{let b=e.model.trim(),f=c.body.recurrenceRule.time!==a.recurrenceRule.time,g=(await r.mutateAsync({id:a.id,description:c.body.description,prompt:c.body.prompt??null,recurrenceRule:c.body.recurrenceRule,...f?{taskContext:{...a.taskContext,pin_to_quiet_hours_end:!1}}:{},...""===b?""!==s?{model:null}:{}:b!==s?{model:b}:{}})).warnings??[];if(g.length>0){o(g),q(!0);return}d()}catch(c){let{summary:a,issues:b}=P(c);j(a),l(b)}};return(0,b.jsxs)(y.SheetContent,{className:"flex flex-col gap-4 overflow-y-auto",children:[(0,b.jsx)(y.SheetHeader,{className:"pr-8",children:(0,b.jsxs)(y.SheetTitle,{children:["Edit scheduled DM #",a.id]})}),(0,b.jsx)(N,{state:e,onChange:f,errors:g,lockFrequency:!0,onEdit:()=>{g&&h(null),i&&j(null),k.length>0&&l([]),p&&(q(!1),o([]))}}),i?(0,b.jsxs)(z.Alert,{variant:"error",children:[(0,b.jsx)("div",{className:"font-medium",children:i}),k.length>0?(0,b.jsx)("ul",{className:"mt-1 list-disc space-y-1 pl-5 text-xs",children:k.map((a,c)=>(0,b.jsxs)("li",{children:[(0,b.jsx)("span",{className:"font-mono text-[11px] opacity-80",children:a.code}),(0,b.jsx)("span",{className:"ml-2",children:a.hint})]},`${a.code}:${c}`))}):null]}):null,(0,b.jsx)(O,{warnings:m}),(0,b.jsxs)("div",{className:"mt-2 flex justify-end gap-2",children:[(0,b.jsx)(n.Button,{variant:"outline",onClick:d,disabled:r.isPending,children:p?"Close":"Cancel"}),(0,b.jsx)(n.Button,{onClick:t,disabled:r.isPending,children:r.isPending?"Saving...":p?"Acknowledge":"Save"})]})]})}function ad(){let a,{data:d,isLoading:e,isError:g,error:h,refetch:i}=(0,E.useQuery)({queryKey:_,queryFn:()=>f.api.get("/recurring-schedules"),staleTime:3e4}),l=aa(),o=(a=(0,R.useQueryClient)(),(0,Q.useMutation)({mutationFn:a=>f.api.delete(`/recurring-schedules/${a}`),onSuccess:()=>{a.invalidateQueries({queryKey:_}),a.invalidateQueries({queryKey:["schedule-list"]}),a.invalidateQueries({queryKey:["schedule-next"]})}})),[p,q]=(0,c.useState)(null),[t,v]=(0,c.useState)(null),w=async a=>{v(null);try{await l.mutateAsync({id:a.id,enabled:!a.enabled})}catch(a){v(P(a).summary)}},x=async a=>{if(v(null),confirm(`Delete scheduled DM "${a.description.slice(0,40)}..."?`))try{await o.mutateAsync(a.id)}catch(a){v(P(a).summary)}},y=(d?.items??[]).filter(a=>"dm_session"===a.taskType);return(0,b.jsxs)(b.Fragment,{children:[t?(0,b.jsx)(z.Alert,{variant:"error",children:t}):null,(0,b.jsx)(k.QueryResult,{isLoading:e,isError:g,error:h,onRetry:()=>i(),skeleton:(0,b.jsx)(k.TableSkeleton,{rows:3}),children:0===y.length?(0,b.jsx)(j.EmptyState,{icon:Y.CalendarRange,title:"No scheduled DMs",description:"Recurring DMs (e.g. the morning briefing) appear here. The agent creates them on request; recurring work runs as an Agent on the Agents page."}):(0,b.jsx)("div",{className:"overflow-x-auto rounded-xl border border-border",children:(0,b.jsxs)("table",{className:"w-full text-left","aria-label":"Scheduled DMs",children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{className:"border-b border-border bg-muted/50",children:[(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Cadence"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Description"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Model"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Next run"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Enabled"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Actions"})]})}),(0,b.jsx)("tbody",{children:y.map(a=>(0,b.jsxs)("tr",{className:"border-b border-border",children:[(0,b.jsx)("td",{className:"px-3 py-2 text-sm",children:a.recurrenceLabel}),(0,b.jsx)("td",{className:"max-w-md px-3 py-2 text-sm",children:(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsx)("span",{className:"line-clamp-2 flex-1",children:a.description}),a.prompt&&a.description&&a.prompt!==a.description?(0,b.jsxs)(r.Tooltip,{children:[(0,b.jsx)(r.TooltipTrigger,{children:(0,b.jsx)(m.Badge,{variant:"purple",className:"shrink-0",children:"prompt"})}),(0,b.jsx)(r.TooltipContent,{children:"Description above is the list label; a separate prompt is what the agent receives. Open the row to view or edit."})]}):null]})}),(0,b.jsx)("td",{className:"px-3 py-2",children:a.model?(0,b.jsx)(m.Badge,{variant:(0,u.modelBadgeVariant)(a.model),children:(0,u.formatShortModelName)(a.model)}):(0,b.jsx)(m.Badge,{variant:"gray",children:"default"})}),(0,b.jsx)("td",{className:"px-3 py-2 text-xs",children:a.nextRunAt?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{children:(0,s.formatAbsoluteTime)(a.nextRunAt)}),(0,b.jsx)("div",{className:"text-muted-foreground",children:(0,s.formatRelativeTime)(a.nextRunAt)})]}):(0,b.jsx)("span",{className:"text-muted-foreground",children:"—"})}),(0,b.jsx)("td",{className:"px-3 py-2",children:(0,b.jsx)(n.Button,{size:"sm",variant:a.enabled?"default":"outline",onClick:()=>w(a),disabled:l.isPending,children:a.enabled?"On":"Off"})}),(0,b.jsx)("td",{className:"px-3 py-2",children:(0,b.jsxs)("div",{className:"flex gap-1",children:[(0,b.jsx)(n.Button,{size:"sm",variant:"outline",onClick:()=>q(a),"aria-label":"Edit scheduled DM",children:(0,b.jsx)(Z.Edit2,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(n.Button,{size:"sm",variant:"outline",onClick:()=>x(a),disabled:o.isPending,"aria-label":"Delete scheduled DM",children:(0,b.jsx)($.Trash2,{className:"h-3.5 w-3.5"})})]})})]},a.id))})]})})}),(0,b.jsx)(ab,{dto:p,open:null!==p,onOpenChange:a=>{a||q(null)}})]})}let ae={wake:"blue",dm:"blue",morning_routine:"green",evening_review:"green",custom:"purple"},af=["all","pending","running","completed","skipped","failed"],ag=["all","wake","dm","morning_routine","evening_review","custom"];a.s(["default",0,function(){var a;let[y,z]=(0,c.useState)("upcoming"),[A,B]=(0,c.useState)("all"),[C,D]=(0,c.useState)("all"),[E,F]=(0,c.useState)(null),{data:G}=(0,g.useScheduleNext)(),{data:H,fetchNextPage:I,hasNextPage:J,isFetchingNextPage:K,isLoading:L,isError:M,error:N,refetch:O}=(a={status:"all"===A?void 0:A,type:"all"===C?void 0:C},(0,e.useInfiniteQuery)({queryKey:["schedule-list",a],queryFn:({pageParam:b=1})=>f.api.get("/schedule/list",{page:b,limit:20,status:a?.status,type:a?.type}),getNextPageParam:a=>a.pagination.page<a.pagination.totalPages?a.pagination.page+1:void 0,initialPageParam:1,placeholderData:d.keepPreviousData})),P=H?.pages.flatMap(a=>a.schedules)??[],[Q,R]=(0,c.useState)("");(0,c.useEffect)(()=>{if(!G?.next)return;let a=()=>{let a=(0,s.parseUtcDate)(G.next.scheduled_for).getTime()-Date.now();if(a<=0)return void R("Now");let b=Math.floor(a/36e5),c=Math.floor(a%36e5/6e4),d=Math.floor(a%6e4/1e3);R(b>0?`${b}h ${c}m ${d}s`:`${c}m ${d}s`)};a();let b=setInterval(a,1e3);return()=>clearInterval(b)},[G?.next]);let{regenerate:S,target:T,status:V,error:X,dismiss:Y}=(0,h.useRegenerate)();return(0,b.jsxs)("div",{className:"space-y-6 p-6",children:[(0,b.jsx)(q.PageHeader,{title:"Schedule",description:(0,b.jsxs)(b.Fragment,{children:["The scheduling queue plus recurring DM rules. ",(0,b.jsx)("strong",{children:"Upcoming"}),"is every materialized invocation about to run or recently run — wakes (",(0,b.jsx)("code",{children:"wake"}),"), DMs (",(0,b.jsx)("code",{children:"dm"}),"), one-off",(0,b.jsx)("code",{children:" custom"})," tasks, and routine / recurring-DM instances.",(0,b.jsx)("strong",{children:" Scheduled DMs"})," lists the recurring DM rules (e.g. the morning briefing) you can retime or turn off. Recurring ",(0,b.jsx)("em",{children:"work"}),"runs as an Agent on the Agents page."]}),actions:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(U,{trigger:(0,b.jsxs)(n.Button,{children:[(0,b.jsx)(x.Plus,{className:"mr-1 h-4 w-4"}),"Schedule"]})}),(0,b.jsx)(i.RegenerateButton,{target:"today",label:"Refresh Today",currentTarget:T,status:V,error:X,onRegenerate:S,onDismiss:Y})]})}),G?.next&&(0,b.jsxs)(o.Card,{className:"border-primary/30 bg-primary/10 dark:bg-primary/15",children:[(0,b.jsxs)(o.CardHeader,{children:[(0,b.jsx)(o.CardTitle,{children:"Next Up"}),(0,b.jsx)(w,{className:"h-4 w-4 text-primary"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("span",{className:"font-mono text-2xl font-bold text-foreground",children:Q}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-sm text-foreground",children:G.next.task_description}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:(0,s.formatAbsoluteTime)(G.next.scheduled_for)})]})]})]}),(0,b.jsxs)(p.Tabs,{value:y,onValueChange:a=>z(a),children:[(0,b.jsxs)(p.TabsList,{children:[(0,b.jsx)(p.TabsTrigger,{value:"upcoming",children:"Upcoming"}),(0,b.jsx)(p.TabsTrigger,{value:"dms",children:"Scheduled DMs"})]}),(0,b.jsxs)(p.TabsContent,{value:"upcoming",className:"mt-4 space-y-4",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-3",role:"toolbar","aria-label":"Schedule filters",children:[(0,b.jsx)("div",{className:"flex flex-wrap gap-1",children:af.map(a=>(0,b.jsx)(n.Button,{variant:A===a?"default":"outline",size:"sm",onClick:()=>B(a),"aria-pressed":A===a,children:"all"===a?"All":a},a))}),(0,b.jsx)(t.Separator,{orientation:"vertical",className:"h-6"}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1",children:ag.map(a=>(0,b.jsx)(n.Button,{variant:C===a?"default":"outline",size:"sm",onClick:()=>D(a),"aria-pressed":C===a,children:"all"===a?"All types":a},a))})]}),(0,b.jsxs)(k.QueryResult,{isLoading:L,isError:M,error:N,onRetry:()=>O(),skeleton:(0,b.jsx)(k.TableSkeleton,{rows:5}),children:[(0,b.jsx)("div",{className:"overflow-x-auto rounded-xl border border-border",children:(0,b.jsxs)("table",{className:"w-full text-left","aria-label":"Scheduled tasks",children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{className:"border-b border-border bg-muted/50",children:[(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Scheduled For"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Type"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Description"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Model"}),(0,b.jsx)("th",{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Status"}),(0,b.jsx)("th",{className:"hidden px-3 py-2 text-xs font-medium text-muted-foreground lg:table-cell",children:"Created"})]})}),(0,b.jsx)("tbody",{children:P.map(a=>(0,b.jsxs)("tr",{className:"cursor-pointer border-b border-border hover:bg-muted/30",onClick:()=>F(a),children:[(0,b.jsx)("td",{className:"px-3 py-2 text-sm",children:(0,b.jsxs)(r.Tooltip,{children:[(0,b.jsx)(r.TooltipTrigger,{children:(0,s.formatAbsoluteTime)(a.scheduled_for)}),(0,b.jsx)(r.TooltipContent,{children:(0,s.formatRelativeTime)(a.scheduled_for)})]})}),(0,b.jsx)("td",{className:"px-3 py-2",children:(0,b.jsx)(m.Badge,{variant:ae[a.task_type]??"gray",children:a.task_type})}),(0,b.jsx)("td",{className:"max-w-md px-3 py-2 text-sm text-foreground",children:(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsx)("span",{className:"line-clamp-2 flex-1",children:a.task_description||a.task_prompt||"—"}),a.task_prompt&&a.task_description&&a.task_prompt!==a.task_description?(0,b.jsxs)(r.Tooltip,{children:[(0,b.jsx)(r.TooltipTrigger,{children:(0,b.jsx)(m.Badge,{variant:"purple",className:"shrink-0",children:"prompt"})}),(0,b.jsx)(r.TooltipContent,{children:"Description above is the list label; a separate prompt is what the agent receives. Open the row to view or edit."})]}):null]})}),(0,b.jsx)("td",{className:"px-3 py-2",children:a.model&&(0,b.jsx)(m.Badge,{variant:(0,u.modelBadgeVariant)(a.model),children:(0,u.formatShortModelName)(a.model)})}),(0,b.jsx)("td",{className:"px-3 py-2",children:(0,b.jsx)(l.StatusBadge,{status:a.status})}),(0,b.jsx)("td",{className:"hidden whitespace-nowrap px-3 py-2 font-mono text-xs tabular-nums text-muted-foreground lg:table-cell",children:(0,b.jsxs)(r.Tooltip,{children:[(0,b.jsx)(r.TooltipTrigger,{children:(0,s.formatAbsoluteTime)(a.created_at)}),(0,b.jsx)(r.TooltipContent,{children:(0,s.formatRelativeTime)(a.created_at)})]})})]},a.id))})]})}),0===P.length?(0,b.jsx)(j.EmptyState,{icon:v.Clock,title:"No scheduled tasks",description:"Tasks will appear here when the agent schedules wake-ups or routines"}):null,J&&(0,b.jsx)("div",{className:"flex justify-center",children:(0,b.jsx)(n.Button,{variant:"outline",onClick:()=>I(),disabled:K,children:K?"Loading...":"Load More"})})]})]}),(0,b.jsx)(p.TabsContent,{value:"dms",className:"mt-4 space-y-4",children:(0,b.jsx)(ad,{})})]}),(0,b.jsx)(W,{row:E,open:null!==E,onOpenChange:a=>{a||F(null)}})]})}],330)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=packages_dashboard_src_app_schedule_page_tsx_0znc404._.js.map
|
package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_commands_page_tsx_0nacqrh._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[26495,a=>{"use strict";var b=a.i(39752),c=a.i(34542);a.i(70010);var d=a.i(58906),e=a.i(54506),f=a.i(7037),g=a.i(43179),h=a.i(77694),i=a.i(92417),j=a.i(95024),k=a.i(96336),l=a.i(32307),m=a.i(85857),n=a.i(59974),o=a.i(87206),p=a.i(8753),q=a.i(62588),r=a.i(81130);let s=["commands"];var t=a.i(74794),u=a.i(21218),v=a.i(30400),w=a.i(8212),x=a.i(7384),y=a.i(47696),z=a.i(29629),A=a.i(40091),B=a.i(48558);let C=d.RUNTIME_AVAILABLE_BACKEND_IDS,D=/^[a-z0-9][a-z0-9_-]{0,31}$/,E={id:null,name:"",description:"",prompt:"",backendId:"claude",modelId:"claude-sonnet-4-6",enabled:!0,enabledSkills:["notify"],instructionMd:""};function F(a){let b=a.trim().toLowerCase();return b.startsWith("!")?b.slice(1):b}function G(a){return`!${F(a)}`}function H(a){return a.displayName??a.label??a.modelId}function I(a){return a instanceof n.ApiError||a instanceof Error?a.message:"Request failed"}function J({command:a}){return(0,b.jsxs)(v.Card,{className:"p-4",children:[(0,b.jsxs)(v.CardHeader,{className:"mb-2 gap-3",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)(v.CardTitle,{className:"text-base",children:a.title}),(0,b.jsx)("p",{className:"pt-1 font-mono text-sm text-primary",children:a.command})]}),(0,b.jsx)(x.Badge,{variant:"gray",children:"Built-in"})]}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:a.description}),a.details.length>0&&(0,b.jsx)("ul",{className:"mt-3 space-y-1 text-sm text-muted-foreground",children:a.details.map(a=>(0,b.jsxs)("li",{className:"flex gap-2",children:[(0,b.jsx)(e.Check,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-success"}),(0,b.jsx)("span",{children:a})]},a))})]})}function K({command:a,model:c,hasBuiltInConflict:d,busy:e,onEdit:g,onDelete:h}){return(0,b.jsxs)(v.Card,{tone:d?"warning":"default",className:"p-4",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("h3",{className:"font-mono text-base font-semibold text-primary",children:a.command}),(0,b.jsx)(x.Badge,{variant:a.enabled?"green":"gray",children:a.enabled?"Enabled":"Disabled"}),d&&(0,b.jsx)(x.Badge,{variant:"amber",children:"Name conflict"}),(0,b.jsx)(x.Badge,{variant:"blue",children:a.backendId})]}),(0,b.jsx)("p",{className:"mt-1 text-sm text-foreground",children:a.description||"No description provided."}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:["Model: ",c?H(c):a.modelId]})]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(u.Button,{variant:"outline",size:"sm",onClick:g,disabled:e,children:[(0,b.jsx)(f.Pencil,{className:"mr-2 h-4 w-4"}),"Edit"]}),(0,b.jsxs)(u.Button,{variant:"destructive",size:"sm",onClick:h,disabled:e,children:[(0,b.jsx)(k.Trash2,{className:"mr-2 h-4 w-4"}),"Delete"]})]})]}),d&&(0,b.jsxs)("div",{className:"mt-3 flex gap-2 rounded-md border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-800 dark:border-amber-900 dark:bg-amber-950/40 dark:text-amber-200",children:[(0,b.jsx)(l.AlertTriangle,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),(0,b.jsx)("span",{children:"A built-in command with this name now exists. Runtime dispatch will use the built-in command until this custom command is renamed."})]}),(0,b.jsx)("div",{className:"mt-3 max-h-28 overflow-auto rounded-md bg-muted p-3 text-xs text-muted-foreground",children:(0,b.jsx)("pre",{className:"whitespace-pre-wrap font-sans",children:a.prompt})})]})}function L({draft:a,builtInReserved:c,userCommands:d,modelsByBackend:e,availableSkills:f,maxInstructionMdLength:g,busy:k,onChange:l,onCancel:n,onSave:o}){let p=F(a.name),q=G(a.name),r=D.test(p),s=c.has(q),t=d.some(b=>b.command===q&&b.id!==a.id),x=e.get(a.backendId)??[],z=x.some(b=>b.modelId===a.modelId),E=a.instructionMd.length>g,I=r&&!s&&!t&&a.prompt.trim().length>0&&z&&!E&&!k,J="claude"===a.backendId?"CLAUDE.md":"codex"===a.backendId?"AGENTS.md":"GEMINI.md",K=a.name.trim()?r?s?"This is a built-in command.":t?"This custom command already exists.":`${q} is available.`:"Use lowercase letters, numbers, hyphens, or underscores.":"Enter the part after !.";return(0,b.jsxs)(v.Card,{className:"p-4",children:[(0,b.jsxs)(v.CardHeader,{className:"mb-4",children:[(0,b.jsx)(v.CardTitle,{className:"text-base",children:a.id?`Edit ${q}`:"New Custom Command"}),(0,b.jsx)(u.Button,{variant:"ghost",size:"icon",onClick:n,disabled:k,children:(0,b.jsx)(m.X,{className:"h-4 w-4"})})]}),(0,b.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,b.jsxs)("label",{className:"space-y-1.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Command"}),(0,b.jsxs)("div",{className:"flex",children:[(0,b.jsx)("span",{className:"inline-flex h-9 items-center rounded-l-md border border-r-0 border-input bg-muted px-3 font-mono text-sm text-muted-foreground",children:"!"}),(0,b.jsx)(w.Input,{value:a.name.startsWith("!")?a.name.slice(1):a.name,onChange:b=>l({...a,name:b.target.value}),className:"rounded-l-none font-mono",placeholder:"digest",disabled:k})]}),(0,b.jsx)("p",{className:(0,B.cn)("text-xs",!r||s||t?"text-destructive":"text-muted-foreground"),children:K})]}),(0,b.jsxs)("label",{className:"space-y-1.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Description"}),(0,b.jsx)(w.Input,{value:a.description,onChange:b=>l({...a,description:b.target.value}),placeholder:"Short label shown in settings and help",disabled:k})]}),(0,b.jsxs)("label",{className:"space-y-1.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Backend"}),(0,b.jsxs)(y.Select,{value:a.backendId,onValueChange:b=>{let c=e.get(b)?.find(a=>a.available)?.modelId??e.get(b)?.[0]?.modelId??"";l({...a,backendId:b,modelId:c})},disabled:k,children:[(0,b.jsx)(y.SelectTrigger,{children:(0,b.jsx)(y.SelectValue,{})}),(0,b.jsx)(y.SelectContent,{children:C.map(a=>{let c=(0,A.isUiPreviewOnlyBackend)(a);return(0,b.jsxs)(y.SelectItem,{value:a,disabled:c,children:[a,c?A.UI_PREVIEW_ONLY_BADGE_SUFFIX:""]},a)})})]})]}),(0,b.jsxs)("label",{className:"space-y-1.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Model"}),(0,b.jsxs)(y.Select,{value:a.modelId,onValueChange:b=>l({...a,modelId:b}),disabled:k||0===x.length,children:[(0,b.jsx)(y.SelectTrigger,{children:(0,b.jsx)(y.SelectValue,{placeholder:"Select model"})}),(0,b.jsx)(y.SelectContent,{children:x.map(a=>(0,b.jsxs)(y.SelectItem,{value:a.modelId,children:[H(a),a.deprecated?" · legacy":""]},a.modelId))})]})]})]}),(0,b.jsxs)("label",{className:"mt-4 block space-y-1.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Instruction Prompt"}),(0,b.jsx)("textarea",{value:a.prompt,onChange:b=>l({...a,prompt:b.target.value}),rows:8,className:"w-full resize-y rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50",placeholder:"Describe exactly what the agent should do when this command is invoked.",disabled:k})]}),(0,b.jsxs)("fieldset",{className:"mt-4 space-y-2",children:[(0,b.jsx)("legend",{className:"text-sm font-medium text-foreground",children:"Skills"}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Skill modules are materialized into the working directory for this command. Leave only ",(0,b.jsx)("code",{children:"notify"})," checked for a minimal DM-reply turn; add more if your prompt needs them."]}),(0,b.jsx)("div",{className:"grid gap-2 sm:grid-cols-2 md:grid-cols-3",children:f.map(c=>{let d=a.enabledSkills.includes(c);return(0,b.jsxs)("label",{className:"inline-flex items-start gap-2 rounded-md border border-input bg-background px-2.5 py-1.5 text-sm",children:[(0,b.jsx)("input",{type:"checkbox",checked:d,onChange:()=>{let b;return b=a.enabledSkills.includes(c),void l({...a,enabledSkills:b?a.enabledSkills.filter(a=>a!==c):[...a.enabledSkills,c]})},disabled:k,className:"mt-0.5 h-4 w-4 rounded border-input accent-primary"}),(0,b.jsx)("span",{className:"font-mono text-xs",children:c})]},c)})}),0===a.enabledSkills.length&&(0,b.jsxs)("p",{className:"text-xs text-amber-600 dark:text-amber-400",children:["No skills selected — the agent will run with only safety + your instructions. Reply quality may suffer without ",(0,b.jsx)("code",{children:"notify"}),"."]})]}),(0,b.jsxs)("label",{className:"mt-4 block space-y-1.5",children:[(0,b.jsxs)("span",{className:"text-sm font-medium text-foreground",children:[J," body (optional)"]}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Custom profile body written into the working directory's"," ",(0,b.jsx)("code",{children:J})," for this command. Leave blank to use the default conversational profile. The safety preamble and your character block are always emitted around it."]}),(0,b.jsx)("textarea",{value:a.instructionMd,onChange:b=>l({...a,instructionMd:b.target.value}),rows:8,className:"w-full resize-y rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50",placeholder:"Replace the default conversational persona for this command. e.g. 'You are a terse summariser…'",disabled:k}),(0,b.jsxs)("p",{className:(0,B.cn)("text-xs",E?"text-destructive":"text-muted-foreground"),children:[a.instructionMd.length.toLocaleString()," /"," ",g.toLocaleString()," characters"]})]}),(0,b.jsxs)("div",{className:"mt-4 flex flex-wrap items-center justify-between gap-3",children:[(0,b.jsxs)("label",{className:"inline-flex items-center gap-2 text-sm text-foreground",children:[(0,b.jsx)("input",{type:"checkbox",checked:a.enabled,onChange:b=>l({...a,enabled:b.target.checked}),className:"h-4 w-4 rounded border-input accent-primary",disabled:k}),a.enabled?(0,b.jsx)(h.Power,{className:"h-4 w-4 text-success"}):(0,b.jsx)(i.PowerOff,{className:"h-4 w-4 text-muted-foreground"}),"Enabled"]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(u.Button,{variant:"outline",onClick:n,disabled:k,children:"Cancel"}),(0,b.jsxs)(u.Button,{onClick:o,disabled:!I,children:[(0,b.jsx)(j.Save,{className:"mr-2 h-4 w-4"}),"Save Command"]})]})]})]})}a.s(["default",0,function(){let a,d,e,f=(0,q.useQuery)({queryKey:s,queryFn:()=>n.api.get("/commands")}),h=(0,t.useBackends)(),i=(a=(0,r.useQueryClient)(),(0,p.useMutation)({mutationFn:a=>n.api.post("/commands",a),onSuccess:b=>{a.setQueryData(s,b)}})),j=(d=(0,r.useQueryClient)(),(0,p.useMutation)({mutationFn:({id:a,body:b})=>n.api.put(`/commands/${a}`,b),onSuccess:a=>{d.setQueryData(s,a)}})),k=(e=(0,r.useQueryClient)(),(0,p.useMutation)({mutationFn:a=>n.api.delete(`/commands/${a}`),onSuccess:a=>{e.setQueryData(s,a)}})),[m,w]=(0,c.useState)(null),[x,y]=(0,c.useState)(null),A=(0,c.useMemo)(()=>{let a=h.data?.backends??[],b=new Map;for(let c of a)b.set(c.id,c.models.filter(a=>a.available).sort((a,b)=>!!a.deprecated!=!!b.deprecated?a.deprecated?1:-1:H(a).localeCompare(H(b))));return b},[h.data?.backends]),B=(0,c.useMemo)(()=>new Set(f.data?.builtInCommands.map(a=>a.command)??[]),[f.data?.builtInCommands]),C=(0,c.useMemo)(()=>(f.data?.userCommands??[]).filter(a=>B.has(a.command)),[f.data?.userCommands,B]),D=(0,c.useMemo)(()=>f.data?.constraints.defaultSkills??["notify"],[f.data?.constraints.defaultSkills]),M=(0,c.useMemo)(()=>f.data?.constraints.availableSkills??[],[f.data?.constraints.availableSkills]),N=f.data?.constraints.maxInstructionMdLength??32e3,O=async()=>{if(!m)return;let a=m.instructionMd.trim(),b={name:F(m.name),description:m.description.trim(),prompt:m.prompt.trim(),backendId:m.backendId,modelId:m.modelId,enabled:m.enabled,enabledSkills:m.enabledSkills,instructionMd:0===a.length?null:a};try{m.id?(await j.mutateAsync({id:m.id,body:b}),y(`${G(m.name)} updated`)):(await i.mutateAsync(b),y(`${G(m.name)} created`)),w(null)}catch(a){y(I(a))}},P=async a=>{if(window.confirm(`Delete ${a.command}?`))try{await k.mutateAsync(a.id),m?.id===a.id&&w(null),y(`${a.command} deleted`)}catch(a){y(I(a))}},Q=i.isPending||j.isPending||k.isPending;return f.isLoading||h.isLoading?(0,b.jsx)(v.Card,{className:"p-4",children:(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading commands…"})}):f.error||h.error||!f.data||!h.data?(0,b.jsx)(v.Card,{tone:"error",className:"p-4",children:(0,b.jsx)("p",{className:"text-sm text-destructive",children:"Failed to load command settings."})}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(o.PageHeader,{title:"Commands",description:(0,b.jsxs)(b.Fragment,{children:["Messaging shortcuts that begin with ",(0,b.jsx)("code",{children:"!"}),". Built-in commands are system controls; custom commands run your saved prompt on the backend and model you choose."]})}),x&&(0,b.jsx)(z.Alert,{className:"rounded-lg px-4 py-2.5 text-sm",children:x}),C.length>0&&(0,b.jsx)(z.Alert,{variant:"warning",icon:!1,className:"rounded-lg px-4 py-3 text-sm",children:(0,b.jsxs)("div",{className:"flex gap-3",children:[(0,b.jsx)(l.AlertTriangle,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"font-medium",children:"Some custom commands now conflict with built-in commands."}),(0,b.jsx)("p",{className:"mt-1 text-muted-foreground",children:"Built-in commands take precedence at runtime. Rename the custom command to make it callable again."}),(0,b.jsx)("div",{className:"mt-2 flex flex-wrap gap-1.5",children:C.map(a=>(0,b.jsx)("code",{className:"rounded bg-background px-1.5 py-0.5 font-mono text-xs",children:a.command},a.id))})]})]})}),(0,b.jsxs)("section",{className:"space-y-3",children:[(0,b.jsx)("div",{className:"flex items-center justify-between gap-3",children:(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-lg font-semibold text-foreground",children:"Built-in"}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"Read-only controls handled by the daemon without model cost."})]})}),(0,b.jsx)("div",{className:"grid gap-3 md:grid-cols-2",children:f.data.builtInCommands.map(a=>(0,b.jsx)(J,{command:a},a.command))})]}),(0,b.jsxs)("section",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-lg font-semibold text-foreground",children:"Custom"}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"User-defined commands are validated against built-in and existing custom names."})]}),(0,b.jsxs)(u.Button,{onClick:()=>{let a=h.data?.defaultBackend??"claude",b=A.get(a)?.find(a=>a.available)?.modelId??A.get(a)?.[0]?.modelId??E.modelId;w({...E,backendId:a,modelId:b,enabledSkills:[...D]}),y(null)},disabled:Q,children:[(0,b.jsx)(g.Plus,{className:"mr-2 h-4 w-4"}),"New Command"]})]}),m&&(0,b.jsx)(L,{draft:m,builtInReserved:B,userCommands:f.data.userCommands,modelsByBackend:A,availableSkills:M,maxInstructionMdLength:N,busy:Q,onChange:w,onCancel:()=>w(null),onSave:O}),0===f.data.userCommands.length?(0,b.jsx)(v.Card,{className:"p-4",children:(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"No custom commands yet."})}):(0,b.jsx)("div",{className:"grid gap-3",children:f.data.userCommands.map(a=>(0,b.jsx)(K,{command:a,model:A.get(a.backendId)?.find(b=>b.modelId===a.modelId),hasBuiltInConflict:B.has(a.command),busy:Q,onEdit:()=>{w({id:a.id,name:a.name,description:a.description,prompt:a.prompt,backendId:a.backendId,modelId:a.modelId,enabled:a.enabled,enabledSkills:a.enabledSkills??[...D],instructionMd:a.instructionMd??""}),y(null)},onDelete:()=>P(a)},a.id))})]})]})}],26495)}];
|
|
1
|
+
module.exports=[26495,a=>{"use strict";var b=a.i(39752),c=a.i(34542);a.i(70010);var d=a.i(58906),e=a.i(54506),f=a.i(7037),g=a.i(43179),h=a.i(77694),i=a.i(92417),j=a.i(95024),k=a.i(96336),l=a.i(32307),m=a.i(85857),n=a.i(59974),o=a.i(87206),p=a.i(8753),q=a.i(62588),r=a.i(81130);let s=["commands"];var t=a.i(74794),u=a.i(21218),v=a.i(30400),w=a.i(8212),x=a.i(7384),y=a.i(47696),z=a.i(29629),A=a.i(40091),B=a.i(48558);let C=d.RUNTIME_AVAILABLE_BACKEND_IDS,D=/^[a-z0-9][a-z0-9_-]{0,31}$/,E={id:null,name:"",description:"",prompt:"",backendId:"claude",modelId:"claude-sonnet-4-6",enabled:!0,enabledSkills:["notify"],instructionMd:""};function F(a){let b=a.trim().toLowerCase();return b.startsWith("!")?b.slice(1):b}function G(a){return`!${F(a)}`}function H(a){return a.displayName??a.label??a.modelId}function I(a){return a instanceof n.ApiError||a instanceof Error?a.message:"Request failed"}function J({command:a}){return(0,b.jsxs)(v.Card,{className:"p-4",children:[(0,b.jsxs)(v.CardHeader,{className:"mb-2 gap-3",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)(v.CardTitle,{className:"text-base",children:a.title}),(0,b.jsx)("p",{className:"pt-1 font-mono text-sm text-primary",children:a.command})]}),(0,b.jsx)(x.Badge,{variant:"gray",children:"Built-in"})]}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:a.description}),a.details.length>0&&(0,b.jsx)("ul",{className:"mt-3 space-y-1 text-sm text-muted-foreground",children:a.details.map(a=>(0,b.jsxs)("li",{className:"flex gap-2",children:[(0,b.jsx)(e.Check,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-success"}),(0,b.jsx)("span",{children:a})]},a))})]})}function K({command:a,model:c,hasBuiltInConflict:d,busy:e,onEdit:g,onDelete:h}){return(0,b.jsxs)(v.Card,{tone:d?"warning":"default",className:"p-4",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("h3",{className:"font-mono text-base font-semibold text-primary",children:a.command}),(0,b.jsx)(x.Badge,{variant:a.enabled?"green":"gray",children:a.enabled?"Enabled":"Disabled"}),d&&(0,b.jsx)(x.Badge,{variant:"amber",children:"Name conflict"}),(0,b.jsx)(x.Badge,{variant:"blue",children:a.backendId})]}),(0,b.jsx)("p",{className:"mt-1 text-sm text-foreground",children:a.description||"No description provided."}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:["Model: ",c?H(c):a.modelId]})]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(u.Button,{variant:"outline",size:"sm",onClick:g,disabled:e,children:[(0,b.jsx)(f.Pencil,{className:"mr-2 h-4 w-4"}),"Edit"]}),(0,b.jsxs)(u.Button,{variant:"destructive",size:"sm",onClick:h,disabled:e,children:[(0,b.jsx)(k.Trash2,{className:"mr-2 h-4 w-4"}),"Delete"]})]})]}),d&&(0,b.jsxs)("div",{className:"mt-3 flex gap-2 rounded-md border border-warning/40 bg-warning/10 px-3 py-2 text-xs text-warning",children:[(0,b.jsx)(l.AlertTriangle,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),(0,b.jsx)("span",{children:"A built-in command with this name now exists. Runtime dispatch will use the built-in command until this custom command is renamed."})]}),(0,b.jsx)("div",{className:"mt-3 max-h-28 overflow-auto rounded-md bg-muted p-3 text-xs text-muted-foreground",children:(0,b.jsx)("pre",{className:"whitespace-pre-wrap font-sans",children:a.prompt})})]})}function L({draft:a,builtInReserved:c,userCommands:d,modelsByBackend:e,availableSkills:f,maxInstructionMdLength:g,busy:k,onChange:l,onCancel:n,onSave:o}){let p=F(a.name),q=G(a.name),r=D.test(p),s=c.has(q),t=d.some(b=>b.command===q&&b.id!==a.id),x=e.get(a.backendId)??[],z=x.some(b=>b.modelId===a.modelId),E=a.instructionMd.length>g,I=r&&!s&&!t&&a.prompt.trim().length>0&&z&&!E&&!k,J="claude"===a.backendId?"CLAUDE.md":"codex"===a.backendId?"AGENTS.md":"GEMINI.md",K=a.name.trim()?r?s?"This is a built-in command.":t?"This custom command already exists.":`${q} is available.`:"Use lowercase letters, numbers, hyphens, or underscores.":"Enter the part after !.";return(0,b.jsxs)(v.Card,{className:"p-4",children:[(0,b.jsxs)(v.CardHeader,{className:"mb-4",children:[(0,b.jsx)(v.CardTitle,{className:"text-base",children:a.id?`Edit ${q}`:"New Custom Command"}),(0,b.jsx)(u.Button,{variant:"ghost",size:"icon",onClick:n,disabled:k,children:(0,b.jsx)(m.X,{className:"h-4 w-4"})})]}),(0,b.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,b.jsxs)("label",{className:"space-y-1.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Command"}),(0,b.jsxs)("div",{className:"flex",children:[(0,b.jsx)("span",{className:"inline-flex h-9 items-center rounded-l-md border border-r-0 border-input bg-muted px-3 font-mono text-sm text-muted-foreground",children:"!"}),(0,b.jsx)(w.Input,{value:a.name.startsWith("!")?a.name.slice(1):a.name,onChange:b=>l({...a,name:b.target.value}),className:"rounded-l-none font-mono",placeholder:"digest",disabled:k})]}),(0,b.jsx)("p",{className:(0,B.cn)("text-xs",!r||s||t?"text-destructive":"text-muted-foreground"),children:K})]}),(0,b.jsxs)("label",{className:"space-y-1.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Description"}),(0,b.jsx)(w.Input,{value:a.description,onChange:b=>l({...a,description:b.target.value}),placeholder:"Short label shown in settings and help",disabled:k})]}),(0,b.jsxs)("label",{className:"space-y-1.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Backend"}),(0,b.jsxs)(y.Select,{value:a.backendId,onValueChange:b=>{let c=e.get(b)?.find(a=>a.available)?.modelId??e.get(b)?.[0]?.modelId??"";l({...a,backendId:b,modelId:c})},disabled:k,children:[(0,b.jsx)(y.SelectTrigger,{children:(0,b.jsx)(y.SelectValue,{})}),(0,b.jsx)(y.SelectContent,{children:C.map(a=>{let c=(0,A.isUiPreviewOnlyBackend)(a);return(0,b.jsxs)(y.SelectItem,{value:a,disabled:c,children:[a,c?A.UI_PREVIEW_ONLY_BADGE_SUFFIX:""]},a)})})]})]}),(0,b.jsxs)("label",{className:"space-y-1.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Model"}),(0,b.jsxs)(y.Select,{value:a.modelId,onValueChange:b=>l({...a,modelId:b}),disabled:k||0===x.length,children:[(0,b.jsx)(y.SelectTrigger,{children:(0,b.jsx)(y.SelectValue,{placeholder:"Select model"})}),(0,b.jsx)(y.SelectContent,{children:x.map(a=>(0,b.jsxs)(y.SelectItem,{value:a.modelId,children:[H(a),a.deprecated?" · legacy":""]},a.modelId))})]})]})]}),(0,b.jsxs)("label",{className:"mt-4 block space-y-1.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Instruction Prompt"}),(0,b.jsx)("textarea",{value:a.prompt,onChange:b=>l({...a,prompt:b.target.value}),rows:8,className:"w-full resize-y rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50",placeholder:"Describe exactly what the agent should do when this command is invoked.",disabled:k})]}),(0,b.jsxs)("fieldset",{className:"mt-4 space-y-2",children:[(0,b.jsx)("legend",{className:"text-sm font-medium text-foreground",children:"Skills"}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Skill modules are materialized into the working directory for this command. Leave only ",(0,b.jsx)("code",{children:"notify"})," checked for a minimal DM-reply turn; add more if your prompt needs them."]}),(0,b.jsx)("div",{className:"grid gap-2 sm:grid-cols-2 md:grid-cols-3",children:f.map(c=>{let d=a.enabledSkills.includes(c);return(0,b.jsxs)("label",{className:"inline-flex items-start gap-2 rounded-md border border-input bg-background px-2.5 py-1.5 text-sm",children:[(0,b.jsx)("input",{type:"checkbox",checked:d,onChange:()=>{let b;return b=a.enabledSkills.includes(c),void l({...a,enabledSkills:b?a.enabledSkills.filter(a=>a!==c):[...a.enabledSkills,c]})},disabled:k,className:"mt-0.5 h-4 w-4 rounded border-input accent-primary"}),(0,b.jsx)("span",{className:"font-mono text-xs",children:c})]},c)})}),0===a.enabledSkills.length&&(0,b.jsxs)("p",{className:"text-xs text-warning",children:["No skills selected — the agent will run with only safety + your instructions. Reply quality may suffer without ",(0,b.jsx)("code",{children:"notify"}),"."]})]}),(0,b.jsxs)("label",{className:"mt-4 block space-y-1.5",children:[(0,b.jsxs)("span",{className:"text-sm font-medium text-foreground",children:[J," body (optional)"]}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Custom profile body written into the working directory's"," ",(0,b.jsx)("code",{children:J})," for this command. Leave blank to use the default conversational profile. The safety preamble and your character block are always emitted around it."]}),(0,b.jsx)("textarea",{value:a.instructionMd,onChange:b=>l({...a,instructionMd:b.target.value}),rows:8,className:"w-full resize-y rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50",placeholder:"Replace the default conversational persona for this command. e.g. 'You are a terse summariser…'",disabled:k}),(0,b.jsxs)("p",{className:(0,B.cn)("text-xs",E?"text-destructive":"text-muted-foreground"),children:[a.instructionMd.length.toLocaleString()," /"," ",g.toLocaleString()," characters"]})]}),(0,b.jsxs)("div",{className:"mt-4 flex flex-wrap items-center justify-between gap-3",children:[(0,b.jsxs)("label",{className:"inline-flex items-center gap-2 text-sm text-foreground",children:[(0,b.jsx)("input",{type:"checkbox",checked:a.enabled,onChange:b=>l({...a,enabled:b.target.checked}),className:"h-4 w-4 rounded border-input accent-primary",disabled:k}),a.enabled?(0,b.jsx)(h.Power,{className:"h-4 w-4 text-success"}):(0,b.jsx)(i.PowerOff,{className:"h-4 w-4 text-muted-foreground"}),"Enabled"]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(u.Button,{variant:"outline",onClick:n,disabled:k,children:"Cancel"}),(0,b.jsxs)(u.Button,{onClick:o,disabled:!I,children:[(0,b.jsx)(j.Save,{className:"mr-2 h-4 w-4"}),"Save Command"]})]})]})]})}a.s(["default",0,function(){let a,d,e,f=(0,q.useQuery)({queryKey:s,queryFn:()=>n.api.get("/commands")}),h=(0,t.useBackends)(),i=(a=(0,r.useQueryClient)(),(0,p.useMutation)({mutationFn:a=>n.api.post("/commands",a),onSuccess:b=>{a.setQueryData(s,b)}})),j=(d=(0,r.useQueryClient)(),(0,p.useMutation)({mutationFn:({id:a,body:b})=>n.api.put(`/commands/${a}`,b),onSuccess:a=>{d.setQueryData(s,a)}})),k=(e=(0,r.useQueryClient)(),(0,p.useMutation)({mutationFn:a=>n.api.delete(`/commands/${a}`),onSuccess:a=>{e.setQueryData(s,a)}})),[m,w]=(0,c.useState)(null),[x,y]=(0,c.useState)(null),A=(0,c.useMemo)(()=>{let a=h.data?.backends??[],b=new Map;for(let c of a)b.set(c.id,c.models.filter(a=>a.available).sort((a,b)=>!!a.deprecated!=!!b.deprecated?a.deprecated?1:-1:H(a).localeCompare(H(b))));return b},[h.data?.backends]),B=(0,c.useMemo)(()=>new Set(f.data?.builtInCommands.map(a=>a.command)??[]),[f.data?.builtInCommands]),C=(0,c.useMemo)(()=>(f.data?.userCommands??[]).filter(a=>B.has(a.command)),[f.data?.userCommands,B]),D=(0,c.useMemo)(()=>f.data?.constraints.defaultSkills??["notify"],[f.data?.constraints.defaultSkills]),M=(0,c.useMemo)(()=>f.data?.constraints.availableSkills??[],[f.data?.constraints.availableSkills]),N=f.data?.constraints.maxInstructionMdLength??32e3,O=async()=>{if(!m)return;let a=m.instructionMd.trim(),b={name:F(m.name),description:m.description.trim(),prompt:m.prompt.trim(),backendId:m.backendId,modelId:m.modelId,enabled:m.enabled,enabledSkills:m.enabledSkills,instructionMd:0===a.length?null:a};try{m.id?(await j.mutateAsync({id:m.id,body:b}),y(`${G(m.name)} updated`)):(await i.mutateAsync(b),y(`${G(m.name)} created`)),w(null)}catch(a){y(I(a))}},P=async a=>{if(window.confirm(`Delete ${a.command}?`))try{await k.mutateAsync(a.id),m?.id===a.id&&w(null),y(`${a.command} deleted`)}catch(a){y(I(a))}},Q=i.isPending||j.isPending||k.isPending;return f.isLoading||h.isLoading?(0,b.jsx)(v.Card,{className:"p-4",children:(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading commands…"})}):f.error||h.error||!f.data||!h.data?(0,b.jsx)(v.Card,{tone:"error",className:"p-4",children:(0,b.jsx)("p",{className:"text-sm text-destructive",children:"Failed to load command settings."})}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(o.PageHeader,{title:"Commands",description:(0,b.jsxs)(b.Fragment,{children:["Messaging shortcuts that begin with ",(0,b.jsx)("code",{children:"!"}),". Built-in commands are system controls; custom commands run your saved prompt on the backend and model you choose."]})}),x&&(0,b.jsx)(z.Alert,{className:"rounded-lg px-4 py-2.5 text-sm",children:x}),C.length>0&&(0,b.jsx)(z.Alert,{variant:"warning",icon:!1,className:"rounded-lg px-4 py-3 text-sm",children:(0,b.jsxs)("div",{className:"flex gap-3",children:[(0,b.jsx)(l.AlertTriangle,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"font-medium",children:"Some custom commands now conflict with built-in commands."}),(0,b.jsx)("p",{className:"mt-1 text-muted-foreground",children:"Built-in commands take precedence at runtime. Rename the custom command to make it callable again."}),(0,b.jsx)("div",{className:"mt-2 flex flex-wrap gap-1.5",children:C.map(a=>(0,b.jsx)("code",{className:"rounded bg-background px-1.5 py-0.5 font-mono text-xs",children:a.command},a.id))})]})]})}),(0,b.jsxs)("section",{className:"space-y-3",children:[(0,b.jsx)("div",{className:"flex items-center justify-between gap-3",children:(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-lg font-semibold text-foreground",children:"Built-in"}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"Read-only controls handled by the daemon without model cost."})]})}),(0,b.jsx)("div",{className:"grid gap-3 md:grid-cols-2",children:f.data.builtInCommands.map(a=>(0,b.jsx)(J,{command:a},a.command))})]}),(0,b.jsxs)("section",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-lg font-semibold text-foreground",children:"Custom"}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"User-defined commands are validated against built-in and existing custom names."})]}),(0,b.jsxs)(u.Button,{onClick:()=>{let a=h.data?.defaultBackend??"claude",b=A.get(a)?.find(a=>a.available)?.modelId??A.get(a)?.[0]?.modelId??E.modelId;w({...E,backendId:a,modelId:b,enabledSkills:[...D]}),y(null)},disabled:Q,children:[(0,b.jsx)(g.Plus,{className:"mr-2 h-4 w-4"}),"New Command"]})]}),m&&(0,b.jsx)(L,{draft:m,builtInReserved:B,userCommands:f.data.userCommands,modelsByBackend:A,availableSkills:M,maxInstructionMdLength:N,busy:Q,onChange:w,onCancel:()=>w(null),onSave:O}),0===f.data.userCommands.length?(0,b.jsx)(v.Card,{className:"p-4",children:(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"No custom commands yet."})}):(0,b.jsx)("div",{className:"grid gap-3",children:f.data.userCommands.map(a=>(0,b.jsx)(K,{command:a,model:A.get(a.backendId)?.find(b=>b.modelId===a.modelId),hasBuiltInConflict:B.has(a.command),busy:Q,onEdit:()=>{w({id:a.id,name:a.name,description:a.description,prompt:a.prompt,backendId:a.backendId,modelId:a.modelId,enabled:a.enabled,enabledSkills:a.enabledSkills??[...D],instructionMd:a.instructionMd??""}),y(null)},onDelete:()=>P(a)},a.id))})]})]})}],26495)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=packages_dashboard_src_app_settings_commands_page_tsx_0nacqrh._.js.map
|
package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_hours_page_tsx_0shgzxo._.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[17142,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(62988),e=a.i(54150),f=a.i(40410),g=a.i(11200),h=a.i(92379),i=a.i(56295),j=a.i(91340);function k(a){return a%24/24*Math.PI*2-Math.PI/2}function l(a,b){return{x:120+b*Math.cos(a),y:120+b*Math.sin(a)}}function m(a,b,c){let d=b-a;d<=0&&(d+=2*Math.PI),d>2*Math.PI-.001&&(d=2*Math.PI-.001);let e=+(d>Math.PI),f=l(a,c),g=l(a+d,c);return`M ${f.x} ${f.y} A ${c} ${c} 0 ${e} 1 ${g.x} ${g.y}`}function n(a){let[b,c]=a.split(":").map(Number);return(b??0)+(c??0)/60}function o(a){let b=Math.floor((a%24+24)%24),c=Math.round((a-Math.floor(a))*60)%60;return`${String(b).padStart(2,"0")}:${String(c).padStart(2,"0")}`}function p(a){return Math.round(4*a)/4}function q(a){return Math.round(a)%24}let r="var(--color-destructive)",s="var(--color-success)",t="var(--color-primary)";function u({values:a,onChange:d,activeWindowReadOnly:e=!1}){let f,g,h,i=(0,c.useRef)(null),[j,w]=(0,c.useState)(null),[x,y]=(0,c.useState)(null),z=n(a.quietHoursStart),A=n(a.quietHoursEnd),B=a.activeStartHour,C=a.activeEndHour%24,D=k(z),E=k(A),F=k(B),G=k(C),H=k(a.dayBoundaryHour),I=()=>{w(null)};return(0,b.jsx)("div",{className:"flex items-center justify-center",children:(0,b.jsxs)("svg",{ref:i,viewBox:"0 0 240 240",className:"w-full max-w-[280px] select-none touch-none",onPointerMove:b=>{if(!j)return;let c=(a=>{let b,c=i.current;if(!c)return 0;let d=c.getBoundingClientRect(),e=240/d.width,f=240/d.height,g=(a.clientX-d.left)*e-120;return(b=(Math.atan2((a.clientY-d.top)*f-120,g)+Math.PI/2)/(2*Math.PI)*24)<0&&(b+=24),b%24})(b),e={...a};switch(j){case"quietStart":e.quietHoursStart=o(p(c));break;case"quietEnd":e.quietHoursEnd=o(p(c));break;case"activeStart":e.activeStartHour=q(c);break;case"activeEnd":{let a=q(c);e.activeEndHour=0===a?24:a}}d(e)},onPointerUp:I,onPointerLeave:I,children:[(0,b.jsx)("circle",{cx:120,cy:120,r:100,fill:"none",stroke:"currentColor",strokeWidth:1,className:"text-border"}),Array.from({length:24},(a,c)=>{let d=k(c),e=c%3==0,f=l(d,e?95:97),g=l(d,100);return(0,b.jsx)("line",{x1:f.x,y1:f.y,x2:g.x,y2:g.y,stroke:"currentColor",strokeWidth:e?1.5:.5,className:"text-muted-foreground"},c)}),[0,3,6,9,12,15,18,21].map(a=>{let c=l(k(a),108);return(0,b.jsx)("text",{x:c.x,y:c.y,textAnchor:"middle",dominantBaseline:"central",className:"fill-muted-foreground text-[9px]",children:a},a)}),(0,b.jsx)("path",{d:m(D,E,90),fill:"none",stroke:r,strokeWidth:8,strokeLinecap:"round",opacity:.6}),(0,b.jsx)("path",{d:m(F,G,75),fill:"none",stroke:s,strokeWidth:8,strokeLinecap:"round",opacity:.6}),(f=l(H,60),g=l(H,100),(0,b.jsx)("line",{x1:f.x,y1:f.y,x2:g.x,y2:g.y,stroke:t,strokeWidth:2,strokeDasharray:"4 2"})),(h=l(H,53),(0,b.jsx)("text",{x:h.x,y:h.y,textAnchor:"middle",dominantBaseline:"central",className:"fill-primary text-[8px] font-medium",children:"day"})),function({dragging:a,hovered:c,setHovered:d,handlePointerDown:e,quietStartA:f,quietEndA:g,activeStartA:h,activeEndA:i,QUIET_R:j,ACTIVE_R:k,values:l,activeWindowReadOnly:m}){let n=a??c,o=[{target:"quietStart",angle:f,r:j,color:r,label:l.quietHoursStart},{target:"quietEnd",angle:g,r:j,color:r,label:l.quietHoursEnd},...m?[]:[{target:"activeStart",angle:h,r:k,color:s,label:`${l.activeStartHour}:00`},{target:"activeEnd",angle:i,r:k,color:s,label:`${l.activeEndHour}:00`}]].sort((a,b)=>(a.target===n)-(b.target===n));return(0,b.jsx)(b.Fragment,{children:o.map(a=>(0,b.jsx)(v,{angle:a.angle,r:a.r,color:a.color,label:a.label,active:a.target===n,onPointerDown:e(a.target),onPointerEnter:()=>d(a.target),onPointerLeave:()=>d(null)},a.target))})}({dragging:j,hovered:x,setDragging:w,setHovered:y,handlePointerDown:a=>b=>{b.preventDefault(),b.target.setPointerCapture(b.pointerId),w(a)},quietStartA:D,quietEndA:E,activeStartA:F,activeEndA:G,QUIET_R:90,ACTIVE_R:75,values:a,activeWindowReadOnly:e}),(0,b.jsxs)("text",{x:120,y:112,textAnchor:"middle",className:"fill-muted-foreground text-[8px]",children:[(0,b.jsx)("tspan",{style:{fill:r},children:"●"})," quiet hours"]}),(0,b.jsxs)("text",{x:120,y:124,textAnchor:"middle",className:"fill-muted-foreground text-[8px]",children:[(0,b.jsx)("tspan",{style:{fill:s},children:"●"})," active window"]}),(0,b.jsxs)("text",{x:120,y:136,textAnchor:"middle",className:"fill-muted-foreground text-[8px]",children:[(0,b.jsx)("tspan",{style:{fill:t},children:"---"})," day boundary"]})]})})}function v({angle:a,r:c,color:d,label:e,active:f,onPointerDown:g,onPointerEnter:h,onPointerLeave:i}){let j=l(a,c),{lx:k,ly:m}={lx:Math.max(12,Math.min(228,j.x)),ly:Math.max(12,Math.min(228,j.y-12))};return(0,b.jsxs)("g",{onPointerDown:g,onPointerEnter:h,onPointerLeave:i,className:"cursor-grab active:cursor-grabbing",children:[(0,b.jsx)("circle",{cx:j.x,cy:j.y,r:12,fill:"transparent"}),(0,b.jsx)("circle",{cx:j.x,cy:j.y,r:f?7:5,fill:d,stroke:"var(--color-background)",strokeWidth:2}),f&&(0,b.jsx)("text",{x:k,y:m,textAnchor:"middle",className:"fill-foreground text-[9px] font-medium pointer-events-none",children:e})]})}var w=a.i(92241),x=a.i(87759),y=a.i(70297),z=a.i(21218),A=a.i(8212),B=a.i(30400),C=a.i(7384),D=a.i(8753),E=a.i(62588),F=a.i(81130),G=a.i(59974);let H=["delegated-sync"];var I=a.i(48558);function J(){let{data:a,isLoading:c}=(0,E.useQuery)({queryKey:H,queryFn:()=>G.api.get("/delegated-sync"),staleTime:5e3,refetchInterval:15e3});if(c||!a)return null;let d=Object.entries(a.cadences).map(([a,b])=>({id:a,...b}));if(!a.workerRunning&&0===d.length)return null;if(!a.workerRunning)return(0,b.jsxs)(B.Card,{children:[(0,b.jsx)(B.CardHeader,{children:(0,b.jsx)(B.CardTitle,{children:"Background Sync"})}),(0,b.jsxs)("div",{className:"p-4 text-sm text-muted-foreground",children:["No integrations are in delegated mode, so background cadences are inactive. Move an integration (Calendar / Gmail / Notion) to delegated mode in ",(0,b.jsx)("code",{children:"/connections"})," to enable opt-in cadences here. Native-mode integrations fetch their observations directly during the activity scan turn and do not use this worker."]})]});let e=d.some(a=>a.enabled);return(0,b.jsxs)(B.Card,{children:[(0,b.jsx)(B.CardHeader,{children:(0,b.jsxs)(B.CardTitle,{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{children:"Background Sync"}),a.withinActiveHours?(0,b.jsx)(C.Badge,{variant:"green",children:"active"}):(0,b.jsx)(C.Badge,{variant:"gray",children:"outside active hours"})]})}),(0,b.jsxs)("div",{className:"space-y-1 p-4 pt-0",children:[(0,b.jsx)("p",{className:"pb-2 text-xs text-muted-foreground",children:"Background cadences poll Calendar, Gmail, and Notion through a backend MCP subprocess so the activity scan sees fresh observations. Every poll spends tokens, so all cadences are off by default — enable just the ones you want. Enabled cadences respect the shared active-hours window below."}),(0,b.jsx)("div",{className:"space-y-2",children:d.map(a=>(0,b.jsx)(K,{row:a},a.id))}),e&&(0,b.jsx)(M,{startHour:a.activeHours.startHour,endHour:a.activeHours.endHour})]})]})}function K({row:a}){let d,e,f=(d=(0,F.useQueryClient)(),(0,D.useMutation)({mutationFn:({cadenceId:a,body:b})=>G.api.patch(`/delegated-sync/cadences/${encodeURIComponent(a)}`,b),onSuccess:()=>{d.invalidateQueries({queryKey:H})}})),g=(e=(0,F.useQueryClient)(),(0,D.useMutation)({mutationFn:({cadenceId:a})=>G.api.post(`/delegated-sync/cadences/${encodeURIComponent(a)}/run`,{}),onSuccess:()=>{e.invalidateQueries({queryKey:H})}})),[h,i]=(0,c.useState)(String(Math.round(a.intervalSeconds/60))),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)(null);(0,c.useEffect)(()=>{i(String(Math.round(a.intervalSeconds/60)))},[a.intervalSeconds]);let n=Math.ceil(a.softFloorSeconds/60),o=Math.round(a.defaultIntervalSeconds/60),p=async()=>{m(null);try{await g.mutateAsync({cadenceId:a.id})}catch(a){m(a instanceof Error?a.message:"Run Now failed")}},q=f.isPending,r=g.isPending,s=a.intervalSeconds===a.defaultIntervalSeconds,t="native"===a.mode;return(0,b.jsxs)("div",{className:"rounded border border-border/50 p-3",children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("p",{className:"text-sm font-medium text-foreground",children:a.displayName}),"native"===a.mode&&(0,b.jsx)(C.Badge,{variant:"green",children:"native"}),"delegated"===a.mode&&(0,b.jsxs)(C.Badge,{variant:"blue",children:["delegated",a.backend?` \xb7 ${a.backend}`:""]}),!t&&"tripped"===a.circuitState&&(0,b.jsx)(C.Badge,{variant:"red",children:"circuit tripped"}),!t&&a.failureCount>0&&"ok"===a.circuitState&&(0,b.jsxs)(C.Badge,{variant:"amber",children:[a.failureCount," recent failure",1===a.failureCount?"":"s"]})]}),(0,b.jsx)("p",{className:"mt-0.5 text-xs text-muted-foreground",children:a.description}),!t&&(0,b.jsx)(L,{row:a})]}),!t&&(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[(0,b.jsx)(z.Button,{variant:a.enabled?"default":"outline",size:"sm",onClick:()=>{f.mutate({cadenceId:a.id,body:{enabled:!a.enabled}})},disabled:q,children:q?(0,b.jsx)(w.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):a.enabled?"Enabled":"Disabled"}),(0,b.jsxs)(z.Button,{variant:"outline",size:"sm",onClick:p,disabled:r,title:"Run this cadence once, regardless of schedule",children:[r?(0,b.jsx)(w.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,b.jsx)(x.Play,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{className:"ml-1",children:"Run now"})]})]})]}),t?(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:"Observations land via the in-turn fetch during the periodic check turn — no background cadence runs for this row."}):(0,b.jsxs)("div",{className:"mt-2 flex items-center gap-2 text-xs text-muted-foreground",children:[(0,b.jsxs)("label",{className:"flex items-center gap-1",children:[(0,b.jsx)("span",{children:"Interval:"}),(0,b.jsx)(A.Input,{type:"number",min:n,max:1440,value:h,onChange:a=>i(a.target.value),onBlur:()=>{k(null);let b=Number(h);!Number.isInteger(b)||b<=0?k("Whole positive number required"):b<n?k(`Minimum ${n} min`):b>1440?k("Maximum 1440 min (24 h)"):60*b!==a.intervalSeconds&&f.mutate({cadenceId:a.id,body:{intervalSeconds:60*b}},{onError:a=>k(a.message)})},onKeyDown:a=>{"Enter"===a.key&&(a.preventDefault(),a.target.blur())},className:"h-7 w-20 px-2 text-xs"}),(0,b.jsx)("span",{children:"min"})]}),(0,b.jsxs)("span",{className:"text-muted-foreground/70",children:["(",n,"–",1440,"; default ",o,")"]}),!s&&(0,b.jsxs)("button",{type:"button",onClick:()=>{i(String(o)),f.mutate({cadenceId:a.id,body:{intervalSeconds:60*o}})},className:"inline-flex items-center gap-0.5 text-[10px] text-muted-foreground hover:text-foreground",children:[(0,b.jsx)(y.RotateCcw,{className:"h-2.5 w-2.5"}),"reset"]}),j&&(0,b.jsx)("span",{className:"text-destructive",children:j})]}),l&&(0,b.jsxs)("p",{className:"mt-1 text-xs text-destructive",children:["Run Now: ",l]})]})}function L({row:a}){let d=(0,c.useMemo)(()=>N(a.lastSuccessAt),[a.lastSuccessAt]),e=(0,c.useMemo)(()=>N(a.nextRunAt),[a.nextRunAt]);return a.lastAttemptAt||a.nextRunAt?(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground/70",children:[a.lastSuccessAt?`Last success ${d}.`:"No successful run yet.",a.enabled&&a.nextRunAt&&` Next run ${e}.`,a.lastError&&` Last error: ${(0,I.truncate)(a.lastError,80)}`]}):(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground/70",children:"Has not run yet."})}function M({startHour:a,endHour:d}){let e,f=(e=(0,F.useQueryClient)(),(0,D.useMutation)({mutationFn:a=>G.api.patch("/delegated-sync/active-hours",a),onSuccess:()=>{e.invalidateQueries({queryKey:H})}})),[g,h]=(0,c.useState)(String(a)),[i,j]=(0,c.useState)(String(d)),[k,l]=(0,c.useState)(null);(0,c.useEffect)(()=>{h(String(a))},[a]),(0,c.useEffect)(()=>{j(String(d))},[d]);let m=()=>{l(null);let b=Number(g),c=Number(i);!Number.isInteger(b)||b<0||b>23?l("Start must be an integer 0–23"):!Number.isInteger(c)||c<1||c>24?l("End must be an integer 1–24"):b>=c?l("Start must be earlier than end"):(b!==a||c!==d)&&f.mutate({startHour:b,endHour:c},{onError:a=>l(a.message)})};return(0,b.jsxs)("div",{className:"mt-3 rounded border border-border/50 bg-muted/30 p-3",children:[(0,b.jsx)("p",{className:"text-sm font-medium text-foreground",children:"Active hours"}),(0,b.jsx)("p",{className:"mt-0.5 text-xs text-muted-foreground",children:"Shared by every enabled cadence. Outside this window no cadence runs; Run Now still works. Interpreted in the configured timezone. End hour is exclusive — set 24 to run through 23:59."}),(0,b.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-3 text-xs",children:[(0,b.jsxs)("label",{className:"flex items-center gap-1",children:[(0,b.jsx)("span",{children:"Start:"}),(0,b.jsx)(A.Input,{type:"number",min:0,max:23,value:g,onChange:a=>h(a.target.value),onBlur:m,onKeyDown:a=>{"Enter"===a.key&&(a.preventDefault(),a.target.blur())},className:"h-7 w-16 px-2 text-xs"}),(0,b.jsx)("span",{children:":00"})]}),(0,b.jsxs)("label",{className:"flex items-center gap-1",children:[(0,b.jsx)("span",{children:"End:"}),(0,b.jsx)(A.Input,{type:"number",min:1,max:24,value:i,onChange:a=>j(a.target.value),onBlur:m,onKeyDown:a=>{"Enter"===a.key&&(a.preventDefault(),a.target.blur())},className:"h-7 w-16 px-2 text-xs"}),(0,b.jsx)("span",{children:":00"})]}),f.isPending&&(0,b.jsx)(w.Loader2,{className:"h-3.5 w-3.5 animate-spin text-muted-foreground"}),k&&(0,b.jsx)("span",{className:"text-destructive",children:k})]})]})}function N(a){var b,c;if(!a)return"—";let d=Date.parse(a);if(!Number.isFinite(d))return"—";let e=Math.round((d-Date.now())/1e3);return e>=0?(b=e)<60?`in ${b}s`:b<3600?`in ${Math.round(b/60)}m`:b<86400?`in ${Math.round(b/3600)}h`:`in ${Math.round(b/86400)}d`:(c=-e)<60?`${c}s ago`:c<3600?`${Math.round(c/60)}m ago`:c<86400?`${Math.round(c/3600)}h ago`:`${Math.round(c/86400)}d ago`}var O=a.i(87206);a.s(["default",0,function(){let{data:a}=(0,e.useConfig)(),{df:k}=(0,e.useConfigDefaults)(),{data:l}=(0,f.useHealth)(),{data:m}=(0,g.useAgents)(),{deferSaveFor:n,dv:o,dirtyFields:p,setDirty:q}=(0,h.useDirtyFields)(),r=(0,c.useCallback)(b=>{a&&(q("quietHoursStart",b.quietHoursStart,a.quietHoursStart),q("quietHoursEnd",b.quietHoursEnd,a.quietHoursEnd))},[a,q]);if(!a)return(0,b.jsx)("div",{className:"text-muted-foreground",children:"Loading..."});let s=n(a),t=m?.agents.find(a=>"activity-scan"===a.slug)?.schedule.interval,v={quietHoursStart:o("quietHoursStart",a.quietHoursStart),quietHoursEnd:o("quietHoursEnd",a.quietHoursEnd),activeStartHour:t?.active_start_hour??a.activityScanActiveStartHour,activeEndHour:t?.active_end_hour??a.activityScanActiveEndHour,dayBoundaryHour:o("dayBoundaryHour",a.dayBoundaryHour)};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(O.PageHeader,{title:"Hours & Notifications",description:"The global time policy every agent obeys: timezone, day boundary, quiet hours, and notification caps. Per-agent schedules (including the activity scan's cadence) live on the Agents page — quiet hours always win over them."}),(0,b.jsxs)(i.ConfigSection,{title:"Time axis",helpDocId:"concepts/agent-day",children:[(0,b.jsxs)("p",{className:"pb-2 text-xs text-muted-foreground",children:["Drag the handles to adjust quiet hours (red). The green band is the activity scan's active window — owned by the agent, edit it from"," ",(0,b.jsx)(d.default,{href:"/agents/activity-scan",className:"text-foreground underline underline-offset-2 hover:no-underline",children:"Agents → Activity Scan"}),". The dashed blue line marks the day boundary. Changes are staged — save with the bar below."]}),(0,b.jsx)(u,{values:v,onChange:r,activeWindowReadOnly:!0})]}),(0,b.jsxs)(i.ConfigSection,{title:"Day shape",helpDocId:"concepts/agent-day",children:[(0,b.jsx)(i.EditableField,{label:"Timezone",value:o("timezone",a.timezone),configKey:"timezone",modified:p.has("timezone"),defaultValue:k("timezone"),description:"IANA timezone name (e.g. America/New_York, America/Los_Angeles). All schedules, quiet hours, and daily boundaries are interpreted in this zone.",onSave:s}),(0,b.jsx)(i.EditableField,{label:"Day Boundary Hour",value:o("dayBoundaryHour",a.dayBoundaryHour),configKey:"dayBoundaryHour",type:"number",min:0,max:9,modified:p.has("dayBoundaryHour"),defaultValue:k("dayBoundaryHour"),description:"Hour (0–9, local time) at which a new agent day begins. At this hour the previous today.md is archived, a new one is generated, and daily retention and summary routines run. Pick a time you're reliably asleep — 04:00 is the default.",onSave:s}),(0,b.jsxs)("div",{className:"py-2 text-sm text-muted-foreground",children:["Looking for the activity scan's interval or the monthly review opt-in? Each agent's schedule now lives on its own page —"," ",(0,b.jsx)(d.default,{href:"/agents",className:"text-foreground underline underline-offset-2 hover:no-underline",children:"Agents"}),"."]})]}),(0,b.jsx)(J,{}),(0,b.jsxs)(i.ConfigSection,{title:"Notifications",helpDocId:"features/operations/quiet-hours",children:[(0,b.jsx)("p",{className:"pb-2 text-xs text-muted-foreground",children:"Rate limits and quiet hours for outbound notifications — proactive messages the agent sends you (reminders, alerts, summaries). Replies to messages you initiated are not affected. Delivery destinations are managed in Connections → Messaging."}),(0,b.jsx)(i.EditableField,{label:"Max Per Hour",value:o("maxNotificationsPerHour",a.maxNotificationsPerHour),configKey:"maxNotificationsPerHour",type:"number",modified:p.has("maxNotificationsPerHour"),defaultValue:k("maxNotificationsPerHour"),description:"Hard cap on outbound notifications in any rolling 60-minute window. Anything above the cap is suppressed — not delivered, but still logged to Activity → Notifications so you can see what was dropped. Protects against runaway notification loops.",onSave:s}),(0,b.jsx)(i.EditableField,{label:"Max Per Day",value:o("maxNotificationsPerDay",a.maxNotificationsPerDay),configKey:"maxNotificationsPerDay",type:"number",modified:p.has("maxNotificationsPerDay"),defaultValue:k("maxNotificationsPerDay"),description:"Hard cap per calendar day (resets at the Day Boundary Hour). A safety net on top of the per-hour cap. Suppressed notifications are still logged.",onSave:s}),(0,b.jsx)(i.EditableField,{label:"Quiet Hours Start",value:o("quietHoursStart",a.quietHoursStart),configKey:"quietHoursStart",modified:p.has("quietHoursStart"),defaultValue:k("quietHoursStart"),description:"24-hour time (HH:MM, e.g. 22:00) when quiet hours begin in the configured timezone. During quiet hours, regular notifications are held back. Safety-category notifications (deadline, error, security, critical) still go through.",onSave:s}),(0,b.jsx)(i.EditableField,{label:"Quiet Hours End",value:o("quietHoursEnd",a.quietHoursEnd),configKey:"quietHoursEnd",modified:p.has("quietHoursEnd"),defaultValue:k("quietHoursEnd"),description:"24-hour time (HH:MM, e.g. 08:00) when quiet hours end. If end is earlier than start, the window wraps over midnight.",onSave:s}),(0,b.jsx)(i.EditableField,{label:"Batch Interval",value:o("batchIntervalMinutes",a.batchIntervalMinutes),configKey:"batchIntervalMinutes",type:"number",suffix:"min",modified:p.has("batchIntervalMinutes"),defaultValue:k("batchIntervalMinutes"),description:"Minimum minutes between notification deliveries from the same routine. Multiple notifications queued within this window are combined into a single message so you don’t get spammed.",onSave:s}),(0,b.jsxs)("div",{className:"py-2 border-b text-sm text-muted-foreground",children:["Default reminder destinations are managed in"," ",(0,b.jsx)("a",{href:"/connections/messaging",className:"text-foreground underline underline-offset-2 hover:no-underline",children:"Connections → Messaging → Default Reminder Destinations"}),"."]}),(0,b.jsx)(j.PrimaryPlatformField,{health:l,value:o("primaryPlatform",a.primaryPlatform),defaultValue:k("primaryPlatform"),modified:p.has("primaryPlatform"),onSave:s})]})]})}],17142)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=packages_dashboard_src_app_settings_hours_page_tsx_0shgzxo._.js.map
|