From daedcc8faeea1ea2eb1234bb9b1031b83ab994f2 Mon Sep 17 00:00:00 2001 From: ghost <49853598+JSONbored@users.noreply.github.com> Date: Sun, 14 Jun 2026 10:57:15 -0700 Subject: [PATCH] fix(api): allow session PR text lint --- src/api/routes.ts | 2 ++ test/integration/api.test.ts | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/api/routes.ts b/src/api/routes.ts index c505898468..566744649c 100644 --- a/src/api/routes.ts +++ b/src/api/routes.ts @@ -3957,6 +3957,7 @@ function contributorEvidenceFromProfile(profile: { const EXTENSION_PULL_CONTEXT_PATH = "/v1/extension/pull-context"; const EXTENSION_PULL_CONTEXT_SCOPE = "extension:pull_context"; +const LINT_PR_TEXT_PATH = "/v1/lint/pr-text"; type ProtectedRouteContext = { env: Env; @@ -3996,6 +3997,7 @@ function canSessionAccessPath(env: Env, identity: Extract { expect(lintPrTextBody).toMatchObject({ verdict: "weak", fixes: expect.any(Array) }); expect(JSON.stringify(lintPrTextBody)).not.toMatch(/hotkey|coldkey|wallet|payout|reward/i); + const { token: lintSessionToken } = await createSessionForGitHubUser(env, { login: "ordinary-mcp-user", id: 4242 }); + const sessionLintPrText = await app.request( + "/v1/lint/pr-text", + { + method: "POST", + headers: { authorization: `Bearer ${lintSessionToken}`, "content-type": "application/json" }, + body: JSON.stringify({ commitMessages: ["fix: handle cache reconnect"], prBody: "Fixes #7\n\nValidated with npm test." }), + }, + env, + ); + expect(sessionLintPrText.status).toBe(200); + await expect(sessionLintPrText.json()).resolves.toMatchObject({ verdict: expect.stringMatching(/strong|adequate|weak/) }); + const invalidLintPrText = await app.request("/v1/lint/pr-text", { method: "POST", headers: apiHeaders(env), body: JSON.stringify({ linkedIssue: -1 }) }, env); expect(invalidLintPrText.status).toBe(400);