-
Notifications
You must be signed in to change notification settings - Fork 218
chore(web): Add telemetry for all api requests #835
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This comment has been minimized.
This comment has been minimized.
|
Warning Rate limit exceeded
⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. WalkthroughMigrates source identification from request bodies to the Changes
Sequence Diagram(s)sequenceDiagram
participant Client
participant ServerRoute
participant apiHandler as apiHandler (wrapper)
participant PostHog
Client->>ServerRoute: HTTP request (includes X-Sourcebot-Client-Source)
ServerRoute->>apiHandler: invoked (wrapper receives req)
apiHandler-->>PostHog: async emit api_request { path, source } rgba(100,150,250,0.5)
apiHandler->>ServerRoute: forward to original handler
ServerRoute-->>Client: HTTP response (JSON / stream / file)
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested labels
Suggested reviewers
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🤖 Fix all issues with AI agents
In `@packages/mcp/src/client.ts`:
- Around line 110-133: Resolve the merge conflict markers around the askCodebase
implementation by removing the <<<<<<<, =======, and >>>>>>> lines and keeping
the correct askCodebase function body; ensure the file exports/defines the async
function askCodebase(request: AskCodebaseRequest): Promise<AskCodebaseResponse>
exactly as in the new block and call parseResponse(response,
askCodebaseResponseSchema). Also add or restore the necessary imports for
AskCodebaseRequest, AskCodebaseResponse, askCodebaseResponseSchema (and
parseResponse/env if missing) at the top of the file so the TypeScript compiles
without errors.
In `@packages/web/src/app/api/`(server)/repos/route.ts:
- Around line 1-13: The file contains Git conflict markers and duplicated
imports; remove the conflict markers (<<<<<<<, =======, >>>>>>>) and consolidate
imports into one block so each symbol is imported exactly once — keep required
symbols like apiHandler, buildLinkHeader, listReposQueryParamsSchema,
repositoryQuerySchema, queryParamsSchemaValidationError, serviceErrorResponse,
and isServiceError, and drop unused/old imports such as NextRequest, sew, or
withOptionalAuthV2 if they are not referenced elsewhere in this module; ensure
the final import block imports each identifier only once and re-run lint/type
checks.
🧹 Nitpick comments (1)
packages/web/src/app/[domain]/search/useStreamedSearch.ts (1)
120-125: Extract the source header name/value into a shared constant/helper.Hard-coded literals here can drift from other API calls; centralizing the header name/value makes future updates safer and more consistent.
♻️ Example refactor
+const SOURCEBOT_CLIENT_SOURCE_HEADER = 'X-Sourcebot-Client-Source'; +const SOURCEBOT_WEB_CLIENT_SOURCE = 'sourcebot-web-client'; + // ... const response = await fetch('/api/stream_search', { method: 'POST', headers: { 'Content-Type': 'application/json', - 'X-Sourcebot-Client-Source': 'sourcebot-web-client', + [SOURCEBOT_CLIENT_SOURCE_HEADER]: SOURCEBOT_WEB_CLIENT_SOURCE, },
Code reviewThis PR contains 2 critical issues - unresolved git merge conflicts that will prevent the code from compiling: Issue 1: Merge conflict in
|
| <<<<<<< Updated upstream | |
| import { NextRequest } from "next/server"; | |
| import { sew } from "@/actions"; | |
| import { withOptionalAuthV2 } from "@/withAuthV2"; | |
| ======= | |
| import { apiHandler } from "@/lib/apiHandler"; | |
| import { buildLinkHeader } from "@/lib/pagination"; | |
| import { listReposQueryParamsSchema } from "@/lib/schemas"; | |
| >>>>>>> Stashed changes | |
| import { queryParamsSchemaValidationError, serviceErrorResponse } from "@/lib/serviceError"; | |
| import { isServiceError } from "@/lib/utils"; | |
| import { listReposQueryParamsSchema, repositoryQuerySchema } from "@/lib/schemas"; | |
| import { buildLinkHeader } from "@/lib/pagination"; | |
| import { getBrowsePath } from "@/app/[domain]/browse/hooks/utils"; |
The import section contains unresolved merge conflict markers:
<<<<<<< Updated upstream
import { NextRequest } from "next/server";
import { sew } from "@/actions";
import { withOptionalAuthV2 } from "@/withAuthV2";
=======
import { apiHandler } from "@/lib/apiHandler";
import { buildLinkHeader } from "@/lib/pagination";
import { listReposQueryParamsSchema } from "@/lib/schemas";
>>>>>>> Stashed changes
This will cause a syntax error. After the conflict markers, there are also duplicate imports that should be cleaned up once the conflict is resolved.
Action required: Please resolve these merge conflicts before the PR can be merged.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
packages/web/src/app/api/(server)/repos/route.ts (1)
42-44:⚠️ Potential issue | 🟠 MajorCount query is missing the
queryfilter, causing incorrect pagination.The
findManyquery applies thequeryfilter (line 34-36), but thecountquery only filters byorgId. This meanstotalCountwill be the total repos for the org, not the filtered count, resulting in incorrectX-Total-CountandLinkpagination headers when a search query is provided.🐛 Proposed fix to include the query filter in count
prisma.repo.count({ - where: { orgId: org.id }, + where: { + orgId: org.id, + ...(query ? { + name: { contains: query, mode: 'insensitive' }, + } : {}), + }, }),
This PR adds a
api_requestevent that is fired for any api route that uses the apiHandler factory. The event includes apathandsource. Thesourceis sourced from theX-Sourcebot-Client-SourceheaderSummary by CodeRabbit
New Features
Improvements
✏️ Tip: You can customize this high-level summary in your review settings.