conductor-oss 0.2.20 → 0.3.1
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 +16 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +28 -2
- package/dist/commands/start.js.map +1 -1
- package/dist/launcher.d.ts +3 -0
- package/dist/launcher.d.ts.map +1 -0
- package/dist/launcher.js +3 -0
- package/dist/launcher.js.map +1 -0
- package/node_modules/@conductor-oss/core/dist/config.d.ts.map +1 -1
- package/node_modules/@conductor-oss/core/dist/config.js +106 -1
- package/node_modules/@conductor-oss/core/dist/config.js.map +1 -1
- package/node_modules/@conductor-oss/core/dist/types.d.ts +4 -4
- package/node_modules/@conductor-oss/core/dist/types.d.ts.map +1 -1
- package/node_modules/@conductor-oss/core/dist/types.js +185 -8
- package/node_modules/@conductor-oss/core/dist/types.js.map +1 -1
- package/node_modules/@conductor-oss/plugin-agent-amp/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-agent-ccr/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-agent-claude-code/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-agent-codex/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-agent-cursor-cli/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-agent-droid/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-agent-gemini/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-agent-github-copilot/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-agent-opencode/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-agent-qwen-code/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-mcp-server/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-notifier-desktop/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-notifier-discord/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-runtime-tmux/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-scm-github/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-terminal-web/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-tracker-github/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-workspace-worktree/package.json +1 -1
- package/package.json +29 -25
- package/web/.next/standalone/packages/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/packages/web/.next/app-path-routes-manifest.json +5 -0
- package/web/.next/standalone/packages/web/.next/build-manifest.json +2 -2
- package/web/.next/standalone/packages/web/.next/prerender-manifest.json +3 -3
- package/web/.next/standalone/packages/web/.next/routes-manifest.json +34 -0
- 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 +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- 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/server-reference-manifest.json +7 -7
- 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 +3 -3
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- 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 +3 -4
- 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/app-paths-manifest.json +3 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/agents/route/build-manifest.json +11 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/agents/route/server-reference-manifest.json +4 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/agents/route.js +10 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/agents/route.js.map +5 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/agents/route.js.nft.json +1 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/agents/route_client-reference-manifest.js +2 -0
- 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 +3 -1
- 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/route.js +3 -5
- 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/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 +3 -3
- 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/app-paths-manifest.json +3 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route/build-manifest.json +11 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route/server-reference-manifest.json +4 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route.js +10 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route.js.map +5 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route.js.nft.json +1 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route_client-reference-manifest.js +2 -0
- 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/app-paths-manifest.json +3 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route/build-manifest.json +11 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route/server-reference-manifest.json +4 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route.js +10 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route.js.map +5 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route.js.nft.json +1 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route_client-reference-manifest.js +2 -0
- 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/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 +3 -4
- 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/repositories/[id]/route/app-paths-manifest.json +3 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route/build-manifest.json +11 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route/server-reference-manifest.json +4 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route.js +10 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route.js.map +5 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +2 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/repositories/route.js +4 -6
- 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/app-paths-manifest.json +3 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route/build-manifest.json +11 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route/server-reference-manifest.json +4 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route.js +10 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route.js.map +5 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route.js.nft.json +1 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route_client-reference-manifest.js +2 -0
- 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 +4 -5
- 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]/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]/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 +3 -3
- 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]/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/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 +3 -4
- 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 +4 -6
- 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/index.html +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/index.rsc +4 -4
- package/web/.next/standalone/packages/web/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/web/.next/standalone/packages/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/index.segments/_index.segment.rsc +3 -3
- package/web/.next/standalone/packages/web/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/page/react-loadable-manifest.json +2 -2
- 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.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/server-reference-manifest.json +7 -7
- 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/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/server-reference-manifest.json +7 -7
- 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 +5 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/29f24__next-internal_server_app_api_filesystem_pick-directory_route_actions_51e42977.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/730ea_web__next-internal_server_app_api_executor_health_route_actions_8e415531.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/730ea_web__next-internal_server_app_api_repositories_[id]_route_actions_4d42b4b5.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/730ea_web__next-internal_server_app_api_sessions_[id]_archive_route_actions_bdb25739.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__0074ebac._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__03a6b3e6._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__049daed6._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__6023a748._.js → [root-of-the-server]__095ffdaa._.js} +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__2a83553a._.js → [root-of-the-server]__0c7f79b1._.js} +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__137c9740._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__1aa339ea._.js → [root-of-the-server]__144e8e60._.js} +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__1ed2e6c1._.js → [root-of-the-server]__14949257._.js} +17 -163
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__15594e11._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__159ecc1b._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__29be362d._.js → [root-of-the-server]__16d4a78f._.js} +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__171dd44e._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__177505ca._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__18aa1fa3._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1c3521a3._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1c793b78._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__22fbbc7b._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__25bbe81a._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2d10de49._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__30442998._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__31d22800._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3d6b30a3._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__44892736._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__495221b1._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4ff9e8b0._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__54eb1ef0._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5c375e13._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6362697f._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__69b36e36._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6badbf4e._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6c4cd852._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6f7b329b._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__70b7af90._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__71077192._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__758687ca._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7604e43b._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__77b23eae._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__78650ac9._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__789107eb._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__78c062a8._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__78c4bb1e._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__790d1d4b._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__8132442f._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__833a2cd9._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__85d6ae4c._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__8d933120._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__90ac5665._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__92a4f9bf._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__93d550e2._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__96e59c1f._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__9d98fee2._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__9fcf6265._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a5b78741._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a8a4b101._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a8d11727._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b2e0e81c._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__bf756716._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c09452b3._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c43dcff1._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c923cbdc._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ce993e7b._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cfbdd2bf._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d1d8bfb5._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d4d1744d._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d8852803._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ea1961bd._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ee8a3221._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ef8c815b._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ef918d06._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f3693403._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f62cac3a._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f73117e9._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f7651519._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__fc6ffe6c._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_web__next-internal_server_app_api_agents_route_actions_29063d1a.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__6622b514._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__869d9ac0._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__b388693f._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{[root-of-the-server]__48817f02._.js → [root-of-the-server]__c3eb4913._.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/{_20a4007d._.js → _3acfb388._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_668c9201._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_69e05fca._.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/_b6d31783._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_c0f0e227._.js +1 -1
- 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_129dde21._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_1776df7f._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_f2ebd7a9._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_79316445._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_a078c137._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_app_page_tsx_cd282e82._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_app_unlock_UnlockForm_tsx_ce3149a7._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{packages_web_src_components_6cab1c8c._.js → packages_web_src_components_aad7de7c._.js} +1 -1
- 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/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 +8 -8
- package/web/.next/standalone/packages/web/.next/static/chunks/{5c7e8425945ad682.js → 07a5ac7389686572.js} +1 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/3603312f8407bd12.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/382be8f0b30c5f08.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/479b8cb58c95a8a0.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/53e4f3b495e423c9.js +1 -0
- package/web/.next/{static/chunks/3b757dce050133c8.js → standalone/packages/web/.next/static/chunks/5c5637796e242130.js} +2 -2
- package/web/.next/standalone/packages/web/.next/static/chunks/{695b7cb206c6dadd.js → 5e05e67a26b7ecbc.js} +1 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/6d083840413686dd.css +3 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/870a993d28314a90.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/c5caacf383990e7b.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/c7c1bd729f17c8bf.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/e8d146cc2723147b.js +1 -0
- package/web/.next/standalone/packages/web/package.json +1 -1
- package/web/.next/standalone/packages/web/src/app/api/access/route.ts +3 -211
- package/web/.next/standalone/packages/web/src/app/api/agents/route.ts +5 -0
- package/web/.next/standalone/packages/web/src/app/api/attachments/route.ts +2 -166
- package/web/.next/standalone/packages/web/src/app/api/auth/session/route.ts +4 -52
- package/web/.next/standalone/packages/web/src/app/api/boards/route.ts +3 -517
- package/web/.next/standalone/packages/web/src/app/api/config/route.ts +2 -78
- package/web/.next/standalone/packages/web/src/app/api/context-files/route.ts +2 -198
- package/web/.next/standalone/packages/web/src/app/api/events/route.ts +2 -122
- package/web/.next/standalone/packages/web/src/app/api/executor/health/route.ts +5 -0
- package/web/.next/standalone/packages/web/src/app/api/filesystem/directory/route.ts +2 -142
- package/web/.next/standalone/packages/web/src/app/api/filesystem/pick-directory/route.ts +5 -0
- package/web/.next/standalone/packages/web/src/app/api/github/repos/route.ts +2 -103
- package/web/.next/standalone/packages/web/src/app/api/health/boards/route.ts +2 -69
- package/web/.next/standalone/packages/web/src/app/api/health/sessions/route.ts +2 -74
- package/web/.next/standalone/packages/web/src/app/api/notifications/route.ts +3 -88
- package/web/.next/standalone/packages/web/src/app/api/preferences/route.ts +3 -191
- package/web/.next/standalone/packages/web/src/app/api/repositories/[id]/route.ts +8 -0
- package/web/.next/standalone/packages/web/src/app/api/repositories/route.ts +4 -416
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/actions/route.ts +5 -77
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/archive/route.ts +8 -0
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/checks/route.ts +5 -172
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/diff/route.ts +5 -423
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/feed/route.ts +5 -94
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/feedback/route.ts +5 -44
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/files/route.ts +5 -194
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/keys/route.ts +6 -138
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/kill/route.ts +5 -42
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/output/route.ts +5 -259
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/output/stream/route.ts +5 -108
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/restore/route.ts +5 -46
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/route.ts +6 -204
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/send/route.ts +5 -55
- package/web/.next/standalone/packages/web/src/app/api/sessions/route.ts +2 -102
- package/web/.next/standalone/packages/web/src/app/api/spawn/route.ts +3 -214
- package/web/.next/standalone/packages/web/src/app/api/workspaces/branches/route.ts +2 -230
- package/web/.next/standalone/packages/web/src/app/api/workspaces/route.ts +3 -589
- package/web/.next/standalone/packages/web/src/app/unlock/UnlockForm.tsx +25 -4
- package/web/.next/standalone/packages/web/src/components/board/WorkspaceKanban.tsx +8 -8
- package/web/.next/standalone/packages/web/src/components/layout/WorkspaceSidebarPanel.tsx +199 -84
- package/web/.next/standalone/packages/web/src/components/sessions/ChatPanel.tsx +36 -5
- package/web/.next/standalone/packages/web/src/features/dashboard/DashboardClient.tsx +86 -36
- package/web/.next/standalone/packages/web/src/features/dashboard/components/WorkspaceOverview.tsx +57 -9
- package/web/.next/standalone/packages/web/src/hooks/useSessionOutputStream.ts +11 -0
- package/web/.next/standalone/packages/web/src/lib/auth.ts +90 -14
- package/web/.next/standalone/packages/web/src/lib/guardedRustProxy.ts +25 -0
- package/web/.next/standalone/packages/web/src/lib/liveEvents.ts +64 -7
- package/web/.next/standalone/packages/web/src/lib/proxyRoutes.ts +46 -0
- package/web/.next/standalone/packages/web/src/lib/runtimeAgentModels.ts +1 -1
- package/web/.next/standalone/packages/web/src/lib/rustBackendProxy.ts +154 -0
- package/web/.next/standalone/packages/web/src/proxy.ts +3 -20
- package/web/.next/static/chunks/{5c7e8425945ad682.js → 07a5ac7389686572.js} +1 -1
- package/web/.next/static/chunks/3603312f8407bd12.js +1 -0
- package/web/.next/static/chunks/382be8f0b30c5f08.js +1 -0
- package/web/.next/static/chunks/479b8cb58c95a8a0.js +1 -0
- package/web/.next/static/chunks/53e4f3b495e423c9.js +1 -0
- package/web/.next/{standalone/packages/web/.next/static/chunks/3b757dce050133c8.js → static/chunks/5c5637796e242130.js} +2 -2
- package/web/.next/static/chunks/{695b7cb206c6dadd.js → 5e05e67a26b7ecbc.js} +1 -1
- package/web/.next/static/chunks/6d083840413686dd.css +3 -0
- package/web/.next/static/chunks/870a993d28314a90.js +1 -0
- package/web/.next/static/chunks/c5caacf383990e7b.js +1 -0
- package/web/.next/static/chunks/c7c1bd729f17c8bf.js +1 -0
- package/web/.next/static/chunks/e8d146cc2723147b.js +1 -0
- package/native/conductor +0 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[externals]__f25f12d4._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__005aa909._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__008d962e._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__00cf28e7._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__03ff76ee._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__06365513._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__075f8697._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__097be5a7._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__0a0f0f01._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1003246b._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__11918223._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__13ad088c._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1458f8ec._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__14b1d4a3._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1741fb8a._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1875f00e._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1beced71._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1f626a16._.js +0 -129
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2062aaab._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__206c3d8a._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__22f8f0d6._.js +0 -129
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__23bebaf9._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2556a816._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__25788ed3._.js +0 -54
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2c3f6397._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2c909fe3._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__30921756._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__31eea08c._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__346d9484._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3edd3509._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3f8b49ba._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3f8e82c2._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__44d59fd0._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__48875cbb._.js +0 -7
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__49c6a20e._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4ac9d639._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4c3fb752._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4ca8b259._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4dab6a6a._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__53385c40._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__544326ac._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__54a218f0._.js +0 -54
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__55e337f7._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5661ca72._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5cd49624._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5e0533de._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5e161db4._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5ebcb223._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5fd609c9._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__60cf7bf4._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__60ee4897._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6559c1a4._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__659938b1._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6712f45a._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__69227de6._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6ab08a39._.js +0 -129
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6c10c03b._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6cd54de1._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6ce2b5d7._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6cfd00d2._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6d62709d._.js +0 -129
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6e08e4e4._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__749331b0._.js +0 -54
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__74a53184._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__76c16426._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__778e46a1._.js +0 -129
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7a26e452._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7ba96fa5._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7e684560._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__848eb266._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__8596d782._.js +0 -7
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__85d8966b._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__86aff2b8._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__879cf4d2._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__881858fa._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__885e3a00._.js +0 -54
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__887ea436._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__893f6b3b._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__89dfcd05._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__8cc5826f._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__913af875._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__91b42119._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__93ce1b75._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__96633022._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__96951362._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__971fcc75._.js +0 -9
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__99da6324._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__9f07930d._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__9f36b7ec._.js +0 -129
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__9fd08bbc._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a05953cc._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a0b6570d._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a3766ac1._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a3bfaabf._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a420e374._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a4a33247._.js +0 -54
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ac544bb5._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ad84d2e0._.js +0 -54
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b3095e9d._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b59abfbd._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b9692a3c._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__bcc08c70._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__be051d52._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__bea07e07._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c1759514._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c2ef2bfc._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c8618cb1._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ca8a18f8._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cafd7bb3._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cb112606._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cc74ea40._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cd3692a0._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cf3cdecd._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d09e7a99._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d40b50e7._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d4721d30._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d538c110._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d73ea818._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__db3d0133._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__dd0cf085._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__de0f2533._.js +0 -7
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e113f6df._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e1a418bc._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e6c1d827._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ea69c4ce._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__eac16890._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__eb1dfcc6._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ee75d43a._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ef773ea6._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f0d15920._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f15cbcfc._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f48eb2d4._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__fb6ab669._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__fe8419b5._.js +0 -129
- package/web/.next/standalone/packages/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0e4dc4f7.js +0 -4
- package/web/.next/standalone/packages/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_dd27f857.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_e445b36c.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_f375f3c4.js +0 -28
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_core_dist_index_cdd30418.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-amp_dist_index_bf3d8239.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-ccr_dist_index_69cbf726.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-claude-code_dist_index_31314e43.js +0 -125
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-cursor-cli_dist_index_8d5cc426.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-droid_dist_index_f731227a.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-gemini_dist_index_b2d219e8.js +0 -54
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-github-copilot_dist_index_9f80cb45.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-opencode_dist_index_7c7015da.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-qwen-code_dist_index_46dd8653.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_notifier-desktop_dist_index_ef3473f0.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_notifier-discord_dist_index_34257226.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_scm-github_dist_index_3b5a621e.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_terminal-web_dist_index_1e0706d3.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_tracker-github_dist_index_2d7af62f.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_web_src_lib_13fee5eb._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_web_src_lib_d64596cc._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_b88bcf2c._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_38e7b35d._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_f665760b._.js +0 -3
- package/web/.next/standalone/packages/web/.next/static/chunks/062888342200567f.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/6c9a11faed9daf4d.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/8221b78965a50858.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/8de84e208e201d72.css +0 -3
- package/web/.next/standalone/packages/web/.next/static/chunks/a8d4e0d75ca51921.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/ac6a06c17a4f651f.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/c4ea57fb949fb623.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/d9d05e7b540400af.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/f5d9ad0f62ede339.js +0 -1
- package/web/.next/standalone/packages/web/src/lib/services.ts +0 -319
- package/web/.next/static/chunks/062888342200567f.js +0 -1
- package/web/.next/static/chunks/6c9a11faed9daf4d.js +0 -1
- package/web/.next/static/chunks/8221b78965a50858.js +0 -1
- package/web/.next/static/chunks/8de84e208e201d72.css +0 -3
- package/web/.next/static/chunks/a8d4e0d75ca51921.js +0 -1
- package/web/.next/static/chunks/ac6a06c17a4f651f.js +0 -1
- package/web/.next/static/chunks/c4ea57fb949fb623.js +0 -1
- package/web/.next/static/chunks/d9d05e7b540400af.js +0 -1
- package/web/.next/static/chunks/f5d9ad0f62ede339.js +0 -1
- /package/web/.next/standalone/packages/web/.next/static/{P8IBAo_woCzrGXJiYCZto → oFTStwDpHHac4pinj0rAJ}/_buildManifest.js +0 -0
- /package/web/.next/standalone/packages/web/.next/static/{P8IBAo_woCzrGXJiYCZto → oFTStwDpHHac4pinj0rAJ}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/packages/web/.next/static/{P8IBAo_woCzrGXJiYCZto → oFTStwDpHHac4pinj0rAJ}/_ssgManifest.js +0 -0
- /package/web/.next/static/{P8IBAo_woCzrGXJiYCZto → oFTStwDpHHac4pinj0rAJ}/_buildManifest.js +0 -0
- /package/web/.next/static/{P8IBAo_woCzrGXJiYCZto → oFTStwDpHHac4pinj0rAJ}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{P8IBAo_woCzrGXJiYCZto → oFTStwDpHHac4pinj0rAJ}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,81140,e=>{"use strict";function t(e,r,{checkForDefaultPrevented:n=!0}={}){return function(t){if(e?.(t),!1===n||!t.defaultPrevented)return r?.(t)}}"u">typeof window&&window.document&&window.document.createElement,e.s(["composeEventHandlers",()=>t])},20783,e=>{"use strict";var t=e.i(71645);function r(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function n(...e){return t=>{let n=!1,i=e.map(e=>{let i=r(e,t);return n||"function"!=typeof i||(n=!0),i});if(n)return()=>{for(let t=0;t<i.length;t++){let n=i[t];"function"==typeof n?n():r(e[t],null)}}}}function i(...e){return t.useCallback(n(...e),e)}e.s(["composeRefs",()=>n,"useComposedRefs",()=>i])},30030,e=>{"use strict";var t=e.i(71645),r=e.i(18050);function n(e,i=[]){let o=[],s=()=>{let r=o.map(e=>t.createContext(e));return function(n){let i=n?.[e]||r;return t.useMemo(()=>({[`__scope${e}`]:{...n,[e]:i}}),[n,i])}};return s.scopeName=e,[function(n,i){let s=t.createContext(i),a=o.length;o=[...o,i];let l=n=>{let{scope:i,children:o,...l}=n,u=i?.[e]?.[a]||s,c=t.useMemo(()=>l,Object.values(l));return(0,r.jsx)(u.Provider,{value:c,children:o})};return l.displayName=n+"Provider",[l,function(r,o){let l=o?.[e]?.[a]||s,u=t.useContext(l);if(u)return u;if(void 0!==i)return i;throw Error(`\`${r}\` must be used within \`${n}\``)}]},function(...e){let r=e[0];if(1===e.length)return r;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let i=n.reduce((t,{useScope:r,scopeName:n})=>{let i=r(e)[`__scope${n}`];return{...t,...i}},{});return t.useMemo(()=>({[`__scope${r.scopeName}`]:i}),[i])}};return n.scopeName=r.scopeName,n}(s,...i)]}e.s(["createContextScope",()=>n])},34620,e=>{"use strict";var t=e.i(71645),r=globalThis?.document?t.useLayoutEffect:()=>{};e.s(["useLayoutEffect",()=>r])},69340,e=>{"use strict";var t=e.i(71645),r=e.i(34620);t[" useEffectEvent ".trim().toString()],t[" useInsertionEffect ".trim().toString()];var n=t[" useInsertionEffect ".trim().toString()]||r.useLayoutEffect;function i({prop:e,defaultProp:r,onChange:i=()=>{},caller:o}){let[s,a,l]=function({defaultProp:e,onChange:r}){let[i,o]=t.useState(e),s=t.useRef(i),a=t.useRef(r);return n(()=>{a.current=r},[r]),t.useEffect(()=>{s.current!==i&&(a.current?.(i),s.current=i)},[i,s]),[i,o,a]}({defaultProp:r,onChange:i}),u=void 0!==e,c=u?e:s;{let r=t.useRef(void 0!==e);t.useEffect(()=>{let e=r.current;if(e!==u){let t=u?"controlled":"uncontrolled";console.warn(`${o} is changing from ${e?"controlled":"uncontrolled"} to ${t}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}r.current=u},[u,o])}return[c,t.useCallback(t=>{if(u){let r="function"==typeof t?t(e):t;r!==e&&l.current?.(r)}else a(t)},[u,e,a,l])]}Symbol("RADIX:SYNC_STATE"),e.s(["useControllableState",()=>i],69340)},48425,e=>{"use strict";var t=e.i(71645),r=e.i(74080),n=e.i(20783),i=e.i(18050),o=Symbol("radix.slottable");function s(e){return t.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===o}var a=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,r)=>{var o,a;let l,u,c,d=(a=o=`Primitive.${r}`,(l=t.forwardRef((e,r)=>{let{children:i,...o}=e;if(t.isValidElement(i)){var s;let e,a,l=(s=i,(a=(e=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.ref:(a=(e=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.props.ref:s.props.ref||s.ref),u=function(e,t){let r={...t};for(let n in t){let i=e[n],o=t[n];/^on[A-Z]/.test(n)?i&&o?r[n]=(...e)=>{let t=o(...e);return i(...e),t}:i&&(r[n]=i):"style"===n?r[n]={...i,...o}:"className"===n&&(r[n]=[i,o].filter(Boolean).join(" "))}return{...e,...r}}(o,i.props);return i.type!==t.Fragment&&(u.ref=r?(0,n.composeRefs)(r,l):l),t.cloneElement(i,u)}return t.Children.count(i)>1?t.Children.only(null):null})).displayName=`${a}.SlotClone`,u=l,(c=t.forwardRef((e,r)=>{let{children:n,...o}=e,a=t.Children.toArray(n),l=a.find(s);if(l){let e=l.props.children,n=a.map(r=>r!==l?r:t.Children.count(e)>1?t.Children.only(null):t.isValidElement(e)?e.props.children:null);return(0,i.jsx)(u,{...o,ref:r,children:t.isValidElement(e)?t.cloneElement(e,void 0,n):null})}return(0,i.jsx)(u,{...o,ref:r,children:n})})).displayName=`${o}.Slot`,c),f=t.forwardRef((e,t)=>{let{asChild:n,...o}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,i.jsx)(n?d:r,{...o,ref:t})});return f.displayName=`Primitive.${r}`,{...e,[r]:f}},{});function l(e,t){e&&r.flushSync(()=>e.dispatchEvent(t))}e.s(["Primitive",()=>a,"dispatchDiscreteCustomEvent",()=>l],48425)},75830,e=>{"use strict";var t=e.i(71645),r=e.i(30030),n=e.i(20783),i=e.i(18050);function o(e){var r;let o,s=(r=e,(o=t.forwardRef((e,r)=>{let{children:i,...o}=e;if(t.isValidElement(i)){var s;let e,a,l=(s=i,(a=(e=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.ref:(a=(e=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.props.ref:s.props.ref||s.ref),u=function(e,t){let r={...t};for(let n in t){let i=e[n],o=t[n];/^on[A-Z]/.test(n)?i&&o?r[n]=(...e)=>{let t=o(...e);return i(...e),t}:i&&(r[n]=i):"style"===n?r[n]={...i,...o}:"className"===n&&(r[n]=[i,o].filter(Boolean).join(" "))}return{...e,...r}}(o,i.props);return i.type!==t.Fragment&&(u.ref=r?(0,n.composeRefs)(r,l):l),t.cloneElement(i,u)}return t.Children.count(i)>1?t.Children.only(null):null})).displayName=`${r}.SlotClone`,o),l=t.forwardRef((e,r)=>{let{children:n,...o}=e,l=t.Children.toArray(n),u=l.find(a);if(u){let e=u.props.children,n=l.map(r=>r!==u?r:t.Children.count(e)>1?t.Children.only(null):t.isValidElement(e)?e.props.children:null);return(0,i.jsx)(s,{...o,ref:r,children:t.isValidElement(e)?t.cloneElement(e,void 0,n):null})}return(0,i.jsx)(s,{...o,ref:r,children:n})});return l.displayName=`${e}.Slot`,l}var s=Symbol("radix.slottable");function a(e){return t.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===s}function l(e){let s=e+"CollectionProvider",[a,l]=(0,r.createContextScope)(s),[u,c]=a(s,{collectionRef:{current:null},itemMap:new Map}),d=e=>{let{scope:r,children:n}=e,o=t.default.useRef(null),s=t.default.useRef(new Map).current;return(0,i.jsx)(u,{scope:r,itemMap:s,collectionRef:o,children:n})};d.displayName=s;let f=e+"CollectionSlot",p=o(f),m=t.default.forwardRef((e,t)=>{let{scope:r,children:o}=e,s=c(f,r),a=(0,n.useComposedRefs)(t,s.collectionRef);return(0,i.jsx)(p,{ref:a,children:o})});m.displayName=f;let h=e+"CollectionItemSlot",g="data-radix-collection-item",y=o(h),v=t.default.forwardRef((e,r)=>{let{scope:o,children:s,...a}=e,l=t.default.useRef(null),u=(0,n.useComposedRefs)(r,l),d=c(h,o);return t.default.useEffect(()=>(d.itemMap.set(l,{ref:l,...a}),()=>void d.itemMap.delete(l))),(0,i.jsx)(y,{...{[g]:""},ref:u,children:s})});return v.displayName=h,[{Provider:d,Slot:m,ItemSlot:v},function(r){let n=c(e+"CollectionConsumer",r);return t.default.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${g}]`));return Array.from(n.itemMap.values()).sort((e,r)=>t.indexOf(e.ref.current)-t.indexOf(r.ref.current))},[n.collectionRef,n.itemMap])},l]}var u=new WeakMap;function c(e,t){var r,n;let i,o,s;if("at"in Array.prototype)return Array.prototype.at.call(e,t);let a=(r=e,n=t,i=r.length,(s=(o=d(n))>=0?o:i+o)<0||s>=i?-1:s);return -1===a?void 0:e[a]}function d(e){return e!=e||0===e?0:Math.trunc(e)}(class e extends Map{#e;constructor(e){super(e),this.#e=[...super.keys()],u.set(this,!0)}set(e,t){return u.get(this)&&(this.has(e)?this.#e[this.#e.indexOf(e)]=e:this.#e.push(e)),super.set(e,t),this}insert(e,t,r){let n,i=this.has(t),o=this.#e.length,s=d(e),a=s>=0?s:o+s,l=a<0||a>=o?-1:a;if(l===this.size||i&&l===this.size-1||-1===l)return this.set(t,r),this;let u=this.size+ +!i;s<0&&a++;let c=[...this.#e],f=!1;for(let e=a;e<u;e++)if(a===e){let o=c[e];c[e]===t&&(o=c[e+1]),i&&this.delete(t),n=this.get(o),this.set(t,r)}else{f||c[e-1]!==t||(f=!0);let r=c[f?e:e-1],i=n;n=this.get(r),this.delete(r),this.set(r,i)}return this}with(t,r,n){let i=new e(this);return i.insert(t,r,n),i}before(e){let t=this.#e.indexOf(e)-1;if(!(t<0))return this.entryAt(t)}setBefore(e,t,r){let n=this.#e.indexOf(e);return -1===n?this:this.insert(n,t,r)}after(e){let t=this.#e.indexOf(e);if(-1!==(t=-1===t||t===this.size-1?-1:t+1))return this.entryAt(t)}setAfter(e,t,r){let n=this.#e.indexOf(e);return -1===n?this:this.insert(n+1,t,r)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return this.#e=[],super.clear()}delete(e){let t=super.delete(e);return t&&this.#e.splice(this.#e.indexOf(e),1),t}deleteAt(e){let t=this.keyAt(e);return void 0!==t&&this.delete(t)}at(e){let t=c(this.#e,e);if(void 0!==t)return this.get(t)}entryAt(e){let t=c(this.#e,e);if(void 0!==t)return[t,this.get(t)]}indexOf(e){return this.#e.indexOf(e)}keyAt(e){return c(this.#e,e)}from(e,t){let r=this.indexOf(e);if(-1===r)return;let n=r+t;return n<0&&(n=0),n>=this.size&&(n=this.size-1),this.at(n)}keyFrom(e,t){let r=this.indexOf(e);if(-1===r)return;let n=r+t;return n<0&&(n=0),n>=this.size&&(n=this.size-1),this.keyAt(n)}find(e,t){let r=0;for(let n of this){if(Reflect.apply(e,t,[n,r,this]))return n;r++}}findIndex(e,t){let r=0;for(let n of this){if(Reflect.apply(e,t,[n,r,this]))return r;r++}return -1}filter(t,r){let n=[],i=0;for(let e of this)Reflect.apply(t,r,[e,i,this])&&n.push(e),i++;return new e(n)}map(t,r){let n=[],i=0;for(let e of this)n.push([e[0],Reflect.apply(t,r,[e,i,this])]),i++;return new e(n)}reduce(...e){let[t,r]=e,n=0,i=r??this.at(0);for(let r of this)i=0===n&&1===e.length?r:Reflect.apply(t,this,[i,r,n,this]),n++;return i}reduceRight(...e){let[t,r]=e,n=r??this.at(-1);for(let r=this.size-1;r>=0;r--){let i=this.at(r);n=r===this.size-1&&1===e.length?i:Reflect.apply(t,this,[n,i,r,this])}return n}toSorted(t){return new e([...this.entries()].sort(t))}toReversed(){let t=new e;for(let e=this.size-1;e>=0;e--){let r=this.keyAt(e),n=this.get(r);t.set(r,n)}return t}toSpliced(...t){let r=[...this.entries()];return r.splice(...t),new e(r)}slice(t,r){let n=new e,i=this.size-1;if(void 0===t)return n;t<0&&(t+=this.size),void 0!==r&&r>0&&(i=r-1);for(let e=t;e<=i;e++){let t=this.keyAt(e),r=this.get(t);n.set(t,r)}return n}every(e,t){let r=0;for(let n of this){if(!Reflect.apply(e,t,[n,r,this]))return!1;r++}return!0}some(e,t){let r=0;for(let n of this){if(Reflect.apply(e,t,[n,r,this]))return!0;r++}return!1}}),e.s(["createCollection",()=>l],75830)},86318,e=>{"use strict";var t=e.i(71645);e.i(18050);var r=t.createContext(void 0);function n(e){let n=t.useContext(r);return e||n||"ltr"}e.s(["useDirection",()=>n])},30207,e=>{"use strict";var t=e.i(71645);function r(e){let r=t.useRef(e);return t.useEffect(()=>{r.current=e}),t.useMemo(()=>(...e)=>r.current?.(...e),[])}e.s(["useCallbackRef",()=>r])},10772,e=>{"use strict";var t=e.i(71645),r=e.i(34620),n=t[" useId ".trim().toString()]||(()=>void 0),i=0;function o(e){let[o,s]=t.useState(n());return(0,r.useLayoutEffect)(()=>{e||s(e=>e??String(i++))},[e]),e||(o?`radix-${o}`:"")}e.s(["useId",()=>o])},96626,e=>{"use strict";var t=e.i(71645),r=e.i(20783),n=e.i(34620),i=e=>{var i;let s,a,{present:l,children:u}=e,c=function(e){var r,i;let[s,a]=t.useState(),l=t.useRef(null),u=t.useRef(e),c=t.useRef("none"),[d,f]=(r=e?"mounted":"unmounted",i={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},t.useReducer((e,t)=>i[e][t]??e,r));return t.useEffect(()=>{let e=o(l.current);c.current="mounted"===d?e:"none"},[d]),(0,n.useLayoutEffect)(()=>{let t=l.current,r=u.current;if(r!==e){let n=c.current,i=o(t);e?f("MOUNT"):"none"===i||t?.display==="none"?f("UNMOUNT"):r&&n!==i?f("ANIMATION_OUT"):f("UNMOUNT"),u.current=e}},[e,f]),(0,n.useLayoutEffect)(()=>{if(s){let e,t=s.ownerDocument.defaultView??window,r=r=>{let n=o(l.current).includes(CSS.escape(r.animationName));if(r.target===s&&n&&(f("ANIMATION_END"),!u.current)){let r=s.style.animationFillMode;s.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===s.style.animationFillMode&&(s.style.animationFillMode=r)})}},n=e=>{e.target===s&&(c.current=o(l.current))};return s.addEventListener("animationstart",n),s.addEventListener("animationcancel",r),s.addEventListener("animationend",r),()=>{t.clearTimeout(e),s.removeEventListener("animationstart",n),s.removeEventListener("animationcancel",r),s.removeEventListener("animationend",r)}}f("ANIMATION_END")},[s,f]),{isPresent:["mounted","unmountSuspended"].includes(d),ref:t.useCallback(e=>{l.current=e?getComputedStyle(e):null,a(e)},[])}}(l),d="function"==typeof u?u({present:c.isPresent}):t.Children.only(u),f=(0,r.useComposedRefs)(c.ref,(i=d,(a=(s=Object.getOwnPropertyDescriptor(i.props,"ref")?.get)&&"isReactWarning"in s&&s.isReactWarning)?i.ref:(a=(s=Object.getOwnPropertyDescriptor(i,"ref")?.get)&&"isReactWarning"in s&&s.isReactWarning)?i.props.ref:i.props.ref||i.ref));return"function"==typeof u||c.isPresent?t.cloneElement(d,{ref:f}):null};function o(e){return e?.animationName||"none"}i.displayName="Presence",e.s(["Presence",()=>i])},42727,e=>{"use strict";var t=e.i(71645),r=e.i(81140),n=e.i(75830),i=e.i(20783),o=e.i(30030),s=e.i(10772),a=e.i(48425),l=e.i(30207),u=e.i(69340),c=e.i(86318),d=e.i(18050),f="rovingFocusGroup.onEntryFocus",p={bubbles:!1,cancelable:!0},m="RovingFocusGroup",[h,g,y]=(0,n.createCollection)(m),[v,x]=(0,o.createContextScope)(m,[y]),[w,C]=v(m),b=t.forwardRef((e,t)=>(0,d.jsx)(h.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,d.jsx)(h.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,d.jsx)(A,{...e,ref:t})})}));b.displayName=m;var A=t.forwardRef((e,n)=>{let{__scopeRovingFocusGroup:o,orientation:s,loop:h=!1,dir:y,currentTabStopId:v,defaultCurrentTabStopId:x,onCurrentTabStopIdChange:C,onEntryFocus:b,preventScrollOnEntryFocus:A=!1,...k}=e,R=t.useRef(null),S=(0,i.useComposedRefs)(n,R),P=(0,c.useDirection)(y),[M,O]=(0,u.useControllableState)({prop:v,defaultProp:x??null,onChange:C,caller:m}),[T,N]=t.useState(!1),I=(0,l.useCallbackRef)(b),G=g(o),j=t.useRef(!1),[D,F]=t.useState(0);return t.useEffect(()=>{let e=R.current;if(e)return e.addEventListener(f,I),()=>e.removeEventListener(f,I)},[I]),(0,d.jsx)(w,{scope:o,orientation:s,dir:P,loop:h,currentTabStopId:M,onItemFocus:t.useCallback(e=>O(e),[O]),onItemShiftTab:t.useCallback(()=>N(!0),[]),onFocusableItemAdd:t.useCallback(()=>F(e=>e+1),[]),onFocusableItemRemove:t.useCallback(()=>F(e=>e-1),[]),children:(0,d.jsx)(a.Primitive.div,{tabIndex:T||0===D?-1:0,"data-orientation":s,...k,ref:S,style:{outline:"none",...e.style},onMouseDown:(0,r.composeEventHandlers)(e.onMouseDown,()=>{j.current=!0}),onFocus:(0,r.composeEventHandlers)(e.onFocus,e=>{let t=!j.current;if(e.target===e.currentTarget&&t&&!T){let t=new CustomEvent(f,p);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=G().filter(e=>e.focusable);E([e.find(e=>e.active),e.find(e=>e.id===M),...e].filter(Boolean).map(e=>e.ref.current),A)}}j.current=!1}),onBlur:(0,r.composeEventHandlers)(e.onBlur,()=>N(!1))})})}),k="RovingFocusGroupItem",R=t.forwardRef((e,n)=>{let{__scopeRovingFocusGroup:i,focusable:o=!0,active:l=!1,tabStopId:u,children:c,...f}=e,p=(0,s.useId)(),m=u||p,y=C(k,i),v=y.currentTabStopId===m,x=g(i),{onFocusableItemAdd:w,onFocusableItemRemove:b,currentTabStopId:A}=y;return t.useEffect(()=>{if(o)return w(),()=>b()},[o,w,b]),(0,d.jsx)(h.ItemSlot,{scope:i,id:m,focusable:o,active:l,children:(0,d.jsx)(a.Primitive.span,{tabIndex:v?0:-1,"data-orientation":y.orientation,...f,ref:n,onMouseDown:(0,r.composeEventHandlers)(e.onMouseDown,e=>{o?y.onItemFocus(m):e.preventDefault()}),onFocus:(0,r.composeEventHandlers)(e.onFocus,()=>y.onItemFocus(m)),onKeyDown:(0,r.composeEventHandlers)(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey)return void y.onItemShiftTab();if(e.target!==e.currentTarget)return;let t=function(e,t,r){var n;let i=(n=e.key,"rtl"!==r?n:"ArrowLeft"===n?"ArrowRight":"ArrowRight"===n?"ArrowLeft":n);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(i))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(i)))return S[i]}(e,y.orientation,y.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let i=x().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)i.reverse();else if("prev"===t||"next"===t){var r,n;"prev"===t&&i.reverse();let o=i.indexOf(e.currentTarget);i=y.loop?(r=i,n=o+1,r.map((e,t)=>r[(n+t)%r.length])):i.slice(o+1)}setTimeout(()=>E(i))}}),children:"function"==typeof c?c({isCurrentTabStop:v,hasTabStop:null!=A}):c})})});R.displayName=k;var S={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function E(e,t=!1){let r=document.activeElement;for(let n of e)if(n===r||(n.focus({preventScroll:t}),document.activeElement!==r))return}e.s(["Item",()=>R,"Root",()=>b,"createRovingFocusGroupScope",()=>x])},37766,e=>{"use strict";let t=["claude-code","codex","gemini","qwen-code"],r={claudeCode:"pro",codex:"chatgpt",gemini:"oauth",qwenCode:"oauth"},n={"claude-code":{agent:"claude-code",label:"Claude Code",accessKey:"claudeCode",defaultAccess:"pro",accessOptions:[{id:"pro",label:"Claude Pro",description:"Shows the current Sonnet models that Claude Code documents for Pro usage."},{id:"max",label:"Claude Max",description:"Unlocks both Sonnet and Opus model choices in Claude Code."},{id:"api",label:"Anthropic API",description:"Use direct Anthropic API credentials instead of a Claude subscription."}]},codex:{agent:"codex",label:"Codex",accessKey:"codex",defaultAccess:"chatgpt",accessOptions:[{id:"chatgpt",label:"ChatGPT Plan",description:"Use the ChatGPT-backed Codex login flow for paid ChatGPT workspaces."},{id:"api",label:"OpenAI API",description:"Use direct OpenAI API credentials when Codex is pointed at the API."}]},gemini:{agent:"gemini",label:"Gemini",accessKey:"gemini",defaultAccess:"oauth",accessOptions:[{id:"oauth",label:"Google Login",description:"Use the built-in Google account flow that Gemini CLI ships with."},{id:"api",label:"Gemini API",description:"Use a Gemini API key or Vertex AI project for broader model control."}]},"qwen-code":{agent:"qwen-code",label:"Qwen Code",accessKey:"qwenCode",defaultAccess:"oauth",accessOptions:[{id:"oauth",label:"Qwen OAuth",description:"Use Qwen Code's built-in browser login and bundled provider defaults."},{id:"api",label:"DashScope / Custom API",description:"Use DashScope or another OpenAI-compatible endpoint configured for Qwen Code."}]}},i=[{id:"low",label:"Low",description:"Fast responses with lighter reasoning."},{id:"medium",label:"Medium",description:"Balanced speed and reasoning depth for everyday tasks."},{id:"high",label:"High",description:"Deeper reasoning for more complex tasks."}],o=[...i,{id:"xhigh",label:"Extra High",description:"Maximum reasoning depth for the hardest tasks."}];function s(e,t,r,n=function(e){return e.trim().split(/[-_]+/g).filter(Boolean).map(e=>"gpt"===e.toLowerCase()?"GPT":e[0]?.toUpperCase()+e.slice(1)).join(" ")}(e)){return{id:e,label:n,description:t,access:r}}let a={"claude-code":{modelsByAccess:{pro:[s("claude-sonnet-4-6","Balanced Claude Code model for day-to-day coding tasks.",["pro","max","api"],"Claude Sonnet 4.6"),s("claude-haiku-4-5","Fast Claude model for lightweight tasks.",["pro","max","api"],"Claude Haiku 4.5")],max:[s("claude-sonnet-4-6","Balanced Claude Code model for day-to-day coding tasks.",["pro","max","api"],"Claude Sonnet 4.6"),s("claude-opus-4-6","Highest-capability Claude Code model for deeper reasoning.",["max","api"],"Claude Opus 4.6"),s("claude-haiku-4-5","Fast Claude model for lightweight tasks.",["pro","max","api"],"Claude Haiku 4.5")],api:[s("claude-sonnet-4-6","Balanced Claude Code model for day-to-day coding tasks.",["pro","max","api"],"Claude Sonnet 4.6"),s("claude-opus-4-6","Highest-capability Claude Code model for deeper reasoning.",["max","api"],"Claude Opus 4.6"),s("claude-haiku-4-5","Fast Claude model for lightweight tasks.",["pro","max","api"],"Claude Haiku 4.5")]},defaultModelByAccess:{pro:"claude-sonnet-4-6",max:"claude-opus-4-6",api:"claude-sonnet-4-6"},reasoningOptionsByAccess:{pro:i,max:i,api:i},defaultReasoningByAccess:{pro:"medium",max:"high",api:"medium"}},codex:{modelsByAccess:{chatgpt:[s("gpt-5.4","Latest frontier coding model exposed by Codex.",["chatgpt","api"],"GPT-5.4"),s("gpt-5.3-codex","Balanced Codex coding model.",["chatgpt","api"],"GPT-5.3-Codex"),s("gpt-5.3-codex-spark","Fast Codex model optimized for rapid iteration.",["chatgpt"],"GPT-5.3-Codex-Spark"),s("gpt-5.2-codex","Previous generation Codex coding model.",["chatgpt","api"],"GPT-5.2-Codex"),s("gpt-5.1-codex-max","High-capability legacy Codex model.",["chatgpt","api"],"GPT-5.1-Codex-Max"),s("gpt-5.1-codex-mini","Smaller Codex model for quick tasks.",["chatgpt","api"],"GPT-5.1-Codex-Mini")],api:[s("gpt-5.4","Latest frontier coding model exposed by Codex.",["chatgpt","api"],"GPT-5.4"),s("gpt-5.3-codex","Balanced Codex coding model.",["chatgpt","api"],"GPT-5.3-Codex"),s("gpt-5.2-codex","Previous generation Codex coding model.",["chatgpt","api"],"GPT-5.2-Codex"),s("gpt-5.1-codex-max","High-capability legacy Codex model.",["chatgpt","api"],"GPT-5.1-Codex-Max"),s("gpt-5.1-codex-mini","Smaller Codex model for quick tasks.",["chatgpt","api"],"GPT-5.1-Codex-Mini")]},defaultModelByAccess:{chatgpt:"gpt-5.4",api:"gpt-5.4"},reasoningOptionsByAccess:{chatgpt:o,api:o},defaultReasoningByAccess:{chatgpt:"high",api:"high"}},gemini:{modelsByAccess:{oauth:[s("gemini-3.1-pro-preview","High-capability Gemini model discovered in local Gemini sessions.",["oauth","api"],"Gemini 3.1 Pro Preview"),s("gemini-3-flash-preview","Fast Gemini model discovered in local Gemini sessions.",["oauth","api"],"Gemini 3 Flash Preview")],api:[s("gemini-3.1-pro-preview","High-capability Gemini model discovered in local Gemini sessions.",["oauth","api"],"Gemini 3.1 Pro Preview"),s("gemini-3-flash-preview","Fast Gemini model discovered in local Gemini sessions.",["oauth","api"],"Gemini 3 Flash Preview")]},defaultModelByAccess:{oauth:"gemini-3.1-pro-preview",api:"gemini-3.1-pro-preview"}},"qwen-code":{modelsByAccess:{oauth:[s("coder-model","Model discovered in the local Qwen Code installation.",["oauth","api"],"Coder Model")],api:[s("coder-model","Model discovered in the local Qwen Code installation.",["oauth","api"],"Coder Model")]},defaultModelByAccess:{oauth:"coder-model",api:"coder-model"}}};function l(e){let r=e.trim().toLowerCase().replace(/[_\s]+/g,"-");return t.includes(r)?r:null}function u(){return{...r}}function c(e){return null!==l(e)}function d(e){let t=l(e);return t?n[t]:null}function f(e,t){let r=d(e);if(!r)return null;let n=t?.[r.accessKey];return"string"==typeof n&&r.accessOptions.some(e=>e.id===n)?n:r.defaultAccess}function p(e,t){let r=l(e);if(!r)return[];let n=f(r,t);if(!n)return[];let i=a[r],o=i.modelsByAccess[n]??[];if(o.length>0)return[...o];let s=[],u=new Set;for(let e of Object.values(i.modelsByAccess))if(Array.isArray(e))for(let t of e)u.has(t.id)||(u.add(t.id),s.push(t));return s}function m(e,t){let r=l(e);if(!r)return null;let n=f(r,t);return n?a[r].defaultModelByAccess[n]??null:null}function h(e,t){let r=l(e);if(!r)return[];let n=f(r,t);return n?a[r].reasoningOptionsByAccess?.[n]??[]:[]}function g(e,t){let r=l(e);if(!r)return null;let n=f(r,t);return n?a[r].defaultReasoningByAccess?.[n]??null:null}e.s(["getAgentModelCatalog",()=>d,"getAvailableAgentModels",()=>p,"getAvailableAgentReasoningEfforts",()=>h,"getDefaultAgentModel",()=>m,"getDefaultAgentReasoningEffort",()=>g,"getDefaultModelAccessPreferences",()=>u,"resolveAgentModelAccess",()=>f,"supportsAgentModelSelection",()=>c])},43531,e=>{"use strict";let t=(0,e.i(75254).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",()=>t],43531)},64659,e=>{"use strict";let t=(0,e.i(75254).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);e.s(["ChevronDown",()=>t],64659)},74886,e=>{"use strict";let t=(0,e.i(75254).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);e.s(["Copy",()=>t],74886)},75505,e=>{"use strict";let t=(0,e.i(75254).default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);e.s(["FolderOpen",()=>t],75505)},90272,e=>{"use strict";let t=(0,e.i(75254).default)("folder-git-2",[["path",{d:"M18 19a5 5 0 0 1-5-5v8",key:"sz5oeg"}],["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]]);e.s(["FolderGit2",()=>t],90272)},37727,e=>{"use strict";let t=(0,e.i(75254).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["X",()=>t],37727)},81633,e=>{"use strict";function t(e){return e.trim().toLowerCase().replace(/[_\s]+/g,"-")}e.s(["normalizeAgentName",()=>t])},97878,e=>{"use strict";let t=new Set,r=null,n=null;function i(e){return Array.isArray(e)?{type:"snapshot",sessions:e}:e&&"object"==typeof e&&"snapshot"===e.type&&Array.isArray(e.sessions)?e:null}function o(e){for(let r of t)r(e)}async function s(){if("function"!=typeof fetch)return;let e=(async()=>{try{let e=await fetch("/api/sessions");if(!e.ok)return;let t=await e.json().catch(()=>null),r=i(t);if(!r)return;o(r)}catch{}})();n=e.finally(()=>{n===e&&(n=null)}),await e}function a(e){return t.add(e),!r&&"u">typeof EventSource&&((r=new EventSource("/api/events")).onmessage=e=>{try{let t=i(JSON.parse(e.data));if(!t)return;o(t)}catch{}},r.addEventListener("refresh",()=>{n||s()}),r.onerror=()=>{0===t.size&&(r?.close(),r=null)}),()=>{t.delete(e),0===t.size&&r&&(r.close(),r=null)}}e.s(["subscribeToSnapshotEvents",()=>a])},78818,e=>{"use strict";var t=e.i(71645);let r=new Set,n=[],i=!0,o=0,s=null,a=null;function l(){for(let e of r)e()}function u(){return{agents:n,loading:i}}function c(){return n.length>0&&Date.now()-o<3e4}function d(){null===a&&(a=window.setTimeout(()=>{a=null,f(!0)},1e4))}async function f(e=!1){if(!e&&c()){i&&(i=!1,l());return}return s||(i=!0,l(),s=(async()=>{try{var e;let t=await fetch("/api/agents",{cache:"no-store"});if(!t.ok)throw Error(`Failed to fetch agents: ${t.status}`);let r=(e=await t.json(),Array.isArray(e)?e:e&&"object"==typeof e&&"agents"in e&&Array.isArray(e.agents)?e.agents:[]);r.length>0?(n=r,o=Date.now(),null!==a&&(window.clearTimeout(a),a=null)):d()}catch{d()}finally{i=!1,s=null,l()}})())}function p(){let[e,n]=(0,t.useState)(()=>u());return(0,t.useEffect)(()=>{let e=()=>n(u());r.add(e),e(),f();let t=()=>{c()||f(!0)},i=()=>{"visible"!==document.visibilityState||c()||f(!0)};return window.addEventListener("focus",t),document.addEventListener("visibilitychange",i),()=>{r.delete(e),window.removeEventListener("focus",t),document.removeEventListener("visibilitychange",i)}},[]),e}e.s(["useAgents",()=>p])},52808,e=>{"use strict";let t=new Set(["archived","done","killed","errored","terminated","merged","cleanup"]);function r(e){return"merged"===e.status||"archived"===e.status||"killed"===e.status||"errored"===e.status||"cleanup"===e.status||"done"===e.status||"terminated"===e.status||e.pr&&("merged"===e.pr.state||"closed"===e.pr.state)?"done":"mergeable"===e.status||"approved"===e.status||e.pr?.mergeability.mergeable?"merge":"waiting_input"===e.activity||"blocked"===e.activity||"needs_input"===e.status||"stuck"===e.status||"exited"===e.activity?"respond":"ci_failed"===e.status||"changes_requested"===e.status||e.pr&&("failing"===e.pr.ciStatus||"changes_requested"===e.pr.reviewDecision||!e.pr.mergeability.noConflicts)?"review":"review_pending"===e.status||e.pr&&!e.pr.isDraft&&("pending"===e.pr.reviewDecision||"none"===e.pr.reviewDecision)?"pending":"working"}e.s(["TERMINAL_STATUSES",0,t,"getAttentionLevel",()=>r])},55716,e=>{"use strict";let t=(0,e.i(75254).default)("git-branch",[["path",{d:"M15 6a9 9 0 0 0-9 9V3",key:"1cii5b"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}]]);e.s(["GitBranch",()=>t],55716)},17442,e=>{"use strict";var t=e.i(18050),r=e.i(18620);let n={default:"border-[var(--vk-border)] bg-[var(--vk-bg-panel)] text-[var(--vk-text-muted)]",success:"border-transparent bg-transparent text-[var(--vk-green)]",warning:"border-transparent bg-transparent text-[var(--vk-orange)]",error:"border-transparent bg-transparent text-[var(--vk-red)]",info:"border-transparent bg-transparent text-[var(--vk-text-muted)]",outline:"border-[var(--vk-border)] bg-transparent text-[var(--vk-text-muted)]"};function i({variant:e="default",className:i,children:o}){return(0,t.jsx)("span",{className:(0,r.cn)("inline-flex items-center gap-1 rounded-[3px] border px-1.5 py-0.5 text-[11px] leading-none",n[e],i),children:o})}e.s(["Badge",()=>i])},90993,e=>{"use strict";var t=e.i(18050),r=e.i(18620);let n=(0,e.i(71645).forwardRef)(({className:e,...n},i)=>(0,t.jsx)("div",{ref:i,className:(0,r.cn)("surface-card rounded-[var(--radius-md)] border",e),...n}));function i({className:e,...n}){return(0,t.jsx)("div",{className:(0,r.cn)("flex items-center gap-2 border-b border-[var(--vk-border)] px-3 py-2",e),...n})}function o({className:e,...n}){return(0,t.jsx)("div",{className:(0,r.cn)("px-3 py-2",e),...n})}n.displayName="Card",e.s(["Card",0,n,"CardContent",()=>o,"CardHeader",()=>i])}]);
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"scripts": {
|
|
9
9
|
"dev": "next dev -p ${PORT:-3000}",
|
|
10
10
|
"build": "next build",
|
|
11
|
-
"start": "
|
|
11
|
+
"start": "next start",
|
|
12
12
|
"typecheck": "tsc --noEmit",
|
|
13
13
|
"clean": "rm -rf .next"
|
|
14
14
|
},
|
|
@@ -1,214 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { readFile, writeFile } from "node:fs/promises";
|
|
3
|
-
import { parse, stringify } from "yaml";
|
|
4
|
-
import type { DashboardAccessConfig, DashboardRoleBindings } from "@conductor-oss/core/types";
|
|
5
|
-
import { getDashboardAccess, guardApiAccess, guardApiActionAccess } from "@/lib/auth";
|
|
6
|
-
import { getServices, invalidateServicesCache } from "@/lib/services";
|
|
7
|
-
import { normalizeRootProjectPaths } from "@/lib/projectConfigSync";
|
|
1
|
+
import { guardedProxyRoute } from "@/lib/proxyRoutes";
|
|
8
2
|
|
|
9
3
|
export const dynamic = "force-dynamic";
|
|
10
4
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
type AccessPatchBody = {
|
|
14
|
-
requireAuth?: unknown;
|
|
15
|
-
defaultRole?: unknown;
|
|
16
|
-
trustedHeaders?: unknown;
|
|
17
|
-
roles?: unknown;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
function toObject(value: unknown): Record<string, unknown> {
|
|
21
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) return {};
|
|
22
|
-
return { ...(value as Record<string, unknown>) };
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function asOptionalRole(value: unknown): DashboardAccessConfig["defaultRole"] | undefined {
|
|
26
|
-
if (value === "viewer" || value === "operator" || value === "admin") {
|
|
27
|
-
return value;
|
|
28
|
-
}
|
|
29
|
-
return undefined;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
function normalizeStringList(value: unknown): string[] {
|
|
33
|
-
if (Array.isArray(value)) {
|
|
34
|
-
return value
|
|
35
|
-
.filter((item): item is string => typeof item === "string")
|
|
36
|
-
.map((item) => item.trim())
|
|
37
|
-
.filter(Boolean);
|
|
38
|
-
}
|
|
39
|
-
if (typeof value !== "string") return [];
|
|
40
|
-
return value
|
|
41
|
-
.split(/[\n,]+/g)
|
|
42
|
-
.map((item) => item.trim())
|
|
43
|
-
.filter(Boolean);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function normalizeRoles(value: unknown): DashboardRoleBindings | undefined {
|
|
47
|
-
const root = toObject(value);
|
|
48
|
-
const next: DashboardRoleBindings = {};
|
|
49
|
-
|
|
50
|
-
const viewers = normalizeStringList(root["viewers"]);
|
|
51
|
-
const operators = normalizeStringList(root["operators"]);
|
|
52
|
-
const admins = normalizeStringList(root["admins"]);
|
|
53
|
-
const viewerDomains = normalizeStringList(root["viewerDomains"]);
|
|
54
|
-
const operatorDomains = normalizeStringList(root["operatorDomains"]);
|
|
55
|
-
const adminDomains = normalizeStringList(root["adminDomains"]);
|
|
56
|
-
|
|
57
|
-
if (viewers.length > 0) next.viewers = viewers;
|
|
58
|
-
if (operators.length > 0) next.operators = operators;
|
|
59
|
-
if (admins.length > 0) next.admins = admins;
|
|
60
|
-
if (viewerDomains.length > 0) next.viewerDomains = viewerDomains;
|
|
61
|
-
if (operatorDomains.length > 0) next.operatorDomains = operatorDomains;
|
|
62
|
-
if (adminDomains.length > 0) next.adminDomains = adminDomains;
|
|
63
|
-
|
|
64
|
-
return Object.keys(next).length > 0 ? next : undefined;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
function normalizeAccessConfig(value: unknown): DashboardAccessConfig {
|
|
68
|
-
const root = toObject(value);
|
|
69
|
-
const trustedHeaders = toObject(root["trustedHeaders"]);
|
|
70
|
-
const defaultRole = asOptionalRole(root["defaultRole"]);
|
|
71
|
-
|
|
72
|
-
const next: DashboardAccessConfig = {
|
|
73
|
-
requireAuth: root["requireAuth"] === true,
|
|
74
|
-
trustedHeaders: {
|
|
75
|
-
enabled: trustedHeaders["enabled"] === true,
|
|
76
|
-
provider:
|
|
77
|
-
trustedHeaders["provider"] === "generic"
|
|
78
|
-
? "generic"
|
|
79
|
-
: "cloudflare-access",
|
|
80
|
-
emailHeader:
|
|
81
|
-
(typeof trustedHeaders["emailHeader"] === "string" && trustedHeaders["emailHeader"].trim().length > 0
|
|
82
|
-
? trustedHeaders["emailHeader"].trim()
|
|
83
|
-
: "Cf-Access-Authenticated-User-Email"),
|
|
84
|
-
jwtHeader:
|
|
85
|
-
(typeof trustedHeaders["jwtHeader"] === "string" && trustedHeaders["jwtHeader"].trim().length > 0
|
|
86
|
-
? trustedHeaders["jwtHeader"].trim()
|
|
87
|
-
: "Cf-Access-Jwt-Assertion"),
|
|
88
|
-
},
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
if (typeof trustedHeaders["teamDomain"] === "string" && trustedHeaders["teamDomain"].trim().length > 0) {
|
|
92
|
-
next.trustedHeaders!.teamDomain = trustedHeaders["teamDomain"].trim();
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
if (typeof trustedHeaders["audience"] === "string" && trustedHeaders["audience"].trim().length > 0) {
|
|
96
|
-
next.trustedHeaders!.audience = trustedHeaders["audience"].trim();
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
if (defaultRole) {
|
|
100
|
-
next.defaultRole = defaultRole;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
const roles = normalizeRoles(root["roles"]);
|
|
104
|
-
if (roles) {
|
|
105
|
-
next.roles = roles;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return next;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
export async function GET(request: NextRequest) {
|
|
112
|
-
const denied = await guardApiAccess(request, "viewer");
|
|
113
|
-
if (denied) return denied;
|
|
114
|
-
|
|
115
|
-
try {
|
|
116
|
-
const { config } = await getServices();
|
|
117
|
-
const access = normalizeAccessConfig(config.access);
|
|
118
|
-
const current = await getDashboardAccess(request);
|
|
119
|
-
|
|
120
|
-
return NextResponse.json({
|
|
121
|
-
access,
|
|
122
|
-
current: {
|
|
123
|
-
authenticated: current.authenticated,
|
|
124
|
-
role: current.role ?? null,
|
|
125
|
-
email: current.email ?? null,
|
|
126
|
-
provider: current.provider ?? null,
|
|
127
|
-
},
|
|
128
|
-
});
|
|
129
|
-
} catch (err) {
|
|
130
|
-
const message = err instanceof Error ? err.message : "Failed to load access settings";
|
|
131
|
-
return NextResponse.json({ error: message }, { status: 500 });
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
export async function PUT(request: NextRequest) {
|
|
136
|
-
const denied = await guardApiAccess(request, "admin");
|
|
137
|
-
if (denied) return denied;
|
|
138
|
-
const deniedAction = guardApiActionAccess(request);
|
|
139
|
-
if (deniedAction) return deniedAction;
|
|
140
|
-
|
|
141
|
-
const body = (await request.json().catch(() => null)) as AccessPatchBody | null;
|
|
142
|
-
if (!body || typeof body !== "object") {
|
|
143
|
-
return NextResponse.json({ error: "Invalid JSON body" }, { status: 400 });
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
try {
|
|
147
|
-
const { config } = await getServices();
|
|
148
|
-
const configPath = config.configPath;
|
|
149
|
-
if (!configPath) {
|
|
150
|
-
return NextResponse.json({ error: "Unable to resolve conductor config path" }, { status: 500 });
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
const originalConfigRaw = await readFile(configPath, "utf8");
|
|
154
|
-
const parsed = (parse(originalConfigRaw) ?? {}) as MutableConfig;
|
|
155
|
-
const nextRoot: MutableConfig =
|
|
156
|
-
parsed && typeof parsed === "object" && !Array.isArray(parsed)
|
|
157
|
-
? { ...parsed }
|
|
158
|
-
: {};
|
|
159
|
-
|
|
160
|
-
const nextAccess = normalizeAccessConfig(nextRoot["access"]);
|
|
161
|
-
|
|
162
|
-
if (typeof body.requireAuth === "boolean") {
|
|
163
|
-
nextAccess.requireAuth = body.requireAuth;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
if (body.defaultRole !== undefined) {
|
|
167
|
-
nextAccess.defaultRole = asOptionalRole(body.defaultRole);
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
if (body.trustedHeaders !== undefined) {
|
|
171
|
-
const nextTrusted = toObject(body.trustedHeaders);
|
|
172
|
-
nextAccess.trustedHeaders = {
|
|
173
|
-
enabled: nextTrusted["enabled"] === true,
|
|
174
|
-
emailHeader:
|
|
175
|
-
(typeof nextTrusted["emailHeader"] === "string" && nextTrusted["emailHeader"].trim().length > 0
|
|
176
|
-
? nextTrusted["emailHeader"].trim()
|
|
177
|
-
: "Cf-Access-Authenticated-User-Email"),
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
if (body.roles !== undefined) {
|
|
182
|
-
nextAccess.roles = normalizeRoles(body.roles);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
nextRoot["access"] = nextAccess;
|
|
186
|
-
await normalizeRootProjectPaths(nextRoot);
|
|
187
|
-
|
|
188
|
-
const updatedYaml = stringify(nextRoot, { lineWidth: 0 });
|
|
189
|
-
await writeFile(configPath, updatedYaml, "utf8");
|
|
190
|
-
|
|
191
|
-
try {
|
|
192
|
-
invalidateServicesCache("access updated");
|
|
193
|
-
await getServices();
|
|
194
|
-
} catch (err) {
|
|
195
|
-
await writeFile(configPath, originalConfigRaw, "utf8");
|
|
196
|
-
invalidateServicesCache("access update rollback");
|
|
197
|
-
throw err;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
const current = await getDashboardAccess(request);
|
|
201
|
-
return NextResponse.json({
|
|
202
|
-
access: nextAccess,
|
|
203
|
-
current: {
|
|
204
|
-
authenticated: current.authenticated,
|
|
205
|
-
role: current.role ?? null,
|
|
206
|
-
email: current.email ?? null,
|
|
207
|
-
provider: current.provider ?? null,
|
|
208
|
-
},
|
|
209
|
-
});
|
|
210
|
-
} catch (err) {
|
|
211
|
-
const message = err instanceof Error ? err.message : "Failed to update access settings";
|
|
212
|
-
return NextResponse.json({ error: message }, { status: 500 });
|
|
213
|
-
}
|
|
214
|
-
}
|
|
5
|
+
export const GET = guardedProxyRoute("/api/access", { role: "viewer" });
|
|
6
|
+
export const PUT = guardedProxyRoute("/api/access", { role: "admin", requireActionGuard: true });
|
|
@@ -1,169 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { randomBytes } from "node:crypto";
|
|
3
|
-
import { mkdir, writeFile } from "node:fs/promises";
|
|
4
|
-
import { homedir } from "node:os";
|
|
5
|
-
import { dirname, relative, resolve, sep } from "node:path";
|
|
6
|
-
import type { OrchestratorConfig } from "@conductor-oss/core";
|
|
7
|
-
import { guardApiAccess, guardApiActionAccess } from "@/lib/auth";
|
|
8
|
-
import { getServices } from "@/lib/services";
|
|
1
|
+
import { guardedProxyRoute } from "@/lib/proxyRoutes";
|
|
9
2
|
|
|
10
3
|
export const dynamic = "force-dynamic";
|
|
11
4
|
|
|
12
|
-
const
|
|
13
|
-
const MAX_UPLOAD_BYTES = 25 * 1024 * 1024; // 25MB per file
|
|
14
|
-
|
|
15
|
-
const IMAGE_EXTENSIONS = new Set([
|
|
16
|
-
".png", ".jpg", ".jpeg", ".gif", ".webp", ".svg", ".bmp", ".ico", ".tiff",
|
|
17
|
-
]);
|
|
18
|
-
|
|
19
|
-
function asNonEmptyString(value: unknown): string | null {
|
|
20
|
-
if (typeof value !== "string") return null;
|
|
21
|
-
const trimmed = value.trim();
|
|
22
|
-
return trimmed.length > 0 ? trimmed : null;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function expandHome(value: string): string {
|
|
26
|
-
if (value.startsWith("~/")) {
|
|
27
|
-
return resolve(homedir(), value.slice(2));
|
|
28
|
-
}
|
|
29
|
-
return resolve(value);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
function resolveWorkspacePath(config: OrchestratorConfig): string {
|
|
33
|
-
if (process.env["CONDUCTOR_WORKSPACE"]?.trim()) {
|
|
34
|
-
return expandHome(process.env["CONDUCTOR_WORKSPACE"]);
|
|
35
|
-
}
|
|
36
|
-
if (config.configPath) {
|
|
37
|
-
return dirname(config.configPath);
|
|
38
|
-
}
|
|
39
|
-
return resolve(process.cwd());
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function normalizeToken(value: string): string {
|
|
43
|
-
const input = value.trim().toLowerCase();
|
|
44
|
-
let out = "";
|
|
45
|
-
let prevDash = false;
|
|
46
|
-
for (const ch of input) {
|
|
47
|
-
const code = ch.charCodeAt(0);
|
|
48
|
-
const isDigit = code >= 48 && code <= 57;
|
|
49
|
-
const isLowerAlpha = code >= 97 && code <= 122;
|
|
50
|
-
const isSafe = isDigit || isLowerAlpha || ch === "." || ch === "_";
|
|
51
|
-
if (isSafe) {
|
|
52
|
-
out += ch;
|
|
53
|
-
prevDash = false;
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
if (!prevDash && out.length > 0) {
|
|
57
|
-
out += "-";
|
|
58
|
-
prevDash = true;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
while (out.endsWith("-")) out = out.slice(0, -1);
|
|
62
|
-
return out || "project";
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function sanitizeFileName(value: string): string {
|
|
66
|
-
const trimmed = value.trim();
|
|
67
|
-
if (!trimmed) return "upload.bin";
|
|
68
|
-
const normalized = trimmed
|
|
69
|
-
.replaceAll("\\", "/")
|
|
70
|
-
.split("/")
|
|
71
|
-
.filter(Boolean)
|
|
72
|
-
.pop() ?? "upload.bin";
|
|
73
|
-
const safe = normalized
|
|
74
|
-
.replace(/[^A-Za-z0-9._-]+/g, "-")
|
|
75
|
-
.replace(/-+/g, "-")
|
|
76
|
-
.replace(/^\.+/, "")
|
|
77
|
-
.replace(/^-+/, "");
|
|
78
|
-
return safe || "upload.bin";
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
function isImagePath(path: string): boolean {
|
|
82
|
-
const lower = path.toLowerCase();
|
|
83
|
-
for (const ext of IMAGE_EXTENSIONS) {
|
|
84
|
-
if (lower.endsWith(ext)) return true;
|
|
85
|
-
}
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export async function POST(request: NextRequest) {
|
|
90
|
-
const denied = await guardApiAccess(request, "operator");
|
|
91
|
-
if (denied) return denied;
|
|
92
|
-
const deniedAction = guardApiActionAccess(request);
|
|
93
|
-
if (deniedAction) return deniedAction;
|
|
94
|
-
|
|
95
|
-
try {
|
|
96
|
-
const form = await request.formData();
|
|
97
|
-
const projectId = asNonEmptyString(form.get("projectId"));
|
|
98
|
-
if (!projectId) {
|
|
99
|
-
return NextResponse.json({ error: "projectId is required" }, { status: 400 });
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
const incoming = form.getAll("files").filter((item): item is File => item instanceof File);
|
|
103
|
-
if (incoming.length === 0) {
|
|
104
|
-
return NextResponse.json({ error: "No files uploaded" }, { status: 400 });
|
|
105
|
-
}
|
|
106
|
-
if (incoming.length > MAX_UPLOAD_FILES) {
|
|
107
|
-
return NextResponse.json(
|
|
108
|
-
{ error: `Too many files. Max ${MAX_UPLOAD_FILES} files per request.` },
|
|
109
|
-
{ status: 400 },
|
|
110
|
-
);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
const { config } = await getServices();
|
|
114
|
-
if (!config.projects[projectId]) {
|
|
115
|
-
return NextResponse.json({ error: `Unknown project: ${projectId}` }, { status: 404 });
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
const workspaceRoot = resolveWorkspacePath(config);
|
|
119
|
-
const projectSegment = normalizeToken(projectId);
|
|
120
|
-
const targetDir = resolve(workspaceRoot, "attachments", projectSegment);
|
|
121
|
-
const workspacePrefix = workspaceRoot.endsWith(sep) ? workspaceRoot : `${workspaceRoot}${sep}`;
|
|
122
|
-
if (targetDir !== workspaceRoot && !targetDir.startsWith(workspacePrefix)) {
|
|
123
|
-
return NextResponse.json({ error: "Upload path escapes workspace" }, { status: 400 });
|
|
124
|
-
}
|
|
125
|
-
await mkdir(targetDir, { recursive: true });
|
|
126
|
-
|
|
127
|
-
const uploaded: Array<{
|
|
128
|
-
path: string;
|
|
129
|
-
name: string;
|
|
130
|
-
size: number;
|
|
131
|
-
mimeType: string | null;
|
|
132
|
-
kind: "image" | "file";
|
|
133
|
-
}> = [];
|
|
134
|
-
|
|
135
|
-
for (const [index, file] of incoming.entries()) {
|
|
136
|
-
if (file.size > MAX_UPLOAD_BYTES) {
|
|
137
|
-
return NextResponse.json(
|
|
138
|
-
{ error: `File "${file.name}" exceeds 25MB limit.` },
|
|
139
|
-
{ status: 413 },
|
|
140
|
-
);
|
|
141
|
-
}
|
|
142
|
-
const safeName = sanitizeFileName(file.name);
|
|
143
|
-
const uniquePrefix = `${Date.now()}-${index}-${randomBytes(3).toString("hex")}`;
|
|
144
|
-
const fileName = `${uniquePrefix}-${safeName}`;
|
|
145
|
-
const absolutePath = resolve(targetDir, fileName);
|
|
146
|
-
if (absolutePath !== workspaceRoot && !absolutePath.startsWith(workspacePrefix)) {
|
|
147
|
-
return NextResponse.json({ error: "Resolved upload path escapes workspace" }, { status: 400 });
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
const bytes = Buffer.from(await file.arrayBuffer());
|
|
151
|
-
await writeFile(absolutePath, bytes);
|
|
152
|
-
const relPath = relative(workspaceRoot, absolutePath).replaceAll("\\", "/");
|
|
153
|
-
uploaded.push({
|
|
154
|
-
path: relPath,
|
|
155
|
-
name: file.name || safeName,
|
|
156
|
-
size: file.size,
|
|
157
|
-
mimeType: file.type || null,
|
|
158
|
-
kind: isImagePath(relPath) ? "image" : "file",
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
return NextResponse.json({ files: uploaded }, { status: 201 });
|
|
163
|
-
} catch (err) {
|
|
164
|
-
return NextResponse.json(
|
|
165
|
-
{ error: err instanceof Error ? err.message : "Failed to upload files" },
|
|
166
|
-
{ status: 500 },
|
|
167
|
-
);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
5
|
+
export const POST = guardedProxyRoute("/api/attachments", { role: "operator", requireActionGuard: true });
|
|
@@ -1,54 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
BUILTIN_REMOTE_SESSION_COOKIE,
|
|
4
|
-
createBuiltinRemoteSessionValue,
|
|
5
|
-
getBuiltinRemoteSessionCookieOptions,
|
|
6
|
-
isBuiltinRemoteAuthEnabled,
|
|
7
|
-
isValidBuiltinAccessToken,
|
|
8
|
-
} from "@/lib/remoteAuth";
|
|
1
|
+
import { openProxyRoute } from "@/lib/proxyRoutes";
|
|
9
2
|
|
|
10
|
-
|
|
11
|
-
token?: unknown;
|
|
12
|
-
};
|
|
3
|
+
export const dynamic = "force-dynamic";
|
|
13
4
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
...getBuiltinRemoteSessionCookieOptions(false),
|
|
17
|
-
maxAge: 0,
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export async function POST(request: NextRequest): Promise<NextResponse> {
|
|
22
|
-
if (!isBuiltinRemoteAuthEnabled()) {
|
|
23
|
-
return NextResponse.json({ error: "Built-in remote auth is not enabled" }, { status: 404 });
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const body = (await request.json().catch(() => null)) as SessionRequestBody | null;
|
|
27
|
-
const token = typeof body?.token === "string" ? body.token.trim() : "";
|
|
28
|
-
if (!isValidBuiltinAccessToken(token)) {
|
|
29
|
-
return NextResponse.json({ error: "Invalid access token" }, { status: 403 });
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const response = NextResponse.json({ ok: true });
|
|
33
|
-
response.cookies.set(
|
|
34
|
-
BUILTIN_REMOTE_SESSION_COOKIE,
|
|
35
|
-
await createBuiltinRemoteSessionValue(),
|
|
36
|
-
getBuiltinRemoteSessionCookieOptions(request.nextUrl.protocol === "https:"),
|
|
37
|
-
);
|
|
38
|
-
return response;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export async function DELETE(request: NextRequest): Promise<NextResponse> {
|
|
42
|
-
const response = NextResponse.json({ ok: true });
|
|
43
|
-
clearSession(response);
|
|
44
|
-
|
|
45
|
-
if (!isBuiltinRemoteAuthEnabled()) {
|
|
46
|
-
return response;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
response.cookies.set(BUILTIN_REMOTE_SESSION_COOKIE, "", {
|
|
50
|
-
...getBuiltinRemoteSessionCookieOptions(request.nextUrl.protocol === "https:"),
|
|
51
|
-
maxAge: 0,
|
|
52
|
-
});
|
|
53
|
-
return response;
|
|
54
|
-
}
|
|
5
|
+
export const POST = openProxyRoute("/api/auth/session");
|
|
6
|
+
export const DELETE = openProxyRoute("/api/auth/session");
|