feat: add Connect-RPC service definitions for 6 plugins#70
Conversation
…k, kv, service, jobs
Adds proto `service` blocks for the six RR plugins migrating from
net/rpc + goridge codec to Connect-RPC. Existing message types are
reused; only two additions:
- applogger/v2: new `LogMessage { string message = 1; }` for the
primitive-string Error/Info/Warning/Debug/Log RPCs. Domain-specific
rather than wrapperspb.StringValue so future fields (level, caller
skip) can be added without breaking the wire.
- jobs/v2: new `PushRequest { Job job = 1; }` for single-job pushes.
Proto-shape enforces single-job semantics; the runtime guard
`len(req.Batch) != 1` becomes obsolete when the jobs plugin migrates.
Also:
- Replaces the placeholder `JobsProxyService.JobsHandler` with the
real multi-method `JobsService` (Push/PushBatch/Pause/Resume/List/
Declare/Destroy/GetStats). The placeholder had no live consumers.
- service/v1 RPC method names are prefixed (CreateService, GetStatus,
GetStatuses, ListServices) to avoid collisions with existing same-
named messages (Create, Status, Statuses, List).
- jobs `Stat` -> `GetStats` to avoid collision with the `Stat` message.
- Centralizes RPC naming lints in buf.yaml: disables
RPC_REQUEST_RESPONSE_UNIQUE, RPC_REQUEST_STANDARD_NAME,
RPC_RESPONSE_STANDARD_NAME module-wide (RR plugin RPCs share request
types and use domain-object names). Removes the per-method
buf:lint:ignore directives from http/v2/service.proto.
- Adds .claude/settings.local.json to .gitignore.
Breaking changes:
- jobs/v2: JobsProxyService replaced by JobsService. No live Go-side
consumers; PHP still uses the goridge codec and migrates separately.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (10)
💤 Files with no reviewable changes (1)
📝 WalkthroughWalkthroughThis PR expands the roadrunner gRPC API by introducing five new service definitions—AppLogger, KV, Lock, Service management, and Status—alongside a refactored Jobs service. It consolidates protobuf lint suppressions into ChangesProto API Service Expansion
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Suggested labels
Suggested reviewers
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 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.
Pull request overview
Adds Connect-RPC service definitions for multiple RoadRunner plugins by introducing new service.proto files (or new service blocks) that reuse existing request/response messages, plus a small Buf lint configuration update to accommodate the plugins’ shared request/response shapes.
Changes:
- Added Connect-RPC service definitions for
status,lock,kv,service, andapplogger. - Replaced
jobs.v2.JobsProxyServicewith a multi-methodjobs.v2.JobsService, introducingPushRequestfor single-job pushes. - Centralized/relaxed certain Buf RPC naming lints and removed now-redundant per-method lint ignores from
http/v2/service.proto; added a local Claude settings file to.gitignore.
Reviewed changes
Copilot reviewed 9 out of 10 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| roadrunner/api/status/v2/service.proto | Adds StatusService RPC surface for status checks. |
| roadrunner/api/service/v1/service_rpc.proto | Adds ServiceManager RPCs with renamed methods to avoid message/RPC name collisions. |
| roadrunner/api/lock/v1/service.proto | Adds LockService RPC surface reusing existing lock messages. |
| roadrunner/api/kv/v2/service.proto | Adds KvService RPC surface reusing existing KV messages. |
| roadrunner/api/jobs/v2/service.proto | Replaces placeholder proxy service with JobsService multi-method API. |
| roadrunner/api/jobs/v2/request.proto | Adds PushRequest message to enforce single-job push shape. |
| roadrunner/api/http/v2/service.proto | Removes per-method Buf lint ignore comments now covered by buf.yaml. |
| roadrunner/api/applogger/v2/service.proto | Adds AppLoggerService plus LogMessage for string-only log RPCs. |
| buf.yaml | Disables several Buf RPC naming rules module-wide (and SERVICE_SUFFIX). |
| .gitignore | Ignores .claude/settings.local.json. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Summary
Adds proto
serviceblocks for the six RR plugins migrating from net/rpc + goridge codec to Connect-RPC:app-logger,status,lock,kv,service,jobs. Existing message types are reused where possible.New messages introduced:
applogger/v2/LogMessage { string message = 1; }for the primitive-stringError/Info/Warning/Debug/LogRPCs (domain-specific rather thanwrapperspb.StringValue, leaves room for future fields).jobs/v2/PushRequest { Job job = 1; }for single-job pushes — shape-enforces single-job semantics, replaces the runtimelen(req.Batch) != 1guard.Naming changes to avoid same-package message/RPC collisions:
service.v1.ServiceManager:Create→CreateService,Status→GetStatus,Statuses→GetStatuses,List→ListServices.jobs.v2.JobsService:Stat→GetStats(theStatmessage exists in the same package).Centralizes the RPC naming lints in
buf.yaml: disablesRPC_REQUEST_RESPONSE_UNIQUE,RPC_REQUEST_STANDARD_NAME,RPC_RESPONSE_STANDARD_NAMEmodule-wide and drops the now-redundant per-method// buf:lint:ignoredirectives fromhttp/v2/service.proto. RR plugin RPCs share request types across methods (e.g. allLockServiceRPCs useLockRequest/LockResponse) and use domain-object naming, so these rules are a structural mismatch.Adds
.claude/settings.local.jsonto.gitignore.Breaking changes
jobs/v2: the placeholderJobsProxyService.JobsHandleris replaced by the multi-methodJobsService. No live Go-side consumers — PHP still uses the goridge codec and migrates on its own timeline.Summary by CodeRabbit
New Features
Chores