conductor-oss 0.2.4 → 0.2.6
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 +29 -6
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/setup.d.ts +30 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +131 -29
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/start.d.ts +3 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +209 -15
- package/dist/commands/start.js.map +1 -1
- package/dist/index.js +1 -1
- package/node_modules/@conductor-oss/core/dist/board-diagnostics.d.ts.map +1 -1
- package/node_modules/@conductor-oss/core/dist/board-diagnostics.js +12 -2
- package/node_modules/@conductor-oss/core/dist/board-diagnostics.js.map +1 -1
- package/node_modules/@conductor-oss/core/dist/board-watcher.d.ts.map +1 -1
- package/node_modules/@conductor-oss/core/dist/board-watcher.js +18 -5
- package/node_modules/@conductor-oss/core/dist/board-watcher.js.map +1 -1
- package/node_modules/@conductor-oss/core/dist/config.d.ts +1 -1
- package/node_modules/@conductor-oss/core/dist/config.d.ts.map +1 -1
- package/node_modules/@conductor-oss/core/dist/config.js +36 -1
- package/node_modules/@conductor-oss/core/dist/config.js.map +1 -1
- package/node_modules/@conductor-oss/core/dist/index.d.ts +1 -0
- package/node_modules/@conductor-oss/core/dist/index.d.ts.map +1 -1
- package/node_modules/@conductor-oss/core/dist/index.js +1 -0
- package/node_modules/@conductor-oss/core/dist/index.js.map +1 -1
- package/node_modules/@conductor-oss/core/dist/project-paths.d.ts +2 -0
- package/node_modules/@conductor-oss/core/dist/project-paths.d.ts.map +1 -0
- package/node_modules/@conductor-oss/core/dist/project-paths.js +67 -0
- package/node_modules/@conductor-oss/core/dist/project-paths.js.map +1 -0
- package/node_modules/@conductor-oss/core/dist/scaffold.d.ts +14 -0
- package/node_modules/@conductor-oss/core/dist/scaffold.d.ts.map +1 -1
- package/node_modules/@conductor-oss/core/dist/scaffold.js +27 -4
- package/node_modules/@conductor-oss/core/dist/scaffold.js.map +1 -1
- package/node_modules/@conductor-oss/core/dist/types.d.ts +71 -0
- package/node_modules/@conductor-oss/core/dist/types.d.ts.map +1 -1
- package/node_modules/@conductor-oss/core/dist/types.js +244 -0
- package/node_modules/@conductor-oss/core/dist/types.js.map +1 -1
- package/node_modules/@conductor-oss/core/package.json +1 -1
- package/node_modules/@conductor-oss/plugin-agent-amp/dist/index.js +1 -1
- package/node_modules/@conductor-oss/plugin-agent-amp/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-agent-ccr/dist/index.js +1 -1
- package/node_modules/@conductor-oss/plugin-agent-ccr/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-agent-claude-code/dist/index.js +1 -1
- package/node_modules/@conductor-oss/plugin-agent-claude-code/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-agent-codex/dist/index.js +1 -1
- package/node_modules/@conductor-oss/plugin-agent-codex/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-agent-cursor-cli/dist/index.js +1 -1
- package/node_modules/@conductor-oss/plugin-agent-cursor-cli/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-agent-droid/dist/index.js +1 -1
- package/node_modules/@conductor-oss/plugin-agent-droid/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-agent-gemini/dist/index.js +1 -1
- package/node_modules/@conductor-oss/plugin-agent-gemini/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-agent-github-copilot/dist/index.js +1 -1
- package/node_modules/@conductor-oss/plugin-agent-github-copilot/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-agent-opencode/dist/index.js +1 -1
- package/node_modules/@conductor-oss/plugin-agent-opencode/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-agent-qwen-code/dist/index.js +10 -6
- package/node_modules/@conductor-oss/plugin-agent-qwen-code/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-mcp-server/dist/index.js +1 -1
- package/node_modules/@conductor-oss/plugin-mcp-server/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-notifier-desktop/dist/index.js +1 -1
- package/node_modules/@conductor-oss/plugin-notifier-desktop/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-notifier-discord/dist/index.js +1 -1
- package/node_modules/@conductor-oss/plugin-notifier-discord/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-runtime-tmux/dist/index.js +1 -1
- package/node_modules/@conductor-oss/plugin-runtime-tmux/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-scm-github/dist/index.js +1 -1
- package/node_modules/@conductor-oss/plugin-scm-github/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-terminal-web/dist/index.js +1 -1
- package/node_modules/@conductor-oss/plugin-terminal-web/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-tracker-github/dist/index.js +1 -1
- package/node_modules/@conductor-oss/plugin-tracker-github/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-webhook/package.json +2 -2
- package/node_modules/@conductor-oss/plugin-workspace-worktree/dist/index.js +1 -1
- package/node_modules/@conductor-oss/plugin-workspace-worktree/package.json +2 -2
- package/package.json +22 -21
- package/web/.next/standalone/packages/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/packages/web/.next/app-path-routes-manifest.json +5 -1
- package/web/.next/standalone/packages/web/.next/build-manifest.json +4 -4
- package/web/.next/standalone/packages/web/.next/routes-manifest.json +24 -0
- package/web/.next/standalone/packages/web/.next/server/app/_global-error/page/build-manifest.json +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.rsc +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/build-manifest.json +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.html +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.rsc +9 -9
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_full.segment.rsc +9 -9
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_head.segment.rsc +3 -3
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_index.segment.rsc +5 -5
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/access/route/app-paths-manifest.json +3 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/access/route/build-manifest.json +11 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/access/route/server-reference-manifest.json +4 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/access/route.js +11 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/access/route.js.map +5 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/access/route.js.nft.json +1 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/access/route_client-reference-manifest.js +2 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/agents/route.js +5 -3
- package/web/.next/standalone/packages/web/.next/server/app/api/agents/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/attachments/route.js +4 -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/app-paths-manifest.json +3 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/auth/session/route/build-manifest.json +11 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/auth/session/route/server-reference-manifest.json +4 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/auth/session/route.js +8 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/auth/session/route.js.map +5 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/auth/session/route.js.nft.json +1 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/auth/session/route_client-reference-manifest.js +2 -0
- package/web/.next/standalone/packages/web/.next/server/app/api/boards/route.js +5 -3
- 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 +4 -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 +3 -1
- 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 +4 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/events/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/directory/route.js +3 -1
- 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/github/repos/route.js +4 -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 +3 -1
- 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/preferences/route.js +5 -3
- 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/route.js +5 -3
- 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]/checks/route.js +4 -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 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/diff/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feedback/route.js +4 -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 +3 -1
- 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 +3 -1
- 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 +4 -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 +4 -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 +4 -2
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/stream/route.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/restore/route.js +4 -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 +3 -1
- 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 +4 -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 +3 -1
- 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 +5 -3
- 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 +3 -1
- 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 +5 -3
- 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/auth/grant/route/app-paths-manifest.json +3 -0
- package/web/.next/standalone/packages/web/.next/server/app/auth/grant/route/build-manifest.json +11 -0
- package/web/.next/standalone/packages/web/.next/server/app/auth/grant/route/server-reference-manifest.json +4 -0
- package/web/.next/standalone/packages/web/.next/server/app/auth/grant/route.js +8 -0
- package/web/.next/standalone/packages/web/.next/server/app/auth/grant/route.js.map +5 -0
- package/web/.next/standalone/packages/web/.next/server/app/auth/grant/route.js.nft.json +1 -0
- package/web/.next/standalone/packages/web/.next/server/app/auth/grant/route_client-reference-manifest.js +2 -0
- 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/build-manifest.json +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page/build-manifest.json +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page/build-manifest.json +2 -2
- 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/app-paths-manifest.json +3 -0
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page/build-manifest.json +18 -0
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page/next-font-manifest.json +14 -0
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page/react-loadable-manifest.json +1 -0
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page/server-reference-manifest.json +110 -0
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page.js +19 -0
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page.js.map +5 -0
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page.js.nft.json +1 -0
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page_client-reference-manifest.js +2 -0
- package/web/.next/standalone/packages/web/.next/server/app-paths-manifest.json +5 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/1bc17_next_dist_esm_build_templates_app-route_1651710d.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/1bc17_next_dist_esm_build_templates_app-route_34b04c2b.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/1bc17_next_dist_esm_build_templates_app-route_9c655a1d.js +3 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/1bc17_next_dist_esm_build_templates_app-route_b41c4976.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/1bc17_next_dist_esm_build_templates_app-route_f4104ae4.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__005aa909._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__03ff76ee._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__07ec6d5c._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__0a0f0f01._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__0ad3545b._.js +5 -5
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__39e2947e._.js → [root-of-the-server]__0c65150d._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__000a39bb._.js → [root-of-the-server]__0d615ef4._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__13ad088c._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__14b1d4a3._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__4266ed21._.js → [root-of-the-server]__14d277b3._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1741fb8a._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__17d81825._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__04d7f8e9._.js → [root-of-the-server]__1b7c6a55._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1e288076._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1f626a16._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1f712b77._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2062aaab._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__206c3d8a._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__9469f247._.js → [root-of-the-server]__230d54da._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__24d8e6fc._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2556a816._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2af6c2e0._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2d57abda._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__30b0f109._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__30c75561._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__31c39bd9._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__49d4f276._.js → [root-of-the-server]__341657dd._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__34a19860._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3fde7043._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__40c8037e._.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__41ee872a._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__44606e04._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__44d59fd0._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__459839a6._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__46a8e776._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__48875cbb._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__53306f53._.js → [root-of-the-server]__488ab4b2._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4ac9d639._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4c3fb752._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4dab6a6a._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__544326ac._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5494c5a2._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__54a218f0._.js +3 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__54a76cd2._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5661ca72._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__568f0a6e._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5cd49624._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5d76c5af._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5e0533de._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5f628cf2._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__62608541._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6d62709d._.js +5 -5
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6e4e09be._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__70258e45._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__917adaec._.js → [root-of-the-server]__711dc459._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__720136dd._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__749331b0._.js +3 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__755c7e10._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__778e46a1._.js +5 -5
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7e6ea46e._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7f023a04._.js +4 -4
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7f2ed2cd._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7fa52da6._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__82171aa3._.js +9 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__84362910._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__848eb266._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__8596d782._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__85c5cb36._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__878fbacc._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__881858fa._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__885e3a00._.js +3 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__893f6b3b._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__8ac30f97._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__8c519453._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__919845e0._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__6b396859._.js → [root-of-the-server]__927b9bce._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__93b3582e._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__964f4e89._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__96633022._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__98697e45._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__997ebfca._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__9c930222._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__9f36b7ec._.js +5 -5
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a44f91a4._.js +3 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__3319a78c._.js → [root-of-the-server]__a5d13971._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a6c7bd91._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ae580a1a._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__af533b5e._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__afa79f55._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b057f7b2._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b59abfbd._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__bd8ace80._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__be0f2c29._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__bea07e07._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c8618cb1._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__caf8e7cb._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cb112606._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cb51f2e3._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cba32afb._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cc74ea40._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cd3692a0._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cf3cdecd._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d09e7a99._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d538c110._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d93447b9._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d9c80b18._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__dc0959da._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__dda8eac1._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__df2c6efe._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e113f6df._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e2573a77._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e2d60274._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e308bb89._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e345a443._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e80a520f._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ea0bb124._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ef773ea6._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f0d15920._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__b029d2c1._.js → [root-of-the-server]__f2f30c04._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f47a2a9e._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f48eb2d4._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f6a8bbd9._.js +12 -12
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__faceea9b._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__fb6ab669._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__fcf96768._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__fdaa8058._.js +7 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ff2b205d._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_core_dist_index_cdd30418.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-amp_dist_index_bf3d8239.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-ccr_dist_index_69cbf726.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-claude-code_dist_index_31314e43.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-cursor-cli_dist_index_8d5cc426.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-droid_dist_index_f731227a.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-gemini_dist_index_b2d219e8.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-github-copilot_dist_index_9f80cb45.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-opencode_dist_index_7c7015da.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_agent-qwen-code_dist_index_46dd8653.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_notifier-desktop_dist_index_ef3473f0.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_notifier-discord_dist_index_34257226.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_scm-github_dist_index_3b5a621e.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_terminal-web_dist_index_1e0706d3.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_plugins_tracker-github_dist_index_2d7af62f.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_web__next-internal_server_app_api_access_route_actions_06740e99.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_web__next-internal_server_app_api_auth_session_route_actions_078c0ee4.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_web__next-internal_server_app_auth_grant_route_actions_13ba4421.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_web_src_lib_13fee5eb._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/packages_web_src_lib_d64596cc._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{[root-of-the-server]__1ddf22db._.js → [root-of-the-server]__1012a4c8._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{[root-of-the-server]__ed81e796._.js → [root-of-the-server]__81affb12._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__95e85d3d._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{[root-of-the-server]__f577d85a._.js → [root-of-the-server]__9d698773._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__a38f483b._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{[root-of-the-server]__3bf3fbfb._.js → [root-of-the-server]__c09a0c60._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__d9dde485._.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{[root-of-the-server]__d5970f3e._.js → [root-of-the-server]__dd435d80._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{[root-of-the-server]__469db3c3._.js → [root-of-the-server]__e78955d0._.js} +2 -2
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_14a33487._.js +3 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_34d55bf1._.js +4 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{node_modules__pnpm_c636dc22._.js → node_modules__pnpm_597c265e._.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 +3 -0
- package/web/.next/standalone/packages/web/.next/server/middleware-build-manifest.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/middleware.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/next-font-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/next-font-manifest.json +7 -0
- 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 +56 -7
- package/web/.next/standalone/packages/web/.next/static/chunks/{9b799cd7eb9a34ff.js → 1c4c14af475ada00.js} +1 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/ba68284a3401d670.css +3 -0
- package/web/.next/{static/chunks/4372fb4d7779cd64.js → standalone/packages/web/.next/static/chunks/d00ddc86d1af3b6d.js} +1 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/d8f4bf59132f70fd.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/f355d4d60f0ec80e.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/{turbopack-c3449aaab622f98c.js → turbopack-dc658d17ee981623.js} +1 -1
- package/web/.next/standalone/packages/web/package.json +1 -0
- package/web/.next/standalone/packages/web/src/app/api/access/route.ts +214 -0
- package/web/.next/standalone/packages/web/src/app/api/agents/route.ts +2 -2
- package/web/.next/standalone/packages/web/src/app/api/attachments/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/auth/session/route.ts +54 -0
- package/web/.next/standalone/packages/web/src/app/api/boards/route.ts +2 -2
- package/web/.next/standalone/packages/web/src/app/api/config/route.ts +2 -1
- package/web/.next/standalone/packages/web/src/app/api/context-files/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/events/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/filesystem/directory/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/github/repos/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/health/boards/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/preferences/route.ts +11 -3
- package/web/.next/standalone/packages/web/src/app/api/repositories/route.ts +21 -3
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/checks/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/diff/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/feedback/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/files/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/keys/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/kill/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/output/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/output/stream/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/restore/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/send/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/sessions/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/spawn/route.ts +3 -2
- package/web/.next/standalone/packages/web/src/app/api/workspaces/branches/route.ts +1 -1
- package/web/.next/standalone/packages/web/src/app/api/workspaces/route.ts +11 -3
- package/web/.next/standalone/packages/web/src/app/auth/grant/route.ts +37 -0
- package/web/.next/standalone/packages/web/src/app/page.tsx +763 -9
- package/web/.next/standalone/packages/web/src/app/unlock/UnlockForm.tsx +77 -0
- package/web/.next/standalone/packages/web/src/app/unlock/page.tsx +41 -0
- package/web/.next/standalone/packages/web/src/components/Dashboard.tsx +11 -125
- package/web/.next/standalone/packages/web/src/hooks/useConfig.ts +4 -0
- package/web/.next/standalone/packages/web/src/lib/accessControl.test.ts +46 -0
- package/web/.next/standalone/packages/web/src/lib/accessControl.ts +115 -0
- package/web/.next/standalone/packages/web/src/lib/auth.ts +294 -53
- package/web/.next/standalone/packages/web/src/lib/edgeAuth.test.ts +91 -0
- package/web/.next/standalone/packages/web/src/lib/edgeAuth.ts +205 -0
- package/web/.next/standalone/packages/web/src/lib/modelAccess.ts +40 -0
- package/web/.next/standalone/packages/web/src/lib/projectConfigSync.ts +59 -9
- package/web/.next/standalone/packages/web/src/lib/remoteAuth.ts +104 -0
- package/web/.next/standalone/packages/web/src/proxy.ts +64 -0
- package/web/.next/standalone/packages/web/tsconfig.tsbuildinfo +1 -1
- package/web/.next/static/chunks/{9b799cd7eb9a34ff.js → 1c4c14af475ada00.js} +1 -1
- package/web/.next/static/chunks/ba68284a3401d670.css +3 -0
- package/web/.next/{standalone/packages/web/.next/static/chunks/4372fb4d7779cd64.js → static/chunks/d00ddc86d1af3b6d.js} +1 -1
- package/web/.next/static/chunks/d8f4bf59132f70fd.js +1 -0
- package/web/.next/static/chunks/f355d4d60f0ec80e.js +1 -0
- package/web/.next/static/chunks/{turbopack-c3449aaab622f98c.js → turbopack-dc658d17ee981623.js} +1 -1
- package/node_modules/@conductor-oss/core/dist/__tests__/board-parser.test.d.ts +0 -2
- package/node_modules/@conductor-oss/core/dist/__tests__/board-parser.test.d.ts.map +0 -1
- package/node_modules/@conductor-oss/core/dist/__tests__/board-parser.test.js +0 -67
- package/node_modules/@conductor-oss/core/dist/__tests__/board-parser.test.js.map +0 -1
- package/node_modules/@conductor-oss/core/dist/__tests__/board-watcher-support-files.test.d.ts +0 -2
- package/node_modules/@conductor-oss/core/dist/__tests__/board-watcher-support-files.test.d.ts.map +0 -1
- package/node_modules/@conductor-oss/core/dist/__tests__/board-watcher-support-files.test.js +0 -104
- package/node_modules/@conductor-oss/core/dist/__tests__/board-watcher-support-files.test.js.map +0 -1
- package/node_modules/@conductor-oss/core/dist/agent-cli-runtime.d.ts +0 -20
- package/node_modules/@conductor-oss/core/dist/agent-cli-runtime.d.ts.map +0 -1
- package/node_modules/@conductor-oss/core/dist/agent-cli-runtime.js +0 -192
- package/node_modules/@conductor-oss/core/dist/agent-cli-runtime.js.map +0 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__019d9c90._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__08a3e108._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__0b0ab434._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__16fb4c3e._.js +0 -9
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__22609b55._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2ff87bed._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3c1772ab._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5093c7e0._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5a67f1f9._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5cf55740._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6bc94363._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6cad94c3._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6d28affc._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6f84fa49._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__70c9c405._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__711294a3._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7791414d._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7fb2ee11._.js +0 -7
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__86646048._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__8ca91fef._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a15b5527._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a4a89ac9._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a8a53d4a._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a93c59df._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__abf6274f._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__acd4519a._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b87de88e._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__bc304d71._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__be52402d._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__be74f171._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c03aa571._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c2850420._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c82b8934._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c8e31ad0._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__deafbc7a._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e18c8e77._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e1f610fb._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ec21c9a4._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ec256a62._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__edc8e5a5._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ee0dea96._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f2c28004._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f7c743c0._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f95f5172._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__fc292e1c._.js +0 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ffbf3faf._.js +0 -3
- package/web/.next/standalone/packages/web/.next/static/chunks/687bc713618f6993.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/e7bb96d7efad8e32.css +0 -3
- package/web/.next/static/chunks/687bc713618f6993.js +0 -1
- package/web/.next/static/chunks/e7bb96d7efad8e32.css +0 -3
- /package/web/.next/standalone/packages/web/.next/static/{D95FTb8SiR6uFzjCQiKtd → tV9IvZT_f540bpw2KonCu}/_buildManifest.js +0 -0
- /package/web/.next/standalone/packages/web/.next/static/{D95FTb8SiR6uFzjCQiKtd → tV9IvZT_f540bpw2KonCu}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/packages/web/.next/static/{D95FTb8SiR6uFzjCQiKtd → tV9IvZT_f540bpw2KonCu}/_ssgManifest.js +0 -0
- /package/web/.next/static/{D95FTb8SiR6uFzjCQiKtd → tV9IvZT_f540bpw2KonCu}/_buildManifest.js +0 -0
- /package/web/.next/static/{D95FTb8SiR6uFzjCQiKtd → tV9IvZT_f540bpw2KonCu}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{D95FTb8SiR6uFzjCQiKtd → tV9IvZT_f540bpw2KonCu}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getDefaultModelAccessPreferences,
|
|
3
|
+
type ModelAccessPreferences,
|
|
4
|
+
} from "@conductor-oss/core/types";
|
|
5
|
+
|
|
6
|
+
const CLAUDE_ACCESS = ["pro", "max", "api"] as const;
|
|
7
|
+
const CODEX_ACCESS = ["chatgpt", "api"] as const;
|
|
8
|
+
const GEMINI_ACCESS = ["oauth", "api"] as const;
|
|
9
|
+
const QWEN_ACCESS = ["oauth", "api"] as const;
|
|
10
|
+
|
|
11
|
+
function toObject(value: unknown): Record<string, unknown> {
|
|
12
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
13
|
+
return {};
|
|
14
|
+
}
|
|
15
|
+
return { ...(value as Record<string, unknown>) };
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function selectValue<T extends string>(
|
|
19
|
+
value: unknown,
|
|
20
|
+
supported: readonly T[],
|
|
21
|
+
fallback: T,
|
|
22
|
+
): T {
|
|
23
|
+
return typeof value === "string" && supported.includes(value as T)
|
|
24
|
+
? value as T
|
|
25
|
+
: fallback;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function normalizeModelAccessPreferences(
|
|
29
|
+
value: unknown,
|
|
30
|
+
): Required<ModelAccessPreferences> {
|
|
31
|
+
const root = toObject(value);
|
|
32
|
+
const defaults = getDefaultModelAccessPreferences();
|
|
33
|
+
|
|
34
|
+
return {
|
|
35
|
+
claudeCode: selectValue(root["claudeCode"], CLAUDE_ACCESS, defaults.claudeCode),
|
|
36
|
+
codex: selectValue(root["codex"], CODEX_ACCESS, defaults.codex),
|
|
37
|
+
gemini: selectValue(root["gemini"], GEMINI_ACCESS, defaults.gemini),
|
|
38
|
+
qwenCode: selectValue(root["qwenCode"], QWEN_ACCESS, defaults.qwenCode),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { join, resolve } from "node:path";
|
|
2
|
-
import { writeFile } from "node:fs/promises";
|
|
2
|
+
import { stat, writeFile } from "node:fs/promises";
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
buildConductorYaml,
|
|
6
|
+
resolveConfiguredProjectPath,
|
|
7
|
+
type ScaffoldProjectConfig,
|
|
8
|
+
} from "@conductor-oss/core";
|
|
9
|
+
import { normalizeModelAccessPreferences } from "@/lib/modelAccess";
|
|
5
10
|
|
|
6
11
|
type MutableConfig = Record<string, unknown>;
|
|
7
12
|
|
|
@@ -25,6 +30,14 @@ function expandHome(value: string): string {
|
|
|
25
30
|
return resolve(value);
|
|
26
31
|
}
|
|
27
32
|
|
|
33
|
+
async function isDirectory(path: string): Promise<boolean> {
|
|
34
|
+
try {
|
|
35
|
+
return (await stat(path)).isDirectory();
|
|
36
|
+
} catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
28
41
|
function normalizePreferences(value: unknown) {
|
|
29
42
|
const root = toObject(value);
|
|
30
43
|
const notifications = toObject(root["notifications"]);
|
|
@@ -36,6 +49,7 @@ function normalizePreferences(value: unknown) {
|
|
|
36
49
|
remoteSshHost: asNonEmptyString(root["remoteSshHost"]),
|
|
37
50
|
remoteSshUser: asNonEmptyString(root["remoteSshUser"]),
|
|
38
51
|
markdownEditor: asNonEmptyString(root["markdownEditor"]) ?? "obsidian",
|
|
52
|
+
modelAccess: normalizeModelAccessPreferences(root["modelAccess"]),
|
|
39
53
|
notifications: {
|
|
40
54
|
soundEnabled: notifications["soundEnabled"] !== false,
|
|
41
55
|
soundFile: notifications["soundFile"] === null
|
|
@@ -45,14 +59,18 @@ function normalizePreferences(value: unknown) {
|
|
|
45
59
|
};
|
|
46
60
|
}
|
|
47
61
|
|
|
48
|
-
function buildProjectScaffold(
|
|
62
|
+
function buildProjectScaffold(
|
|
63
|
+
projectId: string,
|
|
64
|
+
project: Record<string, unknown>,
|
|
65
|
+
projectPath: string,
|
|
66
|
+
): ScaffoldProjectConfig {
|
|
49
67
|
const agentConfig = toObject(project["agentConfig"]);
|
|
50
68
|
|
|
51
69
|
return {
|
|
52
70
|
projectId,
|
|
53
71
|
displayName: asNonEmptyString(project["name"]) ?? projectId,
|
|
54
72
|
repo: asNonEmptyString(project["repo"]) ?? `local-${projectId}`,
|
|
55
|
-
path:
|
|
73
|
+
path: projectPath,
|
|
56
74
|
agent: asNonEmptyString(project["agent"]) ?? "claude-code",
|
|
57
75
|
defaultBranch: asNonEmptyString(project["defaultBranch"]) ?? "main",
|
|
58
76
|
defaultWorkingDirectory: asNonEmptyString(project["defaultWorkingDirectory"]),
|
|
@@ -66,11 +84,43 @@ function buildProjectScaffold(projectId: string, project: Record<string, unknown
|
|
|
66
84
|
};
|
|
67
85
|
}
|
|
68
86
|
|
|
87
|
+
export async function normalizeRootProjectPaths(rootConfig: MutableConfig): Promise<void> {
|
|
88
|
+
const projects = toObject(rootConfig["projects"]);
|
|
89
|
+
|
|
90
|
+
for (const [projectId, rawProject] of Object.entries(projects)) {
|
|
91
|
+
const project = toObject(rawProject);
|
|
92
|
+
const rawProjectPath = asNonEmptyString(project["path"]);
|
|
93
|
+
if (!rawProjectPath) {
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const resolvedProjectPath = resolveConfiguredProjectPath(
|
|
98
|
+
rawProjectPath,
|
|
99
|
+
asNonEmptyString(project["repo"]),
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
if (!await isDirectory(resolvedProjectPath)) {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
projects[projectId] = {
|
|
107
|
+
...project,
|
|
108
|
+
path: resolvedProjectPath,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
rootConfig["projects"] = projects;
|
|
113
|
+
}
|
|
114
|
+
|
|
69
115
|
export async function syncProjectLocalConfig(rootConfig: MutableConfig, projectId: string): Promise<void> {
|
|
70
116
|
const projects = toObject(rootConfig["projects"]);
|
|
71
117
|
const project = toObject(projects[projectId]);
|
|
72
|
-
const
|
|
73
|
-
if (!
|
|
118
|
+
const rawProjectPath = asNonEmptyString(project["path"]);
|
|
119
|
+
if (!rawProjectPath) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const projectPath = resolveConfiguredProjectPath(rawProjectPath, asNonEmptyString(project["repo"]));
|
|
123
|
+
if (!await isDirectory(projectPath)) {
|
|
74
124
|
return;
|
|
75
125
|
}
|
|
76
126
|
|
|
@@ -78,13 +128,13 @@ export async function syncProjectLocalConfig(rootConfig: MutableConfig, projectI
|
|
|
78
128
|
port: typeof rootConfig["port"] === "number" ? rootConfig["port"] : 4747,
|
|
79
129
|
dashboardUrl: asNonEmptyString(rootConfig["dashboardUrl"]),
|
|
80
130
|
preferences: normalizePreferences(rootConfig["preferences"]),
|
|
81
|
-
projects: [buildProjectScaffold(projectId, project)],
|
|
131
|
+
projects: [buildProjectScaffold(projectId, project, projectPath)],
|
|
82
132
|
});
|
|
83
|
-
|
|
84
|
-
await writeFile(join(expandHome(projectPath), "conductor.yaml"), yaml, "utf8");
|
|
133
|
+
await writeFile(join(projectPath, "conductor.yaml"), yaml, "utf8");
|
|
85
134
|
}
|
|
86
135
|
|
|
87
136
|
export async function syncAllProjectLocalConfigs(rootConfig: MutableConfig): Promise<void> {
|
|
137
|
+
await normalizeRootProjectPaths(rootConfig);
|
|
88
138
|
const projects = toObject(rootConfig["projects"]);
|
|
89
139
|
for (const projectId of Object.keys(projects)) {
|
|
90
140
|
await syncProjectLocalConfig(rootConfig, projectId);
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
const BUILTIN_REMOTE_ACCESS_TOKEN_ENV = "CONDUCTOR_REMOTE_ACCESS_TOKEN";
|
|
2
|
+
const BUILTIN_REMOTE_SESSION_SECRET_ENV = "CONDUCTOR_REMOTE_SESSION_SECRET";
|
|
3
|
+
|
|
4
|
+
export const BUILTIN_REMOTE_SESSION_COOKIE = "conductor_session";
|
|
5
|
+
export const BUILTIN_REMOTE_SESSION_TTL_SECONDS = 60 * 60 * 24 * 7;
|
|
6
|
+
|
|
7
|
+
function getAccessToken(): string | null {
|
|
8
|
+
const token = process.env[BUILTIN_REMOTE_ACCESS_TOKEN_ENV]?.trim();
|
|
9
|
+
return token && token.length > 0 ? token : null;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function getSessionSecret(): string | null {
|
|
13
|
+
const secret = process.env[BUILTIN_REMOTE_SESSION_SECRET_ENV]?.trim();
|
|
14
|
+
return secret && secret.length > 0 ? secret : null;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function toHex(bytes: Uint8Array): string {
|
|
18
|
+
return Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function constantTimeEqual(left: string, right: string): boolean {
|
|
22
|
+
if (left.length !== right.length) return false;
|
|
23
|
+
let mismatch = 0;
|
|
24
|
+
for (let index = 0; index < left.length; index += 1) {
|
|
25
|
+
mismatch |= left.charCodeAt(index) ^ right.charCodeAt(index);
|
|
26
|
+
}
|
|
27
|
+
return mismatch === 0;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
async function signPayload(payload: string, secret: string): Promise<string> {
|
|
31
|
+
const encoder = new TextEncoder();
|
|
32
|
+
const key = await crypto.subtle.importKey(
|
|
33
|
+
"raw",
|
|
34
|
+
encoder.encode(secret),
|
|
35
|
+
{ name: "HMAC", hash: "SHA-256" },
|
|
36
|
+
false,
|
|
37
|
+
["sign"],
|
|
38
|
+
);
|
|
39
|
+
const signature = await crypto.subtle.sign("HMAC", key, encoder.encode(payload));
|
|
40
|
+
return toHex(new Uint8Array(signature));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function isBuiltinRemoteAuthEnabled(): boolean {
|
|
44
|
+
return Boolean(getAccessToken() && getSessionSecret());
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export function sanitizeRedirectTarget(value: string | null | undefined): string {
|
|
48
|
+
if (!value) return "/";
|
|
49
|
+
const trimmed = value.trim();
|
|
50
|
+
if (!trimmed.startsWith("/") || trimmed.startsWith("//")) return "/";
|
|
51
|
+
return trimmed;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function isValidBuiltinAccessToken(candidate: string | null | undefined): boolean {
|
|
55
|
+
const configured = getAccessToken();
|
|
56
|
+
if (!configured || !candidate) return false;
|
|
57
|
+
return constantTimeEqual(configured, candidate.trim());
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export async function createBuiltinRemoteSessionValue(): Promise<string> {
|
|
61
|
+
const secret = getSessionSecret();
|
|
62
|
+
if (!secret) {
|
|
63
|
+
throw new Error("Built-in remote session secret is not configured");
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const expiresAt = Date.now() + BUILTIN_REMOTE_SESSION_TTL_SECONDS * 1000;
|
|
67
|
+
const payload = String(expiresAt);
|
|
68
|
+
const signature = await signPayload(payload, secret);
|
|
69
|
+
return `${payload}.${signature}`;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export async function verifyBuiltinRemoteSession(value: string | null | undefined): Promise<boolean> {
|
|
73
|
+
const secret = getSessionSecret();
|
|
74
|
+
if (!secret || !value) return false;
|
|
75
|
+
|
|
76
|
+
const separator = value.indexOf(".");
|
|
77
|
+
if (separator <= 0 || separator === value.length - 1) return false;
|
|
78
|
+
|
|
79
|
+
const payload = value.slice(0, separator);
|
|
80
|
+
const signature = value.slice(separator + 1);
|
|
81
|
+
const expiresAt = Number.parseInt(payload, 10);
|
|
82
|
+
if (!Number.isFinite(expiresAt) || expiresAt <= Date.now()) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const expected = await signPayload(payload, secret);
|
|
87
|
+
return constantTimeEqual(expected, signature);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export function getBuiltinRemoteSessionCookieOptions(isSecure: boolean): {
|
|
91
|
+
httpOnly: true;
|
|
92
|
+
maxAge: number;
|
|
93
|
+
path: string;
|
|
94
|
+
sameSite: "lax";
|
|
95
|
+
secure: boolean;
|
|
96
|
+
} {
|
|
97
|
+
return {
|
|
98
|
+
httpOnly: true,
|
|
99
|
+
sameSite: "lax",
|
|
100
|
+
secure: isSecure,
|
|
101
|
+
path: "/",
|
|
102
|
+
maxAge: BUILTIN_REMOTE_SESSION_TTL_SECONDS,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { NextResponse, type NextFetchEvent, type NextRequest } from "next/server";
|
|
2
|
+
import { isLoopbackHost } from "./lib/accessControl";
|
|
3
|
+
import { verifyTrustedEdgeIdentity } from "./lib/edgeAuth";
|
|
4
|
+
import {
|
|
5
|
+
BUILTIN_REMOTE_SESSION_COOKIE,
|
|
6
|
+
isBuiltinRemoteAuthEnabled,
|
|
7
|
+
sanitizeRedirectTarget,
|
|
8
|
+
verifyBuiltinRemoteSession,
|
|
9
|
+
} from "./lib/remoteAuth";
|
|
2
10
|
|
|
3
11
|
const clerkConfigured = Boolean(
|
|
4
12
|
process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY && process.env.CLERK_SECRET_KEY,
|
|
@@ -8,7 +16,63 @@ export default async function proxy(
|
|
|
8
16
|
req: NextRequest,
|
|
9
17
|
event: NextFetchEvent,
|
|
10
18
|
): Promise<NextResponse> {
|
|
19
|
+
const trustedEdgeIdentity = await verifyTrustedEdgeIdentity(req.headers, null);
|
|
20
|
+
if (trustedEdgeIdentity?.ok) {
|
|
21
|
+
return NextResponse.next();
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (isBuiltinRemoteAuthEnabled()) {
|
|
25
|
+
const pathname = req.nextUrl.pathname;
|
|
26
|
+
const isBuiltinPublicRoute =
|
|
27
|
+
pathname.startsWith("/unlock") ||
|
|
28
|
+
pathname.startsWith("/auth/grant") ||
|
|
29
|
+
pathname.startsWith("/api/auth/session");
|
|
30
|
+
|
|
31
|
+
if (isBuiltinPublicRoute) {
|
|
32
|
+
return NextResponse.next();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const session = req.cookies.get(BUILTIN_REMOTE_SESSION_COOKIE)?.value ?? null;
|
|
36
|
+
const hasValidSession = await verifyBuiltinRemoteSession(session);
|
|
37
|
+
if (hasValidSession) {
|
|
38
|
+
return NextResponse.next();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (pathname.startsWith("/api/")) {
|
|
42
|
+
return NextResponse.json(
|
|
43
|
+
{
|
|
44
|
+
error: "Access denied",
|
|
45
|
+
reason: "Remote sign-in required",
|
|
46
|
+
},
|
|
47
|
+
{ status: 403 },
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const redirectUrl = req.nextUrl.clone();
|
|
52
|
+
redirectUrl.pathname = "/unlock";
|
|
53
|
+
const nextPath = sanitizeRedirectTarget(`${pathname}${req.nextUrl.search}`);
|
|
54
|
+
if (nextPath !== "/") {
|
|
55
|
+
redirectUrl.searchParams.set("next", nextPath);
|
|
56
|
+
}
|
|
57
|
+
return NextResponse.redirect(redirectUrl);
|
|
58
|
+
}
|
|
59
|
+
|
|
11
60
|
if (!clerkConfigured) {
|
|
61
|
+
if (!isLoopbackHost(req.nextUrl.hostname)) {
|
|
62
|
+
if (!req.nextUrl.pathname.startsWith("/api/")) {
|
|
63
|
+
const redirectUrl = req.nextUrl.clone();
|
|
64
|
+
redirectUrl.pathname = "/unlock";
|
|
65
|
+
redirectUrl.searchParams.set("error", "unavailable");
|
|
66
|
+
return NextResponse.redirect(redirectUrl);
|
|
67
|
+
}
|
|
68
|
+
return NextResponse.json(
|
|
69
|
+
{
|
|
70
|
+
error: "Access denied",
|
|
71
|
+
reason: "Authentication is required for non-local dashboard access",
|
|
72
|
+
},
|
|
73
|
+
{ status: 403 },
|
|
74
|
+
);
|
|
75
|
+
}
|
|
12
76
|
return NextResponse.next();
|
|
13
77
|
}
|
|
14
78
|
|