Skip to content

feat: convert api repo to Turborepo workspace (Phase 0.5)#502

Closed
sweetmantech wants to merge 1 commit into
testfrom
feat/turborepo-conversion
Closed

feat: convert api repo to Turborepo workspace (Phase 0.5)#502
sweetmantech wants to merge 1 commit into
testfrom
feat/turborepo-conversion

Conversation

@sweetmantech
Copy link
Copy Markdown
Contributor

@sweetmantech sweetmantech commented May 1, 2026

Summary

Phase 0.5 of the open-agents → main app migration. Restructures the api repo as a pnpm + Turborepo monorepo so Phase 2 can land open-agents' `packages/sandbox` and `packages/agent` as proper workspace packages.

What changes

api/
├── apps/
│   └── web/              ← all current code lives here now
│       ├── app/
│       ├── lib/
│       ├── public/
│       ├── types/
│       ├── package.json  ← @recoupable/web (was next-mainnet-example)
│       ├── tsconfig.json
│       └── ...
├── packages/             ← (empty placeholder; Phase 2 will land sandbox + agent here)
├── package.json          ← workspace root (devDeps: turbo only; scripts delegate via turbo)
├── pnpm-workspace.yaml   ← declares apps/* and packages/* as workspaces
├── turbo.json            ← task pipeline (build / dev / test / lint / format / etc.)
├── .github/workflows/    ← pnpm 9 → 10 (matches new packageManager declaration)
└── .gitignore            ← patterns un-anchored to ignore at every workspace level

Mechanics

  • Pure `git mv`. Every existing file is a rename, not a delete + add. `git log --follow` continues to work. Reviewers should see ~1450 `R` (rename) entries plus a handful of `M`/`A`.
  • Imports unchanged. `tsconfig.json` moved with the code, and its `"@/": ["./"]` path mapping still resolves correctly relative to its new location at `apps/web/tsconfig.json`. No source files touched.
  • Scripts unchanged inside `apps/web/package.json`. Root package.json only delegates: `turbo run dev` / `turbo run build` / `turbo run test` / `turbo run lint:check` / etc.

Validation

Check Result
`pnpm install`
`pnpm lint:check` ✅ via `turbo run lint:check`
`pnpm test` 2362/2362 tests pass across 388 test files

⚠️ Vercel deployment requires a dashboard change before this merges

The Vercel project for this repo currently treats the repo root as a Next.js app. After this PR there's no Next.js app at root — the app lives at `apps/web/`. Vercel needs:

Project Settings → General → Root Directory → `apps/web`

This cannot be configured via `vercel.json` (Root Directory is dashboard-only). Without it, the preview deploy will fail to build. Please make this change before approving the PR so the preview deploy validates the move.

If preview build still fails after the Root Directory change, also verify:

  • Build Command: `next build` (or unset, framework-detected)
  • Install Command: `pnpm install` at root (Vercel will run from the project root, not Root Directory, so this should already work)

What's next

  • Phase 1 (separate PR): `apps/web/lib/supabase/sessions/`, `apps/web/lib/supabase/chats/` etc. helpers matching the schema landed in database#20.
  • Phase 2 (separate PR): port `packages/sandbox` and `packages/agent` from open-agents into `packages/`.
  • Phase 0b (later, low priority): port the usage / leaderboard / insights tables.

🤖 Generated with Claude Code


Summary by cubic

Convert the API repo into a pnpm + Turborepo workspace and move the Next.js app to apps/web to prepare for adding workspace packages in Phase 2. No source changes; history is preserved.

  • Refactors

    • New layout: app now in apps/web (package renamed to @recoupable/web); packages/ added as a placeholder; workspace files at root (package.json, pnpm-workspace.yaml, turbo.json).
    • Pure git mv; imports unchanged via existing tsconfig path aliases.
    • Root scripts delegate to turbo; app scripts remain the same.
    • CI updated to pnpm 10.
    • .gitignore patterns un-anchored and .turbo/ added.
  • Migration

    • Vercel: set Project Settings → Root Directory to apps/web before merging. Adjust Build/Install commands only if auto-detect fails.

Written for commit 5a77493. Summary will update on new commits.

Restructures the api repo as a pnpm + Turborepo monorepo so Phase 2 can
land open-agents' packages/sandbox and packages/agent as proper workspace
packages instead of inlined lib/ directories.

Layout:
  api/
    apps/
      web/                     <- everything that was at the repo root
    packages/                  <- (empty; Phase 2 lands sandbox + agent here)
    package.json               <- workspace root (turbo + scripts)
    pnpm-workspace.yaml
    turbo.json

Mechanics:
  - Pure git mv for every file -> rename detection preserves git history.
    Imports do not change: tsconfig paths "@/*": ["./*"] still resolve
    correctly because tsconfig.json moved with the code.
  - Root package.json scripts delegate to turbo (turbo run build / test
    / lint:check / format:check / etc.).
  - apps/web/package.json renamed @recoupable/web (was next-mainnet-example).
  - CI workflows pnpm 9 -> 10 to match new packageManager declaration.
  - .gitignore patterns un-anchored so node_modules/, .next/, etc. are
    ignored at every workspace level. Added .turbo/.

Validation:
  - pnpm install: clean
  - pnpm lint:check: clean
  - pnpm test: 2362/2362 pass across 388 files

Vercel deployment note: the project's "Root Directory" setting in the
Vercel dashboard needs to point at apps/web before this PR's preview
deploy will build correctly. Without that change, Vercel will look for
a Next.js app at the repo root and fail. This is a one-time dashboard
update; cannot be configured via vercel.json.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented May 1, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
api Error Error May 1, 2026 7:12pm

Request Review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 1, 2026

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (300)
  • .github/workflows/format.yml is excluded by none and included by none
  • .github/workflows/lint.yml is excluded by none and included by none
  • .github/workflows/test.yml is excluded by none and included by none
  • .gitignore is excluded by none and included by none
  • apps/web/.env.example is excluded by none and included by none
  • apps/web/.prettierignore is excluded by none and included by none
  • apps/web/.prettierrc is excluded by none and included by none
  • apps/web/app/api/accounts/[id]/catalogs/route.ts is excluded by none and included by none
  • apps/web/app/api/accounts/[id]/route.ts is excluded by none and included by none
  • apps/web/app/api/accounts/artists/route.ts is excluded by none and included by none
  • apps/web/app/api/accounts/id/route.ts is excluded by none and included by none
  • apps/web/app/api/accounts/route.ts is excluded by none and included by none
  • apps/web/app/api/admins/artists/pro/route.ts is excluded by none and included by none
  • apps/web/app/api/admins/coding/pr/route.ts is excluded by none and included by none
  • apps/web/app/api/admins/coding/slack/route.ts is excluded by none and included by none
  • apps/web/app/api/admins/content/slack/route.ts is excluded by none and included by none
  • apps/web/app/api/admins/emails/route.ts is excluded by none and included by none
  • apps/web/app/api/admins/privy/route.ts is excluded by none and included by none
  • apps/web/app/api/admins/route.ts is excluded by none and included by none
  • apps/web/app/api/admins/sandboxes/__tests__/route.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/app/api/admins/sandboxes/orgs/__tests__/route.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/app/api/admins/sandboxes/orgs/route.ts is excluded by none and included by none
  • apps/web/app/api/admins/sandboxes/route.ts is excluded by none and included by none
  • apps/web/app/api/agents/signup/route.ts is excluded by none and included by none
  • apps/web/app/api/agents/verify/route.ts is excluded by none and included by none
  • apps/web/app/api/ai/models/route.ts is excluded by none and included by none
  • apps/web/app/api/apify/route.ts is excluded by none and included by none
  • apps/web/app/api/apify/runs/[runId]/route.ts is excluded by none and included by none
  • apps/web/app/api/artist/socials/scrape/route.ts is excluded by none and included by none
  • apps/web/app/api/artists/[id]/fans/route.ts is excluded by none and included by none
  • apps/web/app/api/artists/[id]/posts/route.ts is excluded by none and included by none
  • apps/web/app/api/artists/[id]/route.ts is excluded by none and included by none
  • apps/web/app/api/artists/[id]/socials/route.ts is excluded by none and included by none
  • apps/web/app/api/artists/route.ts is excluded by none and included by none
  • apps/web/app/api/catalogs/songs/route.ts is excluded by none and included by none
  • apps/web/app/api/chat/generate/route.ts is excluded by none and included by none
  • apps/web/app/api/chat/route.ts is excluded by none and included by none
  • apps/web/app/api/chat/slack/route.ts is excluded by none and included by none
  • apps/web/app/api/chats/[id]/artist/route.ts is excluded by none and included by none
  • apps/web/app/api/chats/[id]/messages/copy/route.ts is excluded by none and included by none
  • apps/web/app/api/chats/[id]/messages/route.ts is excluded by none and included by none
  • apps/web/app/api/chats/[id]/messages/trailing/route.ts is excluded by none and included by none
  • apps/web/app/api/chats/compact/route.ts is excluded by none and included by none
  • apps/web/app/api/chats/route.ts is excluded by none and included by none
  • apps/web/app/api/coding-agent/[platform]/route.ts is excluded by none and included by none
  • apps/web/app/api/coding-agent/__tests__/route.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/app/api/coding-agent/callback/__tests__/route.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/app/api/coding-agent/callback/route.ts is excluded by none and included by none
  • apps/web/app/api/coding-agent/github/route.ts is excluded by none and included by none
  • apps/web/app/api/connectors/actions/route.ts is excluded by none and included by none
  • apps/web/app/api/connectors/route.ts is excluded by none and included by none
  • apps/web/app/api/content-agent/[platform]/route.ts is excluded by none and included by none
  • apps/web/app/api/content-agent/callback/route.ts is excluded by none and included by none
  • apps/web/app/api/content/analyze/route.ts is excluded by none and included by none
  • apps/web/app/api/content/caption/route.ts is excluded by none and included by none
  • apps/web/app/api/content/create/route.ts is excluded by none and included by none
  • apps/web/app/api/content/estimate/route.ts is excluded by none and included by none
  • apps/web/app/api/content/image/route.ts is excluded by none and included by none
  • apps/web/app/api/content/route.ts is excluded by none and included by none
  • apps/web/app/api/content/templates/[id]/route.ts is excluded by none and included by none
  • apps/web/app/api/content/templates/route.ts is excluded by none and included by none
  • apps/web/app/api/content/transcribe/route.ts is excluded by none and included by none
  • apps/web/app/api/content/upscale/route.ts is excluded by none and included by none
  • apps/web/app/api/content/validate/route.ts is excluded by none and included by none
  • apps/web/app/api/content/video/route.ts is excluded by none and included by none
  • apps/web/app/api/emails/inbound/route.ts is excluded by none and included by none
  • apps/web/app/api/image/generate/route.ts is excluded by none and included by none
  • apps/web/app/api/keys/route.ts is excluded by none and included by none
  • apps/web/app/api/notifications/route.ts is excluded by none and included by none
  • apps/web/app/api/organizations/artists/route.ts is excluded by none and included by none
  • apps/web/app/api/organizations/route.ts is excluded by none and included by none
  • apps/web/app/api/pulses/route.ts is excluded by none and included by none
  • apps/web/app/api/research/albums/route.ts is excluded by none and included by none
  • apps/web/app/api/research/audience/route.ts is excluded by none and included by none
  • apps/web/app/api/research/career/route.ts is excluded by none and included by none
  • apps/web/app/api/research/charts/route.ts is excluded by none and included by none
  • apps/web/app/api/research/cities/route.ts is excluded by none and included by none
  • apps/web/app/api/research/curator/route.ts is excluded by none and included by none
  • apps/web/app/api/research/deep/route.ts is excluded by none and included by none
  • apps/web/app/api/research/discover/route.ts is excluded by none and included by none
  • apps/web/app/api/research/enrich/route.ts is excluded by none and included by none
  • apps/web/app/api/research/extract/route.ts is excluded by none and included by none
  • apps/web/app/api/research/festivals/route.ts is excluded by none and included by none
  • apps/web/app/api/research/genres/route.ts is excluded by none and included by none
  • apps/web/app/api/research/insights/route.ts is excluded by none and included by none
  • apps/web/app/api/research/instagram-posts/route.ts is excluded by none and included by none
  • apps/web/app/api/research/lookup/route.ts is excluded by none and included by none
  • apps/web/app/api/research/metrics/route.ts is excluded by none and included by none
  • apps/web/app/api/research/milestones/route.ts is excluded by none and included by none
  • apps/web/app/api/research/people/route.ts is excluded by none and included by none
  • apps/web/app/api/research/playlist/route.ts is excluded by none and included by none
  • apps/web/app/api/research/playlists/route.ts is excluded by none and included by none
  • apps/web/app/api/research/profile/route.ts is excluded by none and included by none
  • apps/web/app/api/research/radio/route.ts is excluded by none and included by none
  • apps/web/app/api/research/rank/route.ts is excluded by none and included by none
  • apps/web/app/api/research/route.ts is excluded by none and included by none
  • apps/web/app/api/research/similar/route.ts is excluded by none and included by none
  • apps/web/app/api/research/track/playlists/route.ts is excluded by none and included by none
  • apps/web/app/api/research/track/route.ts is excluded by none and included by none
  • apps/web/app/api/research/tracks/route.ts is excluded by none and included by none
  • apps/web/app/api/research/urls/route.ts is excluded by none and included by none
  • apps/web/app/api/research/venues/route.ts is excluded by none and included by none
  • apps/web/app/api/research/web/route.ts is excluded by none and included by none
  • apps/web/app/api/sandboxes/file/route.ts is excluded by none and included by none
  • apps/web/app/api/sandboxes/files/route.ts is excluded by none and included by none
  • apps/web/app/api/sandboxes/route.ts is excluded by none and included by none
  • apps/web/app/api/sandboxes/setup/route.ts is excluded by none and included by none
  • apps/web/app/api/socials/[id]/scrape/route.ts is excluded by none and included by none
  • apps/web/app/api/songs/analyze/presets/route.ts is excluded by none and included by none
  • apps/web/app/api/songs/analyze/route.ts is excluded by none and included by none
  • apps/web/app/api/songs/route.ts is excluded by none and included by none
  • apps/web/app/api/spotify/album/route.ts is excluded by none and included by none
  • apps/web/app/api/spotify/artist/albums/route.ts is excluded by none and included by none
  • apps/web/app/api/spotify/artist/route.ts is excluded by none and included by none
  • apps/web/app/api/spotify/artist/topTracks/route.ts is excluded by none and included by none
  • apps/web/app/api/spotify/search/route.ts is excluded by none and included by none
  • apps/web/app/api/subscriptions/sessions/__tests__/route.options.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/app/api/subscriptions/sessions/__tests__/route.post.outcomes.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/app/api/subscriptions/sessions/__tests__/route.post.validation.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/app/api/subscriptions/sessions/__tests__/route.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/app/api/subscriptions/sessions/__tests__/routeTestMocks.ts is excluded by !**/__tests__/** and included by none
  • apps/web/app/api/subscriptions/sessions/route.ts is excluded by none and included by none
  • apps/web/app/api/tasks/route.ts is excluded by none and included by none
  • apps/web/app/api/tasks/runs/route.ts is excluded by none and included by none
  • apps/web/app/api/transcribe/route.ts is excluded by none and included by none
  • apps/web/app/api/workspaces/route.ts is excluded by none and included by none
  • apps/web/app/api/x402/image/generate/route.ts is excluded by none and included by none
  • apps/web/app/api/x402/session-token/route.ts is excluded by none and included by none
  • apps/web/app/favicon.ico is excluded by !**/*.ico and included by none
  • apps/web/app/globals.css is excluded by none and included by none
  • apps/web/app/layout.tsx is excluded by none and included by none
  • apps/web/app/mcp/route.ts is excluded by none and included by none
  • apps/web/app/page.tsx is excluded by none and included by none
  • apps/web/dev/API-AGENT.md is excluded by none and included by none
  • apps/web/eslint.config.js is excluded by none and included by none
  • apps/web/evals/README.md is excluded by !**/evals/** and included by none
  • apps/web/evals/catalog-opportunity-analysis.eval.ts is excluded by !**/evals/** and included by none
  • apps/web/evals/catalog-songs-count.eval.ts is excluded by !**/evals/** and included by none
  • apps/web/evals/first-week-album-sales.eval.ts is excluded by !**/evals/** and included by none
  • apps/web/evals/memory-tools.eval.ts is excluded by !**/evals/** and included by none
  • apps/web/evals/monthly-listeners-tracking.eval.ts is excluded by !**/evals/** and included by none
  • apps/web/evals/search-web-tool.eval.ts is excluded by !**/evals/** and included by none
  • apps/web/evals/social-scraping.eval.ts is excluded by !**/evals/** and included by none
  • apps/web/evals/spotify-followers.eval.ts is excluded by !**/evals/** and included by none
  • apps/web/evals/spotify-tools.eval.ts is excluded by !**/evals/** and included by none
  • apps/web/evals/tiktok-analytics-questions.eval.ts is excluded by !**/evals/** and included by none
  • apps/web/features/feature-email-client.md is excluded by none and included by none
  • apps/web/lib/account/flattenAccountSocials.ts is excluded by none and included by none
  • apps/web/lib/accounts/__tests__/createAccountHandler.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/accounts/__tests__/getAccountHandler.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/accounts/__tests__/resolveAccountIdByEmail.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/accounts/__tests__/validateGetAccountParams.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/accounts/__tests__/validateOverrideAccountId.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/accounts/__tests__/validateUpdateAccountRequest.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/accounts/addArtistToAccountHandler.ts is excluded by none and included by none
  • apps/web/lib/accounts/createAccountHandler.ts is excluded by none and included by none
  • apps/web/lib/accounts/getAccountHandler.ts is excluded by none and included by none
  • apps/web/lib/accounts/getAccountIdHandler.ts is excluded by none and included by none
  • apps/web/lib/accounts/resolveAccountIdByEmail.ts is excluded by none and included by none
  • apps/web/lib/accounts/updateAccountHandler.ts is excluded by none and included by none
  • apps/web/lib/accounts/validateAccountIdHeaders.ts is excluded by none and included by none
  • apps/web/lib/accounts/validateAccountParams.ts is excluded by none and included by none
  • apps/web/lib/accounts/validateAddArtistBody.ts is excluded by none and included by none
  • apps/web/lib/accounts/validateCreateAccountBody.ts is excluded by none and included by none
  • apps/web/lib/accounts/validateGetAccountParams.ts is excluded by none and included by none
  • apps/web/lib/accounts/validateOverrideAccountId.ts is excluded by none and included by none
  • apps/web/lib/accounts/validateUpdateAccountRequest.ts is excluded by none and included by none
  • apps/web/lib/admins/__tests__/checkAdminHandler.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/__tests__/checkIsAdmin.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/__tests__/validateAdminAuth.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/adminPeriod.ts is excluded by none and included by none
  • apps/web/lib/admins/checkAdminHandler.ts is excluded by none and included by none
  • apps/web/lib/admins/checkIsAdmin.ts is excluded by none and included by none
  • apps/web/lib/admins/content/__tests__/extractVideoFiles.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/content/__tests__/fetchThreadVideoFiles.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/content/__tests__/getContentSlackTagsHandler.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/content/extractVideoFiles.ts is excluded by none and included by none
  • apps/web/lib/admins/content/fetchContentSlackMentions.ts is excluded by none and included by none
  • apps/web/lib/admins/content/fetchThreadVideoFiles.ts is excluded by none and included by none
  • apps/web/lib/admins/content/getContentSlackTagsHandler.ts is excluded by none and included by none
  • apps/web/lib/admins/content/validateGetContentSlackTagsQuery.ts is excluded by none and included by none
  • apps/web/lib/admins/emails/__tests__/getAccountEmailIds.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/emails/__tests__/getAdminEmailsHandler.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/emails/__tests__/validateGetAdminEmailsQuery.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/emails/getAccountEmailIds.ts is excluded by none and included by none
  • apps/web/lib/admins/emails/getAdminEmailsHandler.ts is excluded by none and included by none
  • apps/web/lib/admins/emails/validateGetAdminEmailsQuery.ts is excluded by none and included by none
  • apps/web/lib/admins/pr/__tests__/getPrMergedStatusHandler.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/pr/__tests__/validateGetCodingPrQuery.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/pr/getPrStatusHandler.ts is excluded by none and included by none
  • apps/web/lib/admins/pr/validateGetCodingPrQuery.ts is excluded by none and included by none
  • apps/web/lib/admins/privy/__tests__/getPrivyLoginsHandler.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/privy/__tests__/validateGetPrivyLoginsQuery.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/privy/countNewAccounts.ts is excluded by none and included by none
  • apps/web/lib/admins/privy/fetchPrivyLogins.ts is excluded by none and included by none
  • apps/web/lib/admins/privy/fetchPrivyUsersPage.ts is excluded by none and included by none
  • apps/web/lib/admins/privy/getCutoffMs.ts is excluded by none and included by none
  • apps/web/lib/admins/privy/getLatestVerifiedAt.ts is excluded by none and included by none
  • apps/web/lib/admins/privy/getPrivyLoginsHandler.ts is excluded by none and included by none
  • apps/web/lib/admins/privy/periodDays.ts is excluded by none and included by none
  • apps/web/lib/admins/privy/privyLoginsPeriod.ts is excluded by none and included by none
  • apps/web/lib/admins/privy/toMs.ts is excluded by none and included by none
  • apps/web/lib/admins/privy/validateGetPrivyLoginsQuery.ts is excluded by none and included by none
  • apps/web/lib/admins/sandboxes/__tests__/aggregateAccountSandboxStats.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/sandboxes/__tests__/getAdminSandboxesHandler.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/sandboxes/aggregateAccountSandboxStats.ts is excluded by none and included by none
  • apps/web/lib/admins/sandboxes/getAdminSandboxOrgsHandler.ts is excluded by none and included by none
  • apps/web/lib/admins/sandboxes/getAdminSandboxesHandler.ts is excluded by none and included by none
  • apps/web/lib/admins/sandboxes/getOrgRepoStats.ts is excluded by none and included by none
  • apps/web/lib/admins/slack/__tests__/createSlackTagsHandler.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/slack/__tests__/extractGithubPrUrls.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/slack/__tests__/fetchAllThreadResponses.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/slack/__tests__/fetchBotMentions.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/slack/__tests__/fetchThreadReplyMentions.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/slack/__tests__/getSlackTagsHandler.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/slack/__tests__/validateGetSlackTagsQuery.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/admins/slack/createSlackTagsHandler.ts is excluded by none and included by none
  • apps/web/lib/admins/slack/extractGithubPrUrls.ts is excluded by none and included by none
  • apps/web/lib/admins/slack/fetchAllThreadResponses.ts is excluded by none and included by none
  • apps/web/lib/admins/slack/fetchBotMentions.ts is excluded by none and included by none
  • apps/web/lib/admins/slack/fetchSlackMentions.ts is excluded by none and included by none
  • apps/web/lib/admins/slack/fetchThreadPullRequests.ts is excluded by none and included by none
  • apps/web/lib/admins/slack/fetchThreadReplyMentions.ts is excluded by none and included by none
  • apps/web/lib/admins/slack/getCutoffTs.ts is excluded by none and included by none
  • apps/web/lib/admins/slack/getSlackTagsHandler.ts is excluded by none and included by none
  • apps/web/lib/admins/slack/validateGetSlackTagsQuery.ts is excluded by none and included by none
  • apps/web/lib/admins/validateAdminAuth.ts is excluded by none and included by none
  • apps/web/lib/agents/CompactAgent/__tests__/createCompactAgent.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/CompactAgent/createCompactAgent.ts is excluded by none and included by none
  • apps/web/lib/agents/CompactAgent/index.ts is excluded by none and included by none
  • apps/web/lib/agents/EmailReplyAgent/createEmailReplyAgent.ts is excluded by none and included by none
  • apps/web/lib/agents/EmailReplyAgent/index.ts is excluded by none and included by none
  • apps/web/lib/agents/ImageGenerationAgent/createImageGenerationAgent.ts is excluded by none and included by none
  • apps/web/lib/agents/ImageGenerationAgent/index.ts is excluded by none and included by none
  • apps/web/lib/agents/__tests__/agentSignupHandler.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/__tests__/agentVerifyHandler.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/__tests__/buildTaskCard.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/__tests__/createAccountWithEmail.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/__tests__/generateAndStoreApiKey.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/__tests__/handleAgentPrefixSignup.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/__tests__/handleExistingAccount.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/__tests__/handleNormalSignup.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/__tests__/isAgentPrefixEmail.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/__tests__/storeVerificationCode.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/__tests__/validateAgentSignupBody.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/__tests__/validateAgentVerifyBody.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/agentSignupHandler.ts is excluded by none and included by none
  • apps/web/lib/agents/agentVerifyHandler.ts is excluded by none and included by none
  • apps/web/lib/agents/buildTaskCard.ts is excluded by none and included by none
  • apps/web/lib/agents/content/__tests__/downloadVideoBuffer.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/content/__tests__/extractMessageAttachments.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/content/__tests__/getFilenameFromUrl.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/content/__tests__/handleContentAgentCallback.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/content/__tests__/isContentAgentConfigured.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/content/__tests__/parseContentPrompt.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/content/__tests__/postVideoResults.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/content/__tests__/registerOnNewMention.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/content/__tests__/validateContentAgentEnv.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/content/bot.ts is excluded by none and included by none
  • apps/web/lib/agents/content/createContentPromptAgent.ts is excluded by none and included by none
  • apps/web/lib/agents/content/downloadVideoBuffer.ts is excluded by none and included by none
  • apps/web/lib/agents/content/extractMessageAttachments.ts is excluded by none and included by none
  • apps/web/lib/agents/content/getFilenameFromUrl.ts is excluded by none and included by none
  • apps/web/lib/agents/content/handleContentAgentCallback.ts is excluded by none and included by none
  • apps/web/lib/agents/content/handlers/registerHandlers.ts is excluded by none and included by none
  • apps/web/lib/agents/content/handlers/registerOnNewMention.ts is excluded by none and included by none
  • apps/web/lib/agents/content/handlers/registerOnSubscribedMessage.ts is excluded by none and included by none
  • apps/web/lib/agents/content/isContentAgentConfigured.ts is excluded by none and included by none
  • apps/web/lib/agents/content/parseContentPrompt.ts is excluded by none and included by none
  • apps/web/lib/agents/content/postVideoResults.ts is excluded by none and included by none
  • apps/web/lib/agents/content/resolveAttachmentUrl.ts is excluded by none and included by none
  • apps/web/lib/agents/content/types.ts is excluded by none and included by none
  • apps/web/lib/agents/content/validateContentAgentCallback.ts is excluded by none and included by none
  • apps/web/lib/agents/content/validateContentAgentEnv.ts is excluded by none and included by none
  • apps/web/lib/agents/createAccountWithEmail.ts is excluded by none and included by none
  • apps/web/lib/agents/createAgentState.ts is excluded by none and included by none
  • apps/web/lib/agents/createPlatformRoutes.ts is excluded by none and included by none
  • apps/web/lib/agents/generalAgent/__tests__/getGeneralAgent.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/agents/generalAgent/getGeneralAgent.ts is excluded by none and included by none
  • apps/web/lib/agents/generateAndStoreApiKey.ts is excluded by none and included by none
  • apps/web/lib/agents/getThread.ts is excluded by none and included by none
  • apps/web/lib/agents/handleAgentPrefixSignup.ts is excluded by none and included by none
  • apps/web/lib/agents/handleExistingAccount.ts is excluded by none and included by none
  • apps/web/lib/agents/handleNormalSignup.ts is excluded by none and included by none
  • apps/web/lib/agents/isAgentPrefixEmail.ts is excluded by none and included by none
  • apps/web/lib/agents/sendVerificationEmail.ts is excluded by none and included by none
  • apps/web/lib/agents/storeVerificationCode.ts is excluded by none and included by none
  • apps/web/lib/agents/validateAgentSignupBody.ts is excluded by none and included by none
  • apps/web/lib/agents/validateAgentVerifyBody.ts is excluded by none and included by none
  • apps/web/lib/ai/__tests__/getAvailableModels.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/ai/__tests__/getAvailableModelsHandler.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/ai/__tests__/getModel.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none
  • apps/web/lib/ai/generateArray.ts is excluded by none and included by none
  • apps/web/lib/ai/generateImage.ts is excluded by none and included by none
  • apps/web/lib/ai/generateText.ts is excluded by none and included by none
  • apps/web/lib/ai/getAvailableModels.ts is excluded by none and included by none
  • apps/web/lib/ai/getAvailableModelsHandler.ts is excluded by none and included by none
  • apps/web/lib/ai/getModel.ts is excluded by none and included by none
  • apps/web/lib/ai/isEmbedModel.ts is excluded by none and included by none
  • apps/web/lib/apify/__tests__/apifyWebhookHandler.test.ts is excluded by !**/*.test.*, !**/__tests__/** and included by none

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 574f94b8-0571-4eeb-9d79-c286797a0aa5

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/turborepo-conversion

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 1453 files

Confidence score: 5/5

  • Automated review surfaced no issues in the provided summaries.
  • No files require special attention.

Requires human review: This is a major architectural change converting the repo to a Turborepo monorepo, requiring manual infrastructure changes (Vercel) and affecting CI/CD workflows.

Note: This PR contains a large number of files. cubic only reviews up to 75 files per PR, so some files may not have been reviewed. cubic prioritises the most important files to review.

@sweetmantech
Copy link
Copy Markdown
Contributor Author

Closing per discussion. Going with the simpler approach: inline open-agents' packages/sandbox, packages/agent, and packages/shared as domain-specific lib/ subfolders in api, no Turborepo conversion needed.

Decisions from the discussion:

  • @vercel/sandbox bumped to 2.0.0-beta.11 (matches open-agents)
  • catalog: deps expanded to concrete versions
  • multi-entrypoint exports flatten into the lib/ tree
  • packages/shared NOT copied as lib/shared/; its contents distributed into domain subfolders
  • boundary erosion risk explicitly accepted

Phase 2 will land via separate small PRs starting with the @vercel/sandbox version bump.

@sweetmantech sweetmantech deleted the feat/turborepo-conversion branch May 1, 2026 19:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant