From ecddb3e6efeedb334b99c0ac583b723d2b8aa40f Mon Sep 17 00:00:00 2001 From: mintaka Date: Tue, 8 Sep 2026 21:46:10 -0400 Subject: [PATCH] refactor(proto): standardize the PR-number wire field on pr_number (RIG-3561) agent_gateway.proto spelled the PR-addressing field two ways: the three pre-existing PR requests used pull_number while RIG-3331's transition request used pr_number. Converge on pr_number, which names the concept the forge actually uses. The split had already leaked past the wire: the agent tool took a pull_number parameter and mapped it onto the prNumber wire field, so a reader held two names for one value. That mapping is gone. Field numbers are unchanged, so the encoding is identical and nothing has shipped on this wire. The ingest PullNumberResolver seam is a separate internal concept and keeps its name. RIG-3561 Co-authored-by: Matt Wilkinson --- docs/designs/DECISIONS.md | 1 + .../gen/compass/v1/agent_gateway.pb.go | 37 +++++++++---------- go/server/forge.go | 6 +-- go/server/forge_e2e_pgtest_test.go | 2 +- go/server/forge_test.go | 6 +-- packages/compass-agent/src/forge.test.ts | 36 +++++++++--------- packages/compass-agent/src/forge.ts | 24 ++++++------ .../src/gen/compass/v1/agent_gateway_pb.ts | 14 +++---- proto/compass/v1/agent_gateway.proto | 6 +-- 9 files changed, 65 insertions(+), 67 deletions(-) diff --git a/docs/designs/DECISIONS.md b/docs/designs/DECISIONS.md index 2910ed78..b2e830d9 100644 --- a/docs/designs/DECISIONS.md +++ b/docs/designs/DECISIONS.md @@ -223,6 +223,7 @@ check enforces the mechanical half. Full rationale: | DL-324 | The forge live-test Linear credential is app-actor ONLY — DL-308's retain-one-Linear-user-credential carve-out is dropped (Matt's RIG-3096 pivot): the `livegithub` oracle's Linear legs gate on a single env var, `LINEAR_FORGE` (`go/internal/forge/livegithub_test.go:65`, consumed by `requireLinear` :91-99), minted as an app-actor token per CI run by `tools/forge-linear-token/index.ts` via the client_credentials grant from the `LINEAR_FORGE_CLIENT_ID`/`_SECRET` Actions secrets (`.github/workflows/ci.yml:1002-1004`) — with NO `LINEAR_FORGE_USER_TOKEN` (zero code hits) and no human→app delegation-setup step in CI. Supersedes DL-308's Linear-user-cred clause ONLY — DL-308's GitHub App-installation-token-mint clause stays live, so DL-308 itself remains Active | Active (Matt, 2026-09-02) | [forge app credentials](server/compass-forge-app-credentials/design.md) | | DL-342 | The forge state-transition write op is a parallel-arm pair (`TransitionIssueState` / `TransitionPullRequestState` on `forge.Provider`, `transition_issue_state` / `transition_pull_request_state` on `ForgeCallRequest`) over a portable `{open, closed}` core plus per-provider refinements carried in one `TransitionState` input (`close_reason` for GitHub issues, `workflow_state` for Linear). Every mismatch fails LOUD and in-band as `invalid_argument` before any provider call: a refinement the target provider cannot express, an unknown or ambiguous Linear state name, a named state whose type contradicts the portable target, and — per the OQ-2 ruling — a default resolution finding MORE THAN ONE candidate state, which names the candidates and demands an explicit `workflow_state` rather than taking a positional guess. Defaulting happens only where the target is unambiguous (default-close resolves against `completed`, never `canceled`). The Linear PR half returns `ErrUnsupported` (Linear is issues-only). Transitions are NOT F3-deduped and NOT DL-055-recorded — not the comment arm's reason (a comment has no representable coordinate) but because a transition targets a coordinate whose row is a write-once authorship fact whose `client_request_id` backs the create's F3 memo, so routing a transition through the record path would overwrite it. Amends DL-241's tool count by citation (twelve tools, rule unchanged). | Active (Matt, 2026-09-07) | [forge state transition](server/compass-forge-state-transition/design.md) | | DL-343 | Forge transition actor attribution rides a CONSUMABLE `forge_state_transitions` memo, never a parsed-text or author-row proxy: written after a successful transition at the same attribution chokepoint every forge write rides, then consumed on match at the notify lane so the provider-echoed STATE event resolves to the acting agent. Tenant-scoped like its `forge_authored_artifacts` sibling, and fail-open on a miss (a late webhook loses attribution; it never blocks or misattributes). This is the contract surface the RIG-3326 self-origin suppression record's STATE arm keys on, and it settles that cross-record question in the memo's favour: RIG-3326's frozen text describes the actor as stamped onto the emitted event, so its STATE arm bends to a memo lookup at the actor-resolution seam. The rejected alternative was a synthetic STATE event emitted at the chokepoint — equivalent for the suppression outcome, but it invents an event the forge never sent. Landing the seam is what closes RIG-3326's interim-open STATE arm. | Active (Matt, 2026-09-07) | [forge state transition](server/compass-forge-state-transition/design.md) | +| DL-350 | The PR-addressing wire field is spelled `pr_number` everywhere on `ForgeCallRequest`: `CommentOnPullRequestRequest`, `GetPullRequestRequest`, and `SubmitReviewRequest` converge from `pull_number` onto the spelling `TransitionPullRequestStateRequest` already carried, and the agent tools' arktype parameter takes the same name, removing the `prNumber: BigInt(params.pull_number)` mapping that made one value answer to two names. Field numbers are unchanged, so the encoding is identical and no compatibility shim is owed. Scoped to the wire field only: `ingest.PullNumberResolver` / `PullNumberForSHA` keeps its name, being a different concept (resolving a `check_suite` head SHA to its PR number) rather than a PR-addressing field. Recorded here because the arktype key is the agent-facing tool API and no compiler or drift gate reconciles a reader against it — three older records still show `pull_number` in illustrative snippets, and this row, not an in-place rewrite of a frozen record, is what points a reader at current truth. | Active (Matt, 2026-09-08) | [compass agent forge tools](agent/compass-agent-forge-tools/design.md) | ## Agent roles & prompts diff --git a/go/internal/gen/compass/v1/agent_gateway.pb.go b/go/internal/gen/compass/v1/agent_gateway.pb.go index b907eb95..d67f8d01 100644 --- a/go/internal/gen/compass/v1/agent_gateway.pb.go +++ b/go/internal/gen/compass/v1/agent_gateway.pb.go @@ -2135,7 +2135,7 @@ func (x *CreatePullRequestRequest) GetDraft() bool { type CommentOnPullRequestRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"` - PullNumber uint64 `protobuf:"varint,2,opt,name=pull_number,json=pullNumber,proto3" json:"pull_number,omitempty"` + PrNumber uint64 `protobuf:"varint,2,opt,name=pr_number,json=prNumber,proto3" json:"pr_number,omitempty"` Body string `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"` // WITHOUT the owner header unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -2178,9 +2178,9 @@ func (x *CommentOnPullRequestRequest) GetRepo() string { return "" } -func (x *CommentOnPullRequestRequest) GetPullNumber() uint64 { +func (x *CommentOnPullRequestRequest) GetPrNumber() uint64 { if x != nil { - return x.PullNumber + return x.PrNumber } return 0 } @@ -2195,7 +2195,7 @@ func (x *CommentOnPullRequestRequest) GetBody() string { type GetPullRequestRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"` - PullNumber uint64 `protobuf:"varint,2,opt,name=pull_number,json=pullNumber,proto3" json:"pull_number,omitempty"` + PrNumber uint64 `protobuf:"varint,2,opt,name=pr_number,json=prNumber,proto3" json:"pr_number,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2237,9 +2237,9 @@ func (x *GetPullRequestRequest) GetRepo() string { return "" } -func (x *GetPullRequestRequest) GetPullNumber() uint64 { +func (x *GetPullRequestRequest) GetPrNumber() uint64 { if x != nil { - return x.PullNumber + return x.PrNumber } return 0 } @@ -2247,7 +2247,7 @@ func (x *GetPullRequestRequest) GetPullNumber() uint64 { type SubmitReviewRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"` // REQUIRED; empty is invalid_argument - PullNumber uint64 `protobuf:"varint,2,opt,name=pull_number,json=pullNumber,proto3" json:"pull_number,omitempty"` + PrNumber uint64 `protobuf:"varint,2,opt,name=pr_number,json=prNumber,proto3" json:"pr_number,omitempty"` Verdict string `protobuf:"bytes,3,opt,name=verdict,proto3" json:"verdict,omitempty"` // "approve" | "request_changes" | "comment" Body string `protobuf:"bytes,4,opt,name=body,proto3" json:"body,omitempty"` // WITHOUT the owner header; the Server stamps it Comments []*ReviewCommentInput `protobuf:"bytes,5,rep,name=comments,proto3" json:"comments,omitempty"` // inline comments; may be empty @@ -2292,9 +2292,9 @@ func (x *SubmitReviewRequest) GetRepo() string { return "" } -func (x *SubmitReviewRequest) GetPullNumber() uint64 { +func (x *SubmitReviewRequest) GetPrNumber() uint64 { if x != nil { - return x.PullNumber + return x.PrNumber } return 0 } @@ -3426,20 +3426,17 @@ const file_compass_v1_agent_gateway_proto_rawDesc = "" + "\x04body\x18\x03 \x01(\tR\x04body\x12\x19\n" + "\bhead_ref\x18\x04 \x01(\tR\aheadRef\x12\x19\n" + "\bbase_ref\x18\x05 \x01(\tR\abaseRef\x12\x14\n" + - "\x05draft\x18\x06 \x01(\bR\x05draft\"f\n" + + "\x05draft\x18\x06 \x01(\bR\x05draft\"b\n" + "\x1bCommentOnPullRequestRequest\x12\x12\n" + - "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x1f\n" + - "\vpull_number\x18\x02 \x01(\x04R\n" + - "pullNumber\x12\x12\n" + - "\x04body\x18\x03 \x01(\tR\x04body\"L\n" + + "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x1b\n" + + "\tpr_number\x18\x02 \x01(\x04R\bprNumber\x12\x12\n" + + "\x04body\x18\x03 \x01(\tR\x04body\"H\n" + "\x15GetPullRequestRequest\x12\x12\n" + - "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x1f\n" + - "\vpull_number\x18\x02 \x01(\x04R\n" + - "pullNumber\"\xb4\x01\n" + + "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x1b\n" + + "\tpr_number\x18\x02 \x01(\x04R\bprNumber\"\xb0\x01\n" + "\x13SubmitReviewRequest\x12\x12\n" + - "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x1f\n" + - "\vpull_number\x18\x02 \x01(\x04R\n" + - "pullNumber\x12\x18\n" + + "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x1b\n" + + "\tpr_number\x18\x02 \x01(\x04R\bprNumber\x12\x18\n" + "\averdict\x18\x03 \x01(\tR\averdict\x12\x12\n" + "\x04body\x18\x04 \x01(\tR\x04body\x12:\n" + "\bcomments\x18\x05 \x03(\v2\x1e.compass.v1.ReviewCommentInputR\bcomments\"d\n" + diff --git a/go/server/forge.go b/go/server/forge.go index 065e649e..326bbda1 100644 --- a/go/server/forge.go +++ b/go/server/forge.go @@ -481,7 +481,7 @@ func (s *forgeService) commentOnPullRequest(ctx context.Context, caller store.Ac if err != nil { return forgeErrorResult(mapForgeError(err, forgeOp{provider: rf.author.Name(), op: "comment_on_pull_request", bodyLen: len(req.GetBody()), bodyLimit: rf.bodyLimit})) } - cm, err := rf.author.CommentOnPullRequest(ctx, req.GetRepo(), req.GetPullNumber(), body) + cm, err := rf.author.CommentOnPullRequest(ctx, req.GetRepo(), req.GetPrNumber(), body) if err != nil { return forgeErrorResult(mapForgeError(err, forgeOp{provider: rf.author.Name(), op: "comment_on_pull_request"})) } @@ -523,7 +523,7 @@ func (s *forgeService) submitReview(ctx context.Context, caller store.AccountID, }) } - sr, err := rf.reviewer.SubmitReview(ctx, req.GetRepo(), req.GetPullNumber(), forge.SubmitReview{ + sr, err := rf.reviewer.SubmitReview(ctx, req.GetRepo(), req.GetPrNumber(), forge.SubmitReview{ Verdict: req.GetVerdict(), Body: body, Comments: comments, @@ -693,7 +693,7 @@ func (s *forgeService) getPullRequest(ctx context.Context, call *compassv1intern if fe != nil { return forgeErrorResult(fe) } - pr, err := rf.author.GetPullRequest(ctx, req.GetRepo(), req.GetPullNumber()) + pr, err := rf.author.GetPullRequest(ctx, req.GetRepo(), req.GetPrNumber()) if err != nil { return forgeErrorResult(mapForgeError(err, forgeOp{provider: rf.author.Name(), op: "get_pull_request"})) } diff --git a/go/server/forge_e2e_pgtest_test.go b/go/server/forge_e2e_pgtest_test.go index f01c1885..bfe0c360 100644 --- a/go/server/forge_e2e_pgtest_test.go +++ b/go/server/forge_e2e_pgtest_test.go @@ -272,7 +272,7 @@ func TestForgeSubmitReviewOverTheWire(t *testing.T) { resp, err := w.supervisorClient.Forge(ctx, connect.NewRequest(&compassv1internal.ForgeCallRequest{ CallId: "fc-review-1", Call: &compassv1internal.ForgeCallRequest_SubmitReview{SubmitReview: &compassv1internal.SubmitReviewRequest{ - Repo: forgeE2ERepo, PullNumber: 7, Verdict: "approve", Body: "looks good", + Repo: forgeE2ERepo, PrNumber: 7, Verdict: "approve", Body: "looks good", Comments: []*compassv1internal.ReviewCommentInput{{Path: "a.go", Line: 3, Body: forgedInline}}, }}, })) diff --git a/go/server/forge_test.go b/go/server/forge_test.go index 38fabc6a..602ee32f 100644 --- a/go/server/forge_test.go +++ b/go/server/forge_test.go @@ -298,7 +298,7 @@ func TestForgeSubmitReviewStripsInlineCommentOwnerHeaders(t *testing.T) { forgedInline := "\nnit: rename" call := &compassv1internal.ForgeCallRequest{ Call: &compassv1internal.ForgeCallRequest_SubmitReview{SubmitReview: &compassv1internal.SubmitReviewRequest{ - Repo: testRepo, PullNumber: 7, Verdict: "comment", Body: "looks good", + Repo: testRepo, PrNumber: 7, Verdict: "comment", Body: "looks good", Comments: []*compassv1internal.ReviewCommentInput{{Path: "a.go", Line: 3, Body: forgedInline}}, }}, } @@ -600,7 +600,7 @@ func TestForgeF1DispatchReviewerVsAuthorClient(t *testing.T) { review := &compassv1internal.ForgeCallRequest{ Call: &compassv1internal.ForgeCallRequest_SubmitReview{SubmitReview: &compassv1internal.SubmitReviewRequest{ - Repo: testRepo, PullNumber: 1, Verdict: "approve", Body: "ok", + Repo: testRepo, PrNumber: 1, Verdict: "approve", Body: "ok", }}, } if res := svc.ExecuteForgeCallAsAccountMust(t, review); res.GetError() != nil { @@ -757,7 +757,7 @@ func TestForgeCommentArmsStampBodies(t *testing.T) { svc, _ := newForgeServiceForTest(t, author, reviewer) call := &compassv1internal.ForgeCallRequest{ Call: &compassv1internal.ForgeCallRequest_CommentOnPullRequest{CommentOnPullRequest: &compassv1internal.CommentOnPullRequestRequest{ - Repo: testRepo, PullNumber: 4, Body: "hi", + Repo: testRepo, PrNumber: 4, Body: "hi", }}, } res := svc.ExecuteForgeCallAsAccountMust(t, call) diff --git a/packages/compass-agent/src/forge.test.ts b/packages/compass-agent/src/forge.test.ts index 05106ba3..af8cb44e 100644 --- a/packages/compass-agent/src/forge.test.ts +++ b/packages/compass-agent/src/forge.test.ts @@ -458,11 +458,11 @@ describe("forge_get_pull_request", () => { pullRequestResult({ number: 3, repo: "o/r" }), ); const t = tool(new ForgeBroker(transport), "forge_get_pull_request"); - await exec(t, "tc-1", { repo: "o/r", pull_number: 3 }); + await exec(t, "tc-1", { repo: "o/r", pr_number: 3 }); const req = transport.requests[0]; expect(req.call.case).toBe("getPullRequest"); if (req.call.case !== "getPullRequest") throw new Error("expected arm"); - expect(req.call.value.pullNumber).toBe(3n); + expect(req.call.value.prNumber).toBe(3n); }); test("renders reviews with normalized verdicts and capped threads", async () => { @@ -497,7 +497,7 @@ describe("forge_get_pull_request", () => { ); const t = tool(new ForgeBroker(transport), "forge_get_pull_request"); const text = textOf( - await exec(t, "tc-1", { repo: "octo/repo", pull_number: 3 }), + await exec(t, "tc-1", { repo: "octo/repo", pr_number: 3 }), ); const f = fenceOf(text); // The wire "changes_requested" is normalized onto the tool's vocabulary. @@ -524,7 +524,7 @@ describe("forge_get_pull_request", () => { }), ); const t = tool(new ForgeBroker(transport), "forge_get_pull_request"); - const text = textOf(await exec(t, "tc-1", { repo: "o/r", pull_number: 3 })); + const text = textOf(await exec(t, "tc-1", { repo: "o/r", pr_number: 3 })); const f = fenceOf(text); expect( text.split("\n").filter((l) => l.startsWith(`[review ${f}]`)), @@ -547,7 +547,7 @@ describe("forge_get_pull_request", () => { ); const t = tool(new ForgeBroker(transport), "forge_get_pull_request"); const text = textOf( - await exec(t, "tc-1", { repo: "octo/repo", pull_number: 3 }), + await exec(t, "tc-1", { repo: "octo/repo", pr_number: 3 }), ); const f = fenceOf(text); expect(text).toContain(`head="(malformed ${f})"`); @@ -658,14 +658,14 @@ describe("forge_comment_on_pull_request", () => { const t = tool(new ForgeBroker(transport), "forge_comment_on_pull_request"); const result = await exec(t, "tc-1", { repo: "o/r", - pull_number: 8, + pr_number: 8, body: "ship it", }); const req = transport.requests[0]; expect(req.call.case).toBe("commentOnPullRequest"); if (req.call.case !== "commentOnPullRequest") throw new Error("expected arm"); - expect(req.call.value.pullNumber).toBe(8n); + expect(req.call.value.prNumber).toBe(8n); expect(textOf(result)).toBe( "Commented on PR #8: https://github.com/o/r/pull/8#c1", ); @@ -680,7 +680,7 @@ describe("forge_submit_review", () => { const t = tool(new ForgeBroker(transport), "forge_submit_review"); const result = await exec(t, "tc-1", { repo: "o/r", - pull_number: 8, + pr_number: 8, verdict: "request_changes", body: "please fix", comments: [{ path: "a.ts", line: 12, body: "here" }], @@ -688,7 +688,7 @@ describe("forge_submit_review", () => { const req = transport.requests[0]; expect(req.call.case).toBe("submitReview"); if (req.call.case !== "submitReview") throw new Error("expected arm"); - expect(req.call.value.pullNumber).toBe(8n); + expect(req.call.value.prNumber).toBe(8n); expect(req.call.value.verdict).toBe("request_changes"); expect(req.call.value.comments).toHaveLength(1); expect(req.call.value.comments[0].path).toBe("a.ts"); @@ -708,7 +708,7 @@ describe("forge_submit_review", () => { const t = tool(new ForgeBroker(transport), "forge_submit_review"); const result = await exec(t, "tc-1", { repo: "o/r", - pull_number: 8, + pr_number: 8, verdict: "approve", }); const req = transport.requests[0]; @@ -724,7 +724,7 @@ describe("forge_submit_review", () => { const t = tool(new ForgeBroker(transport), "forge_submit_review"); const result = await exec(t, "tc-1", { repo: "o/r", - pull_number: 8, + pr_number: 8, verdict: "comment", body: "note", }); @@ -768,7 +768,7 @@ describe("forge transition tools", () => { "tc-2", { repo: "o/r", - pull_number: 5, + pr_number: 5, state: "closed", }, ); @@ -1011,7 +1011,7 @@ describe("forge parameter schemas", () => { expect( rejects(transitionPullRequestStateParameters, { repo: "o/r", - pull_number: 5, + pr_number: 5, state: "Done", }), ).toBe(true); @@ -1092,7 +1092,7 @@ describe("forge parameter schemas", () => { expect( rejects(submitReviewParameters, { repo: "o/r", - pull_number: 1, + pr_number: 1, verdict: "lgtm", }), ).toBe(true); @@ -1102,14 +1102,14 @@ describe("forge parameter schemas", () => { expect( rejects(submitReviewParameters, { repo: "o/r", - pull_number: 1, + pr_number: 1, verdict: "request_changes", }), ).toBe(true); expect( rejects(submitReviewParameters, { repo: "o/r", - pull_number: 1, + pr_number: 1, verdict: "request_changes", body: " ", }), @@ -1117,7 +1117,7 @@ describe("forge parameter schemas", () => { expect( rejects(submitReviewParameters, { repo: "o/r", - pull_number: 1, + pr_number: 1, verdict: "request_changes", body: "please fix", }), @@ -1126,7 +1126,7 @@ describe("forge parameter schemas", () => { expect( rejects(submitReviewParameters, { repo: "o/r", - pull_number: 1, + pr_number: 1, verdict: "approve", }), ).toBe(false); diff --git a/packages/compass-agent/src/forge.ts b/packages/compass-agent/src/forge.ts index 10c7f4e8..5743bbb9 100644 --- a/packages/compass-agent/src/forge.ts +++ b/packages/compass-agent/src/forge.ts @@ -163,7 +163,7 @@ export const getIssueParameters = type({ export const getPullRequestParameters = type({ ...forgeSelector, repo: nonBlank(REPO_DESC), - pull_number: type("number.integer >= 1"), + pr_number: type("number.integer >= 1"), }); /** Exported so a test can validate the wire contract the agent loop enforces. */ @@ -193,7 +193,7 @@ export const commentOnIssueParameters = type({ export const commentOnPullRequestParameters = type({ ...forgeSelector, repo: nonBlank(REPO_DESC), - pull_number: type("number.integer >= 1"), + pr_number: type("number.integer >= 1"), body: nonBlank(STAMP_DESC), }); @@ -206,7 +206,7 @@ export const commentOnPullRequestParameters = type({ export const submitReviewParameters = type({ ...forgeSelector, repo: nonBlank(REPO_DESC), - pull_number: type("number.integer >= 1"), + pr_number: type("number.integer >= 1"), verdict: type("'approve' | 'request_changes' | 'comment'"), "body?": type("string").describe( "Review summary; required unless verdict is 'approve'. Do NOT include an attribution header — the server stamps it", @@ -292,7 +292,7 @@ export const transitionIssueStateParameters = type({ export const transitionPullRequestStateParameters = type({ ...forgeSelector, repo: nonBlank(REPO_DESC), - pull_number: type("number.integer >= 1"), + pr_number: type("number.integer >= 1"), state: type("'open' | 'closed'").describe("Target pull-request state"), }); @@ -511,7 +511,7 @@ function framedRead(records: string[]): string { // well-formed URL and slug). No fence: a single line names none. function reviewAck( - pullNumber: bigint, + prNumber: bigint, review: ReviewRef, fallbackVerdict: string, ): string { @@ -519,7 +519,7 @@ function reviewAck( review.verdict.length > 0 ? normalizeVerdict(review.verdict) : fallbackVerdict; - return `Submitted ${attr(verdict)} review on PR #${attr(String(pullNumber))}: ${ref(review.url)}`; + return `Submitted ${attr(verdict)} review on PR #${attr(String(prNumber))}: ${ref(review.url)}`; } // DL-206 dedup-hit: a replayed create returns a skeletal artifact carrying only @@ -606,7 +606,7 @@ export function createForgeTools(broker: ForgeBroker): AgentTool[] { case: "getPullRequest", value: create(GetPullRequestRequestSchema, { repo: params.repo, - pullNumber: BigInt(params.pull_number), + prNumber: BigInt(params.pr_number), }), }, forge: forgeRef(params), @@ -713,7 +713,7 @@ export function createForgeTools(broker: ForgeBroker): AgentTool[] { case: "commentOnPullRequest", value: create(CommentOnPullRequestRequestSchema, { repo: params.repo, - pullNumber: BigInt(params.pull_number), + prNumber: BigInt(params.pr_number), body: params.body, }), }, @@ -730,7 +730,7 @@ export function createForgeTools(broker: ForgeBroker): AgentTool[] { content: [ { type: "text", - text: `Commented on PR #${attr(String(BigInt(params.pull_number)))}: ${ref(result.result.value.url)}`, + text: `Commented on PR #${attr(String(BigInt(params.pr_number)))}: ${ref(result.result.value.url)}`, }, ], }; @@ -751,7 +751,7 @@ export function createForgeTools(broker: ForgeBroker): AgentTool[] { case: "submitReview", value: create(SubmitReviewRequestSchema, { repo: params.repo, - pullNumber: BigInt(params.pull_number), + prNumber: BigInt(params.pr_number), verdict: params.verdict, body: params.body ?? "", comments: (params.comments ?? []).map((c) => @@ -774,7 +774,7 @@ export function createForgeTools(broker: ForgeBroker): AgentTool[] { { type: "text", text: reviewAck( - BigInt(params.pull_number), + BigInt(params.pr_number), result.result.value, params.verdict, ), @@ -916,7 +916,7 @@ export function createForgeTools(broker: ForgeBroker): AgentTool[] { case: "transitionPullRequestState", value: create(TransitionPullRequestStateRequestSchema, { repo: params.repo, - prNumber: BigInt(params.pull_number), + prNumber: BigInt(params.pr_number), state: params.state, }), }, diff --git a/packages/compass-agent/src/gen/compass/v1/agent_gateway_pb.ts b/packages/compass-agent/src/gen/compass/v1/agent_gateway_pb.ts index 54ab2c75..f5457c46 100644 --- a/packages/compass-agent/src/gen/compass/v1/agent_gateway_pb.ts +++ b/packages/compass-agent/src/gen/compass/v1/agent_gateway_pb.ts @@ -48,7 +48,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file compass/v1/agent_gateway.proto. */ export const file_compass_v1_agent_gateway: GenFile = /*@__PURE__*/ - fileDesc("Ch5jb21wYXNzL3YxL2FnZW50X2dhdGV3YXkucHJvdG8SCmNvbXBhc3MudjEiuwQKEENvbW1zQ2FsbFJlcXVlc3QSDwoHY2FsbF9pZBgBIAEoCRIuCgRwb3N0GAIgASgLMh4uY29tcGFzcy52MS5Qb3N0TWVzc2FnZVJlcXVlc3RIABIvCgRsaXN0GAMgASgLMh8uY29tcGFzcy52MS5MaXN0TWVzc2FnZXNSZXF1ZXN0SAASLgoGcm9zdGVyGAQgASgLMhwuY29tcGFzcy52MS5HZXRSb3N0ZXJSZXF1ZXN0SAASNwoKc2V0X3N0YXR1cxgFIAEoCzIhLmNvbXBhc3MudjEuU2V0QWdlbnRTdGF0dXNSZXF1ZXN0SAASMwoDcGluGAYgASgLMiQuY29tcGFzcy52MS5VcGRhdGVQaW5uZWRCb2FyZFJlcXVlc3RIABI6Cg5jcmVhdGVfY2hhbm5lbBgHIAEoCzIgLmNvbXBhc3MudjEuQ3JlYXRlQ2hhbm5lbFJlcXVlc3RIABJBCg51cGRhdGVfbWVtYmVycxgIIAEoCzInLmNvbXBhc3MudjEuVXBkYXRlQ2hhbm5lbE1lbWJlcnNSZXF1ZXN0SAASRQoUY3JlYXRlX2NoYW5uZWxfZ3JvdXAYCSABKAsyJS5jb21wYXNzLnYxLkNyZWF0ZUNoYW5uZWxHcm91cFJlcXVlc3RIABIsCgdvcGVuX2RtGAsgASgLMhkuY29tcGFzcy52MS5PcGVuRE1SZXF1ZXN0SAASGwoTdHJpZ2dlcl90cmFjZXBhcmVudBgKIAEoCUIGCgRjYWxsItUECg9Db21tc0NhbGxSZXN1bHQSDwoHY2FsbF9pZBgBIAEoCRIvCgRwb3N0GAIgASgLMh8uY29tcGFzcy52MS5Qb3N0TWVzc2FnZVJlc3BvbnNlSAASMAoEbGlzdBgDIAEoCzIgLmNvbXBhc3MudjEuTGlzdE1lc3NhZ2VzUmVzcG9uc2VIABIrCgVlcnJvchgEIAEoCzIaLmNvbXBhc3MudjEuQ29tbXNDYWxsRXJyb3JIABIvCgZyb3N0ZXIYBSABKAsyHS5jb21wYXNzLnYxLkdldFJvc3RlclJlc3BvbnNlSAASOAoKc2V0X3N0YXR1cxgGIAEoCzIiLmNvbXBhc3MudjEuU2V0QWdlbnRTdGF0dXNSZXNwb25zZUgAEjQKA3BpbhgHIAEoCzIlLmNvbXBhc3MudjEuVXBkYXRlUGlubmVkQm9hcmRSZXNwb25zZUgAEjsKDmNyZWF0ZV9jaGFubmVsGAggASgLMiEuY29tcGFzcy52MS5DcmVhdGVDaGFubmVsUmVzcG9uc2VIABJCCg51cGRhdGVfbWVtYmVycxgJIAEoCzIoLmNvbXBhc3MudjEuVXBkYXRlQ2hhbm5lbE1lbWJlcnNSZXNwb25zZUgAEkYKFGNyZWF0ZV9jaGFubmVsX2dyb3VwGAogASgLMiYuY29tcGFzcy52MS5DcmVhdGVDaGFubmVsR3JvdXBSZXNwb25zZUgAEi0KB29wZW5fZG0YCyABKAsyGi5jb21wYXNzLnYxLk9wZW5ETVJlc3BvbnNlSABCCAoGcmVzdWx0Ii8KDkNvbW1zQ2FsbEVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCSIpChVTZXRBZ2VudFN0YXR1c1JlcXVlc3QSEAoIYWN0aXZpdHkYASABKAkiGAoWU2V0QWdlbnRTdGF0dXNSZXNwb25zZSKRAQoUTGlmZWN5Y2xlQ2FsbFJlcXVlc3QSDwoHY2FsbF9pZBgBIAEoCRItCgVzcGF3bhgCIAEoCzIcLmNvbXBhc3MudjEuU3Bhd25QZWVyUmVxdWVzdEgAEjEKB2Rlc3Bhd24YAyABKAsyHi5jb21wYXNzLnYxLkRlc3Bhd25QZWVyUmVxdWVzdEgAQgYKBGNhbGwiiAEKEFNwYXduUGVlclJlcXVlc3QSDgoGaGFuZGxlGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIZChFjbGllbnRfcmVxdWVzdF9pZBgEIAEoCRIMCgRyb2xlGAUgASgJEg8KB3BlcnNvbmEYBiABKAlKBAgDEARSDmluaXRpYWxfcHJvbXB0InIKEVNwYXduUGVlclJlc3BvbnNlEhgKEGFnZW50X2FjY291bnRfaWQYASABKAkSFgoOY29udGFpbmVyX25hbWUYAiABKAkSEgoKc2Vzc2lvbl9pZBgDIAEoCRIXCg9kbV9jaGFubmVsX25hbWUYBCABKAkiKgoSRGVzcGF3blBlZXJSZXF1ZXN0EhQKDGFnZW50X2hhbmRsZRgBIAEoCSIVChNEZXNwYXduUGVlclJlc3BvbnNlIsUBChNMaWZlY3ljbGVDYWxsUmVzdWx0Eg8KB2NhbGxfaWQYASABKAkSLgoFc3Bhd24YAiABKAsyHS5jb21wYXNzLnYxLlNwYXduUGVlclJlc3BvbnNlSAASMgoHZGVzcGF3bhgDIAEoCzIfLmNvbXBhc3MudjEuRGVzcGF3blBlZXJSZXNwb25zZUgAEi8KBWVycm9yGAQgASgLMh4uY29tcGFzcy52MS5MaWZlY3ljbGVDYWxsRXJyb3JIAEIICgZyZXN1bHQiMwoSTGlmZWN5Y2xlQ2FsbEVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCSLrBgoQRm9yZ2VDYWxsUmVxdWVzdBIPCgdjYWxsX2lkGAEgASgJEjYKDGNyZWF0ZV9pc3N1ZRgCIAEoCzIeLmNvbXBhc3MudjEuQ3JlYXRlSXNzdWVSZXF1ZXN0SAASPQoQY29tbWVudF9vbl9pc3N1ZRgDIAEoCzIhLmNvbXBhc3MudjEuQ29tbWVudE9uSXNzdWVSZXF1ZXN0SAASMAoJZ2V0X2lzc3VlGAQgASgLMhsuY29tcGFzcy52MS5HZXRJc3N1ZVJlcXVlc3RIABI0CgtsaXN0X2lzc3VlcxgFIAEoCzIdLmNvbXBhc3MudjEuTGlzdElzc3Vlc1JlcXVlc3RIABJDChNjcmVhdGVfcHVsbF9yZXF1ZXN0GAYgASgLMiQuY29tcGFzcy52MS5DcmVhdGVQdWxsUmVxdWVzdFJlcXVlc3RIABJKChdjb21tZW50X29uX3B1bGxfcmVxdWVzdBgHIAEoCzInLmNvbXBhc3MudjEuQ29tbWVudE9uUHVsbFJlcXVlc3RSZXF1ZXN0SAASPQoQZ2V0X3B1bGxfcmVxdWVzdBgIIAEoCzIhLmNvbXBhc3MudjEuR2V0UHVsbFJlcXVlc3RSZXF1ZXN0SAASNgoJc3Vic2NyaWJlGAkgASgLMiEuY29tcGFzcy52MS5TdWJzY3JpYmVGb3JnZVJlcXVlc3RIABI6Cgt1bnN1YnNjcmliZRgKIAEoCzIjLmNvbXBhc3MudjEuVW5zdWJzY3JpYmVGb3JnZVJlcXVlc3RIABI4Cg1zdWJtaXRfcmV2aWV3GAsgASgLMh8uY29tcGFzcy52MS5TdWJtaXRSZXZpZXdSZXF1ZXN0SAASSQoWdHJhbnNpdGlvbl9pc3N1ZV9zdGF0ZRgOIAEoCzInLmNvbXBhc3MudjEuVHJhbnNpdGlvbklzc3VlU3RhdGVSZXF1ZXN0SAASVgoddHJhbnNpdGlvbl9wdWxsX3JlcXVlc3Rfc3RhdGUYDyABKAsyLS5jb21wYXNzLnYxLlRyYW5zaXRpb25QdWxsUmVxdWVzdFN0YXRlUmVxdWVzdEgAEiMKBWZvcmdlGAwgASgLMhQuY29tcGFzcy52MS5Gb3JnZVJlZhIZChFjbGllbnRfcmVxdWVzdF9pZBgNIAEoCUIGCgRjYWxsIuADCg9Gb3JnZUNhbGxSZXN1bHQSDwoHY2FsbF9pZBgBIAEoCRIiCgVpc3N1ZRgCIAEoCzIRLmNvbXBhc3MudjEuSXNzdWVIABIvCg1pc3N1ZV9jb21tZW50GAMgASgLMhYuY29tcGFzcy52MS5Db21tZW50UmVmSAASMAoGaXNzdWVzGAQgASgLMh4uY29tcGFzcy52MS5MaXN0SXNzdWVzUmVzcG9uc2VIABIvCgxwdWxsX3JlcXVlc3QYBSABKAsyFy5jb21wYXNzLnYxLlB1bGxSZXF1ZXN0SAASLAoKcHJfY29tbWVudBgGIAEoCzIWLmNvbXBhc3MudjEuQ29tbWVudFJlZkgAEjgKCnN1YnNjcmliZWQYByABKAsyIi5jb21wYXNzLnYxLlN1YnNjcmliZUZvcmdlUmVzcG9uc2VIABI8Cgx1bnN1YnNjcmliZWQYCCABKAsyJC5jb21wYXNzLnYxLlVuc3Vic2NyaWJlRm9yZ2VSZXNwb25zZUgAEisKBWVycm9yGAkgASgLMhouY29tcGFzcy52MS5Gb3JnZUNhbGxFcnJvckgAEicKBnJldmlldxgKIAEoCzIVLmNvbXBhc3MudjEuUmV2aWV3UmVmSABCCAoGcmVzdWx0IkcKDkZvcmdlQ2FsbEVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIWCg5yZXRyeV9hZnRlcl9tcxgDIAEoDSJPChJDcmVhdGVJc3N1ZVJlcXVlc3QSDAoEcmVwbxgBIAEoCRINCgV0aXRsZRgCIAEoCRIMCgRib2R5GAMgASgJEg4KBmxhYmVscxgEIAMoCSJJChVDb21tZW50T25Jc3N1ZVJlcXVlc3QSDAoEcmVwbxgBIAEoCRIUCgxpc3N1ZV9udW1iZXIYAiABKAQSDAoEYm9keRgDIAEoCSI1Cg9HZXRJc3N1ZVJlcXVlc3QSDAoEcmVwbxgBIAEoCRIUCgxpc3N1ZV9udW1iZXIYAiABKAQiTwoRTGlzdElzc3Vlc1JlcXVlc3QSDAoEcmVwbxgBIAEoCRINCgVzdGF0ZRgCIAEoCRIOCgZsYWJlbHMYAyADKAkSDQoFbGltaXQYBCABKA0iNwoSTGlzdElzc3Vlc1Jlc3BvbnNlEiEKBmlzc3VlcxgBIAMoCzIRLmNvbXBhc3MudjEuSXNzdWUieAoYQ3JlYXRlUHVsbFJlcXVlc3RSZXF1ZXN0EgwKBHJlcG8YASABKAkSDQoFdGl0bGUYAiABKAkSDAoEYm9keRgDIAEoCRIQCghoZWFkX3JlZhgEIAEoCRIQCghiYXNlX3JlZhgFIAEoCRINCgVkcmFmdBgGIAEoCCJOChtDb21tZW50T25QdWxsUmVxdWVzdFJlcXVlc3QSDAoEcmVwbxgBIAEoCRITCgtwdWxsX251bWJlchgCIAEoBBIMCgRib2R5GAMgASgJIjoKFUdldFB1bGxSZXF1ZXN0UmVxdWVzdBIMCgRyZXBvGAEgASgJEhMKC3B1bGxfbnVtYmVyGAIgASgEIokBChNTdWJtaXRSZXZpZXdSZXF1ZXN0EgwKBHJlcG8YASABKAkSEwoLcHVsbF9udW1iZXIYAiABKAQSDwoHdmVyZGljdBgDIAEoCRIMCgRib2R5GAQgASgJEjAKCGNvbW1lbnRzGAUgAygLMh4uY29tcGFzcy52MS5SZXZpZXdDb21tZW50SW5wdXQiTAoSUmV2aWV3Q29tbWVudElucHV0EgwKBHBhdGgYASABKAkSDAoEbGluZRgCIAEoDRIMCgRzaWRlGAMgASgJEgwKBGJvZHkYBCABKAkifgobVHJhbnNpdGlvbklzc3VlU3RhdGVSZXF1ZXN0EgwKBHJlcG8YASABKAkSFAoMaXNzdWVfbnVtYmVyGAIgASgEEg0KBXN0YXRlGAMgASgJEhQKDGNsb3NlX3JlYXNvbhgEIAEoCRIWCg53b3JrZmxvd19zdGF0ZRgFIAEoCSJTCiFUcmFuc2l0aW9uUHVsbFJlcXVlc3RTdGF0ZVJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCglwcl9udW1iZXIYAiABKAQSDQoFc3RhdGUYAyABKAkipgEKFVN1YnNjcmliZUZvcmdlUmVxdWVzdBIMCgRyZXBvGAEgASgJEisKBGtpbmQYAiABKA4yHS5jb21wYXNzLnYxLkZvcmdlQXJ0aWZhY3RLaW5kEg4KBm51bWJlchgDIAEoBBIxCgVzY29wZRgEIAEoDjIiLmNvbXBhc3MudjEuRm9yZ2VTdWJzY3JpcHRpb25TY29wZRIPCgdwcm9qZWN0GAUgASgJIjEKFlN1YnNjcmliZUZvcmdlUmVzcG9uc2USFwoPc3Vic2NyaXB0aW9uX2lkGAEgASgJIjIKF1Vuc3Vic2NyaWJlRm9yZ2VSZXF1ZXN0EhcKD3N1YnNjcmlwdGlvbl9pZBgBIAEoCSIaChhVbnN1YnNjcmliZUZvcmdlUmVzcG9uc2UiaAoQQm9hcmRDYWxsUmVxdWVzdBIPCgdjYWxsX2lkGAEgASgJEjsKD3NldF9pc3N1ZV9zdGF0ZRgCIAEoCzIgLmNvbXBhc3MudjEuU2V0SXNzdWVTdGF0ZVJlcXVlc3RIAEIGCgRjYWxsIk8KFFNldElzc3VlU3RhdGVSZXF1ZXN0EhAKCGlzc3VlX2lkGAEgASgJEiUKBXN0YXRlGAIgASgOMhYuY29tcGFzcy52MS5Jc3N1ZVN0YXRlIjkKFVNldElzc3VlU3RhdGVSZXNwb25zZRIgCgVpc3N1ZRgBIAEoCzIRLmNvbXBhc3MudjEuSXNzdWUilwEKD0JvYXJkQ2FsbFJlc3VsdBIPCgdjYWxsX2lkGAEgASgJEjwKD3NldF9pc3N1ZV9zdGF0ZRgCIAEoCzIhLmNvbXBhc3MudjEuU2V0SXNzdWVTdGF0ZVJlc3BvbnNlSAASKwoFZXJyb3IYAyABKAsyGi5jb21wYXNzLnYxLkJvYXJkQ2FsbEVycm9ySABCCAoGcmVzdWx0Ii8KDkJvYXJkQ2FsbEVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCSI8ChNQdWJsaXNoRnJhbWVSZXF1ZXN0EiUKBWZyYW1lGAEgASgLMhYuY29tcGFzcy52MS5BZ2VudEZyYW1lIhYKFFB1Ymxpc2hGcmFtZVJlc3BvbnNlIl4KHFBvc3RDb252ZXJzYXRpb25GcmFtZVJlcXVlc3QSJQoFZnJhbWUYASABKAsyFi5jb21wYXNzLnYxLkFnZW50RnJhbWUSFwoPaWRlbXBvdGVuY3lfa2V5GAIgASgJIh8KHVBvc3RDb252ZXJzYXRpb25GcmFtZVJlc3BvbnNlIhkKF0NvbnRyb2xTdWJzY3JpYmVSZXF1ZXN0KpEBChZGb3JnZVN1YnNjcmlwdGlvblNjb3BlEigKJEZPUkdFX1NVQlNDUklQVElPTl9TQ09QRV9VTlNQRUNJRklFRBAAEiUKIUZPUkdFX1NVQlNDUklQVElPTl9TQ09QRV9BUlRJRkFDVBABEiYKIkZPUkdFX1NVQlNDUklQVElPTl9TQ09QRV9DT05UQUlORVIQAjK0BAoMQWdlbnRHYXRld2F5EkIKBUNvbW1zEhwuY29tcGFzcy52MS5Db21tc0NhbGxSZXF1ZXN0GhsuY29tcGFzcy52MS5Db21tc0NhbGxSZXN1bHQSTgoJTGlmZWN5Y2xlEiAuY29tcGFzcy52MS5MaWZlY3ljbGVDYWxsUmVxdWVzdBofLmNvbXBhc3MudjEuTGlmZWN5Y2xlQ2FsbFJlc3VsdBJOCgdQdWJsaXNoEh8uY29tcGFzcy52MS5QdWJsaXNoRnJhbWVSZXF1ZXN0GiAuY29tcGFzcy52MS5QdWJsaXNoRnJhbWVSZXNwb25zZSgBEmwKFVBvc3RDb252ZXJzYXRpb25GcmFtZRIoLmNvbXBhc3MudjEuUG9zdENvbnZlcnNhdGlvbkZyYW1lUmVxdWVzdBopLmNvbXBhc3MudjEuUG9zdENvbnZlcnNhdGlvbkZyYW1lUmVzcG9uc2USSgoHQ29udHJvbBIjLmNvbXBhc3MudjEuQ29udHJvbFN1YnNjcmliZVJlcXVlc3QaGC5jb21wYXNzLnYxLkFnZW50Q29udHJvbDABEkIKBUZvcmdlEhwuY29tcGFzcy52MS5Gb3JnZUNhbGxSZXF1ZXN0GhsuY29tcGFzcy52MS5Gb3JnZUNhbGxSZXN1bHQSQgoFQm9hcmQSHC5jb21wYXNzLnYxLkJvYXJkQ2FsbFJlcXVlc3QaGy5jb21wYXNzLnYxLkJvYXJkQ2FsbFJlc3VsdGIGcHJvdG8z", [file_compass_v1_comms, file_compass_v1_agent, file_compass_v1_compass, file_compass_v1_forge]); + fileDesc("Ch5jb21wYXNzL3YxL2FnZW50X2dhdGV3YXkucHJvdG8SCmNvbXBhc3MudjEiuwQKEENvbW1zQ2FsbFJlcXVlc3QSDwoHY2FsbF9pZBgBIAEoCRIuCgRwb3N0GAIgASgLMh4uY29tcGFzcy52MS5Qb3N0TWVzc2FnZVJlcXVlc3RIABIvCgRsaXN0GAMgASgLMh8uY29tcGFzcy52MS5MaXN0TWVzc2FnZXNSZXF1ZXN0SAASLgoGcm9zdGVyGAQgASgLMhwuY29tcGFzcy52MS5HZXRSb3N0ZXJSZXF1ZXN0SAASNwoKc2V0X3N0YXR1cxgFIAEoCzIhLmNvbXBhc3MudjEuU2V0QWdlbnRTdGF0dXNSZXF1ZXN0SAASMwoDcGluGAYgASgLMiQuY29tcGFzcy52MS5VcGRhdGVQaW5uZWRCb2FyZFJlcXVlc3RIABI6Cg5jcmVhdGVfY2hhbm5lbBgHIAEoCzIgLmNvbXBhc3MudjEuQ3JlYXRlQ2hhbm5lbFJlcXVlc3RIABJBCg51cGRhdGVfbWVtYmVycxgIIAEoCzInLmNvbXBhc3MudjEuVXBkYXRlQ2hhbm5lbE1lbWJlcnNSZXF1ZXN0SAASRQoUY3JlYXRlX2NoYW5uZWxfZ3JvdXAYCSABKAsyJS5jb21wYXNzLnYxLkNyZWF0ZUNoYW5uZWxHcm91cFJlcXVlc3RIABIsCgdvcGVuX2RtGAsgASgLMhkuY29tcGFzcy52MS5PcGVuRE1SZXF1ZXN0SAASGwoTdHJpZ2dlcl90cmFjZXBhcmVudBgKIAEoCUIGCgRjYWxsItUECg9Db21tc0NhbGxSZXN1bHQSDwoHY2FsbF9pZBgBIAEoCRIvCgRwb3N0GAIgASgLMh8uY29tcGFzcy52MS5Qb3N0TWVzc2FnZVJlc3BvbnNlSAASMAoEbGlzdBgDIAEoCzIgLmNvbXBhc3MudjEuTGlzdE1lc3NhZ2VzUmVzcG9uc2VIABIrCgVlcnJvchgEIAEoCzIaLmNvbXBhc3MudjEuQ29tbXNDYWxsRXJyb3JIABIvCgZyb3N0ZXIYBSABKAsyHS5jb21wYXNzLnYxLkdldFJvc3RlclJlc3BvbnNlSAASOAoKc2V0X3N0YXR1cxgGIAEoCzIiLmNvbXBhc3MudjEuU2V0QWdlbnRTdGF0dXNSZXNwb25zZUgAEjQKA3BpbhgHIAEoCzIlLmNvbXBhc3MudjEuVXBkYXRlUGlubmVkQm9hcmRSZXNwb25zZUgAEjsKDmNyZWF0ZV9jaGFubmVsGAggASgLMiEuY29tcGFzcy52MS5DcmVhdGVDaGFubmVsUmVzcG9uc2VIABJCCg51cGRhdGVfbWVtYmVycxgJIAEoCzIoLmNvbXBhc3MudjEuVXBkYXRlQ2hhbm5lbE1lbWJlcnNSZXNwb25zZUgAEkYKFGNyZWF0ZV9jaGFubmVsX2dyb3VwGAogASgLMiYuY29tcGFzcy52MS5DcmVhdGVDaGFubmVsR3JvdXBSZXNwb25zZUgAEi0KB29wZW5fZG0YCyABKAsyGi5jb21wYXNzLnYxLk9wZW5ETVJlc3BvbnNlSABCCAoGcmVzdWx0Ii8KDkNvbW1zQ2FsbEVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCSIpChVTZXRBZ2VudFN0YXR1c1JlcXVlc3QSEAoIYWN0aXZpdHkYASABKAkiGAoWU2V0QWdlbnRTdGF0dXNSZXNwb25zZSKRAQoUTGlmZWN5Y2xlQ2FsbFJlcXVlc3QSDwoHY2FsbF9pZBgBIAEoCRItCgVzcGF3bhgCIAEoCzIcLmNvbXBhc3MudjEuU3Bhd25QZWVyUmVxdWVzdEgAEjEKB2Rlc3Bhd24YAyABKAsyHi5jb21wYXNzLnYxLkRlc3Bhd25QZWVyUmVxdWVzdEgAQgYKBGNhbGwiiAEKEFNwYXduUGVlclJlcXVlc3QSDgoGaGFuZGxlGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIZChFjbGllbnRfcmVxdWVzdF9pZBgEIAEoCRIMCgRyb2xlGAUgASgJEg8KB3BlcnNvbmEYBiABKAlKBAgDEARSDmluaXRpYWxfcHJvbXB0InIKEVNwYXduUGVlclJlc3BvbnNlEhgKEGFnZW50X2FjY291bnRfaWQYASABKAkSFgoOY29udGFpbmVyX25hbWUYAiABKAkSEgoKc2Vzc2lvbl9pZBgDIAEoCRIXCg9kbV9jaGFubmVsX25hbWUYBCABKAkiKgoSRGVzcGF3blBlZXJSZXF1ZXN0EhQKDGFnZW50X2hhbmRsZRgBIAEoCSIVChNEZXNwYXduUGVlclJlc3BvbnNlIsUBChNMaWZlY3ljbGVDYWxsUmVzdWx0Eg8KB2NhbGxfaWQYASABKAkSLgoFc3Bhd24YAiABKAsyHS5jb21wYXNzLnYxLlNwYXduUGVlclJlc3BvbnNlSAASMgoHZGVzcGF3bhgDIAEoCzIfLmNvbXBhc3MudjEuRGVzcGF3blBlZXJSZXNwb25zZUgAEi8KBWVycm9yGAQgASgLMh4uY29tcGFzcy52MS5MaWZlY3ljbGVDYWxsRXJyb3JIAEIICgZyZXN1bHQiMwoSTGlmZWN5Y2xlQ2FsbEVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCSLrBgoQRm9yZ2VDYWxsUmVxdWVzdBIPCgdjYWxsX2lkGAEgASgJEjYKDGNyZWF0ZV9pc3N1ZRgCIAEoCzIeLmNvbXBhc3MudjEuQ3JlYXRlSXNzdWVSZXF1ZXN0SAASPQoQY29tbWVudF9vbl9pc3N1ZRgDIAEoCzIhLmNvbXBhc3MudjEuQ29tbWVudE9uSXNzdWVSZXF1ZXN0SAASMAoJZ2V0X2lzc3VlGAQgASgLMhsuY29tcGFzcy52MS5HZXRJc3N1ZVJlcXVlc3RIABI0CgtsaXN0X2lzc3VlcxgFIAEoCzIdLmNvbXBhc3MudjEuTGlzdElzc3Vlc1JlcXVlc3RIABJDChNjcmVhdGVfcHVsbF9yZXF1ZXN0GAYgASgLMiQuY29tcGFzcy52MS5DcmVhdGVQdWxsUmVxdWVzdFJlcXVlc3RIABJKChdjb21tZW50X29uX3B1bGxfcmVxdWVzdBgHIAEoCzInLmNvbXBhc3MudjEuQ29tbWVudE9uUHVsbFJlcXVlc3RSZXF1ZXN0SAASPQoQZ2V0X3B1bGxfcmVxdWVzdBgIIAEoCzIhLmNvbXBhc3MudjEuR2V0UHVsbFJlcXVlc3RSZXF1ZXN0SAASNgoJc3Vic2NyaWJlGAkgASgLMiEuY29tcGFzcy52MS5TdWJzY3JpYmVGb3JnZVJlcXVlc3RIABI6Cgt1bnN1YnNjcmliZRgKIAEoCzIjLmNvbXBhc3MudjEuVW5zdWJzY3JpYmVGb3JnZVJlcXVlc3RIABI4Cg1zdWJtaXRfcmV2aWV3GAsgASgLMh8uY29tcGFzcy52MS5TdWJtaXRSZXZpZXdSZXF1ZXN0SAASSQoWdHJhbnNpdGlvbl9pc3N1ZV9zdGF0ZRgOIAEoCzInLmNvbXBhc3MudjEuVHJhbnNpdGlvbklzc3VlU3RhdGVSZXF1ZXN0SAASVgoddHJhbnNpdGlvbl9wdWxsX3JlcXVlc3Rfc3RhdGUYDyABKAsyLS5jb21wYXNzLnYxLlRyYW5zaXRpb25QdWxsUmVxdWVzdFN0YXRlUmVxdWVzdEgAEiMKBWZvcmdlGAwgASgLMhQuY29tcGFzcy52MS5Gb3JnZVJlZhIZChFjbGllbnRfcmVxdWVzdF9pZBgNIAEoCUIGCgRjYWxsIuADCg9Gb3JnZUNhbGxSZXN1bHQSDwoHY2FsbF9pZBgBIAEoCRIiCgVpc3N1ZRgCIAEoCzIRLmNvbXBhc3MudjEuSXNzdWVIABIvCg1pc3N1ZV9jb21tZW50GAMgASgLMhYuY29tcGFzcy52MS5Db21tZW50UmVmSAASMAoGaXNzdWVzGAQgASgLMh4uY29tcGFzcy52MS5MaXN0SXNzdWVzUmVzcG9uc2VIABIvCgxwdWxsX3JlcXVlc3QYBSABKAsyFy5jb21wYXNzLnYxLlB1bGxSZXF1ZXN0SAASLAoKcHJfY29tbWVudBgGIAEoCzIWLmNvbXBhc3MudjEuQ29tbWVudFJlZkgAEjgKCnN1YnNjcmliZWQYByABKAsyIi5jb21wYXNzLnYxLlN1YnNjcmliZUZvcmdlUmVzcG9uc2VIABI8Cgx1bnN1YnNjcmliZWQYCCABKAsyJC5jb21wYXNzLnYxLlVuc3Vic2NyaWJlRm9yZ2VSZXNwb25zZUgAEisKBWVycm9yGAkgASgLMhouY29tcGFzcy52MS5Gb3JnZUNhbGxFcnJvckgAEicKBnJldmlldxgKIAEoCzIVLmNvbXBhc3MudjEuUmV2aWV3UmVmSABCCAoGcmVzdWx0IkcKDkZvcmdlQ2FsbEVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIWCg5yZXRyeV9hZnRlcl9tcxgDIAEoDSJPChJDcmVhdGVJc3N1ZVJlcXVlc3QSDAoEcmVwbxgBIAEoCRINCgV0aXRsZRgCIAEoCRIMCgRib2R5GAMgASgJEg4KBmxhYmVscxgEIAMoCSJJChVDb21tZW50T25Jc3N1ZVJlcXVlc3QSDAoEcmVwbxgBIAEoCRIUCgxpc3N1ZV9udW1iZXIYAiABKAQSDAoEYm9keRgDIAEoCSI1Cg9HZXRJc3N1ZVJlcXVlc3QSDAoEcmVwbxgBIAEoCRIUCgxpc3N1ZV9udW1iZXIYAiABKAQiTwoRTGlzdElzc3Vlc1JlcXVlc3QSDAoEcmVwbxgBIAEoCRINCgVzdGF0ZRgCIAEoCRIOCgZsYWJlbHMYAyADKAkSDQoFbGltaXQYBCABKA0iNwoSTGlzdElzc3Vlc1Jlc3BvbnNlEiEKBmlzc3VlcxgBIAMoCzIRLmNvbXBhc3MudjEuSXNzdWUieAoYQ3JlYXRlUHVsbFJlcXVlc3RSZXF1ZXN0EgwKBHJlcG8YASABKAkSDQoFdGl0bGUYAiABKAkSDAoEYm9keRgDIAEoCRIQCghoZWFkX3JlZhgEIAEoCRIQCghiYXNlX3JlZhgFIAEoCRINCgVkcmFmdBgGIAEoCCJMChtDb21tZW50T25QdWxsUmVxdWVzdFJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCglwcl9udW1iZXIYAiABKAQSDAoEYm9keRgDIAEoCSI4ChVHZXRQdWxsUmVxdWVzdFJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCglwcl9udW1iZXIYAiABKAQihwEKE1N1Ym1pdFJldmlld1JlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCglwcl9udW1iZXIYAiABKAQSDwoHdmVyZGljdBgDIAEoCRIMCgRib2R5GAQgASgJEjAKCGNvbW1lbnRzGAUgAygLMh4uY29tcGFzcy52MS5SZXZpZXdDb21tZW50SW5wdXQiTAoSUmV2aWV3Q29tbWVudElucHV0EgwKBHBhdGgYASABKAkSDAoEbGluZRgCIAEoDRIMCgRzaWRlGAMgASgJEgwKBGJvZHkYBCABKAkifgobVHJhbnNpdGlvbklzc3VlU3RhdGVSZXF1ZXN0EgwKBHJlcG8YASABKAkSFAoMaXNzdWVfbnVtYmVyGAIgASgEEg0KBXN0YXRlGAMgASgJEhQKDGNsb3NlX3JlYXNvbhgEIAEoCRIWCg53b3JrZmxvd19zdGF0ZRgFIAEoCSJTCiFUcmFuc2l0aW9uUHVsbFJlcXVlc3RTdGF0ZVJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCglwcl9udW1iZXIYAiABKAQSDQoFc3RhdGUYAyABKAkipgEKFVN1YnNjcmliZUZvcmdlUmVxdWVzdBIMCgRyZXBvGAEgASgJEisKBGtpbmQYAiABKA4yHS5jb21wYXNzLnYxLkZvcmdlQXJ0aWZhY3RLaW5kEg4KBm51bWJlchgDIAEoBBIxCgVzY29wZRgEIAEoDjIiLmNvbXBhc3MudjEuRm9yZ2VTdWJzY3JpcHRpb25TY29wZRIPCgdwcm9qZWN0GAUgASgJIjEKFlN1YnNjcmliZUZvcmdlUmVzcG9uc2USFwoPc3Vic2NyaXB0aW9uX2lkGAEgASgJIjIKF1Vuc3Vic2NyaWJlRm9yZ2VSZXF1ZXN0EhcKD3N1YnNjcmlwdGlvbl9pZBgBIAEoCSIaChhVbnN1YnNjcmliZUZvcmdlUmVzcG9uc2UiaAoQQm9hcmRDYWxsUmVxdWVzdBIPCgdjYWxsX2lkGAEgASgJEjsKD3NldF9pc3N1ZV9zdGF0ZRgCIAEoCzIgLmNvbXBhc3MudjEuU2V0SXNzdWVTdGF0ZVJlcXVlc3RIAEIGCgRjYWxsIk8KFFNldElzc3VlU3RhdGVSZXF1ZXN0EhAKCGlzc3VlX2lkGAEgASgJEiUKBXN0YXRlGAIgASgOMhYuY29tcGFzcy52MS5Jc3N1ZVN0YXRlIjkKFVNldElzc3VlU3RhdGVSZXNwb25zZRIgCgVpc3N1ZRgBIAEoCzIRLmNvbXBhc3MudjEuSXNzdWUilwEKD0JvYXJkQ2FsbFJlc3VsdBIPCgdjYWxsX2lkGAEgASgJEjwKD3NldF9pc3N1ZV9zdGF0ZRgCIAEoCzIhLmNvbXBhc3MudjEuU2V0SXNzdWVTdGF0ZVJlc3BvbnNlSAASKwoFZXJyb3IYAyABKAsyGi5jb21wYXNzLnYxLkJvYXJkQ2FsbEVycm9ySABCCAoGcmVzdWx0Ii8KDkJvYXJkQ2FsbEVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCSI8ChNQdWJsaXNoRnJhbWVSZXF1ZXN0EiUKBWZyYW1lGAEgASgLMhYuY29tcGFzcy52MS5BZ2VudEZyYW1lIhYKFFB1Ymxpc2hGcmFtZVJlc3BvbnNlIl4KHFBvc3RDb252ZXJzYXRpb25GcmFtZVJlcXVlc3QSJQoFZnJhbWUYASABKAsyFi5jb21wYXNzLnYxLkFnZW50RnJhbWUSFwoPaWRlbXBvdGVuY3lfa2V5GAIgASgJIh8KHVBvc3RDb252ZXJzYXRpb25GcmFtZVJlc3BvbnNlIhkKF0NvbnRyb2xTdWJzY3JpYmVSZXF1ZXN0KpEBChZGb3JnZVN1YnNjcmlwdGlvblNjb3BlEigKJEZPUkdFX1NVQlNDUklQVElPTl9TQ09QRV9VTlNQRUNJRklFRBAAEiUKIUZPUkdFX1NVQlNDUklQVElPTl9TQ09QRV9BUlRJRkFDVBABEiYKIkZPUkdFX1NVQlNDUklQVElPTl9TQ09QRV9DT05UQUlORVIQAjK0BAoMQWdlbnRHYXRld2F5EkIKBUNvbW1zEhwuY29tcGFzcy52MS5Db21tc0NhbGxSZXF1ZXN0GhsuY29tcGFzcy52MS5Db21tc0NhbGxSZXN1bHQSTgoJTGlmZWN5Y2xlEiAuY29tcGFzcy52MS5MaWZlY3ljbGVDYWxsUmVxdWVzdBofLmNvbXBhc3MudjEuTGlmZWN5Y2xlQ2FsbFJlc3VsdBJOCgdQdWJsaXNoEh8uY29tcGFzcy52MS5QdWJsaXNoRnJhbWVSZXF1ZXN0GiAuY29tcGFzcy52MS5QdWJsaXNoRnJhbWVSZXNwb25zZSgBEmwKFVBvc3RDb252ZXJzYXRpb25GcmFtZRIoLmNvbXBhc3MudjEuUG9zdENvbnZlcnNhdGlvbkZyYW1lUmVxdWVzdBopLmNvbXBhc3MudjEuUG9zdENvbnZlcnNhdGlvbkZyYW1lUmVzcG9uc2USSgoHQ29udHJvbBIjLmNvbXBhc3MudjEuQ29udHJvbFN1YnNjcmliZVJlcXVlc3QaGC5jb21wYXNzLnYxLkFnZW50Q29udHJvbDABEkIKBUZvcmdlEhwuY29tcGFzcy52MS5Gb3JnZUNhbGxSZXF1ZXN0GhsuY29tcGFzcy52MS5Gb3JnZUNhbGxSZXN1bHQSQgoFQm9hcmQSHC5jb21wYXNzLnYxLkJvYXJkQ2FsbFJlcXVlc3QaGy5jb21wYXNzLnYxLkJvYXJkQ2FsbFJlc3VsdGIGcHJvdG8z", [file_compass_v1_comms, file_compass_v1_agent, file_compass_v1_compass, file_compass_v1_forge]); /** * One agent-initiated comms call. `call_id` is the agent-minted correlation id @@ -999,9 +999,9 @@ export type CommentOnPullRequestRequest = Message<"compass.v1.CommentOnPullReque repo: string; /** - * @generated from field: uint64 pull_number = 2; + * @generated from field: uint64 pr_number = 2; */ - pullNumber: bigint; + prNumber: bigint; /** * WITHOUT the owner header @@ -1028,9 +1028,9 @@ export type GetPullRequestRequest = Message<"compass.v1.GetPullRequestRequest"> repo: string; /** - * @generated from field: uint64 pull_number = 2; + * @generated from field: uint64 pr_number = 2; */ - pullNumber: bigint; + prNumber: bigint; }; /** @@ -1052,9 +1052,9 @@ export type SubmitReviewRequest = Message<"compass.v1.SubmitReviewRequest"> & { repo: string; /** - * @generated from field: uint64 pull_number = 2; + * @generated from field: uint64 pr_number = 2; */ - pullNumber: bigint; + prNumber: bigint; /** * "approve" | "request_changes" | "comment" diff --git a/proto/compass/v1/agent_gateway.proto b/proto/compass/v1/agent_gateway.proto index 211a358e..db46e13e 100644 --- a/proto/compass/v1/agent_gateway.proto +++ b/proto/compass/v1/agent_gateway.proto @@ -349,16 +349,16 @@ message CreatePullRequestRequest { } message CommentOnPullRequestRequest { string repo = 1; - uint64 pull_number = 2; + uint64 pr_number = 2; string body = 3; // WITHOUT the owner header } message GetPullRequestRequest { string repo = 1; - uint64 pull_number = 2; + uint64 pr_number = 2; } message SubmitReviewRequest { string repo = 1; // REQUIRED; empty is invalid_argument - uint64 pull_number = 2; + uint64 pr_number = 2; string verdict = 3; // "approve" | "request_changes" | "comment" string body = 4; // WITHOUT the owner header; the Server stamps it repeated ReviewCommentInput comments = 5; // inline comments; may be empty