conductor-oss 0.7.0 → 0.8.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/README.md +173 -134
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +18 -2
- package/dist/backend.js.map +1 -1
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +13 -7
- package/dist/commands/dashboard.js.map +1 -1
- package/node_modules/@conductor-oss/core/dist/config.d.ts.map +1 -1
- package/node_modules/@conductor-oss/core/dist/config.js +6 -1
- package/node_modules/@conductor-oss/core/dist/config.js.map +1 -1
- package/package.json +8 -6
- package/web/.next/standalone/packages/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/packages/web/.next/app-path-routes-manifest.json +2 -0
- package/web/.next/standalone/packages/web/.next/build-manifest.json +7 -7
- package/web/.next/standalone/packages/web/.next/prerender-manifest.json +3 -3
- package/web/.next/standalone/packages/web/.next/routes-manifest.json +44 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error/page/build-manifest.json +5 -5
- package/web/.next/standalone/packages/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.rsc +7 -7
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_not-found/page/build-manifest.json +5 -5
- package/web/.next/standalone/packages/web/.next/server/app/_not-found/page/server-reference-manifest.json +7 -7
- package/web/.next/standalone/packages/web/.next/server/app/_not-found/page.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.html +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.rsc +11 -11
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_full.segment.rsc +11 -11
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_index.segment.rsc +6 -6
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/access/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/access/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/agents/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/agents/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/app-update/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/app-update/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/attachments/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/attachments/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/auth/session/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/auth/session/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/boards/comments/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/boards/comments/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/boards/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/boards/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/config/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/config/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/context-files/open/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/context-files/open/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/context-files/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/context-files/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/events/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/events/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/directory/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/directory/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/github/repos/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/github/repos/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/github/webhook/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/github/webhook/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/health/boards/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/health/boards/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/health/sessions/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/health/sessions/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/notifications/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/notifications/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/preferences/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/preferences/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/remote-access/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/remote-access/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/repositories/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/actions/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/actions/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/checks/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/checks/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/diff/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/diff/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/stream/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/stream/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feedback/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feedback/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/files/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/files/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/interrupt/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/interrupt/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/keys/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/keys/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/kill/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/kill/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/stream/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/stream/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/dom/route.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/dom/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/route.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/screenshot/route.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/screenshot/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/restore/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/restore/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/send/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/send/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/connection/route/app-paths-manifest.json +3 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/connection/route/build-manifest.json +11 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/connection/route/server-reference-manifest.json +4 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/connection/route.js +10 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/connection/route.js.map +5 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/connection/route.js.nft.json +1 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/connection/route_client-reference-manifest.js +2 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/snapshot/route/app-paths-manifest.json +3 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/snapshot/route/build-manifest.json +11 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/snapshot/route/server-reference-manifest.json +4 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/snapshot/route.js +10 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/snapshot/route.js.map +5 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/snapshot/route.js.nft.json +1 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/terminal/snapshot/route_client-reference-manifest.js +2 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/spawn/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/spawn/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/branches/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/branches/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/route.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/page/build-manifest.json +5 -5
- package/web/.next/standalone/packages/web/.next/server/app/page/react-loadable-manifest.json +4 -4
- package/web/.next/standalone/packages/web/.next/server/app/page/server-reference-manifest.json +7 -7
- package/web/.next/standalone/packages/web/.next/server/app/page.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page/build-manifest.json +5 -5
- package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page/server-reference-manifest.json +7 -7
- package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page/build-manifest.json +5 -5
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page/server-reference-manifest.json +7 -7
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page/build-manifest.json +5 -5
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page/server-reference-manifest.json +14 -14
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app-paths-manifest.json +2 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/26076_server_app_api_sessions_[id]_terminal_connection_route_actions_46c114ee.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/26076_server_app_api_sessions_[id]_terminal_snapshot_route_actions_cfb4de43.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/730ea_web__next-internal_server_app_api_sessions_[id]_restore_route_actions_41a4c356.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__b716459f._.js → [root-of-the-server]__08556fc3._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__624bcdc9._.js → [root-of-the-server]__0e496df1._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__9bf61231._.js → [root-of-the-server]__115b433b._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__70929198._.js → [root-of-the-server]__120a0868._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__17d710ef._.js → [root-of-the-server]__1a623333._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__262e987e._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__31053ac2._.js → [root-of-the-server]__2713bac9._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__8c576b6a._.js → [root-of-the-server]__2798ac7c._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__747e6415._.js → [root-of-the-server]__27b2bd14._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__a4b1a94c._.js → [root-of-the-server]__29d94573._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__732fc06e._.js → [root-of-the-server]__2b59cba9._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2ce39d51._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__3e507276._.js → [root-of-the-server]__2fea4a4c._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__59635ca5._.js → [root-of-the-server]__36559d88._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__f0ec1021._.js → [root-of-the-server]__4117784b._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__543bc377._.js → [root-of-the-server]__43b35d39._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__ba70a88e._.js → [root-of-the-server]__444bf146._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__fd0a681b._.js → [root-of-the-server]__45483f4b._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__98f4a7bd._.js → [root-of-the-server]__4644a89e._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4c78886c._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__e7aaee2d._.js → [root-of-the-server]__4cea5dca._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__33494588._.js → [root-of-the-server]__575c7392._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__eae97345._.js → [root-of-the-server]__57605af7._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__be233a9f._.js → [root-of-the-server]__57c8ca1a._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5e2b35cd._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__8ace49d1._.js → [root-of-the-server]__5f5433df._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6313c91e._.js +3 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__3dc4c761._.js → [root-of-the-server]__6a8b5dc7._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__3318d8a1._.js → [root-of-the-server]__717081d9._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__ae73aa49._.js → [root-of-the-server]__75668566._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__b4039db5._.js → [root-of-the-server]__7a6210dc._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__34e636e5._.js → [root-of-the-server]__7ca5b93b._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__b53b70e7._.js → [root-of-the-server]__8462ddf1._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__3937a996._.js → [root-of-the-server]__9e363e9c._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__4c5f7cab._.js → [root-of-the-server]__a0467c5b._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__9576223c._.js → [root-of-the-server]__a8d68307._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__82e86bb6._.js → [root-of-the-server]__ac79a67b._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__bcd0c846._.js → [root-of-the-server]__af5be1d9._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b3cd93ca._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__540ebc7f._.js → [root-of-the-server]__b7314f2a._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__bb2675cd._.js → [root-of-the-server]__bcbc6330._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__fe4c1384._.js → [root-of-the-server]__bfbdd808._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__b00db558._.js → [root-of-the-server]__c205eff4._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__c455995a._.js → [root-of-the-server]__c39ceb71._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c9cb9ac6._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cff9ddef._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__7c87a52f._.js → [root-of-the-server]__d65b8403._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__eb6e6bb9._.js → [root-of-the-server]__d7b9cb55._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__53daf5c6._.js → [root-of-the-server]__df103a4a._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ea845f9f._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__8ee7749b._.js → [root-of-the-server]__f5a16619._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__9940de77._.js → [root-of-the-server]__f62d8a1f._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__5df70a62._.js → [root-of-the-server]__f7c7ed71._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__520aa408._.js → [root-of-the-server]__fa5bbdc8._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__e385846c._.js → [root-of-the-server]__fed9223f._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/_2c837d66._.js +5 -5
- package/web/.next/standalone/packages/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_eaad1f33.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__000b8c99._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{[root-of-the-server]__4f387f9d._.js → [root-of-the-server]__10a850c6._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{[root-of-the-server]__7829c78d._.js → [root-of-the-server]__17f5cb6a._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__29d8d063._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{[root-of-the-server]__99387ae7._.js → [root-of-the-server]__6647f7ec._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__7bb2062e._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{[root-of-the-server]__a509d17d._.js → [root-of-the-server]__9f45b36b._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{[root-of-the-server]__bc8d015f._.js → [root-of-the-server]__f8f50c0b._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_0e1412de._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{_367680b9._.js → _1f11ad88._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_1fc34e32._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_230c0c14._.js +4 -4
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_4a52b10d._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{_b6d31783._.js → _532f707d._.js} +3 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_69e05fca._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_6cfd06c2._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_80efe193._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_b214b154._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_b8358e63._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_c0f0e227._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{_8982bbf3._.js → _de3b7194._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_f36ddaa9._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_226037d7._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{node_modules_@clerk_nextjs_dist_esm_app-router_3c8da5a6._.js → node_modules_@clerk_nextjs_dist_esm_app-router_aed062ea._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@radix-ui_d03fdd57._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@xterm_addon-fit_lib_addon-fit_mjs_9b7cb17b._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@xterm_addon-search_lib_addon-search_mjs_8d69d9d7._.js +11 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@xterm_xterm_lib_xterm_mjs_a1a7b9e9._.js +20 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_afb6e107._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_refresh-cw_50f1c1e7.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_next_dist_2df23979._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_cd51dad4.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_components_board_WorkspaceKanban_tsx_735b7999._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_components_sessions_SessionDetail_tsx_5fcad270._.js +6 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_features_dashboard_DashboardClient_tsx_81ae42b0._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/functions-config-manifest.json +3 -1
- package/web/.next/standalone/packages/web/.next/server/middleware-build-manifest.js +5 -5
- package/web/.next/standalone/packages/web/.next/server/pages/404.html +1 -1
- package/web/.next/standalone/packages/web/.next/server/pages/500.html +2 -2
- package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.json +15 -15
- package/web/.next/standalone/packages/web/.next/static/chunks/0cdc18649f440c71.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/0f7eb6d5a59ee3ae.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/12d33f33839d69eb.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/146ec959503d40d4.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/1fabe72716ad1fda.css +3 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/2d61dae0bfb5ab41.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/{c4c79d5d0b280aeb.js → 2f236954d6a65e12.js} +1 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/3cdf839644f79d43.js +18 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/3e3880b9a3d2d1d5.js +6 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/486ac8976a12f1e5.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/6850a6cda159c98d.js +1 -0
- package/web/.next/{static/chunks/06bdd070b8d25946.js → standalone/packages/web/.next/static/chunks/69be39811437728d.js} +1 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/6cec31da5f555e99.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/70d1e7a526f0f4e2.js +9 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/{ba2aa8b54e912820.js → 723acbe92d3f9e7e.js} +1 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/739c6f71243d76d8.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/a6ec1ab37eb7b410.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/af8bfb72187b7cbf.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/c993a1a4204fce88.js +4 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/ca3e38b4495a3d39.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/{45bd2451c2b0790c.js → caf02f8136b16992.js} +2 -2
- package/web/.next/standalone/packages/web/.next/static/chunks/d4269c59429734ad.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/{28eac764d6544827.js → e5bcec03f80af56a.js} +1 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/{turbopack-49f4119854e8206e.js → turbopack-26870d017b23fcf0.js} +1 -1
- package/web/.next/standalone/packages/web/next.config.ts +16 -0
- package/web/.next/standalone/packages/web/package.json +3 -1
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/terminal/connection/route.ts +64 -0
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/terminal/snapshot/route.ts +14 -0
- package/web/.next/standalone/packages/web/src/app/globals.css +12 -4
- package/web/.next/standalone/packages/web/src/components/Dashboard.tsx +1 -5
- package/web/.next/standalone/packages/web/src/components/TerminalView.tsx +528 -100
- package/web/.next/standalone/packages/web/src/components/board/WorkspaceKanban.tsx +3 -3
- package/web/.next/standalone/packages/web/src/components/layout/AppShell.tsx +3 -3
- package/web/.next/standalone/packages/web/src/components/layout/Sidebar.tsx +29 -18
- package/web/.next/standalone/packages/web/src/components/layout/TopBar.tsx +3 -3
- package/web/.next/standalone/packages/web/src/components/sessions/ChatPanel.tsx +61 -5
- package/web/.next/standalone/packages/web/src/components/sessions/SessionDetail.tsx +99 -46
- package/web/.next/standalone/packages/web/src/components/sessions/SessionPreview.tsx +231 -233
- package/web/.next/standalone/packages/web/src/components/sessions/SessionTerminal.tsx +1212 -0
- package/web/.next/standalone/packages/web/src/components/sessions/terminalInsert.ts +6 -0
- package/web/.next/standalone/packages/web/src/components/terminal/xtermTheme.ts +70 -0
- package/web/.next/standalone/packages/web/src/components/ui/Tabs.tsx +2 -2
- package/web/.next/standalone/packages/web/src/features/dashboard/DashboardClient.tsx +10 -12
- package/web/.next/standalone/packages/web/src/features/sessions/SessionPageClient.tsx +2 -2
- package/web/.next/standalone/packages/web/src/lib/devPreviewBrowser.ts +15 -3
- package/web/.next/static/chunks/0cdc18649f440c71.js +1 -0
- package/web/.next/static/chunks/0f7eb6d5a59ee3ae.js +1 -0
- package/web/.next/static/chunks/12d33f33839d69eb.js +1 -0
- package/web/.next/static/chunks/146ec959503d40d4.js +1 -0
- package/web/.next/static/chunks/1fabe72716ad1fda.css +3 -0
- package/web/.next/static/chunks/2d61dae0bfb5ab41.js +1 -0
- package/web/.next/static/chunks/{c4c79d5d0b280aeb.js → 2f236954d6a65e12.js} +1 -1
- package/web/.next/static/chunks/3cdf839644f79d43.js +18 -0
- package/web/.next/static/chunks/3e3880b9a3d2d1d5.js +6 -0
- package/web/.next/static/chunks/486ac8976a12f1e5.js +1 -0
- package/web/.next/static/chunks/6850a6cda159c98d.js +1 -0
- package/web/.next/{standalone/packages/web/.next/static/chunks/06bdd070b8d25946.js → static/chunks/69be39811437728d.js} +1 -1
- package/web/.next/static/chunks/6cec31da5f555e99.js +1 -0
- package/web/.next/static/chunks/70d1e7a526f0f4e2.js +9 -0
- package/web/.next/static/chunks/{ba2aa8b54e912820.js → 723acbe92d3f9e7e.js} +1 -1
- package/web/.next/static/chunks/739c6f71243d76d8.js +1 -0
- package/web/.next/static/chunks/a6ec1ab37eb7b410.js +1 -0
- package/web/.next/static/chunks/af8bfb72187b7cbf.js +1 -0
- package/web/.next/static/chunks/c993a1a4204fce88.js +4 -0
- package/web/.next/static/chunks/ca3e38b4495a3d39.js +1 -0
- package/web/.next/static/chunks/{45bd2451c2b0790c.js → caf02f8136b16992.js} +2 -2
- package/web/.next/static/chunks/d4269c59429734ad.js +1 -0
- package/web/.next/static/chunks/{28eac764d6544827.js → e5bcec03f80af56a.js} +1 -1
- package/web/.next/static/chunks/{turbopack-49f4119854e8206e.js → turbopack-26870d017b23fcf0.js} +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__29091976._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__b388693f._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__bc9ab6c6._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__d1efcbf0._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_e1c18705._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_af0671be._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@radix-ui_02f0d3f0._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_message-square_2e76b8d9.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_components_ui_Tooltip_tsx_6becc8ca._.js +0 -3
- package/web/.next/standalone/packages/web/.next/static/chunks/07f3b9a104ce0ff4.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/1004422d31074d62.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/2bc11b604b131190.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/30ababddac1b82dc.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/5f2995585c1ac66a.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/64f0033534ca1ad3.css +0 -3
- package/web/.next/standalone/packages/web/.next/static/chunks/7daf09cc7388f426.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/a28bcda8dd6b68ee.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/aabc80195233b4da.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/b31c8692e1da69ef.js +0 -6
- package/web/.next/standalone/packages/web/.next/static/chunks/b6069d0eb07a978f.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/c2caa064748bb0b5.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/c5f8e486166298c2.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/d6a81d2f8b98b4be.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/e9d0e95bbaa0f4fb.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/ebaa0c535c4135f1.js +0 -1
- package/web/.next/static/chunks/07f3b9a104ce0ff4.js +0 -1
- package/web/.next/static/chunks/1004422d31074d62.js +0 -1
- package/web/.next/static/chunks/2bc11b604b131190.js +0 -1
- package/web/.next/static/chunks/30ababddac1b82dc.js +0 -1
- package/web/.next/static/chunks/5f2995585c1ac66a.js +0 -1
- package/web/.next/static/chunks/64f0033534ca1ad3.css +0 -3
- package/web/.next/static/chunks/7daf09cc7388f426.js +0 -1
- package/web/.next/static/chunks/a28bcda8dd6b68ee.js +0 -1
- package/web/.next/static/chunks/aabc80195233b4da.js +0 -1
- package/web/.next/static/chunks/b31c8692e1da69ef.js +0 -6
- package/web/.next/static/chunks/b6069d0eb07a978f.js +0 -1
- package/web/.next/static/chunks/c2caa064748bb0b5.js +0 -1
- package/web/.next/static/chunks/c5f8e486166298c2.js +0 -1
- package/web/.next/static/chunks/d6a81d2f8b98b4be.js +0 -1
- package/web/.next/static/chunks/e9d0e95bbaa0f4fb.js +0 -1
- package/web/.next/static/chunks/ebaa0c535c4135f1.js +0 -1
- /package/web/.next/standalone/packages/web/.next/static/{X1r0VPbixkgEYAELz0R1i → 0erIuL9LSGhZ5_YeWB5Mc}/_buildManifest.js +0 -0
- /package/web/.next/standalone/packages/web/.next/static/{X1r0VPbixkgEYAELz0R1i → 0erIuL9LSGhZ5_YeWB5Mc}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/packages/web/.next/static/{X1r0VPbixkgEYAELz0R1i → 0erIuL9LSGhZ5_YeWB5Mc}/_ssgManifest.js +0 -0
- /package/web/.next/static/{X1r0VPbixkgEYAELz0R1i → 0erIuL9LSGhZ5_YeWB5Mc}/_buildManifest.js +0 -0
- /package/web/.next/static/{X1r0VPbixkgEYAELz0R1i → 0erIuL9LSGhZ5_YeWB5Mc}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{X1r0VPbixkgEYAELz0R1i → 0erIuL9LSGhZ5_YeWB5Mc}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { ITerminalOptions } from "@xterm/xterm";
|
|
2
|
+
|
|
3
|
+
export const SUPERSET_TERMINAL_FONT_FAMILY = [
|
|
4
|
+
"MesloLGM Nerd Font",
|
|
5
|
+
"MesloLGM NF",
|
|
6
|
+
"MesloLGS NF",
|
|
7
|
+
"MesloLGS Nerd Font",
|
|
8
|
+
"Hack Nerd Font",
|
|
9
|
+
"FiraCode Nerd Font",
|
|
10
|
+
"JetBrainsMono Nerd Font",
|
|
11
|
+
"CaskaydiaCove Nerd Font",
|
|
12
|
+
"Menlo",
|
|
13
|
+
"Monaco",
|
|
14
|
+
'"Courier New"',
|
|
15
|
+
"SF Mono",
|
|
16
|
+
"SF Pro",
|
|
17
|
+
"monospace",
|
|
18
|
+
].join(", ");
|
|
19
|
+
|
|
20
|
+
const SUPERSET_TERMINAL_THEME_DARK: NonNullable<ITerminalOptions["theme"]> = {
|
|
21
|
+
background: "#000000",
|
|
22
|
+
foreground: "#ffffff",
|
|
23
|
+
cursor: "#ffffff",
|
|
24
|
+
cursorAccent: "#000000",
|
|
25
|
+
selectionBackground: "#4d4d4d",
|
|
26
|
+
black: "#2e3436",
|
|
27
|
+
red: "#cc0000",
|
|
28
|
+
green: "#4e9a06",
|
|
29
|
+
yellow: "#c4a000",
|
|
30
|
+
blue: "#3465a4",
|
|
31
|
+
magenta: "#75507b",
|
|
32
|
+
cyan: "#06989a",
|
|
33
|
+
white: "#d3d7cf",
|
|
34
|
+
brightBlack: "#555753",
|
|
35
|
+
brightRed: "#ef2929",
|
|
36
|
+
brightGreen: "#8ae234",
|
|
37
|
+
brightYellow: "#fce94f",
|
|
38
|
+
brightBlue: "#729fcf",
|
|
39
|
+
brightMagenta: "#ad7fa8",
|
|
40
|
+
brightCyan: "#34e2e2",
|
|
41
|
+
brightWhite: "#eeeeec",
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const SUPERSET_TERMINAL_THEME_LIGHT: NonNullable<ITerminalOptions["theme"]> = {
|
|
45
|
+
background: "#ffffff",
|
|
46
|
+
foreground: "#000000",
|
|
47
|
+
cursor: "#000000",
|
|
48
|
+
cursorAccent: "#ffffff",
|
|
49
|
+
selectionBackground: "#add6ff",
|
|
50
|
+
black: "#2e3436",
|
|
51
|
+
red: "#cc0000",
|
|
52
|
+
green: "#4e9a06",
|
|
53
|
+
yellow: "#c4a000",
|
|
54
|
+
blue: "#3465a4",
|
|
55
|
+
magenta: "#75507b",
|
|
56
|
+
cyan: "#06989a",
|
|
57
|
+
white: "#d3d7cf",
|
|
58
|
+
brightBlack: "#555753",
|
|
59
|
+
brightRed: "#ef2929",
|
|
60
|
+
brightGreen: "#8ae234",
|
|
61
|
+
brightYellow: "#fce94f",
|
|
62
|
+
brightBlue: "#729fcf",
|
|
63
|
+
brightMagenta: "#ad7fa8",
|
|
64
|
+
brightCyan: "#34e2e2",
|
|
65
|
+
brightWhite: "#eeeeec",
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export function getSupersetLikeTerminalTheme(isLight: boolean): NonNullable<ITerminalOptions["theme"]> {
|
|
69
|
+
return isLight ? SUPERSET_TERMINAL_THEME_LIGHT : SUPERSET_TERMINAL_THEME_DARK;
|
|
70
|
+
}
|
|
@@ -13,7 +13,7 @@ export const TabsList = forwardRef<
|
|
|
13
13
|
<TabsPrimitive.List
|
|
14
14
|
ref={ref}
|
|
15
15
|
className={cn(
|
|
16
|
-
"inline-flex max-w-full items-center gap-0.5 overflow-x-auto rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] p-0.5 whitespace-nowrap [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
|
|
16
|
+
"inline-flex max-w-full items-center gap-0.5 overflow-x-auto rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] p-0.5 whitespace-nowrap touch-pan-x [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
|
|
17
17
|
className,
|
|
18
18
|
)}
|
|
19
19
|
{...props}
|
|
@@ -28,7 +28,7 @@ export const TabsTrigger = forwardRef<
|
|
|
28
28
|
<TabsPrimitive.Trigger
|
|
29
29
|
ref={ref}
|
|
30
30
|
className={cn(
|
|
31
|
-
"inline-flex shrink-0 items-center gap-1.5 rounded-[3px] px-2.5 py-1.5 text-[12px] text-[var(--vk-text-muted)]",
|
|
31
|
+
"inline-flex min-h-[34px] shrink-0 items-center gap-1.5 rounded-[3px] px-2.5 py-1.5 text-[12px] text-[var(--vk-text-muted)]",
|
|
32
32
|
"data-[state=active]:bg-[var(--vk-bg-active)] data-[state=active]:text-[var(--vk-text-normal)]",
|
|
33
33
|
"hover:text-[var(--vk-text-normal)]",
|
|
34
34
|
"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--vk-orange)]",
|
|
@@ -1490,7 +1490,6 @@ export default function DashboardClient() {
|
|
|
1490
1490
|
|
|
1491
1491
|
const handleCreateSession = useCallback(async (options?: CreateSessionOptions) => {
|
|
1492
1492
|
const trimmedPrompt = prompt.trim();
|
|
1493
|
-
if (!trimmedPrompt) return;
|
|
1494
1493
|
const resolvedModel = resolveModelSelectionValue(launchModelSelection);
|
|
1495
1494
|
const resolvedReasoningEffort = resolveReasoningSelectionValue(launchModelSelection);
|
|
1496
1495
|
|
|
@@ -1552,8 +1551,7 @@ export default function DashboardClient() {
|
|
|
1552
1551
|
{
|
|
1553
1552
|
projectId,
|
|
1554
1553
|
sessionId: data.session.id,
|
|
1555
|
-
|
|
1556
|
-
tab: "chat",
|
|
1554
|
+
tab: null,
|
|
1557
1555
|
},
|
|
1558
1556
|
"push",
|
|
1559
1557
|
);
|
|
@@ -1673,7 +1671,7 @@ export default function DashboardClient() {
|
|
|
1673
1671
|
{
|
|
1674
1672
|
projectId: matchedSession?.projectId ?? selectedProjectId ?? null,
|
|
1675
1673
|
sessionId: id,
|
|
1676
|
-
tab:
|
|
1674
|
+
tab: null,
|
|
1677
1675
|
},
|
|
1678
1676
|
"push",
|
|
1679
1677
|
);
|
|
@@ -1815,7 +1813,7 @@ export default function DashboardClient() {
|
|
|
1815
1813
|
: "text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]"
|
|
1816
1814
|
}`}
|
|
1817
1815
|
>
|
|
1818
|
-
|
|
1816
|
+
CLI launchpad
|
|
1819
1817
|
</button>
|
|
1820
1818
|
<button
|
|
1821
1819
|
type="button"
|
|
@@ -1841,7 +1839,7 @@ export default function DashboardClient() {
|
|
|
1841
1839
|
|
|
1842
1840
|
const workspaceContent = useMemo(() => {
|
|
1843
1841
|
if (selectedSessionId) {
|
|
1844
|
-
return <SessionDetail sessionId={selectedSessionId} />;
|
|
1842
|
+
return <SessionDetail key={selectedSessionId} sessionId={selectedSessionId} />;
|
|
1845
1843
|
}
|
|
1846
1844
|
|
|
1847
1845
|
if (selectedProjectId !== null) {
|
|
@@ -1957,7 +1955,7 @@ function NewWorkspaceDialog({
|
|
|
1957
1955
|
const [path, setPath] = useState("");
|
|
1958
1956
|
const [defaultBranch, setDefaultBranch] = useState("main");
|
|
1959
1957
|
const [agent, setAgent] = useState(defaultAgent);
|
|
1960
|
-
const [useWorktree, setUseWorktree] = useState(
|
|
1958
|
+
const [useWorktree, setUseWorktree] = useState(false);
|
|
1961
1959
|
const [initializeGit, setInitializeGit] = useState(true);
|
|
1962
1960
|
const [githubRepos, setGithubRepos] = useState<GitHubRepo[]>([]);
|
|
1963
1961
|
const [githubReposLoading, setGithubReposLoading] = useState(false);
|
|
@@ -1980,7 +1978,7 @@ function NewWorkspaceDialog({
|
|
|
1980
1978
|
setPath("");
|
|
1981
1979
|
setDefaultBranch("main");
|
|
1982
1980
|
setInitializeGit(true);
|
|
1983
|
-
setUseWorktree(
|
|
1981
|
+
setUseWorktree(false);
|
|
1984
1982
|
setAgent(defaultAgent);
|
|
1985
1983
|
setGithubRepos([]);
|
|
1986
1984
|
setGithubReposLoaded(false);
|
|
@@ -3032,7 +3030,7 @@ const CreateWorkspacePanel = memo(function CreateWorkspacePanel({
|
|
|
3032
3030
|
const [issueId, setIssueId] = useState("");
|
|
3033
3031
|
const [availableTasks, setAvailableTasks] = useState<LinkedBoardTask[]>([]);
|
|
3034
3032
|
const [taskLoading, setTaskLoading] = useState(false);
|
|
3035
|
-
const [useWorktree, setUseWorktree] = useState(
|
|
3033
|
+
const [useWorktree, setUseWorktree] = useState(false);
|
|
3036
3034
|
const [permissionMode, setPermissionMode] = useState<CreatePermissionMode>("default");
|
|
3037
3035
|
|
|
3038
3036
|
useEffect(() => {
|
|
@@ -3348,7 +3346,7 @@ const CreateWorkspacePanel = memo(function CreateWorkspacePanel({
|
|
|
3348
3346
|
<textarea
|
|
3349
3347
|
value={prompt}
|
|
3350
3348
|
onChange={(e) => setPrompt(e.target.value)}
|
|
3351
|
-
placeholder="
|
|
3349
|
+
placeholder="Optional launch prompt. Leave empty to open the native CLI."
|
|
3352
3350
|
rows={1}
|
|
3353
3351
|
className="min-h-[24px] w-full resize-none bg-transparent pr-8 text-[16px] leading-[24px] text-[var(--vk-text-normal)] outline-none placeholder:text-[var(--vk-text-muted)]"
|
|
3354
3352
|
/>
|
|
@@ -3567,10 +3565,10 @@ const CreateWorkspacePanel = memo(function CreateWorkspacePanel({
|
|
|
3567
3565
|
useWorktree,
|
|
3568
3566
|
permissionMode,
|
|
3569
3567
|
})}
|
|
3570
|
-
disabled={creating ||
|
|
3568
|
+
disabled={creating || !effectiveProjectId}
|
|
3571
3569
|
className="inline-flex min-h-[29px] items-center justify-center rounded-[3px] bg-[var(--vk-bg-hover)] px-[8px] py-[6.5px] text-[16px] leading-[16px] text-[var(--vk-text-strong)] transition-colors hover:bg-[var(--vk-bg-active)] disabled:cursor-not-allowed disabled:opacity-50"
|
|
3572
3570
|
>
|
|
3573
|
-
{creating ? <Loader2 className="h-4 w-4 animate-spin" /> : "
|
|
3571
|
+
{creating ? <Loader2 className="h-4 w-4 animate-spin" /> : "Launch"}
|
|
3574
3572
|
</button>
|
|
3575
3573
|
</div>
|
|
3576
3574
|
</div>
|
|
@@ -109,7 +109,7 @@ export default function SessionPageClient() {
|
|
|
109
109
|
sessions={dashboardSessions}
|
|
110
110
|
selectedSessionId={params.id}
|
|
111
111
|
onSelectSession={(sessionId) => {
|
|
112
|
-
router.push(`/sessions/${encodeURIComponent(sessionId)}
|
|
112
|
+
router.push(`/sessions/${encodeURIComponent(sessionId)}`);
|
|
113
113
|
closeSidebarOnMobile();
|
|
114
114
|
}}
|
|
115
115
|
onArchiveSession={handleArchiveSession}
|
|
@@ -123,7 +123,7 @@ export default function SessionPageClient() {
|
|
|
123
123
|
title={topBarTitle}
|
|
124
124
|
/>
|
|
125
125
|
<div className="min-h-0 flex-1 overflow-hidden">
|
|
126
|
-
<SessionDetail sessionId={params.id} />
|
|
126
|
+
<SessionDetail key={params.id} sessionId={params.id} />
|
|
127
127
|
</div>
|
|
128
128
|
</AppShell>
|
|
129
129
|
);
|
|
@@ -149,14 +149,23 @@ function normalizeNavigationInput(value: string): string {
|
|
|
149
149
|
return trimmed;
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
+
function isLocalHost(hostname: string): boolean {
|
|
153
|
+
const normalized = normalizeNavigationHostname(hostname);
|
|
154
|
+
return LOCAL_NAVIGATION_HOSTS.includes(normalized as (typeof LOCAL_NAVIGATION_HOSTS)[number]);
|
|
155
|
+
}
|
|
156
|
+
|
|
152
157
|
function buildNavigationCandidates(value: string): string[] {
|
|
153
158
|
const normalizedInput = normalizeNavigationInput(value);
|
|
154
159
|
try {
|
|
155
160
|
const parsed = new URL(normalizedInput);
|
|
156
161
|
const normalized = parsed.toString();
|
|
157
162
|
const hostname = normalizeNavigationHostname(parsed.hostname);
|
|
158
|
-
|
|
159
|
-
|
|
163
|
+
|
|
164
|
+
// SECURITY: Only allow navigation to local addresses to prevent SSRF
|
|
165
|
+
if (!isLocalHost(hostname)) {
|
|
166
|
+
throw new Error(
|
|
167
|
+
`Navigation blocked: only localhost URLs are allowed. Got hostname "${parsed.hostname}".`,
|
|
168
|
+
);
|
|
160
169
|
}
|
|
161
170
|
|
|
162
171
|
const variants = new Set<string>([normalized]);
|
|
@@ -166,7 +175,10 @@ function buildNavigationCandidates(value: string): string[] {
|
|
|
166
175
|
variants.add(candidate.toString());
|
|
167
176
|
}
|
|
168
177
|
return [...variants];
|
|
169
|
-
} catch {
|
|
178
|
+
} catch (error) {
|
|
179
|
+
if (error instanceof Error && error.message.startsWith("Navigation blocked:")) {
|
|
180
|
+
throw error;
|
|
181
|
+
}
|
|
170
182
|
return [normalizedInput];
|
|
171
183
|
}
|
|
172
184
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,94102,99647,61555,40160,e=>{"use strict";var t=e.i(71645);function a(){return window.innerWidth>=1024}function r(){let[e,r]=(0,t.useState)(!1),[n,s]=(0,t.useState)(!0),l=(0,t.useCallback)(()=>{a()?s(e=>!e):r(e=>!e)},[]);return{mobileSidebarOpen:e,desktopSidebarOpen:n,toggleSidebar:l,closeSidebarOnMobile:(0,t.useCallback)(()=>{a()||r(!1)},[]),syncSidebarForViewport:(0,t.useCallback)(()=>{a()?s(!0):r(!1)},[])}}e.s(["useResponsiveSidebarState",()=>r],94102);var n=e.i(75254);let s=(0,n.default)("panel-left-open",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);e.s(["PanelLeftOpen",()=>s],99647);let l=(0,n.default)("panel-right-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M15 3v18",key:"14nvp0"}],["path",{d:"m8 9 3 3-3 3",key:"12hl5m"}]]);e.s(["PanelRightClose",()=>l],61555);let i=(0,n.default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);e.s(["Download",()=>i],40160)},90092,e=>{"use strict";let t=(0,e.i(75254).default)("refresh-ccw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]]);e.s(["RefreshCcw",()=>t],90092)},36832,80235,45241,e=>{"use strict";var t=e.i(43476),a=e.i(71645),r=e.i(99647),n=e.i(61555),s=e.i(18620),l=e.i(43531),i=e.i(74886),o=e.i(40160),c=e.i(31278),d=e.i(90092),u=e.i(37727),m=e.i(11077),x=e.i(97878);let p="conductor-dismissed-update-version";function h(){let[e,r]=(0,a.useState)(null),[n,h]=(0,a.useState)(null),[v,b]=(0,a.useState)(null),[f,g]=(0,a.useState)(!1),[k,w]=(0,a.useState)(!1),[y,j]=(0,a.useState)(!1),N=(0,a.useCallback)(async(e=!1)=>{try{let t=await fetch(`/api/app-update${e?"?force=1":""}`,{cache:"no-store"}),a=await t.json().catch(()=>null);if(!t.ok)throw Error("string"==typeof a?.error?a.error:`Failed to load update status (${t.status})`);r(a),h(null)}catch(e){h(e instanceof Error?e.message:"Failed to load update status.")}},[]);(0,a.useEffect)(()=>{try{let e=window.localStorage.getItem(p);b(e&&e.length>0?e:null)}catch{}N(!0);let e=(0,x.subscribeToAppUpdateEvents)(e=>{e&&(r(e),h(null))}),t=()=>{"visible"===document.visibilityState&&N(!1)};return window.addEventListener("focus",t),document.addEventListener("visibilitychange",t),()=>{e(),window.removeEventListener("focus",t),document.removeEventListener("visibilitychange",t)}},[N]);let C=e?.latestVersion&&v===e.latestVersion,S=!!e?.restarting||y,A=(0,a.useMemo)(()=>!!e?.enabled&&(!!S||"idle"!==e.jobStatus||!C&&e.updateAvailable),[C,S,e]);async function E(){e?.updateCommand&&(await navigator.clipboard.writeText(e.updateCommand),g(!0),window.setTimeout(()=>g(!1),1400))}async function M(){w(!0);try{let e=await fetch("/api/app-update",{method:"POST",headers:{"content-type":"application/json"}}),t=await e.json().catch(()=>null);if(!e.ok)throw Error("string"==typeof t?.error?t.error:`Update failed (${e.status})`);r(t),h(null)}catch(e){h(e instanceof Error?e.message:"Failed to trigger update.")}finally{w(!1)}}let R=(0,a.useCallback)(async()=>{let e=Date.now()+6e4;for(;Date.now()<e;){try{if((await fetch("/api/health",{cache:"no-store"})).ok)return void window.location.reload()}catch{}await new Promise(e=>window.setTimeout(e,1e3))}j(!1),h("Restart started, but the dashboard did not come back in time. Reload manually.")},[]);async function L(){try{let e=await fetch("/api/app-update",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({action:"restart"})}),t=await e.json().catch(()=>null);if(!e.ok)throw Error("string"==typeof t?.error?t.error:`Restart failed (${e.status})`);r(t),h(null)}catch(e){h(e instanceof Error?e.message:"Failed to restart Conductor.")}}return((0,a.useEffect)(()=>{e?.restarting&&!y&&(j(!0),R())},[y,e?.restarting,R]),A)?(0,t.jsx)("div",{className:"pointer-events-none fixed bottom-3 right-3 z-[70] w-[min(calc(100vw-1.5rem),24rem)] sm:bottom-4 sm:right-4",children:(0,t.jsxs)("section",{className:(0,s.cn)("pointer-events-auto rounded-[14px] border bg-[var(--vk-bg-panel)] p-4 shadow-[0_16px_40px_rgba(0,0,0,0.35)]",e?.jobStatus==="failed"?"border-[color:color-mix(in_srgb,var(--vk-red)_55%,var(--vk-border))]":"border-[var(--vk-border)]"),children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[S||e?.jobStatus==="running"?(0,t.jsx)(c.Loader2,{className:"h-4 w-4 animate-spin text-[var(--vk-orange)]"}):e?.jobStatus==="completed"?(0,t.jsx)(l.Check,{className:"h-4 w-4 text-[var(--status-ready)]"}):e?.jobStatus==="failed"?(0,t.jsx)(d.RefreshCcw,{className:"h-4 w-4 text-[var(--vk-red)]"}):(0,t.jsx)(o.Download,{className:"h-4 w-4 text-[var(--vk-orange)]"}),(0,t.jsx)("h2",{className:"truncate text-[13px] font-semibold text-[var(--vk-text-normal)]",children:e?e.restarting?"Restarting Conductor":"running"===e.jobStatus?"Updating Conductor":"completed"===e.jobStatus?"Conductor updated":"failed"===e.jobStatus?"Update failed":e.latestVersion?`Conductor ${e.latestVersion} is available`:"Conductor update available":"Conductor update"})]}),(0,t.jsx)("p",{className:"mt-2 text-[12px] leading-5 text-[var(--vk-text-muted)]",children:e?function(e){if(e.restarting)return"The launcher is restarting the runtime. This tab will reconnect automatically once it is ready.";if("running"===e.jobStatus)return e.jobMessage??"Installing the latest version in the background.";if("completed"===e.jobStatus)return e.jobMessage??"The latest version has been installed. Restart Conductor to use it.";if("failed"===e.jobStatus)return e.jobMessage??"The update command did not finish successfully.";let t=e.currentVersion?`You are running ${e.currentVersion}. `:"";return e.canAutoUpdate?`${t}Install the new release now and restart when it finishes.`:"npx"===e.installMode?`${t}Copy the restart command, run it in a terminal, and the next launch will use the latest release.`:`${t}Copy the update command, run it in a terminal, then restart Conductor.`}(e):"Checking for updates..."})]}),(0,t.jsx)("button",{type:"button",onClick:function(){if(e?.latestVersion){try{window.localStorage.setItem(p,e.latestVersion)}catch{}b(e.latestVersion);return}r(e=>e?{...e,enabled:!1}:e)},className:"inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-[7px] text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)] hover:text-[var(--vk-text-normal)]","aria-label":"Dismiss update notice",children:(0,t.jsx)(u.X,{className:"h-4 w-4"})})]}),e?.updateCommand?(0,t.jsx)("div",{className:"mt-3 rounded-[10px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] px-3 py-2 font-mono text-[11px] leading-5 text-[var(--vk-text-muted)]",children:e.updateCommand}):null,e?(0,t.jsx)("p",{className:"mt-2 text-[11px] leading-5 text-[var(--vk-text-faint)]",children:function(e){switch(e){case"npx":return"This session was launched through npx. Copy the restart command, run it in a terminal, and the next launch will use the latest package.";case"unknown":return"Automatic updates are unavailable for this install.";default:return null}}(e.installMode)??(e.restartRequired?"Restart the current Conductor process after the installer completes.":"Update state streams from the running Conductor runtime.")}):null,n?(0,t.jsx)("p",{className:"mt-2 text-[11px] text-[var(--vk-red)]",children:n}):e?.error?(0,t.jsx)("p",{className:"mt-2 text-[11px] text-[var(--vk-red)]",children:e.error}):null,e?.logsTail&&"failed"===e.jobStatus?(0,t.jsx)("pre",{className:"mt-2 max-h-32 overflow-auto rounded-[10px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] p-2 text-[10px] leading-4 text-[var(--vk-text-faint)]",children:e.logsTail}):null,(0,t.jsxs)("div",{className:"mt-3 flex items-center justify-end gap-2",children:[e?.jobStatus==="failed"&&e.canAutoUpdate?(0,t.jsxs)(m.Button,{type:"button",size:"sm",variant:"primary",onClick:()=>void M(),disabled:k,children:[k?(0,t.jsx)(c.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(d.RefreshCcw,{className:"h-3.5 w-3.5"}),"Retry"]}):null,e?.jobStatus==="idle"&&e.canAutoUpdate?(0,t.jsxs)(m.Button,{type:"button",size:"sm",variant:"primary",onClick:()=>void M(),disabled:k,children:[k?(0,t.jsx)(c.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(o.Download,{className:"h-3.5 w-3.5"}),"Update now"]}):null,e?.jobStatus==="idle"&&!e.canAutoUpdate&&e.updateCommand?(0,t.jsxs)(m.Button,{type:"button",size:"sm",variant:"outline",onClick:()=>void E(),children:[f?(0,t.jsx)(l.Check,{className:"h-3.5 w-3.5 text-[var(--status-ready)]"}):(0,t.jsx)(i.Copy,{className:"h-3.5 w-3.5"}),f?"Copied":"npx"===e.installMode?"Copy restart command":"Copy command"]}):null,e?.restartRequired&&e.canRestart&&!e.restarting&&!y?(0,t.jsxs)(m.Button,{type:"button",size:"sm",variant:"primary",onClick:()=>void L(),children:[(0,t.jsx)(d.RefreshCcw,{className:"h-3.5 w-3.5"}),"Restart now"]}):null,e?.restarting||y?(0,t.jsxs)(m.Button,{type:"button",size:"sm",variant:"primary",disabled:!0,children:[(0,t.jsx)(c.Loader2,{className:"h-3.5 w-3.5 animate-spin"}),"Restarting"]}):null]})]})}):null}let v="conductor-workspace-sidebar-width";function b({sidebar:e,children:l,mobileSidebarOpen:i,desktopSidebarOpen:o,onToggleSidebar:c}){let[d,u]=(0,a.useState)(356),[m,x]=(0,a.useState)(!1);(0,a.useEffect)(()=>{try{let e=window.localStorage.getItem(v),t=e?Number.parseInt(e,10):NaN;Number.isFinite(t)&&u(Math.min(460,Math.max(296,t)))}catch{}},[]),(0,a.useEffect)(()=>{if(!m)return;let e=e=>{u(Math.min(460,Math.max(296,e.clientX)))},t=()=>{x(!1)};return window.addEventListener("mousemove",e),window.addEventListener("mouseup",t),document.body.style.userSelect="none",document.body.style.cursor="col-resize",()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",t),document.body.style.userSelect="",document.body.style.cursor="";try{window.localStorage.setItem(v,String(d))}catch{}}},[m,d]);let p={"--workspace-sidebar-width":`${d}px`};return(0,t.jsxs)("div",{style:p,className:"relative flex h-dvh min-h-[100dvh] w-full max-w-full overflow-hidden bg-[var(--vk-bg-main)] text-[var(--vk-text-normal)] [padding-top:env(safe-area-inset-top)] [padding-bottom:env(safe-area-inset-bottom)]",children:[i&&(0,t.jsx)("button",{type:"button",className:"absolute inset-0 z-20 bg-black/45 lg:hidden",onClick:c,"aria-label":"Close workspace panel"}),(0,t.jsx)("aside",{className:(0,s.cn)("absolute inset-y-0 left-0 z-30 flex h-full w-full max-w-none flex-col border-r border-[var(--vk-border)] bg-[var(--vk-bg-panel)] transition-[transform,width] duration-200 sm:w-[min(90vw,var(--workspace-sidebar-width))] sm:max-w-[28rem]",i?"translate-x-0":"-translate-x-full",o?"lg:w-[var(--workspace-sidebar-width)]":"lg:w-0 lg:overflow-hidden lg:border-r-0","lg:relative lg:left-auto lg:translate-x-0"),children:e}),o?(0,t.jsx)("div",{className:"absolute bottom-0 left-[var(--workspace-sidebar-width)] top-0 z-30 hidden w-2 -translate-x-1/2 cursor-col-resize lg:block",onMouseDown:()=>x(!0),"aria-hidden":"true",children:(0,t.jsx)("div",{className:"mx-auto h-full w-px bg-transparent transition-colors hover:bg-[var(--vk-border)]"})}):null,o&&(0,t.jsx)("button",{type:"button",onClick:c,className:"absolute left-[var(--workspace-sidebar-width)] top-2 z-40 hidden h-7 w-7 -translate-x-1/2 items-center justify-center rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] text-[var(--vk-text-muted)] shadow-[0_0_0_1px_rgba(0,0,0,0.25)] hover:bg-[var(--vk-bg-hover)] lg:inline-flex","aria-label":"Hide workspace panel",children:(0,t.jsx)(n.PanelRightClose,{className:"h-5 w-5"})}),(0,t.jsxs)("main",{className:"relative flex min-w-0 flex-1 flex-col overflow-hidden bg-[var(--vk-bg-main)]",children:[!i&&(0,t.jsx)("button",{type:"button",onClick:c,className:"absolute left-2 top-2 z-40 inline-flex h-8 w-8 items-center justify-center rounded-[6px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] text-[var(--vk-text-muted)] shadow-[0_10px_24px_rgba(0,0,0,0.28)] hover:bg-[var(--vk-bg-hover)] lg:hidden","aria-label":"Open workspace panel",children:(0,t.jsx)(r.PanelLeftOpen,{className:"h-5 w-5"})}),!o&&(0,t.jsx)("button",{type:"button",onClick:c,className:"absolute left-2 top-2 z-40 hidden h-7 w-7 items-center justify-center rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)] lg:inline-flex","aria-label":"Open workspace panel",children:(0,t.jsx)(r.PanelLeftOpen,{className:"h-5 w-5"})}),l]}),(0,t.jsx)(h,{})]})}e.s(["AppShell",()=>b],36832);var f=e.i(75254);let g=(0,f.default)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),k=(0,a.memo)(function({title:e,onOpenPreferences:a}){return(0,t.jsxs)("header",{className:"flex h-11 items-center border-b border-[var(--vk-border)] bg-[var(--vk-bg-panel)] pl-12 pr-3 text-[13px] text-[var(--vk-text-muted)] sm:h-14 sm:px-5 sm:text-[14px]",children:[(0,t.jsx)("div",{className:"min-w-0 flex-1 text-left sm:text-center",children:(0,t.jsx)("span",{className:"block truncate font-medium tracking-[0.01em] text-[var(--vk-text-normal)]",children:e??"All Projects"})}),a?(0,t.jsx)("div",{className:"ml-1 flex shrink-0",children:(0,t.jsx)("button",{type:"button",onClick:a,className:"inline-flex h-9 w-9 items-center justify-center rounded-[6px] text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)] hover:text-[var(--vk-text-normal)]","aria-label":"Open preferences",title:"Preferences",children:(0,t.jsx)(g,{className:"h-4 w-4"})})}):null]})});e.s(["TopBar",0,k],80235);var w=e.i(74080),y=e.i(7233),j=e.i(52808);let N=(0,f.default)("archive",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]);var C=e.i(55436),S=e.i(69242);let A=["⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"];function E(e){let t=e.metadata.worktree?.trim()??"";return t&&t.replace(/\\/g,"/").replace(/\/+$/,"").includes("/worktrees/")?"worktree":"local"}function M(e){let t=e.branch?.trim();if(t)return t;let a=e.summary?.trim()||e.metadata.summary?.trim();return a||(e.status?.trim()?e.status.replace(/[_-]+/g," "):e.id.slice(0,8))}function R(e){return[e.id,e.status,e.lastActivityAt,e.branch??"",e.metadata.worktree??""].join(":")}function L(){let[e,r]=(0,a.useState)(0);return(0,a.useEffect)(()=>{let e=window.setInterval(()=>{r(e=>(e+1)%A.length)},80);return()=>window.clearInterval(e)},[]),(0,t.jsx)("span",{"aria-hidden":"true",className:"inline-block select-none font-mono text-[18px] leading-none text-[var(--vk-text-strong)]",children:A[e]})}function P({running:e}){return e?(0,t.jsx)("span",{className:"mt-0.5 inline-flex h-5 w-5 shrink-0 items-center justify-center",children:(0,t.jsx)(L,{})}):null}function T({additions:e,deletions:a,isSelected:r}){return(0,t.jsx)("span",{className:(0,s.cn)("inline-flex shrink-0 items-center rounded-[10px] px-3 py-1.5 font-mono text-[12px] leading-none tabular-nums",r?"bg-[rgba(255,255,255,0.1)]":"bg-[rgba(255,255,255,0.06)]"),children:(0,t.jsxs)("span",{className:"inline-flex items-center gap-3",children:[(0,t.jsxs)("span",{className:"text-[#18c58f]",children:["+",e]}),(0,t.jsxs)("span",{className:"text-[#f26d6d]",children:["−",a]})]})})}function I({sessions:e,selectedId:r,onSelect:n,onArchive:l,onCreateWorkspace:i,showHeader:o=!0}){let[c,d]=(0,a.useState)(""),[u,m]=(0,a.useState)(null),[x,p]=(0,a.useState)(null),[h,v]=(0,a.useState)({}),b=(0,a.useMemo)(()=>{let t=e.filter(e=>"archived"!==e.status);if(!c.trim())return t;let a=c.toLowerCase();return t.filter(e=>{let t=e.summary??"",r=e.branch??"",n=e.metadata.agent??"",s=E(e),l=M(e);return e.id.toLowerCase().includes(a)||e.projectId.toLowerCase().includes(a)||t.toLowerCase().includes(a)||r.toLowerCase().includes(a)||n.toLowerCase().includes(a)||s.toLowerCase().includes(a)||l.toLowerCase().includes(a)})},[c,e]),f=async(e,t)=>{if(e.stopPropagation(),e.preventDefault(),l&&u!==t){m(t);try{await l(t)}catch(e){console.error("Failed to archive session",e),p(t),window.setTimeout(()=>p(null),3e3)}finally{m(e=>e===t?null:e)}}},g=(0,a.useMemo)(()=>[...b].sort((e,t)=>new Date(t.lastActivityAt).getTime()-new Date(e.lastActivityAt).getTime()),[b]);return(0,a.useEffect)(()=>{let e=!1,t=g.filter(e=>{let t=R(e);return h[e.id]?.key!==t});return 0===t.length?()=>{e=!0}:(Promise.all(t.map(async e=>{let t=R(e);try{let a=await fetch(`/api/sessions/${encodeURIComponent(e.id)}/diff`);if(!a.ok)return[e.id,{key:t,stats:null}];let r=await a.json();return[e.id,{key:t,stats:function(e){if(!e||"object"!=typeof e)return null;let t=Array.isArray(e.files)?e.files:[],a=0,r=0;for(let e of t){let t="number"==typeof e?.additions&&Number.isFinite(e.additions)?Math.max(0,e.additions):0,n="number"==typeof e?.deletions&&Number.isFinite(e.deletions)?Math.max(0,e.deletions):0;a+=t,r+=n}return a<=0&&r<=0?null:{additions:a,deletions:r}}(r)}]}catch(a){return console.error("Failed to load session diff stats",a),[e.id,{key:t,stats:null}]}})).then(t=>{if(e)return;let a=t.filter(e=>null!==e);0!==a.length&&v(e=>{let t={...e};for(let[e,r]of a)t[e]=r;return t})}),()=>{e=!0})},[h,g]),(0,t.jsxs)("div",{className:"flex h-full min-h-0 flex-col",children:[o&&(0,t.jsxs)("div",{className:"flex h-[33px] items-center gap-1 px-2",children:[(0,t.jsx)("p",{className:"text-[16px] text-[var(--vk-text-normal)]",children:"Workspaces"}),i&&(0,t.jsx)("button",{type:"button",onClick:i,className:"ml-auto inline-flex h-5 w-5 items-center justify-center rounded-[3px] text-[var(--vk-orange)] hover:bg-[var(--vk-bg-hover)] lg:hidden","aria-label":"New workspace",children:(0,t.jsx)("span",{className:"text-[14px]",children:"+"})})]}),(0,t.jsx)("div",{className:(0,s.cn)("flex h-[38px] items-center px-2 pb-1.5",!o&&"pt-1.5"),children:(0,t.jsxs)("label",{className:"flex h-[30px] flex-1 items-center rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-2",children:[(0,t.jsx)(C.Search,{className:"h-3.5 w-3.5 text-[var(--vk-text-muted)]"}),(0,t.jsx)("input",{value:c,onChange:e=>d(e.target.value),placeholder:"Search...",className:"ml-1.5 w-full bg-transparent text-[14px] text-[var(--vk-text-normal)] outline-none placeholder:text-[var(--vk-text-muted)]"})]})}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto px-2 pb-2",children:0===g.length?(0,t.jsx)("p",{className:"px-2 py-2 text-[14px] text-[var(--vk-text-muted)]",children:"No sessions"}):(0,t.jsx)("div",{className:"space-y-2",children:g.map(e=>{let a=(0,j.getAttentionLevel)(e),i=h[e.id]?.stats??function(e){for(let t of[e.metadata.lastStderr,e.metadata.summary,e.summary]){if(!t)continue;let e=t.match(/(\d+)\s+insertions?\(\+\),\s+(\d+)\s+deletions?\(-\)/i);if(!e)continue;let a=Number.parseInt(e[1]??"0",10),r=Number.parseInt(e[2]??"0",10);if(Number.isFinite(a)&&Number.isFinite(r))return{additions:a,deletions:r}}return null}(e),o=function(e,t){let a=`${e.summary??""} ${e.metadata.summary??""}`.toLowerCase();if("killed"===e.status||a.includes("interrupted"))return{label:"Interrupted",className:"text-[var(--vk-orange)]"};switch(t){case"merge":return{label:"Ready",className:"text-[var(--vk-green)]"};case"respond":return{label:"Needs input",className:"text-[var(--vk-red)]"};case"review":return{label:"Review",className:"text-[var(--vk-orange)]"};case"working":return{label:"Running",className:"text-[#4e87f3]"};case"done":return{label:"Done",className:"text-[var(--vk-text-muted)]"};default:return{label:"Queued",className:"text-[var(--vk-text-muted)]"}}}(e,a),c=e.metadata.agent?.trim()||null,d=e.id===r,m="active"===e.activity||"spawning"===e.status||"running"===e.status||"working"===e.status,p=u===e.id,v=x===e.id;return(0,t.jsxs)("div",{onClick:()=>n(e.id),onKeyDown:t=>{var a;return a=e.id,void(("Enter"===t.key||" "===t.key)&&(t.preventDefault(),n(a)))},role:"button",tabIndex:0,className:(0,s.cn)("group flex w-full items-start gap-3 rounded-[8px] border px-3 py-3 text-left transition-colors",d?"border-[rgba(234,122,42,0.28)] bg-[rgba(255,255,255,0.08)]":"border-[var(--vk-border)] bg-[rgba(255,255,255,0.02)] hover:bg-[var(--vk-bg-hover)]"),children:[(0,t.jsx)(P,{running:m}),(0,t.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("span",{className:"flex min-w-0 items-start gap-2",children:[(0,t.jsxs)("span",{className:"min-w-0 flex flex-1 items-center gap-2",children:[c?(0,t.jsx)("span",{className:"inline-flex h-5 w-5 shrink-0 items-center justify-center",title:c,"aria-label":`${c} agent`,children:(0,t.jsx)(S.AgentTileIcon,{seed:{label:c},className:"h-4 w-4"})}):null,(0,t.jsx)("span",{className:"min-w-0 truncate text-[14px] font-medium text-[var(--vk-text-strong)]",children:E(e)})]}),i?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"hidden shrink-0 sm:block",children:(0,t.jsx)(T,{additions:i.additions,deletions:i.deletions,isSelected:d})}),(0,t.jsx)("span",{className:"shrink-0 rounded-[8px] bg-[rgba(255,255,255,0.06)] px-2.5 py-1 text-[11px] font-medium sm:hidden",children:(0,t.jsx)("span",{className:o.className,children:o.label})})]}):(0,t.jsx)("span",{className:"shrink-0 rounded-[8px] bg-[rgba(255,255,255,0.06)] px-2.5 py-1 text-[11px] font-medium",children:(0,t.jsx)("span",{className:o.className,children:o.label})})]}),(0,t.jsx)("span",{className:"mt-1 block truncate text-[12px] text-[var(--vk-text-muted)]",children:M(e)})]}),l?(0,t.jsx)("button",{type:"button",onClick:t=>void f(t,e.id),disabled:p,className:(0,s.cn)("mt-0.5 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-[6px] border border-[var(--vk-border)] text-[var(--vk-text-muted)] transition","opacity-70 group-hover:opacity-100 focus-visible:opacity-100","hover:border-[var(--vk-border)] hover:bg-[var(--vk-bg-hover)] hover:text-[var(--vk-text-normal)]",p&&"cursor-wait opacity-100"),"aria-label":`Archive session ${e.id}`,title:v?"Archive failed":"Archive session",children:(0,t.jsx)(N,{className:(0,s.cn)("h-3.5 w-3.5",v&&"text-red-400")})}):null]},e.id)})})})]})}let U=(0,a.memo)(function({projects:e,selectedProjectId:r,onSelectProject:n,onUnlinkProject:l,sessions:i,selectedSessionId:o,onSelectSession:c,onArchiveSession:d,onCreateWorkspace:x}){let[p,h]=(0,a.useState)(null),[v,b]=(0,a.useState)(null),[f,g]=(0,a.useState)(null),k=(0,a.useMemo)(()=>{let e=new Map;for(let t of i){if("archived"===t.status)continue;let a=e.get(t.projectId)??{total:0,active:0};a.total+=1,"done"!==(0,j.getAttentionLevel)(t)&&(a.active+=1),e.set(t.projectId,a)}return e},[i]),N=(0,a.useMemo)(()=>e.find(e=>e.id===v)??null,[v,e]);async function C(){if(l&&v){h(v),g(null);try{await l(v),b(null)}catch(e){g(e instanceof Error?e.message:"Failed to unlink project.")}finally{h(null)}}}return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex h-full min-h-0 w-full flex-col bg-[var(--vk-bg-panel)]",children:[(0,t.jsxs)("section",{className:"border-b border-[var(--vk-border)] px-4 py-4",children:[(0,t.jsx)("div",{className:"flex justify-center text-center",children:(0,t.jsx)("p",{className:"text-[22px] font-bold leading-none uppercase tracking-[0.32em] text-[var(--vk-text-strong)]",children:"Conductor"})}),(0,t.jsxs)("button",{type:"button",onClick:x,className:"mt-3 inline-flex h-8 w-full items-center justify-center gap-1 rounded-[6px] border border-[var(--vk-border)] px-2 text-[12px] text-[var(--vk-text-normal)] hover:bg-[var(--vk-bg-hover)]","aria-label":"Add workspace",children:[(0,t.jsx)(y.Plus,{className:"h-3.5 w-3.5"}),(0,t.jsx)("span",{children:"Add Workspace"})]})]}),(0,t.jsxs)("section",{className:"border-b border-[var(--vk-border)] pb-2 pt-1.5",children:[(0,t.jsx)("div",{className:"flex h-[28px] items-center px-3",children:(0,t.jsx)("p",{className:"text-[11px] uppercase tracking-[0.08em] text-[var(--vk-text-muted)]",children:"Projects"})}),(0,t.jsxs)("div",{className:"max-h-[260px] overflow-y-auto px-2",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>n(null),className:(0,s.cn)("mb-1.5 flex w-full items-center gap-3 rounded-[6px] px-3 py-2.5 text-left text-[14px] leading-[21px]",null===r?"bg-[var(--vk-bg-hover)] text-[var(--vk-text-normal)]":"text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]"),children:[(0,t.jsx)("span",{className:"h-2.5 w-2.5 rounded-full bg-[var(--vk-text-muted)]"}),(0,t.jsx)("span",{className:"truncate",children:"All projects"}),(0,t.jsx)("span",{className:"ml-auto text-[11px] text-[var(--vk-text-muted)]",children:e.length})]}),e.map(e=>{let a=r===e.id,i=k.get(e.id)??{total:0,active:0},o=p===e.id;return(0,t.jsxs)("div",{className:(0,s.cn)("group relative mb-1.5 flex items-center rounded-[6px]",a?"bg-[var(--vk-bg-hover)]":"hover:bg-[var(--vk-bg-hover)]"),children:[(0,t.jsxs)("button",{type:"button",onClick:()=>n(e.id),className:(0,s.cn)("flex min-w-0 flex-1 items-center gap-3 px-3 py-2.5 text-left text-[14px] leading-[21px]",a?"text-[var(--vk-text-normal)]":"text-[var(--vk-text-muted)]"),children:[(0,t.jsx)("span",{className:"mt-1 h-2.5 w-2.5 shrink-0 rounded-full bg-[#3c83f6]"}),(0,t.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,t.jsx)("span",{className:"block truncate",children:e.id}),e.description?(0,t.jsx)("span",{className:"block truncate text-[11px] text-[var(--vk-text-muted)]",children:e.description}):null]}),(0,t.jsxs)("span",{className:"shrink-0 text-right",children:[(0,t.jsxs)("span",{className:"block text-[11px] text-[var(--vk-text-normal)]",children:[i.active," active"]}),(0,t.jsxs)("span",{className:"block text-[10px] text-[var(--vk-text-muted)]",children:[i.total," total"]})]})]}),l&&(0,t.jsx)("button",{type:"button",disabled:o,onClick:t=>{t.stopPropagation(),g(null),b(e.id)},className:"mr-2 inline-flex shrink-0 items-center justify-center rounded-[4px] p-1 text-[var(--vk-text-muted)] hover:bg-[var(--vk-red)]/10 hover:text-[var(--vk-red)] disabled:opacity-50","aria-label":`Unlink ${e.id}`,title:"Unlink project",children:(0,t.jsx)(u.X,{className:"h-3.5 w-3.5"})})]},e.id)})]})]}),(0,t.jsx)("section",{className:"flex min-h-0 flex-1 flex-col pt-1.5",children:(0,t.jsx)(I,{sessions:i,selectedId:o,onSelect:c,onArchive:d,onCreateWorkspace:x,showHeader:!1})})]}),N&&"u">typeof document?(0,w.createPortal)((0,t.jsx)("div",{className:"fixed inset-0 z-[80] flex items-center justify-center bg-black/60 px-4",onClick:()=>{p||(b(null),g(null))},children:(0,t.jsxs)("div",{className:"surface-card w-full max-w-md rounded-[var(--radius-lg)] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] shadow-[0_28px_90px_rgba(0,0,0,0.55)]",onClick:e=>e.stopPropagation(),role:"dialog","aria-modal":"true","aria-labelledby":"unlink-project-title",children:[(0,t.jsxs)("div",{className:"border-b border-[var(--vk-border)] px-4 py-3",children:[(0,t.jsx)("h2",{id:"unlink-project-title",className:"text-[17px] font-medium text-[var(--vk-text-strong)]",children:"Unlink Project"}),(0,t.jsxs)("p",{className:"mt-1 text-[12px] text-[var(--vk-text-muted)]",children:["Remove ",(0,t.jsx)("span",{className:"font-medium text-[var(--vk-text-normal)]",children:N.id})," from this workspace configuration."]})]}),(0,t.jsxs)("div",{className:"space-y-3 px-4 py-4",children:[(0,t.jsx)("p",{className:"text-[13px] leading-5 text-[var(--vk-text-normal)]",children:"This only removes the project from Conductor. Repository files on disk are not deleted."}),f?(0,t.jsx)("div",{className:"rounded-[var(--radius-md)] border border-[var(--vk-red)]/35 bg-[color:color-mix(in_srgb,var(--vk-red)_12%,transparent)] px-3 py-2 text-[12px] text-[var(--vk-red)]",children:f}):null]}),(0,t.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t border-[var(--vk-border)] px-4 py-3",children:[(0,t.jsx)(m.Button,{type:"button",variant:"ghost",onClick:()=>{b(null),g(null)},disabled:null!==p,children:"Cancel"}),(0,t.jsx)(m.Button,{type:"button",variant:"danger",onClick:()=>void C(),disabled:null!==p,children:p===N.id?"Unlinking...":"Unlink Project"})]})]})}),document.body):null]})});e.s(["WorkspaceSidebarPanel",0,U],45241)},2004,e=>{"use strict";var t=e.i(71645);function a(e,t){return{id:e,repo:"string"==typeof t?.repo?t.repo:null,path:"string"==typeof t?.path?t.path:null,iconUrl:"string"==typeof t?.iconUrl?t.iconUrl:null,boardDir:"string"==typeof t?.boardDir?t.boardDir:null,boardFile:"string"==typeof t?.boardFile?t.boardFile:null,description:"string"==typeof t?.description?t.description:null,defaultBranch:"string"==typeof t?.defaultBranch&&t.defaultBranch.trim().length>0?t.defaultBranch:"main",agent:"string"==typeof t?.agent&&t.agent.trim().length>0?t.agent:"claude-code",agentPermissions:"string"==typeof t?.agentPermissions&&t.agentPermissions.trim().length>0?t.agentPermissions:null,agentModel:"string"==typeof t?.agentModel&&t.agentModel.trim().length>0?t.agentModel:null,agentReasoningEffort:"string"==typeof t?.agentReasoningEffort&&t.agentReasoningEffort.trim().length>0?t.agentReasoningEffort:null}}function r(){let[e,r]=(0,t.useState)([]),[n,s]=(0,t.useState)(!0),[l,i]=(0,t.useState)(null),o=(0,t.useRef)(!1),c=(0,t.useCallback)(async()=>{try{let e=await fetch("/api/config");if(!e.ok)throw Error(`Failed to fetch config: ${e.status}`);let t=await e.json();r(function(e){if(!e||"object"!=typeof e)return[];let t=e.projects;return t?Array.isArray(t)?t.map((e,t)=>e&&"object"==typeof e?a("string"==typeof e.id&&e.id.trim().length>0?e.id:`project-${t+1}`,e):a(`project-${t+1}`,null)):"object"==typeof t?Object.entries(t).map(([e,t])=>a(e,t&&"object"==typeof t?t:null)):[]:[]}(t)),i(null)}catch(e){r([]),i(e instanceof Error?e.message:"Failed to fetch config")}finally{s(!1)}},[]);return(0,t.useEffect)(()=>{o.current||(o.current=!0,c())},[c]),{projects:e,loading:n,error:l,refresh:c}}e.s(["useConfig",()=>r])},89965,e=>{"use strict";var t=e.i(71645),a=e.i(97878);function r(e){let[r,n]=(0,t.useState)([]),[s,l]=(0,t.useState)(!0),[i,o]=(0,t.useState)(null),c=(0,t.useRef)(!0),d=(0,t.useCallback)(e=>{n(t=>!function(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let a=0;a<e.length;a+=1){let r=e[a],n=t[a];if(!r||!n||r.id!==n.id||r.status!==n.status||r.activity!==n.activity||r.projectId!==n.projectId||r.issueId!==n.issueId||r.branch!==n.branch||r.lastActivityAt!==n.lastActivityAt||r.summary!==n.summary)return!1;let s=r.metadata??{},l=n.metadata??{},i=Object.keys(s),o=Object.keys(l);if(i.length!==o.length)return!1;for(let e of i)if(s[e]!==l[e])return!1}return!0}(t,e)?e:t)},[]),u=(0,t.useCallback)(async()=>{try{let t="string"==typeof e&&e.trim().length>0?`?project=${encodeURIComponent(e.trim())}`:"",a=await fetch(`/api/sessions${t}`);if(!a.ok)throw Error(`Failed to fetch sessions: ${a.status}`);let r=await a.json(),n=Array.isArray(r)?r:Array.isArray(r.sessions)?r.sessions:[];if(!c.current)return;d(n),o(null)}catch(e){c.current&&o(e instanceof Error?e.message:"Unknown error")}finally{c.current&&l(!1)}},[d,e]);return(0,t.useEffect)(()=>{c.current=!0,l(!0),u();let t=null,r=()=>{null!==t&&(window.clearTimeout(t),t=null)},n=()=>{r(),t=window.setTimeout(async()=>{c.current&&(await u(),c.current&&n())},"visible"===document.visibilityState?15e3:45e3)};n();let s=(0,a.subscribeToSnapshotEvents)(t=>{var a;let r;c.current&&(d((a=t.sessions,(r=e?.trim())?a.filter(e=>e.projectId===r):a)),o(null),l(!1))}),i=()=>{u(),n()},m=()=>{"visible"===document.visibilityState?i():n()};return window.addEventListener("focus",i),document.addEventListener("visibilitychange",m),()=>{c.current=!1,s(),r(),window.removeEventListener("focus",i),document.removeEventListener("visibilitychange",m)}},[d,u,e]),{sessions:r,loading:s,error:i,refresh:u}}e.s(["useSessions",()=>r])}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,16715,e=>{"use strict";let t=(0,e.i(75254).default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);e.s(["RefreshCw",()=>t],16715)}]);
|