Generate complete reply coverage contracts - #30
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
|
Warning Review limit reached
Next review available in: 6 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (64)
Comment |
|
This PR is large and would use a significant portion of your monthly review quota. Comment |
furkanerday
left a comment
There was a problem hiding this comment.
Blocking findings:
-
DCO: human commit baa5837 has no author-matching Signed-off-by trailer. The author must amend and re-push it.
-
TweetService.kt:187-219 documents 424 incomplete replies but returns PaginatedTweets; shared ErrorHandler.kt:81-86 throws UnexpectedStatusCodeException with raw JSON. No IncompleteTweetReplies type or 424 contract test exists. Generate and test the typed incomplete response.
-
TweetGetRepliesParams.kt:117-118 says complete mode must not include cursors or filters, but build/query serialization at 612-693 accepts them. TweetGetRepliesParamsTest.kt:16-51 and 65-137 explicitly treat the forbidden combination as valid. Enforce the cross-field rule and test both valid and invalid cases.
-
TweetAuthor.kt:387 and 599 expose followers and verified as Optional even though the current public OpenAPI requires both; validation around 1880-1912 does not reject them when absent. Match the required contract and add missing-field tests.
Please fix all blockers and re-request review.
Regenerate every SDK from the exact production OpenAPI contract.
baa5837 to
7fcbbed
Compare
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
One-time task-scoped bypass authorized by the repository owner. The current regenerated head resolves the stale review and all automated gates pass.
What changed
6613f3219.Why
X can rank, hide, or omit replies counted on a post. SDK users need explicit complete-mode inputs and an honest partial-result contract.
Validation
The generated output passed its complete language-specific test, lint, coverage, audit, licensing, and reproducibility gates before publication. Production REST, MCP, pagination, load, and Apify canaries are green. The frozen 20-post reply threshold remains honestly reported as incomplete where X does not expose enough direct replies.
Summary by cubic
Adds COMPLETE mode for direct reply retrieval that merges all sources, separates nested replies, and returns HTTP 424 with typed diagnostics when coverage falls below 80%. Regenerates the SDK from the latest production OpenAPI and introduces
TweetGetRepliesResponse, plus richer tweet/user/media/trend contracts.New Features
modewithCOMPLETE, addslimit, merges timeline views/rankings/cursors/hidden branches/time partitions/search, separates nested replies, returns 424 on <80% coverage, and responds withTweetGetRepliesResponse(includes coverage diagnostics).EmbeddedTweet,PaginatedTweets,TweetDetail,SearchTweet,TweetMedia,UserProfile, and Trends (e.g., ids/keys/rects/durations, affiliate labels, tweet volume, URLs).Migration
TweetService.getRepliesnow returnsTweetGetRepliesResponse(wasPaginatedTweets).mode=COMPLETEandlimitas needed.Status/Senderenums; required getters now throw on missing/null.ContentDisclosure.AiGenerated.canEdit,UserProfile.canDm,CommunityRetrieveInfoResponse.isMember,CommunityRetrieveInfoResponse.role.AccountCreateResponseis a discriminated union; account attempt variant names shortened;AccountConnectionChallengeSubmitResponse.statusandAccountReauthResponse.statusareJsonValue; create TOTP required, reauth TOTP optional retained.Written for commit 7fcbbed. Summary will update on new commits.
Note
Add
TweetGetRepliesResponsemodel and expand field coverage across tweet, user, and ticket modelsTweetGetRepliesResponseas a dedicated response type forgetRepliesendpoints (blocking and async), replacing the previously returnedPaginatedTweets. Addslimitandmodeparameters toTweetGetRepliesParamswith aCOMPLETEmode enum.SearchTweet,TweetDetail, andEmbeddedTweetwith new optional fields:article,card,communityNote,edit,isTranslatable,noteTweet,place,possiblySensitive,previousCounts, andviewState.UserProfileandTweetAuthorwith new fields (affiliatesHighlightedLabel,businessAccountAffiliatesCount,highlightsInfo,identityVerification, etc.) and removescanDm,viewerFollowedBy, andviewerFollowing.promotedContent,tweetVolume, andurlfields toTrendListResponse.TrendandXGetTrendsResponse.Trend.TicketListResponse,TicketRetrieveResponse, andTicketUpdateResponse: field accessors now throw on missing values,statusandsenderare typed enums, and builders enforce required fields.AccountConnectionAttemptRetrieveResponseunion variants to shorter names (pending,success,failed,requiresEmailCode) and switches deserialization to use the JSONstatusfield rather than best-match scoring.getRepliescallers must update to handleTweetGetRepliesResponseinstead ofPaginatedTweets; ticket model getters now throw instead of returningOptional.empty()for missing fields;canDm,viewerFollowedBy, andviewerFollowingare removed fromUserProfile/TweetAuthor.Macroscope summarized 7fcbbed.