@castlekit/castle 0.3.1 → 0.4.0
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/standalone/.next/BUILD_ID +1 -0
- package/.next/standalone/.next/app-path-routes-manifest.json +29 -0
- package/.next/standalone/.next/build-manifest.json +20 -0
- package/.next/standalone/.next/package.json +1 -0
- package/.next/standalone/.next/prerender-manifest.json +186 -0
- package/.next/standalone/.next/required-server-files.json +322 -0
- package/.next/standalone/.next/routes-manifest.json +213 -0
- package/.next/standalone/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +17 -0
- package/.next/standalone/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
- package/.next/standalone/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/_global-error/page.js +10 -0
- package/.next/standalone/.next/server/app/_global-error/page.js.map +5 -0
- package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/_global-error.html +2 -0
- package/.next/standalone/.next/server/app/_global-error.meta +15 -0
- package/.next/standalone/.next/server/app/_global-error.rsc +12 -0
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +12 -0
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +4 -0
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/.next/standalone/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +17 -0
- package/.next/standalone/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
- package/.next/standalone/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/_not-found/page.js +15 -0
- package/.next/standalone/.next/server/app/_not-found/page.js.map +5 -0
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/_not-found.html +1 -0
- package/.next/standalone/.next/server/app/_not-found.meta +16 -0
- package/.next/standalone/.next/server/app/_not-found.rsc +17 -0
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +17 -0
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +8 -0
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +4 -0
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -0
- package/.next/standalone/.next/server/app/api/avatars/[id]/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/avatars/[id]/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/avatars/[id]/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/avatars/[id]/route.js +9 -0
- package/.next/standalone/.next/server/app/api/avatars/[id]/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/avatars/[id]/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/avatars/[id]/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/[id]/avatar/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/[id]/avatar/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/[id]/avatar/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/[id]/avatar/route.js +9 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/[id]/avatar/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/[id]/avatar/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/[id]/avatar/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/route.js +9 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/status/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/status/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/status/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/status/route.js +13 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/status/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/status/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/openclaw/agents/status/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/attachments/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/attachments/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/attachments/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/attachments/route.js +13 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/attachments/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/attachments/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/attachments/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/channels/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/channels/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/channels/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/channels/route.js +13 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/channels/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/channels/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/channels/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/route.js +14 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/search/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/search/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/search/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/search/route.js +13 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/search/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/search/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/search/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/storage/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/storage/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/storage/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/storage/route.js +13 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/storage/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/storage/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/openclaw/chat/storage/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/openclaw/config/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/openclaw/config/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/openclaw/config/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/openclaw/config/route.js +9 -0
- package/.next/standalone/.next/server/app/api/openclaw/config/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/openclaw/config/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/openclaw/config/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/openclaw/events/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/openclaw/events/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/openclaw/events/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/openclaw/events/route.js +8 -0
- package/.next/standalone/.next/server/app/api/openclaw/events/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/openclaw/events/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/openclaw/events/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/openclaw/logs/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/openclaw/logs/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/openclaw/logs/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/openclaw/logs/route.js +8 -0
- package/.next/standalone/.next/server/app/api/openclaw/logs/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/openclaw/logs/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/openclaw/logs/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/openclaw/ping/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/openclaw/ping/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/openclaw/ping/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/openclaw/ping/route.js +9 -0
- package/.next/standalone/.next/server/app/api/openclaw/ping/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/openclaw/ping/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/openclaw/ping/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/openclaw/restart/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/openclaw/restart/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/openclaw/restart/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/openclaw/restart/route.js +7 -0
- package/.next/standalone/.next/server/app/api/openclaw/restart/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/openclaw/restart/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/openclaw/restart/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/openclaw/session/context/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/openclaw/session/context/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/openclaw/session/context/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/openclaw/session/context/route.js +14 -0
- package/.next/standalone/.next/server/app/api/openclaw/session/context/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/openclaw/session/context/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/openclaw/session/context/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/openclaw/session/status/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/openclaw/session/status/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/openclaw/session/status/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/openclaw/session/status/route.js +8 -0
- package/.next/standalone/.next/server/app/api/openclaw/session/status/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/openclaw/session/status/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/openclaw/session/status/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/openclaw/sessions/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/openclaw/sessions/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/openclaw/sessions/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/openclaw/sessions/route.js +8 -0
- package/.next/standalone/.next/server/app/api/openclaw/sessions/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/openclaw/sessions/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/openclaw/sessions/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/settings/avatar/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/settings/avatar/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/settings/avatar/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/settings/avatar/route.js +13 -0
- package/.next/standalone/.next/server/app/api/settings/avatar/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/settings/avatar/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/settings/avatar/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/settings/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/settings/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/settings/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/settings/route.js +13 -0
- package/.next/standalone/.next/server/app/api/settings/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/settings/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/chat/[channelId]/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/chat/[channelId]/page/build-manifest.json +17 -0
- package/.next/standalone/.next/server/app/chat/[channelId]/page/next-font-manifest.json +11 -0
- package/.next/standalone/.next/server/app/chat/[channelId]/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/chat/[channelId]/page/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/chat/[channelId]/page.js +18 -0
- package/.next/standalone/.next/server/app/chat/[channelId]/page.js.map +5 -0
- package/.next/standalone/.next/server/app/chat/[channelId]/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/chat/[channelId]/page_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/chat/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/chat/page/build-manifest.json +17 -0
- package/.next/standalone/.next/server/app/chat/page/next-font-manifest.json +11 -0
- package/.next/standalone/.next/server/app/chat/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/chat/page/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/chat/page.js +18 -0
- package/.next/standalone/.next/server/app/chat/page.js.map +5 -0
- package/.next/standalone/.next/server/app/chat/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/chat/page_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/chat.html +1 -0
- package/.next/standalone/.next/server/app/chat.meta +15 -0
- package/.next/standalone/.next/server/app/chat.rsc +26 -0
- package/.next/standalone/.next/server/app/chat.segments/_full.segment.rsc +26 -0
- package/.next/standalone/.next/server/app/chat.segments/_head.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/chat.segments/_index.segment.rsc +8 -0
- package/.next/standalone/.next/server/app/chat.segments/_tree.segment.rsc +4 -0
- package/.next/standalone/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +9 -0
- package/.next/standalone/.next/server/app/chat.segments/chat.segment.rsc +7 -0
- package/.next/standalone/.next/server/app/icon.png/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/icon.png/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/icon.png/route.js +8 -0
- package/.next/standalone/.next/server/app/icon.png/route.js.map +5 -0
- package/.next/standalone/.next/server/app/icon.png/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/icon.png.body +0 -0
- package/.next/standalone/.next/server/app/icon.png.meta +1 -0
- package/.next/standalone/.next/server/app/index.html +1 -0
- package/.next/standalone/.next/server/app/index.meta +14 -0
- package/.next/standalone/.next/server/app/index.rsc +23 -0
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +9 -0
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +23 -0
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +8 -0
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +4 -0
- package/.next/standalone/.next/server/app/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/page/build-manifest.json +17 -0
- package/.next/standalone/.next/server/app/page/next-font-manifest.json +11 -0
- package/.next/standalone/.next/server/app/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/page.js +17 -0
- package/.next/standalone/.next/server/app/page.js.map +5 -0
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/settings/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/settings/page/build-manifest.json +17 -0
- package/.next/standalone/.next/server/app/settings/page/next-font-manifest.json +11 -0
- package/.next/standalone/.next/server/app/settings/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/settings/page.js +17 -0
- package/.next/standalone/.next/server/app/settings/page.js.map +5 -0
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/settings.html +1 -0
- package/.next/standalone/.next/server/app/settings.meta +15 -0
- package/.next/standalone/.next/server/app/settings.rsc +23 -0
- package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +23 -0
- package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +8 -0
- package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +4 -0
- package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +9 -0
- package/.next/standalone/.next/server/app/settings.segments/settings.segment.rsc +4 -0
- package/.next/standalone/.next/server/app/ui-kit/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/ui-kit/page/build-manifest.json +17 -0
- package/.next/standalone/.next/server/app/ui-kit/page/next-font-manifest.json +11 -0
- package/.next/standalone/.next/server/app/ui-kit/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/ui-kit/page/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/ui-kit/page.js +17 -0
- package/.next/standalone/.next/server/app/ui-kit/page.js.map +5 -0
- package/.next/standalone/.next/server/app/ui-kit/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/ui-kit/page_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/ui-kit.html +1 -0
- package/.next/standalone/.next/server/app/ui-kit.meta +15 -0
- package/.next/standalone/.next/server/app/ui-kit.rsc +23 -0
- package/.next/standalone/.next/server/app/ui-kit.segments/_full.segment.rsc +23 -0
- package/.next/standalone/.next/server/app/ui-kit.segments/_head.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/ui-kit.segments/_index.segment.rsc +8 -0
- package/.next/standalone/.next/server/app/ui-kit.segments/_tree.segment.rsc +4 -0
- package/.next/standalone/.next/server/app/ui-kit.segments/ui-kit/__PAGE__.segment.rsc +9 -0
- package/.next/standalone/.next/server/app/ui-kit.segments/ui-kit.segment.rsc +4 -0
- package/.next/standalone/.next/server/app-paths-manifest.json +29 -0
- package/.next/standalone/.next/server/chunks/[externals]_next_dist_a6d89067._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__2824c41d._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__28c35c7d._.js +11 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__2aa60cfc._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__2e91224f._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__361bce14._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__36b434e7._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__47efedcd._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__4b157e5a._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__56815e49._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5ef29d48._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5f6aa90c._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__7114163c._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8f5ebbc3._.js +7 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__93758a40._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a80a1099._.js +31 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__af3cebf7._.js +138 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b3182da1._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b39f673e._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__bbd3b47c._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c223b7d3._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c7ce1c43._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e50da949._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__f41df55c._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__faf9ad2e._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__fe76fb40._.js +3 -0
- package/.next/standalone/.next/server/chunks/[turbopack]_runtime.js +795 -0
- package/.next/standalone/.next/server/chunks/_b137597c._.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_avatars_[id]_route_actions_21e11acd.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_openclaw_agents_[id]_avatar_route_actions_1cb9863b.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_openclaw_agents_route_actions_82d135b1.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_openclaw_agents_status_route_actions_0b88c8a6.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_openclaw_chat_attachments_route_actions_07ce0270.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_openclaw_chat_channels_route_actions_945f54a8.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_openclaw_chat_route_actions_cd398c8d.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_openclaw_chat_search_route_actions_d1599780.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_openclaw_chat_storage_route_actions_fd3e7369.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_openclaw_config_route_actions_3c2a30de.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_openclaw_events_route_actions_24b1acfe.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_openclaw_logs_route_actions_151f8335.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_openclaw_ping_route_actions_3079a70c.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_openclaw_restart_route_actions_25b671bb.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_openclaw_session_context_route_actions_14ebc427.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_openclaw_session_status_route_actions_060ba4f4.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_openclaw_sessions_route_actions_0c00f4a9.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_settings_avatar_route_actions_e222d284.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_settings_route_actions_a476013b.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_icon_png_route_actions_fa3562e2.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_drizzle-orm_a549359e._.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_drizzle-orm_f8415f57._.js +4 -0
- package/.next/standalone/.next/server/chunks/node_modules_drizzle-orm_index_d5f6a514.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_next_1402a1da._.js +17 -0
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_97dac613.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__03219135._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0f7b131d._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1690ee0d._.js +10 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__31de57f6._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__4e637dc9._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__55ece10e._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__69f5a83d._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__a457c799._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__a5ce2f72._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__aecdcbb6._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__b4ed2322._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__ca05f4a0._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__e2f86be8._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__e375a3a7._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__ea12eca9._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__ed06de41._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__f907a2ce._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[turbopack]_runtime.js +795 -0
- package/.next/standalone/.next/server/chunks/ssr/_0bb5ce6a._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_30d6fdaa._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_3b2b917b._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/_3bf0a72b._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/_539da066._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/_6caa74c9._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_7a67de23._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_7b52fbee._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_84fe35ec._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_ac1c4494._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_ca23d3b0._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/_d04daf62._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_e6db8164._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/_ef4d503b._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_75761787.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_554ec2bf.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_chat_[channelId]_page_actions_6220414d.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_chat_page_actions_c92d15a6.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_page_actions_39d4fc33.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_settings_page_actions_840229cd.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_ui-kit_page_actions_8486bfbd.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_45598cbe._.js +6 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_d3586d0c._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_95f27697._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_08570d7f._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_65e60196._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_681edc0a._.js +6 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_client_components_9774470f._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_45780354.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_ece394eb.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_15817684.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_02f39477.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_f9713a08._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_app_0c8a77b8._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_app_chat_layout_tsx_31cd0231._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_app_chat_layout_tsx_be09920b._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_app_chat_page_tsx_2a0793ad._.js +3 -0
- package/.next/standalone/.next/server/edge/chunks/[root-of-the-server]__25fe7590._.js +15 -0
- package/.next/standalone/.next/server/edge/chunks/node_modules_next_dist_esm_build_templates_edge-wrapper_78fa9d6a.js +3 -0
- package/.next/standalone/.next/server/edge/chunks/turbopack-node_modules_next_dist_esm_build_templates_edge-wrapper_99e3e1b8.js +6 -0
- package/.next/standalone/.next/server/functions-config-manifest.json +6 -0
- package/.next/standalone/.next/server/middleware-build-manifest.js +21 -0
- package/.next/standalone/.next/server/middleware-manifest.json +33 -0
- package/.next/standalone/.next/server/next-font-manifest.js +1 -0
- package/.next/standalone/.next/server/next-font-manifest.json +31 -0
- package/.next/standalone/.next/server/pages/404.html +1 -0
- package/.next/standalone/.next/server/pages/500.html +2 -0
- package/.next/standalone/.next/server/pages-manifest.json +4 -0
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/server-reference-manifest.json +5 -0
- package/.next/standalone/.next/static/R01Vc6rRTS_XwAg0Y8ERm/_buildManifest.js +11 -0
- package/.next/standalone/.next/static/R01Vc6rRTS_XwAg0Y8ERm/_clientMiddlewareManifest.json +6 -0
- package/.next/standalone/.next/static/R01Vc6rRTS_XwAg0Y8ERm/_ssgManifest.js +1 -0
- package/.next/standalone/.next/static/chunks/1c362778d42e76b0.js +1 -0
- package/.next/standalone/.next/static/chunks/2b48886a383c2e37.js +1 -0
- package/.next/standalone/.next/static/chunks/3c2b51fd3ab2ac34.css +3 -0
- package/.next/standalone/.next/static/chunks/3fef23e63934711e.js +1 -0
- package/.next/standalone/.next/static/chunks/5781c606560d6f13.js +1 -0
- package/.next/standalone/.next/static/chunks/5a1105a61e9390f8.js +1 -0
- package/.next/standalone/.next/static/chunks/6468938847443ae8.js +1 -0
- package/.next/standalone/.next/static/chunks/76c064224d953678.js +4 -0
- package/.next/standalone/.next/static/chunks/77868ed664ba62d2.js +1 -0
- package/.next/standalone/.next/static/chunks/7de9141b1af425c3.js +1 -0
- package/.next/standalone/.next/static/chunks/868f09ea8b0a7649.js +1 -0
- package/.next/standalone/.next/static/chunks/97d384ea34b6283a.js +1 -0
- package/.next/standalone/.next/static/chunks/a6dad97d9634a72d.js +1 -0
- package/.next/standalone/.next/static/chunks/a6dad97d9634a72d.js.map +1 -0
- package/.next/standalone/.next/static/chunks/afd967a636289a73.js +1 -0
- package/.next/standalone/.next/static/chunks/bffbc071b1075ac3.js +1 -0
- package/.next/standalone/.next/static/chunks/d11263c7e8894d27.js +1 -0
- package/.next/standalone/.next/static/chunks/f1f489dad7e35d90.js +2 -0
- package/.next/standalone/.next/static/chunks/turbopack-1da073e19f58dee0.js +4 -0
- package/.next/standalone/.next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
- package/.next/standalone/.next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
- package/.next/standalone/.next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
- package/.next/standalone/.next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
- package/.next/standalone/.next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
- package/.next/standalone/.next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
- package/.next/standalone/.next/static/media/icon.4cc5e0bd.png +0 -0
- package/.next/standalone/CHANGELOG.md +182 -0
- package/.next/standalone/CONTRIBUTING.md +46 -0
- package/.next/standalone/LICENSE +21 -0
- package/.next/standalone/README.md +54 -0
- package/.next/standalone/SECURITY.md +80 -0
- package/.next/standalone/bin/castle.js +193 -0
- package/.next/standalone/castle_secrets.py +29 -0
- package/.next/standalone/drizzle.config.ts +7 -0
- package/.next/standalone/index.js +1 -0
- package/.next/standalone/install.sh +776 -0
- package/.next/standalone/next.config.ts +9 -0
- package/.next/standalone/package-lock.json +8115 -0
- package/.next/standalone/package.json +105 -0
- package/.next/standalone/postcss.config.mjs +7 -0
- package/.next/standalone/server.js +44 -0
- package/.next/standalone/src/app/api/avatars/[id]/route.ts +172 -0
- package/.next/standalone/src/app/api/openclaw/agents/[id]/avatar/route.ts +216 -0
- package/.next/standalone/src/app/api/openclaw/agents/route.ts +149 -0
- package/.next/standalone/src/app/api/openclaw/agents/status/route.ts +55 -0
- package/.next/standalone/src/app/api/openclaw/chat/attachments/route.ts +230 -0
- package/.next/standalone/src/app/api/openclaw/chat/channels/route.ts +217 -0
- package/.next/standalone/src/app/api/openclaw/chat/route.ts +283 -0
- package/.next/standalone/src/app/api/openclaw/chat/search/route.ts +150 -0
- package/.next/standalone/src/app/api/openclaw/chat/storage/route.ts +75 -0
- package/.next/standalone/src/app/api/openclaw/config/route.ts +137 -0
- package/.next/standalone/src/app/api/openclaw/events/route.ts +140 -0
- package/.next/standalone/src/app/api/openclaw/logs/route.ts +74 -0
- package/.next/standalone/src/app/api/openclaw/ping/route.ts +73 -0
- package/.next/standalone/src/app/api/openclaw/restart/route.ts +73 -0
- package/.next/standalone/src/app/api/openclaw/session/context/route.ts +163 -0
- package/.next/standalone/src/app/api/openclaw/session/status/route.ts +210 -0
- package/.next/standalone/src/app/api/openclaw/sessions/route.ts +64 -0
- package/.next/standalone/src/app/api/settings/avatar/route.ts +190 -0
- package/.next/standalone/src/app/api/settings/route.ts +88 -0
- package/.next/standalone/src/app/chat/[channelId]/error-boundary.tsx +64 -0
- package/.next/standalone/src/app/chat/[channelId]/page.tsx +385 -0
- package/.next/standalone/src/app/chat/layout.tsx +96 -0
- package/.next/standalone/src/app/chat/page.tsx +52 -0
- package/.next/standalone/src/app/globals.css +383 -0
- package/.next/standalone/src/app/icon.png +0 -0
- package/.next/standalone/src/app/layout.tsx +48 -0
- package/.next/standalone/src/app/page.tsx +390 -0
- package/.next/standalone/src/app/settings/page.tsx +300 -0
- package/.next/standalone/src/app/ui-kit/page.tsx +684 -0
- package/.next/standalone/src/cli/onboarding.ts +810 -0
- package/.next/standalone/src/components/chat/agent-mention-popup.tsx +89 -0
- package/.next/standalone/src/components/chat/archived-channels.tsx +190 -0
- package/.next/standalone/src/components/chat/channel-list.tsx +140 -0
- package/.next/standalone/src/components/chat/chat-input.tsx +328 -0
- package/.next/standalone/src/components/chat/create-channel-dialog.tsx +171 -0
- package/.next/standalone/src/components/chat/markdown-content.tsx +205 -0
- package/.next/standalone/src/components/chat/message-bubble.tsx +168 -0
- package/.next/standalone/src/components/chat/message-list.tsx +666 -0
- package/.next/standalone/src/components/chat/message-queue.tsx +68 -0
- package/.next/standalone/src/components/chat/session-divider.tsx +61 -0
- package/.next/standalone/src/components/chat/session-stats-panel.tsx +444 -0
- package/.next/standalone/src/components/chat/storage-indicator.tsx +76 -0
- package/.next/standalone/src/components/dashboard/agent-status.tsx +107 -0
- package/.next/standalone/src/components/dashboard/glass-card.tsx +28 -0
- package/.next/standalone/src/components/dashboard/goal-widget.tsx +174 -0
- package/.next/standalone/src/components/dashboard/greeting-widget.tsx +78 -0
- package/.next/standalone/src/components/dashboard/index.ts +7 -0
- package/.next/standalone/src/components/dashboard/stat-widget.tsx +61 -0
- package/.next/standalone/src/components/dashboard/stock-widget.tsx +164 -0
- package/.next/standalone/src/components/dashboard/weather-widget.tsx +68 -0
- package/.next/standalone/src/components/icons/castle-icon.tsx +21 -0
- package/.next/standalone/src/components/kanban/index.ts +3 -0
- package/.next/standalone/src/components/kanban/kanban-board.tsx +391 -0
- package/.next/standalone/src/components/kanban/kanban-card.tsx +137 -0
- package/.next/standalone/src/components/kanban/kanban-column.tsx +98 -0
- package/.next/standalone/src/components/layout/index.ts +4 -0
- package/.next/standalone/src/components/layout/page-header.tsx +20 -0
- package/.next/standalone/src/components/layout/sidebar.tsx +209 -0
- package/.next/standalone/src/components/layout/theme-toggle.tsx +59 -0
- package/.next/standalone/src/components/layout/user-menu.tsx +97 -0
- package/.next/standalone/src/components/providers/presence-provider.tsx +8 -0
- package/.next/standalone/src/components/providers/search-provider.tsx +110 -0
- package/.next/standalone/src/components/search/search-dialog.tsx +269 -0
- package/.next/standalone/src/components/ui/alert.tsx +72 -0
- package/.next/standalone/src/components/ui/avatar.tsx +89 -0
- package/.next/standalone/src/components/ui/badge.tsx +39 -0
- package/.next/standalone/src/components/ui/button.tsx +43 -0
- package/.next/standalone/src/components/ui/card.tsx +107 -0
- package/.next/standalone/src/components/ui/checkbox.tsx +56 -0
- package/.next/standalone/src/components/ui/clock.tsx +171 -0
- package/.next/standalone/src/components/ui/dialog.tsx +111 -0
- package/.next/standalone/src/components/ui/index.ts +34 -0
- package/.next/standalone/src/components/ui/input.tsx +112 -0
- package/.next/standalone/src/components/ui/option-card.tsx +151 -0
- package/.next/standalone/src/components/ui/progress.tsx +103 -0
- package/.next/standalone/src/components/ui/radio.tsx +109 -0
- package/.next/standalone/src/components/ui/select.tsx +46 -0
- package/.next/standalone/src/components/ui/slider.tsx +62 -0
- package/.next/standalone/src/components/ui/tabs.tsx +132 -0
- package/.next/standalone/src/components/ui/toggle-group.tsx +85 -0
- package/.next/standalone/src/components/ui/toggle.tsx +78 -0
- package/.next/standalone/src/components/ui/tooltip.tsx +162 -0
- package/.next/standalone/src/components/ui/twemoji-text.tsx +37 -0
- package/.next/standalone/src/components/ui/uptime.tsx +106 -0
- package/.next/standalone/src/lib/api-security.ts +188 -0
- package/.next/standalone/src/lib/config.ts +227 -0
- package/.next/standalone/src/lib/date-utils.ts +79 -0
- package/.next/standalone/src/lib/db/index.ts +652 -0
- package/.next/standalone/src/lib/db/queries.ts +1144 -0
- package/.next/standalone/src/lib/db/schema.ts +164 -0
- package/.next/standalone/src/lib/device-identity.ts +303 -0
- package/.next/standalone/src/lib/gateway-connection.ts +649 -0
- package/.next/standalone/src/lib/hooks/use-agent-status.ts +251 -0
- package/.next/standalone/src/lib/hooks/use-chat.ts +753 -0
- package/.next/standalone/src/lib/hooks/use-compaction-events.ts +132 -0
- package/.next/standalone/src/lib/hooks/use-context-boundary.ts +82 -0
- package/.next/standalone/src/lib/hooks/use-openclaw.ts +185 -0
- package/.next/standalone/src/lib/hooks/use-search.ts +114 -0
- package/.next/standalone/src/lib/hooks/use-session-stats.ts +60 -0
- package/.next/standalone/src/lib/hooks/use-user-settings.ts +46 -0
- package/.next/standalone/src/lib/sse-singleton.ts +184 -0
- package/.next/standalone/src/lib/types/chat.ts +202 -0
- package/.next/standalone/src/lib/types/search.ts +60 -0
- package/.next/standalone/src/lib/utils.ts +6 -0
- package/.next/standalone/src/middleware.ts +52 -0
- package/.next/standalone/tsconfig.json +34 -0
- package/.next/standalone/vitest.config.ts +14 -0
- package/.next/standalone/vitest.stress.config.ts +14 -0
- package/.next/standalone/zizmor.yml +17 -0
- package/.next/static/R01Vc6rRTS_XwAg0Y8ERm/_buildManifest.js +11 -0
- package/.next/static/R01Vc6rRTS_XwAg0Y8ERm/_clientMiddlewareManifest.json +6 -0
- package/.next/static/R01Vc6rRTS_XwAg0Y8ERm/_ssgManifest.js +1 -0
- package/.next/static/chunks/1c362778d42e76b0.js +1 -0
- package/.next/static/chunks/2b48886a383c2e37.js +1 -0
- package/.next/static/chunks/3c2b51fd3ab2ac34.css +3 -0
- package/.next/static/chunks/3fef23e63934711e.js +1 -0
- package/.next/static/chunks/5781c606560d6f13.js +1 -0
- package/.next/static/chunks/5a1105a61e9390f8.js +1 -0
- package/.next/static/chunks/6468938847443ae8.js +1 -0
- package/.next/static/chunks/76c064224d953678.js +4 -0
- package/.next/static/chunks/77868ed664ba62d2.js +1 -0
- package/.next/static/chunks/7de9141b1af425c3.js +1 -0
- package/.next/static/chunks/868f09ea8b0a7649.js +1 -0
- package/.next/static/chunks/97d384ea34b6283a.js +1 -0
- package/.next/static/chunks/a6dad97d9634a72d.js +1 -0
- package/.next/static/chunks/a6dad97d9634a72d.js.map +1 -0
- package/.next/static/chunks/afd967a636289a73.js +1 -0
- package/.next/static/chunks/bffbc071b1075ac3.js +1 -0
- package/.next/static/chunks/d11263c7e8894d27.js +1 -0
- package/.next/static/chunks/f1f489dad7e35d90.js +2 -0
- package/.next/static/chunks/turbopack-1da073e19f58dee0.js +4 -0
- package/.next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
- package/.next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
- package/.next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
- package/.next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
- package/.next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
- package/.next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
- package/.next/static/media/icon.4cc5e0bd.png +0 -0
- package/LICENSE +1 -1
- package/bin/castle.js +17 -0
- package/next.config.ts +1 -0
- package/package.json +6 -1
- package/src/cli/onboarding.ts +102 -28
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!DOCTYPE html><!--R01Vc6rRTS_XwAg0Y8ERm--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/chunks/3c2b51fd3ab2ac34.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/97d384ea34b6283a.js"/><script src="/_next/static/chunks/76c064224d953678.js" async=""></script><script src="/_next/static/chunks/f1f489dad7e35d90.js" async=""></script><script src="/_next/static/chunks/7de9141b1af425c3.js" async=""></script><script src="/_next/static/chunks/turbopack-1da073e19f58dee0.js" async=""></script><script src="/_next/static/chunks/d11263c7e8894d27.js" async=""></script><script src="/_next/static/chunks/5a1105a61e9390f8.js" async=""></script><script src="/_next/static/chunks/868f09ea8b0a7649.js" async=""></script><script src="/_next/static/chunks/3fef23e63934711e.js" async=""></script><script src="/_next/static/chunks/bffbc071b1075ac3.js" async=""></script><meta name="next-size-adjust" content=""/><title>Castle</title><meta name="description" content="The multi-agent workspace"/><link rel="icon" href="/icon.png?icon.4cc5e0bd.png" sizes="1000x1000" type="image/png"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased bg-background text-foreground"><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","theme","dark",null,["light","dark"],null,false,true)</script><div class="min-h-screen bg-background"><aside class="fixed top-[20px] left-[24px] bottom-[20px] flex flex-col z-40 rounded-[var(--radius-md)] w-14 bg-surface border border-border"><div class="flex items-center justify-center pt-5 pb-[60px]"><button type="button" aria-label="Go to Dashboard" class="flex items-center justify-center transition-opacity hover:opacity-85 cursor-pointer"><svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" class="fill-current h-[36px] w-[36px] min-h-[36px] min-w-[36px] shrink-0 text-[var(--logo-color)] -mt-[3px]"><g><path d="m124.809 408.11h262.382v103.89h-262.382z"></path><path d="m273.162 123.55h134.646l-34.459-44.772 33.515-46.459h-133.702v-32.319h-29.985v196.446h29.985z"></path><path d="m347.45 281.985h-50.335v-56.54h-79.107v56.54h-53.643v-56.54h-91.962v111.141c0 23.448 19.075 42.523 42.523 42.523h282.147c23.448 0 42.524-19.075 42.524-42.523v-111.14h-92.147z"></path></g></svg></button></div><nav class="flex-1 space-y-1 px-2"><div><button class="flex items-center justify-center w-full rounded-[4px] p-2.5 cursor-pointer bg-accent/10 text-accent"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-dashboard h-5 w-5 shrink-0" aria-hidden="true"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg></button></div><div><button class="flex items-center justify-center w-full rounded-[4px] p-2.5 cursor-pointer text-foreground-secondary hover:text-foreground hover:bg-surface-hover"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-circle h-5 w-5 shrink-0" aria-hidden="true"><path d="M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719"></path></svg></button></div></nav><div class="relative flex justify-center pb-[8px]"><button class="group flex items-center justify-center rounded-[4px] cursor-pointer transition-opacity"><div class="relative inline-block shrink-0"><div class="relative flex shrink-0 overflow-hidden rounded-[4px] bg-surface border border-border h-9 w-9"><span class="flex h-full w-full items-center justify-center bg-surface text-foreground-secondary font-medium text-sm skeleton"></span></div><span class="absolute block rounded-full ring-2 ring-background h-2.5 w-2.5 -bottom-0.5 -right-0.5 bg-foreground-muted"></span></div></button></div></aside><div class="fixed top-5 right-6 z-50"><button class="flex items-center justify-center h-14 w-14 rounded-[28px] shadow-xl shadow-black/20 cursor-pointer overflow-hidden text-foreground-secondary hover:text-foreground bg-surface border border-border"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-user h-5 w-5" aria-hidden="true"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg></button></div><main class="min-h-screen ml-[80px]"><div class="p-8 w-full"><section class="mb-16 "><div class="mb-6"><h2 class="text-2xl font-semibold text-foreground">UI Kit</h2><p class="text-foreground-secondary mt-1">Design system + components for Castle</p></div><div class="flex items-start gap-3 rounded-[var(--radius-md)] border p-4 bg-info/10 border-info/20 text-info" role="alert"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-info h-5 w-5 shrink-0 mt-0.5" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg><div class="flex-1 text-sm">This is the internal UI kit page. All components from the Castle design system are shown here as a living reference.</div></div></section><section class="mb-16 "><div class="mb-6"><h2 class="text-2xl font-semibold text-foreground">Design Tokens</h2><p class="text-foreground-secondary mt-1">The foundation of the Castle design system</p></div><div class="mb-8"><h3 class="text-sm font-medium text-foreground-muted uppercase tracking-wider mb-4">Colors</h3><div class="grid grid-cols-2 md:grid-cols-4 lg:grid-cols-6 gap-4"><div class="space-y-2"><div class="h-16 rounded-[var(--radius-md)] bg-background border border-border"></div><p class="text-xs text-foreground-muted">Background</p></div><div class="space-y-2"><div class="h-16 rounded-[var(--radius-md)] bg-background-secondary border border-border"></div><p class="text-xs text-foreground-muted">Background Secondary</p></div><div class="space-y-2"><div class="h-16 rounded-[var(--radius-md)] bg-surface border border-border"></div><p class="text-xs text-foreground-muted">Surface</p></div><div class="space-y-2"><div class="h-16 rounded-[var(--radius-md)] bg-accent"></div><p class="text-xs text-foreground-muted">Accent</p></div><div class="space-y-2"><div class="h-16 rounded-[var(--radius-md)] bg-success"></div><p class="text-xs text-foreground-muted">Success</p></div><div class="space-y-2"><div class="h-16 rounded-[var(--radius-md)] bg-error"></div><p class="text-xs text-foreground-muted">Error</p></div></div></div><div class="mb-8"><h3 class="text-sm font-medium text-foreground-muted uppercase tracking-wider mb-4">Typography</h3><div class="space-y-4"><div><p class="text-5xl font-semibold text-foreground">Display Text</p><p class="text-xs text-foreground-muted mt-1">48px / Semibold</p></div><div><p class="text-3xl font-semibold text-foreground">Heading 1</p><p class="text-xs text-foreground-muted mt-1">32px / Semibold</p></div><div><p class="text-2xl font-semibold text-foreground">Heading 2</p><p class="text-xs text-foreground-muted mt-1">24px / Semibold</p></div><div><p class="text-lg font-medium text-foreground">Heading 3</p><p class="text-xs text-foreground-muted mt-1">18px / Medium</p></div><div><p class="text-base text-foreground">Body text - The quick brown fox jumps over the lazy dog.</p><p class="text-xs text-foreground-muted mt-1">16px / Regular</p></div><div><p class="text-sm text-foreground-secondary">Small text - Secondary content and descriptions.</p><p class="text-xs text-foreground-muted mt-1">14px / Regular</p></div><div><p class="text-xs text-foreground-muted">Tiny text - Labels and metadata</p><p class="text-xs text-foreground-muted mt-1">12px / Regular</p></div></div></div><div class="mb-8"><h3 class="text-sm font-medium text-foreground-muted uppercase tracking-wider mb-4">Border Radius</h3><div class="flex gap-4 items-end"><div class="space-y-2"><div class="h-16 w-16 bg-accent rounded-[var(--radius-sm)]"></div><p class="text-xs text-foreground-muted">Small (6px)</p></div><div class="space-y-2"><div class="h-16 w-16 bg-accent rounded-[var(--radius-md)]"></div><p class="text-xs text-foreground-muted">Medium (12px)</p></div><div class="space-y-2"><div class="h-16 w-16 bg-accent rounded-[var(--radius-lg)]"></div><p class="text-xs text-foreground-muted">Large (16px)</p></div><div class="space-y-2"><div class="h-16 w-16 bg-accent rounded-[var(--radius-full)]"></div><p class="text-xs text-foreground-muted">Full</p></div></div></div></section><section class="mb-16 "><div class="mb-6"><h2 class="text-2xl font-semibold text-foreground">App Components</h2><p class="text-foreground-secondary mt-1">Solid components for Projects and Watchtower pages</p></div><div class="mb-8"><h3 class="text-sm font-medium text-foreground-muted uppercase tracking-wider mb-4">Buttons</h3><div class="flex flex-wrap gap-4 items-center"><button class="inline-flex items-center justify-center font-medium transition-colors rounded-[var(--radius-sm)] interactive disabled:pointer-events-none bg-accent text-accent-foreground hover:bg-accent-hover h-10 px-4 text-sm">Primary</button><button class="inline-flex items-center justify-center font-medium transition-colors rounded-[var(--radius-sm)] interactive disabled:pointer-events-none bg-surface text-foreground border border-border hover:bg-surface-hover hover:border-border-hover h-10 px-4 text-sm">Secondary</button><button class="inline-flex items-center justify-center font-medium transition-colors rounded-[var(--radius-sm)] interactive disabled:pointer-events-none bg-transparent text-foreground border border-border hover:bg-surface hover:border-border-hover h-10 px-4 text-sm">Outline</button><button class="inline-flex items-center justify-center font-medium transition-colors rounded-[var(--radius-sm)] interactive disabled:pointer-events-none bg-transparent text-foreground hover:bg-surface h-10 px-4 text-sm">Ghost</button><button class="inline-flex items-center justify-center font-medium transition-colors rounded-[var(--radius-sm)] interactive disabled:pointer-events-none bg-error text-white hover:bg-error/90 h-10 px-4 text-sm">Destructive</button></div><div class="flex flex-wrap gap-4 items-center mt-4"><button class="inline-flex items-center justify-center font-medium transition-colors rounded-[var(--radius-sm)] interactive disabled:pointer-events-none bg-accent text-accent-foreground hover:bg-accent-hover h-8 px-3 text-sm">Small</button><button class="inline-flex items-center justify-center font-medium transition-colors rounded-[var(--radius-sm)] interactive disabled:pointer-events-none bg-accent text-accent-foreground hover:bg-accent-hover h-10 px-4 text-sm">Medium</button><button class="inline-flex items-center justify-center font-medium transition-colors rounded-[var(--radius-sm)] interactive disabled:pointer-events-none bg-accent text-accent-foreground hover:bg-accent-hover h-12 px-6 text-base">Large</button><button class="inline-flex items-center justify-center font-medium transition-colors rounded-[var(--radius-sm)] interactive disabled:pointer-events-none bg-accent text-accent-foreground hover:bg-accent-hover h-10 w-10 p-0"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-activity h-4 w-4" aria-hidden="true"><path d="M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2"></path></svg></button></div><div class="flex flex-wrap gap-4 items-center mt-4"><button class="inline-flex items-center justify-center font-medium transition-colors rounded-[var(--radius-sm)] interactive disabled:pointer-events-none bg-accent text-accent-foreground hover:bg-accent-hover h-10 px-4 text-sm" disabled="">Disabled</button></div></div><div class="mb-8"><h3 class="text-sm font-medium text-foreground-muted uppercase tracking-wider mb-4">Form Controls</h3><div class="grid grid-cols-1 md:grid-cols-2 gap-6 max-w-2xl"><div class="w-full"><label for="title" class="form-label">Title</label><input id="title" type="text" class="input-base flex placeholder:text-foreground-muted" placeholder="Enter text..."/></div><div class="w-full"><label for="with-error" class="form-label">With Error</label><input id="with-error" type="text" class="input-base flex placeholder:text-foreground-muted error" aria-invalid="true" placeholder="Invalid input"/></div><div class="w-full"><label for="price" class="form-label">Price</label><div class="flex items-center input-base focus-within:border-[var(--input-focus)]"><span class="text-foreground-muted shrink-0 select-none">$</span><input id="price" type="number" class="flex-1 bg-transparent border-0 p-0 text-sm text-foreground placeholder:text-foreground-muted focus:outline-none focus:ring-0 pl-2" placeholder="0.00"/></div></div><div class="w-full"><label for="percentage" class="form-label">Percentage</label><div class="flex items-center input-base focus-within:border-[var(--input-focus)]"><input id="percentage" type="number" class="flex-1 bg-transparent border-0 p-0 text-sm text-foreground placeholder:text-foreground-muted focus:outline-none focus:ring-0 pr-2" placeholder="0"/><span class="text-foreground-muted shrink-0 select-none">%</span></div></div><div class="w-full"><label for="agent" class="form-label">Agent</label><div class="relative"><select id="agent" class="input-base flex appearance-none pr-10 cursor-pointer"><option value="">Choose an option</option><option value="atlas">Atlas</option><option value="sage">Sage</option><option value="max">Max</option><option value="mason">Mason</option></select><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down absolute right-3 top-1/2 h-4 w-4 -translate-y-1/2 text-foreground-muted pointer-events-none" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></div></div><div class="w-full"><label for="disabled" class="form-label">Disabled</label><input id="disabled" type="text" class="input-base flex placeholder:text-foreground-muted" placeholder="Disabled" disabled=""/></div><div class="md:col-span-2"><div class="w-full"><label for="description" class="form-label">Description</label><textarea id="description" class="input-base flex min-h-[100px] h-auto placeholder:text-foreground-muted resize-none" placeholder="Enter a longer message..."></textarea></div></div></div><div class="flex flex-wrap gap-8 mt-6"><div class="flex items-center gap-3"><button type="button" role="checkbox" aria-checked="false" data-state="unchecked" class="peer h-5 w-5 shrink-0 rounded-[var(--radius-sm)] border-2 transition-colors interactive bg-[var(--input-background)] border-[var(--input-border)]"></button><span class="text-sm text-foreground select-none cursor-pointer">Checkbox</span></div><div class="flex items-center gap-3"><button type="button" role="switch" aria-checked="false" data-state="off" class="relative inline-flex shrink-0 items-center rounded-[var(--radius-full)] border-2 border-transparent transition-colors interactive bg-[var(--input-border)] h-6 w-11"><span class="pointer-events-none block rounded-[var(--radius-full)] bg-white shadow-lg ring-0 transition-transform h-5 w-5 translate-x-0"></span></button><span class="text-sm text-foreground select-none cursor-pointer">Toggle</span></div><div class="flex items-center gap-3"><button type="button" role="switch" aria-checked="true" data-state="on" class="relative inline-flex shrink-0 items-center rounded-[var(--radius-full)] border-2 border-transparent transition-colors interactive bg-accent h-5 w-9"><span class="pointer-events-none block rounded-[var(--radius-full)] bg-white shadow-lg ring-0 transition-transform h-4 w-4 translate-x-4"></span></button><span class="text-sm text-foreground select-none cursor-pointer">Small Toggle</span></div><div role="group" class="inline-flex items-center rounded-[var(--radius-sm)] bg-surface border border-border p-1 gap-1"><button type="button" role="radio" aria-checked="true" data-state="on" class="inline-flex items-center justify-center h-8 px-3 rounded-[var(--radius-sm)] text-sm font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 cursor-pointer bg-background text-foreground shadow-sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-dashboard h-4 w-4" aria-hidden="true"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg></button><button type="button" role="radio" aria-checked="false" data-state="off" class="inline-flex items-center justify-center h-8 px-3 rounded-[var(--radius-sm)] text-sm font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 cursor-pointer text-foreground-secondary hover:text-foreground hover:bg-surface-hover"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-list h-4 w-4" aria-hidden="true"><path d="M3 5h.01"></path><path d="M3 12h.01"></path><path d="M3 19h.01"></path><path d="M8 5h13"></path><path d="M8 12h13"></path><path d="M8 19h13"></path></svg></button><button type="button" role="radio" aria-checked="false" data-state="off" class="inline-flex items-center justify-center h-8 px-3 rounded-[var(--radius-sm)] text-sm font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 cursor-pointer text-foreground-secondary hover:text-foreground hover:bg-surface-hover"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-table h-4 w-4" aria-hidden="true"><path d="M12 3v18"></path><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M3 9h18"></path><path d="M3 15h18"></path></svg></button></div></div><div class="mt-8"><div role="radiogroup" class="flex flex-col gap-3"><div class="flex items-center gap-3"><button type="button" role="radio" aria-checked="true" data-state="checked" class="h-5 w-5 shrink-0 rounded-full border-2 transition-colors interactive flex items-center justify-center border-accent"><span class="h-2.5 w-2.5 rounded-full bg-accent"></span></button><span class="text-sm select-none cursor-pointer text-foreground">Option One</span></div><div class="flex items-center gap-3"><button type="button" role="radio" aria-checked="false" data-state="unchecked" class="h-5 w-5 shrink-0 rounded-full border-2 transition-colors interactive flex items-center justify-center border-[var(--input-border)] bg-[var(--input-background)]"></button><span class="text-sm select-none cursor-pointer text-foreground">Option Two</span></div><div class="flex items-center gap-3"><button type="button" role="radio" aria-checked="false" data-state="unchecked" class="h-5 w-5 shrink-0 rounded-full border-2 transition-colors interactive flex items-center justify-center border-[var(--input-border)] bg-[var(--input-background)]"></button><span class="text-sm select-none cursor-pointer text-foreground">Option Three</span></div></div></div><div class="mt-8 max-w-md"><p class="text-sm text-foreground-muted mb-3">Option Cards (single select)</p><div role="radiogroup" class="flex flex-col gap-3"><button type="button" role="radio" aria-checked="true" data-state="checked" class="flex items-center gap-4 w-full px-4 py-3 rounded-[var(--radius-md)] border-2 transition-all text-left interactive border-accent bg-accent/5"><div class="h-5 w-5 shrink-0 rounded-full border-2 flex items-center justify-center transition-colors border-accent"><span class="h-2.5 w-2.5 rounded-full bg-accent"></span></div><div class="flex-1"><div class="font-medium text-foreground">Basic Plan</div><div class="text-sm text-foreground-secondary">$9/month</div></div></button><button type="button" role="radio" aria-checked="false" data-state="unchecked" class="flex items-center gap-4 w-full px-4 py-3 rounded-[var(--radius-md)] border-2 transition-all text-left interactive border-[var(--input-border)] bg-[var(--input-background)] hover:border-border-hover"><div class="h-5 w-5 shrink-0 rounded-full border-2 flex items-center justify-center transition-colors border-[var(--input-border)]"></div><div class="flex-1"><div class="font-medium text-foreground">Pro Plan</div><div class="text-sm text-foreground-secondary">$29/month</div></div></button></div></div><div class="mt-8 max-w-md"><p class="text-sm text-foreground-muted mb-3">Checkbox Cards (multi-select)</p><div class="flex flex-col gap-3"><button type="button" role="checkbox" aria-checked="true" data-state="checked" class="flex items-center gap-4 w-full px-4 py-3 rounded-[var(--radius-md)] border-2 transition-all text-left interactive border-accent bg-accent/5"><div class="h-5 w-5 shrink-0 rounded-[var(--radius-sm)] border-2 flex items-center justify-center transition-colors border-accent bg-accent text-white"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check h-3.5 w-3.5" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg></div><div class="flex-1"><div class="font-medium text-foreground">Email notifications</div><div class="text-sm text-foreground-secondary">Receive updates via email</div></div></button><button type="button" role="checkbox" aria-checked="false" data-state="unchecked" class="flex items-center gap-4 w-full px-4 py-3 rounded-[var(--radius-md)] border-2 transition-all text-left interactive border-[var(--input-border)] bg-[var(--input-background)] hover:border-border-hover"><div class="h-5 w-5 shrink-0 rounded-[var(--radius-sm)] border-2 flex items-center justify-center transition-colors border-[var(--input-border)] bg-[var(--input-background)]"></div><div class="flex-1"><div class="font-medium text-foreground">SMS notifications</div><div class="text-sm text-foreground-secondary">Receive updates via text</div></div></button></div></div><div class="max-w-sm mt-8"><div class="w-full"><div class="flex items-center justify-between mb-3"><label class="text-sm text-foreground-muted">Slider</label><span class="text-sm text-foreground tabular-nums">56</span></div><span dir="ltr" data-orientation="horizontal" aria-disabled="false" class="relative flex w-full touch-none select-none items-center" style="--radix-slider-thumb-transform:translateX(-50%)"><span data-orientation="horizontal" class="relative h-1.5 w-full grow overflow-hidden rounded-full bg-border"><span data-orientation="horizontal" class="absolute h-full bg-accent" style="left:0%;right:44%"></span></span><span style="transform:var(--radix-slider-thumb-transform);position:absolute;left:calc(0% + 0px)"><span role="slider" aria-valuemin="0" aria-valuemax="100" aria-orientation="horizontal" data-orientation="horizontal" tabindex="0" class="block h-4 w-4 rounded-full border-2 border-accent bg-white shadow-md transition-transform focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 hover:scale-110" style="display:none" data-radix-collection-item=""></span><input style="display:none"/></span></span></div></div></div><div class="mb-8"><h3 class="text-sm font-medium text-foreground-muted uppercase tracking-wider mb-4">Cards</h3><div class="grid grid-cols-1 md:grid-cols-3 gap-4"><div class="rounded-[var(--radius-md)] bg-surface p-6"><div class="flex flex-col space-y-1.5 pb-4"><h3 class="text-lg font-semibold leading-none tracking-tight text-foreground">Default Card</h3><p class="text-sm text-foreground-secondary">A basic card component</p></div><div class=""><p class="text-sm text-foreground-secondary">Card content goes here. This is a versatile container.</p></div></div><div class="rounded-[var(--radius-md)] bg-surface p-6 border border-border"><div class="flex flex-col space-y-1.5 pb-4"><h3 class="text-lg font-semibold leading-none tracking-tight text-foreground">Bordered Card</h3><p class="text-sm text-foreground-secondary">With visible border</p></div><div class=""><p class="text-sm text-foreground-secondary">Use for content that needs clear separation.</p></div><div class="flex items-center pt-4"><button class="inline-flex items-center justify-center font-medium transition-colors rounded-[var(--radius-sm)] interactive disabled:pointer-events-none bg-accent text-accent-foreground hover:bg-accent-hover h-8 px-3 text-sm">Action</button></div></div><div class="rounded-[var(--radius-md)] bg-surface p-6 shadow-lg shadow-black/5 dark:shadow-black/20"><div class="flex flex-col space-y-1.5 pb-4"><h3 class="text-lg font-semibold leading-none tracking-tight text-foreground">Elevated Card</h3><p class="text-sm text-foreground-secondary">With shadow</p></div><div class=""><p class="text-sm text-foreground-secondary">Use for emphasized or interactive content.</p></div></div></div></div><div class="mb-8"><h3 class="text-sm font-medium text-foreground-muted uppercase tracking-wider mb-4">Badges</h3><div class="flex flex-wrap gap-3"><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-surface text-foreground-secondary px-2.5 py-0.5 text-sm">Default</span><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-success/10 text-success px-2.5 py-0.5 text-sm">Success</span><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-warning/10 text-warning px-2.5 py-0.5 text-sm">Warning</span><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-error/10 text-error px-2.5 py-0.5 text-sm">Error</span><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-info/10 text-info px-2.5 py-0.5 text-sm">Info</span><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-transparent text-foreground-secondary border border-border px-2.5 py-0.5 text-sm">Outline</span></div></div><div class="mb-8"><h3 class="text-sm font-medium text-foreground-muted uppercase tracking-wider mb-4">Avatars</h3><div class="flex flex-wrap gap-4 items-end"><div class="relative inline-block shrink-0"><div class="relative flex shrink-0 overflow-hidden rounded-[4px] bg-surface border border-border h-9 w-9"><span class="flex h-full w-full items-center justify-center bg-surface text-foreground-secondary font-medium text-sm">SM</span></div></div><div class="relative inline-block shrink-0"><div class="relative flex shrink-0 overflow-hidden rounded-[4px] bg-surface border border-border h-10 w-10"><span class="flex h-full w-full items-center justify-center bg-surface text-foreground-secondary font-medium text-sm">MD</span></div></div><div class="relative inline-block shrink-0"><div class="relative flex shrink-0 overflow-hidden rounded-[4px] bg-surface border border-border h-12 w-12"><span class="flex h-full w-full items-center justify-center bg-surface text-foreground-secondary font-medium text-sm">LG</span></div></div></div></div><div class="mb-8"><h3 class="text-sm font-medium text-foreground-muted uppercase tracking-wider mb-4">Alerts</h3><div class="space-y-4 max-w-2xl"><div class="flex items-start gap-3 rounded-[var(--radius-md)] border p-4 bg-info/10 border-info/20 text-info" role="alert"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-info h-5 w-5 shrink-0 mt-0.5" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg><div class="flex-1 text-sm">This is an informational alert message.</div></div><div class="flex items-start gap-3 rounded-[var(--radius-md)] border p-4 bg-success/10 border-success/20 text-success" role="alert"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-check-big h-5 w-5 shrink-0 mt-0.5" aria-hidden="true"><path d="M21.801 10A10 10 0 1 1 17 3.335"></path><path d="m9 11 3 3L22 4"></path></svg><div class="flex-1 text-sm">Operation completed successfully!</div></div><div class="flex items-start gap-3 rounded-[var(--radius-md)] border p-4 bg-warning/10 border-warning/20 text-warning" role="alert"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-triangle-alert h-5 w-5 shrink-0 mt-0.5" aria-hidden="true"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"></path><path d="M12 9v4"></path><path d="M12 17h.01"></path></svg><div class="flex-1 text-sm">Please review before proceeding.</div></div><div class="flex items-start gap-3 rounded-[var(--radius-md)] border p-4 bg-error/10 border-error/20 text-error" role="alert"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-alert h-5 w-5 shrink-0 mt-0.5" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><line x1="12" x2="12" y1="8" y2="12"></line><line x1="12" x2="12.01" y1="16" y2="16"></line></svg><div class="flex-1 text-sm">Something went wrong. This alert can be dismissed.</div><button class="shrink-0 p-1 rounded-[var(--radius-sm)] hover:bg-black/10 dark:hover:bg-white/10 transition-colors"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x h-4 w-4" aria-hidden="true"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button></div></div></div><div class="mb-8"><h3 class="text-sm font-medium text-foreground-muted uppercase tracking-wider mb-4">Tabs</h3><div class="max-w-2xl"><div class="w-full"><div role="tablist" class="inline-flex items-center gap-1 border-b border-border"><button type="button" role="tab" aria-selected="true" data-state="active" class="relative px-4 py-2.5 text-sm font-medium transition-colors cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 text-foreground">General<span class="absolute bottom-0 left-0 right-0 h-0.5 bg-accent"></span></button><button type="button" role="tab" aria-selected="false" data-state="inactive" class="relative px-4 py-2.5 text-sm font-medium transition-colors cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 text-foreground-muted hover:text-foreground">Security</button><button type="button" role="tab" aria-selected="false" data-state="inactive" class="relative px-4 py-2.5 text-sm font-medium transition-colors cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 text-foreground-muted hover:text-foreground">Notifications</button><button type="button" role="tab" aria-selected="false" data-state="inactive" disabled="" class="relative px-4 py-2.5 text-sm font-medium transition-colors cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 text-foreground-muted hover:text-foreground">Advanced</button></div><div role="tabpanel" tabindex="0" class="mt-4 focus-visible:outline-none"><div class="rounded-[var(--radius-md)] bg-surface p-6 border border-border"><div class=""><p class="text-foreground-secondary">General settings and preferences for your account.</p></div></div></div></div></div></div><div class="mb-8"><h3 class="text-sm font-medium text-foreground-muted uppercase tracking-wider mb-4">Tooltips</h3><div class="flex flex-wrap gap-8 items-center"><div><button class="inline-flex items-center justify-center font-medium transition-colors rounded-[var(--radius-sm)] interactive disabled:pointer-events-none bg-surface text-foreground border border-border hover:bg-surface-hover hover:border-border-hover h-10 px-4 text-sm">Hover me (right)</button></div><div><button class="inline-flex items-center justify-center font-medium transition-colors rounded-[var(--radius-sm)] interactive disabled:pointer-events-none bg-surface text-foreground border border-border hover:bg-surface-hover hover:border-border-hover h-10 px-4 text-sm">Hover me (top)</button></div></div></div><div class="mb-8"><h3 class="text-sm font-medium text-foreground-muted uppercase tracking-wider mb-4">Dialog</h3><button class="inline-flex items-center justify-center font-medium transition-colors rounded-[var(--radius-sm)] interactive disabled:pointer-events-none bg-accent text-accent-foreground hover:bg-accent-hover h-10 px-4 text-sm">Open Dialog</button></div></section><section class="mb-16 "><div class="mb-6"><h2 class="text-2xl font-semibold text-foreground">Kanban Components</h2><p class="text-foreground-secondary mt-1">Components for Projects management</p></div><div class="overflow-x-auto -mx-8 px-8"><div class="flex items-stretch gap-4 overflow-x-auto pb-4"><div class="flex flex-col min-w-[280px] max-w-[320px] bg-background-secondary rounded-[var(--radius-lg)] p-3 transition-colors"><div class="flex items-center justify-between mb-3 px-1"><div class="flex items-center gap-2"><div class="h-3 w-3 rounded-[var(--radius-full)]" style="background-color:#a3a3a3"></div><h3 class="text-sm font-medium text-foreground">Captured</h3><span class="text-xs text-foreground-muted bg-surface px-1.5 py-0.5 rounded-[var(--radius-sm)]">3</span></div><div class="flex items-center gap-1"><button class="p-1 rounded-[var(--radius-sm)] hover:bg-surface transition-colors cursor-pointer" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4 text-foreground-muted" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></button><button class="p-1 rounded-[var(--radius-sm)] hover:bg-surface transition-colors cursor-pointer" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ellipsis h-4 w-4 text-foreground-muted" aria-hidden="true"><circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle></svg></button></div></div><div class="flex flex-col gap-2 flex-1 overflow-y-auto rounded-[var(--radius-md)] p-2 -m-1 border border-dashed border-transparent transition-colors"><div class="group relative rounded-[var(--radius-md)] bg-surface border border-border p-4 transition-shadow cursor-pointer hover:border-border-hover hover:shadow-md hover:shadow-black/5 dark:hover:shadow-black/20"><button class="absolute right-2 top-2 p-1 rounded-[var(--radius-sm)] opacity-0 group-hover:opacity-100 hover:bg-surface-hover transition-opacity"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ellipsis h-4 w-4 text-foreground-muted" aria-hidden="true"><circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle></svg></button><div class="flex flex-wrap gap-1 mb-3"><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-transparent text-foreground-secondary border border-border px-2 py-0.5 text-xs">feature</span></div><h4 class="text-sm font-medium text-foreground pr-6 mb-1">Add voice commands to agents</h4><p class="text-xs text-foreground-secondary line-clamp-2 mb-3">Explore options for voice input/output with agents</p><div class="flex items-center justify-between mt-3 pt-3 border-t border-border"><div class="flex items-center gap-3"></div></div></div><div class="group relative rounded-[var(--radius-md)] bg-surface border border-border p-4 transition-shadow cursor-pointer hover:border-border-hover hover:shadow-md hover:shadow-black/5 dark:hover:shadow-black/20"><button class="absolute right-2 top-2 p-1 rounded-[var(--radius-sm)] opacity-0 group-hover:opacity-100 hover:bg-surface-hover transition-opacity"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ellipsis h-4 w-4 text-foreground-muted" aria-hidden="true"><circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle></svg></button><div class="flex flex-wrap gap-1 mb-3"><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-transparent text-foreground-secondary border border-border px-2 py-0.5 text-xs">idea</span></div><h4 class="text-sm font-medium text-foreground pr-6 mb-1">Mobile app concept</h4><p class="text-xs text-foreground-secondary line-clamp-2 mb-3">Think about mobile experience for Castle</p><div class="flex items-center justify-between mt-3 pt-3 border-t border-border"><div class="flex items-center gap-3"></div></div></div><div class="group relative rounded-[var(--radius-md)] bg-surface border border-border p-4 transition-shadow cursor-pointer hover:border-border-hover hover:shadow-md hover:shadow-black/5 dark:hover:shadow-black/20"><button class="absolute right-2 top-2 p-1 rounded-[var(--radius-sm)] opacity-0 group-hover:opacity-100 hover:bg-surface-hover transition-opacity"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ellipsis h-4 w-4 text-foreground-muted" aria-hidden="true"><circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle></svg></button><div class="flex flex-wrap gap-1 mb-3"><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-transparent text-foreground-secondary border border-border px-2 py-0.5 text-xs">technical</span></div><h4 class="text-sm font-medium text-foreground pr-6 mb-1">Agent memory persistence</h4><div class="flex items-center justify-between mt-3 pt-3 border-t border-border"><div class="flex items-center gap-3"></div></div></div></div><button class="flex items-center justify-center gap-2 mt-3 p-2 text-sm text-foreground-secondary hover:text-foreground hover:bg-surface rounded-[var(--radius-md)] transition-colors cursor-pointer"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg>Add task</button></div><div class="flex flex-col min-w-[280px] max-w-[320px] bg-background-secondary rounded-[var(--radius-lg)] p-3 transition-colors"><div class="flex items-center justify-between mb-3 px-1"><div class="flex items-center gap-2"><div class="h-3 w-3 rounded-[var(--radius-full)]" style="background-color:#8b5cf6"></div><h3 class="text-sm font-medium text-foreground">Vibing</h3><span class="text-xs text-foreground-muted bg-surface px-1.5 py-0.5 rounded-[var(--radius-sm)]">2</span></div><div class="flex items-center gap-1"><button class="p-1 rounded-[var(--radius-sm)] hover:bg-surface transition-colors cursor-pointer" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4 text-foreground-muted" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></button><button class="p-1 rounded-[var(--radius-sm)] hover:bg-surface transition-colors cursor-pointer" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ellipsis h-4 w-4 text-foreground-muted" aria-hidden="true"><circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle></svg></button></div></div><div class="flex flex-col gap-2 flex-1 overflow-y-auto rounded-[var(--radius-md)] p-2 -m-1 border border-dashed border-transparent transition-colors"><div class="group relative rounded-[var(--radius-md)] bg-surface border border-border p-4 transition-shadow cursor-pointer hover:border-border-hover hover:shadow-md hover:shadow-black/5 dark:hover:shadow-black/20"><button class="absolute right-2 top-2 p-1 rounded-[var(--radius-sm)] opacity-0 group-hover:opacity-100 hover:bg-surface-hover transition-opacity"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ellipsis h-4 w-4 text-foreground-muted" aria-hidden="true"><circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle></svg></button><div class="flex flex-wrap gap-1 mb-3"><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-transparent text-foreground-secondary border border-border px-2 py-0.5 text-xs">agent</span><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-transparent text-foreground-secondary border border-border px-2 py-0.5 text-xs">learning</span></div><h4 class="text-sm font-medium text-foreground pr-6 mb-1">Chess coach agent</h4><p class="text-xs text-foreground-secondary line-clamp-2 mb-3">Agent that helps improve chess game through analysis</p><div class="flex items-center justify-between mt-3 pt-3 border-t border-border"><div class="flex items-center gap-3"></div><div class="h-6 w-6 rounded-[var(--radius-full)] bg-surface-hover flex items-center justify-center text-xs font-medium text-foreground-secondary border border-border">S</div></div></div><div class="group relative rounded-[var(--radius-md)] bg-surface border border-border p-4 transition-shadow cursor-pointer hover:border-border-hover hover:shadow-md hover:shadow-black/5 dark:hover:shadow-black/20"><button class="absolute right-2 top-2 p-1 rounded-[var(--radius-sm)] opacity-0 group-hover:opacity-100 hover:bg-surface-hover transition-opacity"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ellipsis h-4 w-4 text-foreground-muted" aria-hidden="true"><circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle></svg></button><div class="flex flex-wrap gap-1 mb-3"><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-transparent text-foreground-secondary border border-border px-2 py-0.5 text-xs">app</span></div><h4 class="text-sm font-medium text-foreground pr-6 mb-1">Crypto portfolio tracker</h4><p class="text-xs text-foreground-secondary line-clamp-2 mb-3">Track Bitcoin and other crypto holdings</p><div class="flex items-center justify-between mt-3 pt-3 border-t border-border"><div class="flex items-center gap-3"><div class="flex items-center gap-1 text-foreground-muted"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square h-3.5 w-3.5" aria-hidden="true"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path></svg><span class="text-xs">3</span></div></div></div></div></div><button class="flex items-center justify-center gap-2 mt-3 p-2 text-sm text-foreground-secondary hover:text-foreground hover:bg-surface rounded-[var(--radius-md)] transition-colors cursor-pointer"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg>Add task</button></div><div class="flex flex-col min-w-[280px] max-w-[320px] bg-background-secondary rounded-[var(--radius-lg)] p-3 transition-colors"><div class="flex items-center justify-between mb-3 px-1"><div class="flex items-center gap-2"><div class="h-3 w-3 rounded-[var(--radius-full)]" style="background-color:#3b82f6"></div><h3 class="text-sm font-medium text-foreground">Scoped</h3><span class="text-xs text-foreground-muted bg-surface px-1.5 py-0.5 rounded-[var(--radius-sm)]">1</span></div><div class="flex items-center gap-1"><button class="p-1 rounded-[var(--radius-sm)] hover:bg-surface transition-colors cursor-pointer" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4 text-foreground-muted" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></button><button class="p-1 rounded-[var(--radius-sm)] hover:bg-surface transition-colors cursor-pointer" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ellipsis h-4 w-4 text-foreground-muted" aria-hidden="true"><circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle></svg></button></div></div><div class="flex flex-col gap-2 flex-1 overflow-y-auto rounded-[var(--radius-md)] p-2 -m-1 border border-dashed border-transparent transition-colors"><div class="group relative rounded-[var(--radius-md)] bg-surface border border-border p-4 transition-shadow cursor-pointer hover:border-border-hover hover:shadow-md hover:shadow-black/5 dark:hover:shadow-black/20"><button class="absolute right-2 top-2 p-1 rounded-[var(--radius-sm)] opacity-0 group-hover:opacity-100 hover:bg-surface-hover transition-opacity"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ellipsis h-4 w-4 text-foreground-muted" aria-hidden="true"><circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle></svg></button><div class="flex flex-wrap gap-1 mb-3"><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-transparent text-foreground-secondary border border-border px-2 py-0.5 text-xs">castle</span><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-transparent text-foreground-secondary border border-border px-2 py-0.5 text-xs">priority</span></div><h4 class="text-sm font-medium text-foreground pr-6 mb-1">The Armory - System Dashboard</h4><p class="text-xs text-foreground-secondary line-clamp-2 mb-3">Dashboard showing API usage, Mac Mini health, agent stats</p><div class="flex items-center justify-between mt-3 pt-3 border-t border-border"><div class="flex items-center gap-3"><div class="flex items-center gap-1 text-foreground-muted"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square h-3.5 w-3.5" aria-hidden="true"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path></svg><span class="text-xs">5</span></div><div class="flex items-center gap-1 text-foreground-muted"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-paperclip h-3.5 w-3.5" aria-hidden="true"><path d="m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551"></path></svg><span class="text-xs">2</span></div></div><div class="h-6 w-6 rounded-[var(--radius-full)] bg-surface-hover flex items-center justify-center text-xs font-medium text-foreground-secondary border border-border">M</div></div></div></div><button class="flex items-center justify-center gap-2 mt-3 p-2 text-sm text-foreground-secondary hover:text-foreground hover:bg-surface rounded-[var(--radius-md)] transition-colors cursor-pointer"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg>Add task</button></div><div class="flex flex-col min-w-[280px] max-w-[320px] bg-background-secondary rounded-[var(--radius-lg)] p-3 transition-colors"><div class="flex items-center justify-between mb-3 px-1"><div class="flex items-center gap-2"><div class="h-3 w-3 rounded-[var(--radius-full)]" style="background-color:#f59e0b"></div><h3 class="text-sm font-medium text-foreground">In Development</h3><span class="text-xs text-foreground-muted bg-surface px-1.5 py-0.5 rounded-[var(--radius-sm)]">1</span></div><div class="flex items-center gap-1"><button class="p-1 rounded-[var(--radius-sm)] hover:bg-surface transition-colors cursor-pointer" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4 text-foreground-muted" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></button><button class="p-1 rounded-[var(--radius-sm)] hover:bg-surface transition-colors cursor-pointer" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ellipsis h-4 w-4 text-foreground-muted" aria-hidden="true"><circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle></svg></button></div></div><div class="flex flex-col gap-2 flex-1 overflow-y-auto rounded-[var(--radius-md)] p-2 -m-1 border border-dashed border-transparent transition-colors"><div class="group relative rounded-[var(--radius-md)] bg-surface border border-border p-4 transition-shadow cursor-pointer hover:border-border-hover hover:shadow-md hover:shadow-black/5 dark:hover:shadow-black/20"><button class="absolute right-2 top-2 p-1 rounded-[var(--radius-sm)] opacity-0 group-hover:opacity-100 hover:bg-surface-hover transition-opacity"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ellipsis h-4 w-4 text-foreground-muted" aria-hidden="true"><circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle></svg></button><div class="flex flex-wrap gap-1 mb-3"><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-transparent text-foreground-secondary border border-border px-2 py-0.5 text-xs">castle</span><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-transparent text-foreground-secondary border border-border px-2 py-0.5 text-xs">active</span></div><h4 class="text-sm font-medium text-foreground pr-6 mb-1">Projects - Kanban Board</h4><p class="text-xs text-foreground-secondary line-clamp-2 mb-3">Project management kanban for Castle app</p><div class="flex items-center justify-between mt-3 pt-3 border-t border-border"><div class="flex items-center gap-3"><div class="flex items-center gap-1 text-foreground-muted"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square h-3.5 w-3.5" aria-hidden="true"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path></svg><span class="text-xs">8</span></div></div><div class="h-6 w-6 rounded-[var(--radius-full)] bg-surface-hover flex items-center justify-center text-xs font-medium text-foreground-secondary border border-border">M</div></div></div></div><button class="flex items-center justify-center gap-2 mt-3 p-2 text-sm text-foreground-secondary hover:text-foreground hover:bg-surface rounded-[var(--radius-md)] transition-colors cursor-pointer"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg>Add task</button></div><div class="flex flex-col min-w-[280px] max-w-[320px] bg-background-secondary rounded-[var(--radius-lg)] p-3 transition-colors"><div class="flex items-center justify-between mb-3 px-1"><div class="flex items-center gap-2"><div class="h-3 w-3 rounded-[var(--radius-full)]" style="background-color:#ec4899"></div><h3 class="text-sm font-medium text-foreground">Review</h3><span class="text-xs text-foreground-muted bg-surface px-1.5 py-0.5 rounded-[var(--radius-sm)]">0</span></div><div class="flex items-center gap-1"><button class="p-1 rounded-[var(--radius-sm)] hover:bg-surface transition-colors cursor-pointer" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4 text-foreground-muted" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></button><button class="p-1 rounded-[var(--radius-sm)] hover:bg-surface transition-colors cursor-pointer" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ellipsis h-4 w-4 text-foreground-muted" aria-hidden="true"><circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle></svg></button></div></div><div class="flex flex-col gap-2 flex-1 overflow-y-auto rounded-[var(--radius-md)] p-2 -m-1 border border-dashed border-transparent transition-colors"><div class="flex items-center justify-center h-20 text-sm text-foreground-muted">No tasks</div></div><button class="flex items-center justify-center gap-2 mt-3 p-2 text-sm text-foreground-secondary hover:text-foreground hover:bg-surface rounded-[var(--radius-md)] transition-colors cursor-pointer"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg>Add task</button></div><div class="flex flex-col min-w-[280px] max-w-[320px] bg-background-secondary rounded-[var(--radius-lg)] p-3 transition-colors"><div class="flex items-center justify-between mb-3 px-1"><div class="flex items-center gap-2"><div class="h-3 w-3 rounded-[var(--radius-full)]" style="background-color:#22c55e"></div><h3 class="text-sm font-medium text-foreground">Live</h3><span class="text-xs text-foreground-muted bg-surface px-1.5 py-0.5 rounded-[var(--radius-sm)]">2</span></div><div class="flex items-center gap-1"><button class="p-1 rounded-[var(--radius-sm)] hover:bg-surface transition-colors cursor-pointer" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4 text-foreground-muted" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></button><button class="p-1 rounded-[var(--radius-sm)] hover:bg-surface transition-colors cursor-pointer" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ellipsis h-4 w-4 text-foreground-muted" aria-hidden="true"><circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle></svg></button></div></div><div class="flex flex-col gap-2 flex-1 overflow-y-auto rounded-[var(--radius-md)] p-2 -m-1 border border-dashed border-transparent transition-colors"><div class="group relative rounded-[var(--radius-md)] bg-surface border border-border p-4 transition-shadow cursor-pointer hover:border-border-hover hover:shadow-md hover:shadow-black/5 dark:hover:shadow-black/20"><button class="absolute right-2 top-2 p-1 rounded-[var(--radius-sm)] opacity-0 group-hover:opacity-100 hover:bg-surface-hover transition-opacity"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ellipsis h-4 w-4 text-foreground-muted" aria-hidden="true"><circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle></svg></button><div class="flex flex-wrap gap-1 mb-3"><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-transparent text-foreground-secondary border border-border px-2 py-0.5 text-xs">castle</span></div><h4 class="text-sm font-medium text-foreground pr-6 mb-1">Castle App Bootstrap</h4><p class="text-xs text-foreground-secondary line-clamp-2 mb-3">Initial Next.js setup with Tailwind</p><div class="flex items-center justify-between mt-3 pt-3 border-t border-border"><div class="flex items-center gap-3"></div><div class="h-6 w-6 rounded-[var(--radius-full)] bg-surface-hover flex items-center justify-center text-xs font-medium text-foreground-secondary border border-border">M</div></div></div><div class="group relative rounded-[var(--radius-md)] bg-surface border border-border p-4 transition-shadow cursor-pointer hover:border-border-hover hover:shadow-md hover:shadow-black/5 dark:hover:shadow-black/20"><button class="absolute right-2 top-2 p-1 rounded-[var(--radius-sm)] opacity-0 group-hover:opacity-100 hover:bg-surface-hover transition-opacity"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ellipsis h-4 w-4 text-foreground-muted" aria-hidden="true"><circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle></svg></button><div class="flex flex-wrap gap-1 mb-3"><span class="inline-flex items-center font-medium rounded-[var(--radius-full)] transition-colors bg-transparent text-foreground-secondary border border-border px-2 py-0.5 text-xs">documentation</span></div><h4 class="text-sm font-medium text-foreground pr-6 mb-1">Agent SOUL Architecture</h4><p class="text-xs text-foreground-secondary line-clamp-2 mb-3">Modular identity system for agents</p><div class="flex items-center justify-between mt-3 pt-3 border-t border-border"><div class="flex items-center gap-3"></div></div></div></div><button class="flex items-center justify-center gap-2 mt-3 p-2 text-sm text-foreground-secondary hover:text-foreground hover:bg-surface rounded-[var(--radius-md)] transition-colors cursor-pointer"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg>Add task</button></div></div></div></section><section class="mb-16 "><div class="mb-6"><h2 class="text-2xl font-semibold text-foreground">Widgets</h2><p class="text-foreground-secondary mt-1">Dashboard widgets (solid variant)</p></div><div class="mb-8"><h3 class="text-sm font-medium text-foreground-muted uppercase tracking-wider mb-4">Clock</h3><div class="flex flex-wrap gap-8 items-center"><div class="rounded-[20px] shadow-lg select-none bg-surface border border-border" style="width:200px;height:200px"></div><div class="rounded-[20px] shadow-lg select-none bg-surface border border-border" style="width:150px;height:150px"></div><div class="rounded-[20px] shadow-lg select-none bg-surface border border-border" style="width:100px;height:100px"></div></div></div><div class="mb-8"><h3 class="text-sm font-medium text-foreground-muted uppercase tracking-wider mb-4">Uptime</h3><div class="rounded-[var(--radius-md)] bg-surface p-6 border border-border max-w-md"><div class=""><div class="w-full"><div class="flex items-center justify-between mb-6"><h3 class="text-lg font-semibold text-foreground">Database</h3><span class="inline-flex items-center gap-2 px-3 py-1 rounded-full text-sm font-medium transition-opacity duration-300 bg-warning/10 text-warning"><span class="h-2 w-2 rounded-full bg-warning"></span>Degraded</span></div><div class="flex items-center justify-between mb-3"><span class="text-sm text-foreground-secondary">Uptime</span><span class="text-sm text-foreground-secondary">Slow queries detected</span></div><div class="flex justify-between mb-2 h-8"><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success/70" title="95%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-warning/70" title="85%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-success" title="100%"></div><div class="h-8 w-1 rounded-full bg-warning" title="92%"></div></div><div class="flex justify-between text-xs text-foreground-muted"><span>30 days ago</span><span></span><span></span><span></span><span>Today</span></div></div></div></div></div><div class="mb-8"><h3 class="text-sm font-medium text-foreground-muted uppercase tracking-wider mb-4">Progress</h3><div class="grid grid-cols-1 md:grid-cols-2 gap-8"><div class="rounded-[var(--radius-md)] bg-surface p-6 border border-border"><div class=""><div class="space-y-2"><div class="flex items-baseline justify-between"><span class="font-bold text-foreground text-2xl">87<!-- -->%</span><span class="text-foreground-secondary text-sm">522<!-- --> of <!-- -->600</span></div><div class="w-full bg-border rounded-full overflow-hidden h-2"><div class="h-full rounded-full transition-all duration-500 bg-success" style="width:87%"></div></div><div class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-trending-up h-4 w-4 text-success" aria-hidden="true"><path d="M16 7h6v6"></path><path d="m22 7-8.5 8.5-5-5L2 17"></path></svg><span class="font-medium text-success text-sm">+<!-- -->32<!-- -->%</span><span class="text-foreground-secondary text-sm">Over the last 30 days</span></div></div></div></div><div class="rounded-[var(--radius-md)] bg-surface p-6 border border-border"><div class=""><div class="space-y-2"><div class="flex items-baseline justify-between"><span class="font-bold text-foreground text-2xl">45<!-- -->%</span><span class="text-foreground-secondary text-sm">45<!-- --> of <!-- -->100</span></div><div class="w-full bg-border rounded-full overflow-hidden h-2"><div class="h-full rounded-full transition-all duration-500 bg-accent" style="width:45%"></div></div><div class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-trending-down h-4 w-4 text-error" aria-hidden="true"><path d="M16 17h6v-6"></path><path d="m22 17-8.5-8.5-5 5L2 7"></path></svg><span class="font-medium text-error text-sm">-8<!-- -->%</span><span class="text-foreground-secondary text-sm">From last week</span></div></div></div></div></div></div><div class="mb-8"><h3 class="text-sm font-medium text-foreground-muted uppercase tracking-wider mb-4">Stats</h3><div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4"><div class="rounded-[var(--radius-md)] bg-surface border border-border p-6"><div class="flex items-start justify-between"><div><p class="text-sm text-foreground-muted mb-1">Total Tokens</p><p class="text-3xl font-semibold text-foreground">2.4M</p><p class="text-xs mt-2 text-success">+18% from last month</p></div><div class="p-2 rounded-[var(--radius-md)] bg-accent/10"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-database h-5 w-5 text-accent" aria-hidden="true"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg></div></div></div><div class="rounded-[var(--radius-md)] bg-surface border border-border p-6"><div class="flex items-start justify-between"><div><p class="text-sm text-foreground-muted mb-1">Uptime</p><p class="text-3xl font-semibold text-foreground">99.9%</p><p class="text-xs mt-2 text-foreground-muted">Last 30 days</p></div><div class="p-2 rounded-[var(--radius-md)] bg-accent/10"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-activity h-5 w-5 text-accent" aria-hidden="true"><path d="M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2"></path></svg></div></div></div><div class="rounded-[var(--radius-md)] bg-surface border border-border p-6"><div class="flex items-start justify-between"><div><p class="text-sm text-foreground-muted mb-1">Active Agents</p><p class="text-3xl font-semibold text-foreground">5</p><p class="text-xs mt-2 text-success">+2 this week</p></div><div class="p-2 rounded-[var(--radius-md)] bg-accent/10"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-users h-5 w-5 text-accent" aria-hidden="true"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path><path d="M16 3.128a4 4 0 0 1 0 7.744"></path><path d="M22 21v-2a4 4 0 0 0-3-3.87"></path><circle cx="9" cy="7" r="4"></circle></svg></div></div></div><div class="rounded-[var(--radius-md)] bg-surface border border-border p-6"><div class="flex items-start justify-between"><div><p class="text-sm text-foreground-muted mb-1">API Costs</p><p class="text-3xl font-semibold text-foreground">$42</p><p class="text-xs mt-2 text-success">-8% from last month</p></div><div class="p-2 rounded-[var(--radius-md)] bg-accent/10"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-trending-up h-5 w-5 text-accent" aria-hidden="true"><path d="M16 7h6v6"></path><path d="m22 7-8.5 8.5-5-5L2 17"></path></svg></div></div></div></div></div><div class="mb-8"><h3 class="text-sm font-medium text-foreground-muted uppercase tracking-wider mb-4">Stock + Goals</h3><div class="grid grid-cols-1 lg:grid-cols-2 gap-6"><div class="rounded-xl overflow-hidden"><div class="p-3 space-y-2 rounded-[var(--radius-lg)] bg-surface border border-border"><div class="flex items-start justify-between"><div class="flex items-center gap-2"><div class="w-6 h-6 flex items-center justify-center"><svg viewBox="0 0 32 32" class="w-full h-full block" aria-hidden="true"><circle cx="16" cy="16" r="16" fill="#F7931A"></circle><path fill="white" d="M22.5 14.1c.3-2-1.2-3.1-3.3-3.8l.7-2.7-1.7-.4-.7 2.6c-.4-.1-.9-.2-1.4-.3l.7-2.7-1.7-.4-.7 2.7c-.4-.1-.7-.2-1-.2l-2.3-.6-.4 1.8s1.2.3 1.2.3c.7.2.8.6.8 1l-.8 3.2c0 0 .1 0 .2.1h-.2l-1.1 4.5c-.1.2-.3.5-.8.4 0 0-1.2-.3-1.2-.3l-.8 1.9 2.2.5c.4.1.8.2 1.2.3l-.7 2.8 1.7.4.7-2.7c.5.1.9.2 1.4.3l-.7 2.7 1.7.4.7-2.8c2.8.5 4.9.3 5.8-2.2.7-2-.1-3.2-1.5-3.9 1.1-.3 1.9-1 2.1-2.5zm-3.8 5.3c-.5 2-3.9.9-5 .7l.9-3.6c1.1.3 4.6.8 4.1 2.9zm.5-5.4c-.5 1.8-3.3.9-4.2.7l.8-3.2c.9.2 3.9.6 3.4 2.5z"></path></svg></div><div><div class="text-xs font-semibold text-foreground">BTC</div><div class="text-xs text-foreground/60">Bitcoin</div></div></div><div class="text-right"><div class="text-[10px] text-foreground/40">updated</div><div class="text-xs text-foreground/60">1m ago</div></div></div><div class="flex items-baseline gap-2"><span class="text-2xl font-bold text-foreground tracking-tight">$<!-- -->104.850,00</span><div class="flex items-center gap-2"><span class="text-xs font-medium" style="color:#22c55e">+<!-- -->$<!-- -->24,580.00</span><span class="text-[10px] font-semibold px-1.5 py-0.5 rounded flex items-center gap-0.5" style="background-color:#22c55e;color:white"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-trending-up w-2.5 h-2.5" aria-hidden="true"><path d="M16 7h6v6"></path><path d="m22 7-8.5 8.5-5-5L2 17"></path></svg>30.62<!-- -->%</span></div></div><div class="h-10 -mx-1"><div class="recharts-responsive-container" style="width:100%;height:100%;min-width:0"><div style="width:0;height:0;overflow:visible"></div></div></div></div></div><div class="p-3 space-y-1 flex flex-col rounded-[var(--radius-lg)] bg-surface border border-border" style="width:220px;height:220px"><div class="flex items-start justify-between"><div class="text-sm font-semibold text-foreground">Agents Online</div></div><div class="flex-1 flex items-center justify-center"><div class="relative" style="width:130px;height:130px"><svg width="130" height="130" class="transform -rotate-[225deg]" style="overflow:visible"><circle cx="65" cy="65" r="61.5" fill="none" stroke="currentColor" stroke-width="7" stroke-linecap="round" stroke-dasharray="289.8119222936584" stroke-dashoffset="0" class="text-foreground/10"></circle><circle cx="65" cy="65" r="61.5" fill="none" stroke="#22c55e" stroke-width="7" stroke-linecap="round" stroke-dasharray="289.8119222936584" stroke-dashoffset="0"></circle></svg><div class="absolute inset-0 flex flex-col items-center justify-center"><span class="text-2xl font-bold text-foreground">5</span><span class="text-xs font-medium" style="color:#22c55e">All Active</span></div></div></div><p class="text-xs text-foreground/60 text-center">Atlas, Mason, Max, Merlin, Sage</p></div></div></div></section><section class="mb-16 "><div class="mb-6"><h2 class="text-2xl font-semibold text-foreground">Dashboard Preview</h2><p class="text-foreground-secondary mt-1">How the ambient dashboard looks over the background image</p></div><div class="relative rounded-[var(--radius-lg)] bg-cover bg-center bg-no-repeat overflow-hidden min-h-[600px]" style="background-image:url('/bg.jpg')"><div class="absolute inset-0 pointer-events-none" style="background-color:var(--dashboard-overlay)"></div><aside class="fixed top-[20px] left-[24px] bottom-[20px] flex flex-col z-40 rounded-[var(--radius-md)] w-14 glass !absolute !top-4 !left-4 !bottom-4"><div class="flex items-center justify-center pt-5 pb-[60px]"><button type="button" aria-label="Go to Dashboard" class="flex items-center justify-center transition-opacity hover:opacity-85 cursor-pointer"><svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" class="fill-current h-[36px] w-[36px] min-h-[36px] min-w-[36px] shrink-0 text-[var(--logo-color)] -mt-[3px]"><g><path d="m124.809 408.11h262.382v103.89h-262.382z"></path><path d="m273.162 123.55h134.646l-34.459-44.772 33.515-46.459h-133.702v-32.319h-29.985v196.446h29.985z"></path><path d="m347.45 281.985h-50.335v-56.54h-79.107v56.54h-53.643v-56.54h-91.962v111.141c0 23.448 19.075 42.523 42.523 42.523h282.147c23.448 0 42.524-19.075 42.524-42.523v-111.14h-92.147z"></path></g></svg></button></div><nav class="flex-1 space-y-1 px-2"><div><button class="flex items-center justify-center w-full rounded-[4px] p-2.5 cursor-pointer bg-accent/10 text-accent"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-dashboard h-5 w-5 shrink-0" aria-hidden="true"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg></button></div><div><button class="flex items-center justify-center w-full rounded-[4px] p-2.5 cursor-pointer text-foreground-secondary hover:text-foreground hover:bg-surface-hover"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-circle h-5 w-5 shrink-0" aria-hidden="true"><path d="M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719"></path></svg></button></div></nav><div class="relative flex justify-center pb-[8px]"><button class="group flex items-center justify-center rounded-[4px] cursor-pointer transition-opacity"><div class="relative inline-block shrink-0"><div class="relative flex shrink-0 overflow-hidden rounded-[4px] bg-surface border border-border h-9 w-9"><span class="flex h-full w-full items-center justify-center bg-surface text-foreground-secondary font-medium text-sm skeleton"></span></div><span class="absolute block rounded-full ring-2 ring-background h-2.5 w-2.5 -bottom-0.5 -right-0.5 bg-foreground-muted"></span></div></button></div></aside><div class="relative !absolute !top-4 !right-4 z-50"><button class="flex items-center justify-center h-14 w-14 rounded-[28px] shadow-xl shadow-black/20 cursor-pointer overflow-hidden text-foreground-secondary hover:text-foreground glass"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-user h-5 w-5" aria-hidden="true"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg></button></div><div class="p-8 relative z-10" style="margin-left:calc(var(--spacing) * 18)"><div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"><div class="py-6 flex flex-col justify-center h-full lg:col-span-2"><p class="text-sm mb-1"> </p><h1 class="text-4xl font-semibold"> </h1></div><div class="flex justify-end"><div class="rounded-[20px] shadow-lg select-none glass" style="width:160px;height:160px"></div></div><div class="rounded-[var(--radius-lg)] p-6 glass"><div class="flex items-center justify-between"><div><p class="text-sm text-foreground-secondary mb-1">Zurich</p><div class="flex items-baseline gap-1"><span class="text-5xl font-light text-foreground">12</span><span class="text-2xl text-foreground-secondary">°C</span></div><p class="text-sm text-foreground-secondary mt-2 capitalize">cloudy</p></div><div class="flex flex-col items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cloud h-12 w-12 text-foreground-secondary" aria-hidden="true"><path d="M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z"></path></svg><div class="flex gap-3 text-xs text-foreground-muted"><span>H: <!-- -->15<!-- -->°</span><span>L: <!-- -->8<!-- -->°</span></div></div></div></div><div class="glass rounded-[var(--radius-lg)] p-6 transition-all" data-intensity="subtle"><div class="flex items-start justify-between"><div><p class="text-sm text-foreground-muted mb-1">Active Sessions</p><p class="text-3xl font-semibold text-foreground">24</p><p class="text-xs mt-2 text-success">+3 today</p></div><div class="p-2 rounded-[var(--radius-md)] bg-accent/10"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-users h-5 w-5 text-accent" aria-hidden="true"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path><path d="M16 3.128a4 4 0 0 1 0 7.744"></path><path d="M22 21v-2a4 4 0 0 0-3-3.87"></path><circle cx="9" cy="7" r="4"></circle></svg></div></div></div><div class="glass rounded-[var(--radius-lg)] p-6 transition-all" data-intensity="subtle"><div class="flex items-start justify-between"><div><p class="text-sm text-foreground-muted mb-1">Tasks Completed</p><p class="text-3xl font-semibold text-foreground">156</p><p class="text-xs mt-2 text-foreground-muted">This month</p></div><div class="p-2 rounded-[var(--radius-md)] bg-accent/10"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-trending-up h-5 w-5 text-accent" aria-hidden="true"><path d="M16 7h6v6"></path><path d="m22 7-8.5 8.5-5-5L2 17"></path></svg></div></div></div><div class="rounded-[var(--radius-lg)] p-6 glass lg:col-span-2"><div class="flex items-center justify-between mb-4"><h3 class="text-sm font-medium text-foreground">Agents</h3><span class="text-xs text-foreground-secondary">3<!-- --> active</span></div><div class="space-y-3"><div class="flex items-center gap-3"><div class="relative"><div class="h-8 w-8 rounded-[var(--radius-full)] bg-surface flex items-center justify-center text-sm font-medium text-foreground-secondary border border-border">A</div><span class="absolute -bottom-0.5 -right-0.5 h-2.5 w-2.5 rounded-[var(--radius-full)] ring-2 ring-background bg-success"></span></div><div class="flex-1 min-w-0"><p class="text-sm font-medium text-foreground truncate">Atlas</p><p class="text-xs text-foreground-muted truncate">Executive Assistant</p></div><span class="text-xs px-2 py-0.5 rounded-[var(--radius-full)] bg-success/10 text-success">Active</span></div><div class="flex items-center gap-3"><div class="relative"><div class="h-8 w-8 rounded-[var(--radius-full)] bg-surface flex items-center justify-center text-sm font-medium text-foreground-secondary border border-border">M</div><span class="absolute -bottom-0.5 -right-0.5 h-2.5 w-2.5 rounded-[var(--radius-full)] ring-2 ring-background bg-warning"></span></div><div class="flex-1 min-w-0"><p class="text-sm font-medium text-foreground truncate">Mason</p><p class="text-xs text-foreground-muted truncate">Full-Stack Developer</p></div><span class="text-xs px-2 py-0.5 rounded-[var(--radius-full)] bg-warning/10 text-warning">Working</span></div><div class="flex items-center gap-3"><div class="relative"><div class="h-8 w-8 rounded-[var(--radius-full)] bg-surface flex items-center justify-center text-sm font-medium text-foreground-secondary border border-border">S</div><span class="absolute -bottom-0.5 -right-0.5 h-2.5 w-2.5 rounded-[var(--radius-full)] ring-2 ring-background bg-success"></span></div><div class="flex-1 min-w-0"><p class="text-sm font-medium text-foreground truncate">Sage</p><p class="text-xs text-foreground-muted truncate">Research Analyst</p></div><span class="text-xs px-2 py-0.5 rounded-[var(--radius-full)] bg-success/10 text-success">Active</span></div><div class="flex items-center gap-3"><div class="relative"><div class="h-8 w-8 rounded-[var(--radius-full)] bg-surface flex items-center justify-center text-sm font-medium text-foreground-secondary border border-border">M</div><span class="absolute -bottom-0.5 -right-0.5 h-2.5 w-2.5 rounded-[var(--radius-full)] ring-2 ring-background bg-info"></span></div><div class="flex-1 min-w-0"><p class="text-sm font-medium text-foreground truncate">Max</p><p class="text-xs text-foreground-muted truncate">Data Engineer</p></div><span class="text-xs px-2 py-0.5 rounded-[var(--radius-full)] bg-info/10 text-info">Idle</span></div><div class="flex items-center gap-3"><div class="relative"><div class="h-8 w-8 rounded-[var(--radius-full)] bg-surface flex items-center justify-center text-sm font-medium text-foreground-secondary border border-border">M</div><span class="absolute -bottom-0.5 -right-0.5 h-2.5 w-2.5 rounded-[var(--radius-full)] ring-2 ring-background bg-foreground-muted"></span></div><div class="flex-1 min-w-0"><p class="text-sm font-medium text-foreground truncate">Merlin</p><p class="text-xs text-foreground-muted truncate">Creative Director</p></div><span class="text-xs px-2 py-0.5 rounded-[var(--radius-full)] bg-foreground-muted/10 text-foreground-muted">Offline</span></div></div></div><div class="glass rounded-[var(--radius-lg)] p-6 transition-all" data-intensity="subtle"><div class="flex items-center gap-3 mb-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-5 w-5 text-foreground-secondary" aria-hidden="true"><path d="M12 6v6l4 2"></path><circle cx="12" cy="12" r="10"></circle></svg><h3 class="text-sm font-medium text-foreground">Recent Activity</h3></div><div class="space-y-3 text-sm"><div class="flex justify-between"><span class="text-foreground-secondary">Mason completed PR #42</span><span class="text-foreground-muted">2m ago</span></div><div class="flex justify-between"><span class="text-foreground-secondary">Sage updated research notes</span><span class="text-foreground-muted">15m ago</span></div><div class="flex justify-between"><span class="text-foreground-secondary">Atlas scheduled reminder</span><span class="text-foreground-muted">1h ago</span></div></div></div></div></div></div></section><footer class="mt-16 pt-8 border-t border-border text-center"><p class="text-sm text-foreground-muted">Castle v0.0.1</p></footer></div></main></div><!--$--><!--/$--><script src="/_next/static/chunks/97d384ea34b6283a.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[63178,[\"/_next/static/chunks/d11263c7e8894d27.js\",\"/_next/static/chunks/5a1105a61e9390f8.js\"],\"ThemeProvider\"]\n3:I[49410,[\"/_next/static/chunks/d11263c7e8894d27.js\",\"/_next/static/chunks/5a1105a61e9390f8.js\"],\"PresenceProvider\"]\n4:I[40871,[\"/_next/static/chunks/d11263c7e8894d27.js\",\"/_next/static/chunks/5a1105a61e9390f8.js\"],\"SearchProvider\"]\n5:I[39756,[\"/_next/static/chunks/868f09ea8b0a7649.js\"],\"default\"]\n6:I[37457,[\"/_next/static/chunks/868f09ea8b0a7649.js\"],\"default\"]\n7:I[47257,[\"/_next/static/chunks/868f09ea8b0a7649.js\"],\"ClientPageRoot\"]\n8:I[77982,[\"/_next/static/chunks/d11263c7e8894d27.js\",\"/_next/static/chunks/5a1105a61e9390f8.js\",\"/_next/static/chunks/3fef23e63934711e.js\",\"/_next/static/chunks/bffbc071b1075ac3.js\"],\"default\"]\nb:I[97367,[\"/_next/static/chunks/868f09ea8b0a7649.js\"],\"OutletBoundary\"]\nc:\"$Sreact.suspense\"\ne:I[97367,[\"/_next/static/chunks/868f09ea8b0a7649.js\"],\"ViewportBoundary\"]\n10:I[97367,[\"/_next/static/chunks/868f09ea8b0a7649.js\"],\"MetadataBoundary\"]\n12:I[68027,[],\"default\"]\n:HL[\"/_next/static/chunks/3c2b51fd3ab2ac34.css\",\"style\"]\n:HL[\"/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"R01Vc6rRTS_XwAg0Y8ERm\",\"c\":[\"\",\"ui-kit\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"ui-kit\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/3c2b51fd3ab2ac34.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/d11263c7e8894d27.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/5a1105a61e9390f8.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased bg-background text-foreground\",\"children\":[\"$\",\"$L2\",null,{\"attribute\":\"class\",\"defaultTheme\":\"dark\",\"enableSystem\":false,\"disableTransitionOnChange\":true,\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"Component\":\"$8\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@9\",\"$@a\"]}}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/3fef23e63934711e.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/bffbc071b1075ac3.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$c\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@d\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Le\",null,{\"children\":\"$Lf\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L10\",null,{\"children\":[\"$\",\"$c\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L11\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$12\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"9:{}\na:\"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params\"\n"])</script><script>self.__next_f.push([1,"f:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"13:I[27201,[\"/_next/static/chunks/868f09ea8b0a7649.js\"],\"IconMark\"]\nd:null\n11:[[\"$\",\"title\",\"0\",{\"children\":\"Castle\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"The multi-agent workspace\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.png?icon.4cc5e0bd.png\",\"sizes\":\"1000x1000\",\"type\":\"image/png\"}],[\"$\",\"$L13\",\"3\",{}]]\n"])</script></body></html>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"headers": {
|
|
3
|
+
"x-nextjs-stale-time": "300",
|
|
4
|
+
"x-nextjs-prerender": "1",
|
|
5
|
+
"x-next-cache-tags": "_N_T_/layout,_N_T_/ui-kit/layout,_N_T_/ui-kit/page,_N_T_/ui-kit"
|
|
6
|
+
},
|
|
7
|
+
"segmentPaths": [
|
|
8
|
+
"/_tree",
|
|
9
|
+
"/_full",
|
|
10
|
+
"/ui-kit/__PAGE__",
|
|
11
|
+
"/ui-kit",
|
|
12
|
+
"/_index",
|
|
13
|
+
"/_head"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
1:"$Sreact.fragment"
|
|
2
|
+
2:I[63178,["/_next/static/chunks/d11263c7e8894d27.js","/_next/static/chunks/5a1105a61e9390f8.js"],"ThemeProvider"]
|
|
3
|
+
3:I[49410,["/_next/static/chunks/d11263c7e8894d27.js","/_next/static/chunks/5a1105a61e9390f8.js"],"PresenceProvider"]
|
|
4
|
+
4:I[40871,["/_next/static/chunks/d11263c7e8894d27.js","/_next/static/chunks/5a1105a61e9390f8.js"],"SearchProvider"]
|
|
5
|
+
5:I[39756,["/_next/static/chunks/868f09ea8b0a7649.js"],"default"]
|
|
6
|
+
6:I[37457,["/_next/static/chunks/868f09ea8b0a7649.js"],"default"]
|
|
7
|
+
7:I[47257,["/_next/static/chunks/868f09ea8b0a7649.js"],"ClientPageRoot"]
|
|
8
|
+
8:I[77982,["/_next/static/chunks/d11263c7e8894d27.js","/_next/static/chunks/5a1105a61e9390f8.js","/_next/static/chunks/3fef23e63934711e.js","/_next/static/chunks/bffbc071b1075ac3.js"],"default"]
|
|
9
|
+
b:I[97367,["/_next/static/chunks/868f09ea8b0a7649.js"],"OutletBoundary"]
|
|
10
|
+
c:"$Sreact.suspense"
|
|
11
|
+
e:I[97367,["/_next/static/chunks/868f09ea8b0a7649.js"],"ViewportBoundary"]
|
|
12
|
+
10:I[97367,["/_next/static/chunks/868f09ea8b0a7649.js"],"MetadataBoundary"]
|
|
13
|
+
12:I[68027,[],"default"]
|
|
14
|
+
:HL["/_next/static/chunks/3c2b51fd3ab2ac34.css","style"]
|
|
15
|
+
:HL["/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
16
|
+
:HL["/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
17
|
+
0:{"P":null,"b":"R01Vc6rRTS_XwAg0Y8ERm","c":["","ui-kit"],"q":"","i":false,"f":[[["",{"children":["ui-kit",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3c2b51fd3ab2ac34.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/d11263c7e8894d27.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/5a1105a61e9390f8.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased bg-background text-foreground","children":["$","$L2",null,{"attribute":"class","defaultTheme":"dark","enableSystem":false,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@9","$@a"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/3fef23e63934711e.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/bffbc071b1075ac3.js","async":true,"nonce":"$undefined"}]],["$","$Lb",null,{"children":["$","$c",null,{"name":"Next.MetadataOutlet","children":"$@d"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Le",null,{"children":"$Lf"}],["$","div",null,{"hidden":true,"children":["$","$L10",null,{"children":["$","$c",null,{"name":"Next.Metadata","children":"$L11"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$12",[]],"S":true}
|
|
18
|
+
9:{}
|
|
19
|
+
a:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params"
|
|
20
|
+
f:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
21
|
+
13:I[27201,["/_next/static/chunks/868f09ea8b0a7649.js"],"IconMark"]
|
|
22
|
+
d:null
|
|
23
|
+
11:[["$","title","0",{"children":"Castle"}],["$","meta","1",{"name":"description","content":"The multi-agent workspace"}],["$","link","2",{"rel":"icon","href":"/icon.png?icon.4cc5e0bd.png","sizes":"1000x1000","type":"image/png"}],["$","$L13","3",{}]]
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
1:"$Sreact.fragment"
|
|
2
|
+
2:I[63178,["/_next/static/chunks/d11263c7e8894d27.js","/_next/static/chunks/5a1105a61e9390f8.js"],"ThemeProvider"]
|
|
3
|
+
3:I[49410,["/_next/static/chunks/d11263c7e8894d27.js","/_next/static/chunks/5a1105a61e9390f8.js"],"PresenceProvider"]
|
|
4
|
+
4:I[40871,["/_next/static/chunks/d11263c7e8894d27.js","/_next/static/chunks/5a1105a61e9390f8.js"],"SearchProvider"]
|
|
5
|
+
5:I[39756,["/_next/static/chunks/868f09ea8b0a7649.js"],"default"]
|
|
6
|
+
6:I[37457,["/_next/static/chunks/868f09ea8b0a7649.js"],"default"]
|
|
7
|
+
7:I[47257,["/_next/static/chunks/868f09ea8b0a7649.js"],"ClientPageRoot"]
|
|
8
|
+
8:I[77982,["/_next/static/chunks/d11263c7e8894d27.js","/_next/static/chunks/5a1105a61e9390f8.js","/_next/static/chunks/3fef23e63934711e.js","/_next/static/chunks/bffbc071b1075ac3.js"],"default"]
|
|
9
|
+
b:I[97367,["/_next/static/chunks/868f09ea8b0a7649.js"],"OutletBoundary"]
|
|
10
|
+
c:"$Sreact.suspense"
|
|
11
|
+
e:I[97367,["/_next/static/chunks/868f09ea8b0a7649.js"],"ViewportBoundary"]
|
|
12
|
+
10:I[97367,["/_next/static/chunks/868f09ea8b0a7649.js"],"MetadataBoundary"]
|
|
13
|
+
12:I[68027,[],"default"]
|
|
14
|
+
:HL["/_next/static/chunks/3c2b51fd3ab2ac34.css","style"]
|
|
15
|
+
:HL["/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
16
|
+
:HL["/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
17
|
+
0:{"P":null,"b":"R01Vc6rRTS_XwAg0Y8ERm","c":["","ui-kit"],"q":"","i":false,"f":[[["",{"children":["ui-kit",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3c2b51fd3ab2ac34.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/d11263c7e8894d27.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/5a1105a61e9390f8.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased bg-background text-foreground","children":["$","$L2",null,{"attribute":"class","defaultTheme":"dark","enableSystem":false,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@9","$@a"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/3fef23e63934711e.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/bffbc071b1075ac3.js","async":true,"nonce":"$undefined"}]],["$","$Lb",null,{"children":["$","$c",null,{"name":"Next.MetadataOutlet","children":"$@d"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Le",null,{"children":"$Lf"}],["$","div",null,{"hidden":true,"children":["$","$L10",null,{"children":["$","$c",null,{"name":"Next.Metadata","children":"$L11"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$12",[]],"S":true}
|
|
18
|
+
9:{}
|
|
19
|
+
a:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params"
|
|
20
|
+
f:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
21
|
+
13:I[27201,["/_next/static/chunks/868f09ea8b0a7649.js"],"IconMark"]
|
|
22
|
+
d:null
|
|
23
|
+
11:[["$","title","0",{"children":"Castle"}],["$","meta","1",{"name":"description","content":"The multi-agent workspace"}],["$","link","2",{"rel":"icon","href":"/icon.png?icon.4cc5e0bd.png","sizes":"1000x1000","type":"image/png"}],["$","$L13","3",{}]]
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
1:"$Sreact.fragment"
|
|
2
|
+
2:I[97367,["/_next/static/chunks/868f09ea8b0a7649.js"],"ViewportBoundary"]
|
|
3
|
+
3:I[97367,["/_next/static/chunks/868f09ea8b0a7649.js"],"MetadataBoundary"]
|
|
4
|
+
4:"$Sreact.suspense"
|
|
5
|
+
5:I[27201,["/_next/static/chunks/868f09ea8b0a7649.js"],"IconMark"]
|
|
6
|
+
0:{"buildId":"R01Vc6rRTS_XwAg0Y8ERm","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Castle"}],["$","meta","1",{"name":"description","content":"The multi-agent workspace"}],["$","link","2",{"rel":"icon","href":"/icon.png?icon.4cc5e0bd.png","sizes":"1000x1000","type":"image/png"}],["$","$L5","3",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
1:"$Sreact.fragment"
|
|
2
|
+
2:I[63178,["/_next/static/chunks/d11263c7e8894d27.js","/_next/static/chunks/5a1105a61e9390f8.js"],"ThemeProvider"]
|
|
3
|
+
3:I[49410,["/_next/static/chunks/d11263c7e8894d27.js","/_next/static/chunks/5a1105a61e9390f8.js"],"PresenceProvider"]
|
|
4
|
+
4:I[40871,["/_next/static/chunks/d11263c7e8894d27.js","/_next/static/chunks/5a1105a61e9390f8.js"],"SearchProvider"]
|
|
5
|
+
5:I[39756,["/_next/static/chunks/868f09ea8b0a7649.js"],"default"]
|
|
6
|
+
6:I[37457,["/_next/static/chunks/868f09ea8b0a7649.js"],"default"]
|
|
7
|
+
:HL["/_next/static/chunks/3c2b51fd3ab2ac34.css","style"]
|
|
8
|
+
0:{"buildId":"R01Vc6rRTS_XwAg0Y8ERm","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3c2b51fd3ab2ac34.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/d11263c7e8894d27.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/5a1105a61e9390f8.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased bg-background text-foreground","children":["$","$L2",null,{"attribute":"class","defaultTheme":"dark","enableSystem":false,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","template":["$","$L6",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]}]}]]}],"loading":null,"isPartial":false}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
:HL["/_next/static/chunks/3c2b51fd3ab2ac34.css","style"]
|
|
2
|
+
:HL["/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
3
|
+
:HL["/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
4
|
+
0:{"buildId":"R01Vc6rRTS_XwAg0Y8ERm","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"ui-kit","paramType":null,"paramKey":"ui-kit","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
1:"$Sreact.fragment"
|
|
2
|
+
2:I[47257,["/_next/static/chunks/868f09ea8b0a7649.js"],"ClientPageRoot"]
|
|
3
|
+
3:I[77982,["/_next/static/chunks/d11263c7e8894d27.js","/_next/static/chunks/5a1105a61e9390f8.js","/_next/static/chunks/3fef23e63934711e.js","/_next/static/chunks/bffbc071b1075ac3.js"],"default"]
|
|
4
|
+
6:I[97367,["/_next/static/chunks/868f09ea8b0a7649.js"],"OutletBoundary"]
|
|
5
|
+
7:"$Sreact.suspense"
|
|
6
|
+
0:{"buildId":"R01Vc6rRTS_XwAg0Y8ERm","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/3fef23e63934711e.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/bffbc071b1075ac3.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false}
|
|
7
|
+
4:{}
|
|
8
|
+
5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
|
|
9
|
+
8:null
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
1:"$Sreact.fragment"
|
|
2
|
+
2:I[39756,["/_next/static/chunks/868f09ea8b0a7649.js"],"default"]
|
|
3
|
+
3:I[37457,["/_next/static/chunks/868f09ea8b0a7649.js"],"default"]
|
|
4
|
+
0:{"buildId":"R01Vc6rRTS_XwAg0Y8ERm","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"/_global-error/page": "app/_global-error/page.js",
|
|
3
|
+
"/_not-found/page": "app/_not-found/page.js",
|
|
4
|
+
"/api/avatars/[id]/route": "app/api/avatars/[id]/route.js",
|
|
5
|
+
"/api/openclaw/agents/[id]/avatar/route": "app/api/openclaw/agents/[id]/avatar/route.js",
|
|
6
|
+
"/api/openclaw/agents/route": "app/api/openclaw/agents/route.js",
|
|
7
|
+
"/api/openclaw/agents/status/route": "app/api/openclaw/agents/status/route.js",
|
|
8
|
+
"/api/openclaw/chat/attachments/route": "app/api/openclaw/chat/attachments/route.js",
|
|
9
|
+
"/api/openclaw/chat/channels/route": "app/api/openclaw/chat/channels/route.js",
|
|
10
|
+
"/api/openclaw/chat/route": "app/api/openclaw/chat/route.js",
|
|
11
|
+
"/api/openclaw/chat/search/route": "app/api/openclaw/chat/search/route.js",
|
|
12
|
+
"/api/openclaw/chat/storage/route": "app/api/openclaw/chat/storage/route.js",
|
|
13
|
+
"/api/openclaw/config/route": "app/api/openclaw/config/route.js",
|
|
14
|
+
"/api/openclaw/events/route": "app/api/openclaw/events/route.js",
|
|
15
|
+
"/api/openclaw/logs/route": "app/api/openclaw/logs/route.js",
|
|
16
|
+
"/api/openclaw/ping/route": "app/api/openclaw/ping/route.js",
|
|
17
|
+
"/api/openclaw/restart/route": "app/api/openclaw/restart/route.js",
|
|
18
|
+
"/api/openclaw/session/context/route": "app/api/openclaw/session/context/route.js",
|
|
19
|
+
"/api/openclaw/session/status/route": "app/api/openclaw/session/status/route.js",
|
|
20
|
+
"/api/openclaw/sessions/route": "app/api/openclaw/sessions/route.js",
|
|
21
|
+
"/api/settings/avatar/route": "app/api/settings/avatar/route.js",
|
|
22
|
+
"/api/settings/route": "app/api/settings/route.js",
|
|
23
|
+
"/chat/[channelId]/page": "app/chat/[channelId]/page.js",
|
|
24
|
+
"/chat/page": "app/chat/page.js",
|
|
25
|
+
"/icon.png/route": "app/icon.png/route.js",
|
|
26
|
+
"/page": "app/page.js",
|
|
27
|
+
"/settings/page": "app/settings/page.js",
|
|
28
|
+
"/ui-kit/page": "app/ui-kit/page.js"
|
|
29
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[18622,(e,r,t)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,r,t)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Bexternals%5D_next_dist_a6d89067._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},33405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},68412,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),s=e.i(61916),i=e.i(74677),o=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),p=e.i(47587),c=e.i(66012),h=e.i(70101),x=e.i(74838),g=e.i(10372),f=e.i(93695);e.i(52474);var v=e.i(220),R=e.i(89171),m=e.i(74605);let w=[/\/api\/v\d+\/avatars\/([a-f0-9]+)/i,/\/avatars\/([a-f0-9]+)/i];async function E(){let e=(0,m.ensureGateway)();if(!e.isConnected)return R.NextResponse.json({error:"Gateway not connected",state:e.state,agents:[]},{status:503});try{let t=Date.now(),[r,a]=await Promise.all([e.request("agents.list",{}),e.request("config.get",{}).catch(e=>(console.warn("[Agents API] config.get failed (non-fatal):",e.message),null))]),n=new Map;if(a?.parsed?.agents?.list)for(let e of a.parsed.agents.list)e.workspace&&n.set(e.id,e.workspace);let s=(r?.agents||[]).map(t=>{let r=t.identity?.name||t.name||t.id,a=t.identity?.avatarUrl||t.identity?.avatar||null,s=t.identity?.emoji||null,i=t.identity?.theme||null,o=n.get(t.id),l=function(e,t,r,a){if(!e)return null;if(e.startsWith("data:"))return e;if(e.startsWith("http://")||e.startsWith("https://")){for(let t of w){let r=e.match(t);if(r)return a.setAvatarUrl(r[1],e),`/api/avatars/${r[1]}`}let r=`agent-${t}`;return a.setAvatarUrl(r,e),`/api/avatars/${r}`}if(r&&!e.startsWith("/")){let n=`agent-${t}`;return a.setAvatarUrl(n,`workspace://${r}/${e}`),`/api/avatars/${n}`}return null}(a,t.id,o,e);return{id:t.id,name:r,description:i,avatar:l,emoji:s}});return console.log(`[Agents API] GET list OK — ${s.length} agents (${Date.now()-t}ms)`),R.NextResponse.json({agents:s,defaultId:r?.defaultId})}catch(e){return console.error("[Agents API] GET list FAILED:",e instanceof Error?e.message:"Unknown error"),R.NextResponse.json({error:e instanceof Error?e.message:"Failed to list agents",agents:[]},{status:500})}}e.s(["GET",()=>E,"dynamic",0,"force-dynamic"],5941);var y=e.i(5941);let A=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/openclaw/agents/route",pathname:"/api/openclaw/agents",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/openclaw/agents/route.ts",nextConfigOutput:"standalone",userland:y}),{workAsyncStorage:C,workUnitAsyncStorage:b,serverHooks:P}=A;function T(){return(0,a.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:b})}async function N(e,t,a){A.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let R="/api/openclaw/agents/route";R=R.replace(/\/index$/,"")||"/";let m=await A.prepare(e,t,{srcPage:R,multiZoneDraftMode:!1});if(!m)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:w,params:E,nextConfig:y,parsedUrl:C,isDraftMode:b,prerenderManifest:P,routerServerContext:T,isOnDemandRevalidate:N,revalidateOnlyGenerated:k,resolvedPathname:q,clientReferenceManifest:O,serverActionsManifest:_}=m,j=(0,o.normalizeAppPath)(R),I=!!(P.dynamicRoutes[j]||P.routes[q]),U=async()=>((null==T?void 0:T.render404)?await T.render404(e,t,C,!1):t.end("This page could not be found"),null);if(I&&!b){let e=!!P.routes[q],t=P.dynamicRoutes[j];if(t&&!1===t.fallback&&!e){if(y.experimental.adapterPath)return await U();throw new f.NoFallbackError}}let S=null;!I||A.isDev||b||(S="/index"===(S=q)?"/":S);let $=!0===A.isDev||!I,H=I&&!$;_&&O&&(0,i.setManifestsSingleton)({page:R,clientReferenceManifest:O,serverActionsManifest:_});let D=e.method||"GET",M=(0,s.getTracer)(),F=M.getActiveScopeSpan(),K={params:E,prerenderManifest:P,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:$,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:y.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>A.onRequestError(e,t,a,n,T)},sharedContext:{buildId:w}},G=new l.NodeNextRequest(e),L=new l.NodeNextResponse(t),W=d.NextRequestAdapter.fromNodeNextRequest(G,(0,d.signalFromNodeResponse)(t));try{let i=async e=>A.handle(W,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${D} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${D} ${R}`)}),o=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var s,l;let d=async({previousCacheEntry:r})=>{try{if(!o&&N&&k&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=K.renderOpts.fetchMetrics;let l=K.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let d=K.renderOpts.collectedTags;if(!I)return await (0,c.sendResponse)(G,L,s,K.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);d&&(t[g.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:R,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:N})},!1,T),t}},u=await A.handleResponse({req:e,nextConfig:y,cacheKey:S,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:P,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:k,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:o});if(!I)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",N?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return o&&I||f.delete(g.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,x.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(G,L,new Response(u.value.body,{headers:f,status:u.value.status||200})),null};F?await l(F):await M.withPropagatedContext(e.headers,()=>M.trace(u.BaseServerSpan.handleRequest,{spanName:`${D} ${R}`,kind:s.SpanKind.SERVER,attributes:{"http.method":D,"http.target":e.url}},l))}catch(t){if(t instanceof f.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:j,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:N})},!1,T),I)throw t;return await (0,c.sendResponse)(G,L,new Response(null,{status:500})),null}}e.s(["handler",()=>N,"patchFetch",()=>T,"routeModule",()=>A,"serverHooks",()=>P,"workAsyncStorage",()=>C,"workUnitAsyncStorage",()=>b],68412)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__2824c41d._.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module.exports=[93695,(e,t,n)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},18622,(e,t,n)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,n)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,n)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},70406,(e,t,n)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},14747,(e,t,n)=>{t.exports=e.x("path",()=>require("path"))},22734,(e,t,n)=>{t.exports=e.x("fs",()=>require("fs"))},33405,(e,t,n)=>{t.exports=e.x("child_process",()=>require("child_process"))},81439,e=>{"use strict";var t=e.i(47909),n=e.i(74017),r=e.i(96250),a=e.i(59756),o=e.i(61916),s=e.i(74677),i=e.i(69741),l=e.i(16795),d=e.i(87718),c=e.i(95169),u=e.i(47587),p=e.i(66012),h=e.i(70101),v=e.i(74838),f=e.i(10372),x=e.i(93695);e.i(52474);var R=e.i(220),g=e.i(74605);async function y(e){let t=(0,g.ensureGateway)(),n=new TextEncoder,r=!1,a=Date.now(),o=0;console.log(`[SSE] Client connected (gateway: ${t.state})`);let s=e.signal;return new Response(new ReadableStream({start(e){let i={event:"castle.state",payload:{state:t.state,isConnected:t.isConnected,server:t.serverInfo}};e.enqueue(n.encode(`data: ${JSON.stringify(i)}
|
|
2
|
+
|
|
3
|
+
`));let l=t=>{if(!r){o++;try{let r=function(e){if(!e.payload||"object"!=typeof e.payload)return e;let t={...e.payload};if("string"==typeof t.deviceToken&&(t.deviceToken="[REDACTED]"),t.auth&&"object"==typeof t.auth){let e={...t.auth};"string"==typeof e.deviceToken&&(e.deviceToken="[REDACTED]"),"string"==typeof e.token&&(e.token="[REDACTED]"),t.auth=e}return"string"==typeof t.token&&(t.token="[REDACTED]"),{...e,payload:t}}(t);e.enqueue(n.encode(`data: ${JSON.stringify(r)}
|
|
4
|
+
|
|
5
|
+
`))}catch(e){console.warn(`[SSE] Stream write failed for event ${t.event}:`,e.message),u()}}},d=a=>{if(!r)try{let r={event:"castle.state",payload:{state:a,isConnected:t.isConnected,server:t.serverInfo}};e.enqueue(n.encode(`data: ${JSON.stringify(r)}
|
|
6
|
+
|
|
7
|
+
`))}catch{u()}},c=setInterval(()=>{if(!r)try{e.enqueue(n.encode(`: heartbeat
|
|
8
|
+
|
|
9
|
+
`))}catch{u()}},3e4);t.on("gatewayEvent",l),t.on("stateChange",d);let u=()=>{if(r)return;r=!0;let e=Math.round((Date.now()-a)/1e3);console.log(`[SSE] Client disconnected (${e}s, ${o} events forwarded)`),clearInterval(c),t.off("gatewayEvent",l),t.off("stateChange",d)};s.addEventListener("abort",u,{once:!0}),e._cleanup=u},cancel(e){let t=e._cleanup;t&&t()}}),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform",Connection:"keep-alive"}})}e.s(["GET",()=>y,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],10402);var E=e.i(10402);let w=new t.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/openclaw/events/route",pathname:"/api/openclaw/events",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/openclaw/events/route.ts",nextConfigOutput:"standalone",userland:E}),{workAsyncStorage:C,workUnitAsyncStorage:m,serverHooks:T}=w;function A(){return(0,r.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:m})}async function b(e,t,r){w.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/openclaw/events/route";g=g.replace(/\/index$/,"")||"/";let y=await w.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:E,params:C,nextConfig:m,parsedUrl:T,isDraftMode:A,prerenderManifest:b,routerServerContext:S,isOnDemandRevalidate:k,revalidateOnlyGenerated:q,resolvedPathname:N,clientReferenceManifest:O,serverActionsManifest:_}=y,D=(0,i.normalizeAppPath)(g),P=!!(b.dynamicRoutes[D]||b.routes[N]),I=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,T,!1):t.end("This page could not be found"),null);if(P&&!A){let e=!!b.routes[N],t=b.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(m.experimental.adapterPath)return await I();throw new x.NoFallbackError}}let j=null;!P||w.isDev||A||(j="/index"===(j=N)?"/":j);let H=!0===w.isDev||!P,U=P&&!H;_&&O&&(0,s.setManifestsSingleton)({page:g,clientReferenceManifest:O,serverActionsManifest:_});let $=e.method||"GET",M=(0,o.getTracer)(),F=M.getActiveScopeSpan(),K={params:C,prerenderManifest:b,renderOpts:{experimental:{authInterrupts:!!m.experimental.authInterrupts},cacheComponents:!!m.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:m.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,n,r,a)=>w.onRequestError(e,t,r,a,S)},sharedContext:{buildId:E}},L=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),G=d.NextRequestAdapter.fromNodeNextRequest(L,(0,d.signalFromNodeResponse)(t));try{let s=async e=>w.handle(G,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let n=M.getRootSpanAttributes();if(!n)return;if(n.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${n.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=n.get("next.route");if(r){let t=`${$} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t)}else e.updateName(`${$} ${g}`)}),i=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var o,l;let d=async({previousCacheEntry:n})=>{try{if(!i&&k&&q&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await s(a);e.fetchMetrics=K.renderOpts.fetchMetrics;let l=K.renderOpts.pendingWaitUntil;l&&r.waitUntil&&(r.waitUntil(l),l=void 0);let d=K.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(L,B,o,K.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(o.headers);d&&(t[f.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let n=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,r=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:n,expire:r}}}}catch(t){throw(null==n?void 0:n.isStale)&&await w.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:k})},!1,S),t}},c=await w.handleResponse({req:e,nextConfig:m,cacheKey:j,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:k,revalidateOnlyGenerated:q,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:i});if(!P)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==R.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});i||t.setHeader("x-nextjs-cache",k?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let x=(0,h.fromNodeOutgoingHttpHeaders)(c.value.headers);return i&&P||x.delete(f.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||x.get("Cache-Control")||x.set("Cache-Control",(0,v.getCacheControlHeader)(c.cacheControl)),await (0,p.sendResponse)(L,B,new Response(c.value.body,{headers:x,status:c.value.status||200})),null};F?await l(F):await M.withPropagatedContext(e.headers,()=>M.trace(c.BaseServerSpan.handleRequest,{spanName:`${$} ${g}`,kind:o.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},l))}catch(t){if(t instanceof x.NoFallbackError||await w.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:k})},!1,S),P)throw t;return await (0,p.sendResponse)(L,B,new Response(null,{status:500})),null}}e.s(["handler",()=>b,"patchFetch",()=>A,"routeModule",()=>w,"serverHooks",()=>T,"workAsyncStorage",()=>C,"workUnitAsyncStorage",()=>m],81439)}];
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__28c35c7d._.js.map
|