From 835f3c4b499a6e8732066893373a3e745d0d5332 Mon Sep 17 00:00:00 2001 From: Brendan Kellam Date: Wed, 18 Feb 2026 15:06:50 -0800 Subject: [PATCH 1/3] feat(api): add defaultBranch, isFork, and isArchived to /api/repos response Co-Authored-By: Claude Sonnet 4.6 --- packages/mcp/src/index.ts | 3 +++ packages/mcp/src/schemas.ts | 3 +++ packages/web/src/actions.ts | 11 +++++++---- .../web/src/app/api/(server)/repos/listReposApi.ts | 10 ++++++---- packages/web/src/lib/schemas.ts | 3 +++ 5 files changed, 22 insertions(+), 8 deletions(-) diff --git a/packages/mcp/src/index.ts b/packages/mcp/src/index.ts index a31cd2fbd..aa8b27513 100644 --- a/packages/mcp/src/index.ts +++ b/packages/mcp/src/index.ts @@ -211,6 +211,9 @@ server.tool( name: repo.repoName, url: repo.webUrl, pushedAt: repo.pushedAt, + defaultBranch: repo.defaultBranch, + isFork: repo.isFork, + isArchived: repo.isArchived, })), totalCount: result.totalCount, }) diff --git a/packages/mcp/src/schemas.ts b/packages/mcp/src/schemas.ts index 4cbc7e574..a72fbf116 100644 --- a/packages/mcp/src/schemas.ts +++ b/packages/mcp/src/schemas.ts @@ -155,6 +155,9 @@ export const repositoryQuerySchema = z.object({ imageUrl: z.string().optional(), indexedAt: z.coerce.date().optional(), pushedAt: z.coerce.date().optional(), + defaultBranch: z.string().optional(), + isFork: z.boolean(), + isArchived: z.boolean(), }); export const listReposResponseSchema = repositoryQuerySchema.array(); diff --git a/packages/web/src/actions.ts b/packages/web/src/actions.ts index 35d4a2211..1ad6bc30a 100644 --- a/packages/web/src/actions.ts +++ b/packages/web/src/actions.ts @@ -28,8 +28,8 @@ import InviteUserEmail from "./emails/inviteUserEmail"; import JoinRequestApprovedEmail from "./emails/joinRequestApprovedEmail"; import JoinRequestSubmittedEmail from "./emails/joinRequestSubmittedEmail"; import { AGENTIC_SEARCH_TUTORIAL_DISMISSED_COOKIE_NAME, MOBILE_UNSUPPORTED_SPLASH_SCREEN_DISMISSED_COOKIE_NAME, SINGLE_TENANT_ORG_DOMAIN, SOURCEBOT_GUEST_USER_ID, SOURCEBOT_SUPPORT_EMAIL } from "./lib/constants"; -import { orgDomainSchema, orgNameSchema, repositoryQuerySchema } from "./lib/schemas"; -import { ApiKeyPayload, TenancyMode } from "./lib/types"; +import { orgDomainSchema, orgNameSchema } from "./lib/schemas"; +import { ApiKeyPayload, RepositoryQuery, TenancyMode } from "./lib/types"; import { withAuthV2, withOptionalAuthV2 } from "./withAuthV2"; import { getBrowsePath } from "./app/[domain]/browse/hooks/utils"; @@ -479,7 +479,7 @@ export const getRepos = async ({ const baseUrl = env.AUTH_URL; - return repos.map((repo) => repositoryQuerySchema.parse({ + return repos.map((repo) => ({ codeHostType: repo.external_codeHostType, repoId: repo.id, repoName: repo.name, @@ -494,7 +494,10 @@ export const getRepos = async ({ imageUrl: repo.imageUrl ?? undefined, indexedAt: repo.indexedAt ?? undefined, pushedAt: repo.pushedAt ?? undefined, - })) + defaultBranch: repo.defaultBranch ?? undefined, + isFork: repo.isFork, + isArchived: repo.isArchived, + } satisfies RepositoryQuery)) })); /** diff --git a/packages/web/src/app/api/(server)/repos/listReposApi.ts b/packages/web/src/app/api/(server)/repos/listReposApi.ts index 2bbe2906f..d5f743cbb 100644 --- a/packages/web/src/app/api/(server)/repos/listReposApi.ts +++ b/packages/web/src/app/api/(server)/repos/listReposApi.ts @@ -1,6 +1,5 @@ import { sew } from "@/actions"; -import { repositoryQuerySchema } from "@/lib/schemas"; -import { ListReposQueryParams } from "@/lib/types"; +import { ListReposQueryParams, RepositoryQuery } from "@/lib/types"; import { withOptionalAuthV2 } from "@/withAuthV2"; import { getBrowsePath } from "@/app/[domain]/browse/hooks/utils"; import { env } from "@sourcebot/shared"; @@ -34,7 +33,7 @@ export const listRepos = async ({ query, page, perPage, sort, direction }: ListR ]); return { - data: repos.map((repo) => repositoryQuerySchema.parse({ + data: repos.map((repo) => ({ codeHostType: repo.external_codeHostType, repoId: repo.id, repoName: repo.name, @@ -49,7 +48,10 @@ export const listRepos = async ({ query, page, perPage, sort, direction }: ListR imageUrl: repo.imageUrl ?? undefined, indexedAt: repo.indexedAt ?? undefined, pushedAt: repo.pushedAt ?? undefined, - })), + defaultBranch: repo.defaultBranch ?? undefined, + isFork: repo.isFork, + isArchived: repo.isArchived, + } satisfies RepositoryQuery)), totalCount, }; }) diff --git a/packages/web/src/lib/schemas.ts b/packages/web/src/lib/schemas.ts index 6bdd7a80b..fb5e26d95 100644 --- a/packages/web/src/lib/schemas.ts +++ b/packages/web/src/lib/schemas.ts @@ -22,6 +22,9 @@ export const repositoryQuerySchema = z.object({ imageUrl: z.string().optional(), indexedAt: z.coerce.date().optional(), pushedAt: z.coerce.date().optional(), + defaultBranch: z.string().optional(), + isFork: z.boolean(), + isArchived: z.boolean(), }); export const searchContextQuerySchema = z.object({ From cda5bd1c1bcb02434a8e61c203eb954081839258 Mon Sep 17 00:00:00 2001 From: Brendan Kellam Date: Wed, 18 Feb 2026 15:07:44 -0800 Subject: [PATCH 2/3] chore: update CHANGELOG for #905 Co-Authored-By: Claude Sonnet 4.6 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71195e18b..d5c28db1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added optional `visibility` parameter to `/api/chat/blocking` endpoint and MCP `ask_codebase` tool to allow controlling chat session visibility in shared environments. [#903](https://github.com/sourcebot-dev/sourcebot/pull/903) +- Added `defaultBranch`, `isFork`, and `isArchived` fields to the `/api/repos` endpoint response and MCP `list_repos` tool. [#905](https://github.com/sourcebot-dev/sourcebot/pull/905) ## [4.11.1] - 2026-02-18 From 5003a3aaa3a144c3f1215af640c782d906bbeb43 Mon Sep 17 00:00:00 2001 From: Brendan Kellam Date: Wed, 18 Feb 2026 15:08:13 -0800 Subject: [PATCH 3/3] chore: update MCP CHANGELOG for #905 Co-Authored-By: Claude Sonnet 4.6 --- packages/mcp/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/mcp/CHANGELOG.md b/packages/mcp/CHANGELOG.md index 1a5e07615..3a91719bd 100644 --- a/packages/mcp/CHANGELOG.md +++ b/packages/mcp/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added optional `visibility` parameter to `ask_codebase` tool to allow controlling chat session visibility in shared environments. [#903](https://github.com/sourcebot-dev/sourcebot/pull/903) +- Added `defaultBranch`, `isFork`, and `isArchived` fields to the `list_repos` tool response. [#905](https://github.com/sourcebot-dev/sourcebot/pull/905) ## [1.0.16] - 2026-02-10