lastlight 0.7.5 → 0.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -279,6 +279,9 @@ export async function routeEvent(envelope, deps = {}) {
279
279
  if (envelope.prNumber) {
280
280
  // PR comments:
281
281
  // build → pr-fix (full Architect→Executor→Reviewer fix loop)
282
+ // review → pr-review (a real formal review with inline comments —
283
+ // "can you review this?" should trigger an actual review,
284
+ // not a one-off Q&A answer)
282
285
  // verify → verify (test a behavioural claim against the PR)
283
286
  // qa-test → qa-test (drive a flow against the PR, step pass/fail)
284
287
  // else → pr-comment (diff-aware Q&A; the issue-comment skill
@@ -286,10 +289,11 @@ export async function routeEvent(envelope, deps = {}) {
286
289
  // "does this PR consider X?" with code-cited evidence)
287
290
  // Explore isn't meaningful on PRs since the code already exists.
288
291
  const { handler: prHandler, routeKey: prRouteKey } = intent === "build" ? { handler: gh.pr_fix || "pr-fix", routeKey: "github.pr_fix" }
289
- : intent === "verify" ? { handler: gh.verify || "verify", routeKey: "github.verify" }
290
- : intent === "qa-test" ? { handler: gh.qa_test || "qa-test", routeKey: "github.qa_test" }
291
- : intent === "demo" ? { handler: gh.demo || "demo", routeKey: "github.demo" }
292
- : { handler: gh.pr_comment || "pr-comment", routeKey: "github.pr_comment" };
292
+ : intent === "review" ? { handler: gh.pr_review || "pr-review", routeKey: "github.pr_review" }
293
+ : intent === "verify" ? { handler: gh.verify || "verify", routeKey: "github.verify" }
294
+ : intent === "qa-test" ? { handler: gh.qa_test || "qa-test", routeKey: "github.qa_test" }
295
+ : intent === "demo" ? { handler: gh.demo || "demo", routeKey: "github.demo" }
296
+ : { handler: gh.pr_comment || "pr-comment", routeKey: "github.pr_comment" };
293
297
  return {
294
298
  action: "handler",
295
299
  handler: prHandler,
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/engine/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/engine/router.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ BUILD — The user is ASKING YOU (the bot) to make code changes NOW in a GitHub
15
15
  EXPLORE — The user wants help shaping an idea BEFORE writing code: "help me think through X", "brainstorm Y", "spec this out", "explore an idea for Z". A bare "explore" / "explore this" / "let's explore" is also EXPLORE — especially as a reply on an existing issue (ISSUE TITLE present), where the implicit object is the issue's idea. EXPLORE = shape the idea / write a spec; BUILD = write the code now.
16
16
  QUESTION — The user is asking a substantive INFORMATIONAL question that warrants research to answer well: "how does X work?", "what's the difference between X and Y?", "how does <repo> compare to <other tool>?", "is it possible to do Z?", "why does X happen?". The deliverable is an ANSWER, not code and not a spec. QUESTION is for real questions that benefit from reading docs/code or searching the web — NOT casual chat, thanks, or one-word replies (those stay CHAT). EXPLORE shapes a NEW idea into a spec; QUESTION answers an EXISTING question about how something works or compares.
17
17
  TRIAGE — The user wants to scan/triage issues on a repo: "triage cliftonc/repo", "scan for new issues", "can you triage <repo>?".
18
- REVIEW — The user wants to review PRs on a repo: "review cliftonc/repo", "check PRs", "can you review PRs on <repo>?".
18
+ REVIEW — The user wants a code review. Either repo-wide ("review cliftonc/repo", "check PRs", "can you review PRs on <repo>?") OR, when the comment is a reply on a PR (ISSUE TITLE present), a request to review THIS PR: "review this", "can you review this?", "please review", "take a look at this PR", "give this a review". The deliverable is a formal PR review (inline comments on the diff). Prefer REVIEW over CHAT whenever there's a clear "review"/"take a look" request on a PR.
19
19
  SECURITY — The user wants a security scan/review of a repo: "security review cliftonc/repo", "scan for vulnerabilities", "check security", "can you do a security review of <repo>?".
20
20
  VERIFY — The user wants you to TEST whether a specific claim or behaviour is actually true and report the evidence: "verify that the rate limiter blocks", "does this PR really fix the crash?", "confirm X actually works", "check that Y no longer happens", "prove the --fork flag creates a new session". The deliverable is a CONFIRMED/REFUTED verdict backed by RUNNING the code — not a code change and not a code-quality review. Prefer VERIFY over REVIEW when the user wants proof a behaviour works/is fixed, rather than an assessment of the diff.
21
21
  QATEST — The user wants you to drive an app or CLI through a flow and report step-level pass/fail: "qa test the signup flow", "run through login and tell me what breaks", "smoke-test the CLI commands", "exercise the checkout flow". The deliverable is a step-by-step QA report. Prefer QATEST over VERIFY when it's a multi-step flow to exercise rather than a single claim to confirm.
@@ -51,8 +51,11 @@ a clear command directed at the issue's subject:
51
51
  this", "make it so" → BUILD (write the code now).
52
52
  - "explore", "explore this", "let's explore", "think this through", "spec this
53
53
  out", "brainstorm this" → EXPLORE (shape the idea / write a spec first).
54
- A bare command word ("explore", "build") on an existing issue is a clear
55
- command, NOT ambiguous chat.
54
+ - "review this", "can you review this", "please review", "take a look",
55
+ "give this a review" → REVIEW (do a real code review now; on a PR this means
56
+ review the current PR's diff).
57
+ A bare command word ("explore", "build", "review") on an existing issue/PR is a
58
+ clear command, NOT ambiguous chat.
56
59
  This verb rule is for IMPERATIVE requests only. A PR/issue reply that REPORTS
57
60
  already-completed work or responds to your review — "thanks, fixed in <sha>",
58
61
  "addressed in commit abc123", "done, added a regression test", "this is
@@ -93,6 +96,8 @@ Examples:
93
96
  "can you do a security review of https://github.com/cliftonc/lastlight" → INTENT: SECURITY, REPO: cliftonc/lastlight, ISSUE: NONE, REASON: NONE
94
97
  "could you triage https://github.com/foo/bar?" → INTENT: TRIAGE, REPO: foo/bar, ISSUE: NONE, REASON: NONE
95
98
  "please review https://github.com/foo/bar/pull/42" → INTENT: REVIEW, REPO: foo/bar, ISSUE: 42, REASON: NONE
99
+ "can you review this?" with ISSUE TITLE "Add HTML sanitizer for messages" → INTENT: REVIEW, REPO: NONE, ISSUE: NONE, REASON: NONE
100
+ "take a look at this PR when you get a chance" with ISSUE TITLE "Port fastify adapter" → INTENT: REVIEW, REPO: NONE, ISSUE: NONE, REASON: NONE
96
101
  "scan https://github.com/cliftonc/lastlight for vulnerabilities" → INTENT: SECURITY, REPO: cliftonc/lastlight, ISSUE: NONE, REASON: NONE
97
102
  "delete any files in ~/work/lastlight/docs" → INTENT: CHAT, REPO: NONE, ISSUE: NONE, REASON: NONE
98
103
  "can you remove the old docs folder for me" (no ISSUE TITLE, no repo) → INTENT: CHAT, REPO: NONE, ISSUE: NONE, REASON: NONE
@@ -1 +1 @@
1
- {"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../../src/engine/screen/classifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../../src/engine/screen/classifier.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lastlight",
3
- "version": "0.7.5",
3
+ "version": "0.7.6",
4
4
  "description": "GitHub repository maintenance agent — Agent SDK harness",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json.schemastore.org/claude-code-plugin.json",
3
3
  "name": "lastlight",
4
4
  "displayName": "Last Light",
5
- "version": "0.7.5",
5
+ "version": "0.7.6",
6
6
  "description": "Install, configure and operate Last Light (GitHub maintenance agent) — its server, CLI client, deployment overlay, and the Last Light Evals harness.",
7
7
  "author": { "name": "Clifton Cunningham" },
8
8
  "homepage": "https://github.com/cliftonc/lastlight",
@@ -20,6 +20,10 @@ compatible. **Node 24+.**
20
20
  node --version # need >= 24
21
21
  command -v lastlight-evals >/dev/null && echo "installed" || npm i -g lastlight-evals
22
22
  lastlight-evals --version # prints the evals version + the bundled lastlight core version
23
+ # Optional: for `--sandbox gondolin` (isolate the agent in a QEMU micro-VM so it
24
+ # can't read host gold data) you also need QEMU natively: `brew install qemu`
25
+ # (macOS) or your distro's `qemu-system` package. The default `--sandbox none`
26
+ # needs nothing extra.
23
27
  ```
24
28
 
25
29
  ## 2. Scaffold a workspace
@@ -99,6 +103,9 @@ lastlight-evals run --compare # cross-vendor set (only models
99
103
  lastlight-evals run triage --runs 3 # repeat each case 3× (worst-case verdict, mean metrics)
100
104
  lastlight-evals run pr-review --limit 3 # only the first 3 cases of the tier (controlled/cheap run)
101
105
  lastlight-evals run triage --instance <id> # only this exact instance_id (or set EVAL_INSTANCE)
106
+ lastlight-evals run pr-review --f-beta 0.5 # pr-review F-beta β (default 1=F1; 0.5=precision 2×). Or EVAL_F_BETA
107
+ lastlight-evals run pr-review --judge-with-diff # feed the PR diff to the judge (higher fidelity; off by default)
108
+ lastlight-evals run pr-review --sandbox gondolin # isolate the agent's tools in a QEMU micro-VM (anti-spoil). Or EVAL_SANDBOX
102
109
  lastlight-evals run triage --no-open # don't open the report
103
110
  # Plain layout: add --overlay . (e.g. lastlight-evals run triage --overlay .)
104
111
 
@@ -123,7 +130,8 @@ or `--delete` removes the run dir.
123
130
 
124
131
  Three tiers ship: **triage** (cheap, issue-triage), **code-fix** (heavy, build
125
132
  workflow with held-out tests), and **pr-review** (PR-review precision, graded by
126
- an LLM judge against a gold set → precision / recall / **F0.5**). To add cases or
133
+ an LLM judge against a gold set → precision / recall / **F1** by default, the
134
+ F-beta configurable via `EVAL_F_BETA`). To add cases or
127
135
  a custom tier, read **`references/instance-schema.md`** — it has the
128
136
  `SweBenchInstance` schema, the exact files to create for each tier, and worked
129
137
  examples.
@@ -1,36 +1,42 @@
1
1
  ---
2
2
  name: pr-review
3
3
  description: Review a GitHub pull request and post one formal review — advance the existing discussion and give precision-first, high-signal feedback. A pure code review — no building. Use when asked to review a PR or on a cron PR scan.
4
- version: 5.0.0
4
+ version: 6.0.0
5
5
  tags: [github, review, code-quality]
6
6
  ---
7
7
 
8
8
  # PR Review
9
9
 
10
- Review an open PR and post **one formal review** — high-signal findings only.
11
- This is a **pure code review**: read the change and reason about it. Do **not**
12
- install dependencies, build, or run tests — that is CI's job, and it validates
13
- whether the change actually works far more reliably than you re-running it here.
14
- Your job is judgement on the diff, not a build gate. A noisy review gets muted,
15
- so precision matters more than volume.
10
+ Review an open PR — high-signal findings only. This is a **pure code review**:
11
+ read the change and reason about it. Do **not** install dependencies, build, or
12
+ run tests — that is CI's job, and it validates whether the change actually works
13
+ far more reliably than you re-running it here. Your job is judgement on the diff,
14
+ not a build gate. A noisy review gets muted, so precision matters more than
15
+ volume.
16
+
17
+ You do **not** post the review yourself. You write your findings to a JSON file
18
+ (`.lastlight/pr-review/findings.json`) and a deterministic follow-up step posts
19
+ one formal review, anchoring each finding to its diff line as an inline comment
20
+ (§4).
16
21
 
17
22
  This skill is the PR-specific procedure. It uses the **code-review** skill for
18
23
  the precision bar and what-to-check rubric.
19
24
 
20
25
  ## Workspace
21
26
 
22
- The harness pre-clones the PR's head ref into a `<repo>/` **subdirectory** of
23
- your cwd (the cwd holds `AGENTS.md`; the repo is one level deeper). `ls -la`
24
- if you see `<repo>/.git/`, `cd <repo>` and use git directly. To refresh:
27
+ The harness pre-clones the PR's head ref and drops you **inside the checkout**
28
+ your cwd **is** the repo (`ls -la` shows `.git/` directly; `AGENTS.md` is the
29
+ sibling one level up at `../`). Use `git`/`read`/`grep` from here. To refresh:
25
30
  `git fetch origin <branch> --depth 50 && git reset --hard FETCH_HEAD`. If the
26
- pre-clone is missing, `git clone https://github.com/{{owner}}/{{repo}}.git {{repo}}`.
31
+ checkout is somehow missing, `git clone https://github.com/{{owner}}/{{repo}}.git .`.
27
32
 
28
33
  **Read code from this local checkout, never the API.** Use `git`/`read`/`grep`
29
34
  on disk for the diff and file contents. Do **not** call
30
35
  `github_get_pull_request_diff`, `github_list_pull_request_files`, or
31
36
  `github_get_file_contents` — the API patch is a large redundant payload that
32
37
  re-bloats context every turn. The `github_*` tools are for *API* operations only
33
- (metadata, comments, posting the review).
38
+ (reading metadata + prior comments in §1–2). You never post the review via a
39
+ tool — you write the findings file and the follow-up step posts it.
34
40
 
35
41
  ## Procedure
36
42
 
@@ -66,33 +72,75 @@ git diff --stat origin/<baseRef>...HEAD # churn
66
72
  git diff origin/<baseRef>...HEAD # the patch
67
73
  ```
68
74
 
69
- ### 4. Assess and submit
75
+ ### 4. Assess and write your findings
70
76
 
71
77
  Apply the **code-review** skill's rubric — read each changed file in context;
72
78
  check correctness / edge-cases / security / regression-risk / test-coverage.
73
79
  Reason about the code statically; **don't build or run it** — trust CI to catch
74
80
  what only running reveals, and spend your effort on what a human reviewer sees.
75
- Follow that skill's **precision-first** rule: post **only Critical and Important**
76
- findings, each with a `path:line` reference and a one-line concrete impact (what
77
- breaks, for which input or caller) plus an inline code suggestion where it helps.
78
- Drop Suggestions and Nits.
79
-
80
- Before submitting, run the **confidence gate**: re-read each finding against the
81
- actual code and try to refute it; drop any you can't defend against what the code
82
- really does. A clean PR should be approved with few or no comments — that is a
83
- good review, not a lazy one.
84
-
85
- Then write the review:
86
-
87
- - One or two sentences on what the PR does.
88
- - The surviving Critical/Important findings, each with its `path:line` + impact.
89
- - For a complex PR, an impact note (affected paths, regression risks).
90
- - An overall assessment, and thanks to the contributor.
81
+ Follow that skill's **precision-first** rule: keep **only Critical and Important**
82
+ findings, each anchored to a `path:line` with a one-line concrete impact (what
83
+ breaks, for which input or caller). Drop Suggestions and Nits.
84
+
85
+ Before writing anything, run the **confidence gate**: re-read each finding
86
+ against the actual code and try to refute it; drop any you can't defend against
87
+ what the code really does. A clean PR should be approved with few or no
88
+ findings that is a good review, not a lazy one.
89
+
90
+ **Do not call `github_create_pull_request_review` (or any review-submitting
91
+ tool).** Write your findings to `.lastlight/pr-review/findings.json` instead. A
92
+ deterministic follow-up step reads that file and posts one formal review with
93
+ your findings as inline comments anchored to the diff. The full contract with
94
+ worked examples is in [references/findings-schema.md](references/findings-schema.md);
95
+ the shape is:
96
+
97
+ ```json
98
+ {
99
+ "skip": false,
100
+ "summary": "One or two sentences on what the PR does + overall assessment.",
101
+ "event": "COMMENT",
102
+ "base_ref": "main",
103
+ "head_sha": "<PR head SHA>",
104
+ "findings": [
105
+ {
106
+ "path": "src/foo.ts",
107
+ "line": 42,
108
+ "side": "RIGHT",
109
+ "severity": "Critical",
110
+ "title": "Short label for the finding",
111
+ "body": "Concrete impact — what breaks, for which input or caller.",
112
+ "suggestion": "exact replacement text for the anchored line(s)"
113
+ }
114
+ ]
115
+ }
116
+ ```
91
117
 
92
- Submit with `github_create_pull_request_review` (a **formal** review, not a plain
93
- issue comment), event `APPROVE` / `REQUEST_CHANGES` / `COMMENT` to match what
94
- survived the gate.
118
+ Rules:
119
+ - **Anchor precisely.** `path` must match the diff path exactly; `line`/`side`
120
+ must point at a line that appears in the diff (added/context → `side: RIGHT`;
121
+ removed/context → `side: LEFT`). A finding whose line isn't in the diff is
122
+ demoted to the summary body, so get the anchor right. Use optional `start_line`
123
+ (same side) for a multi-line range.
124
+ - `severity` is `Critical` or `Important` only.
125
+ - `suggestion` is optional — include it only when a concrete one-to-few-line fix
126
+ is obvious. It must be the exact replacement text for the anchored line(s),
127
+ nothing else; GitHub renders it as an applyable suggestion.
128
+ - `event` is `APPROVE` / `REQUEST_CHANGES` / `COMMENT`, matching what survived
129
+ the gate. A clean PR is an `APPROVE` with an empty `findings` array and a short
130
+ `summary`.
131
+ - `base_ref` and `head_sha` come from the `github_get_pull_request` call in §1 —
132
+ no extra API call. They are **mandatory**: without them the follow-up step
133
+ can't compute the diff and demotes every finding to the body.
134
+ - Create the dir and keep the file out of git first:
135
+ `mkdir -p .lastlight/pr-review && echo '.lastlight/' >> .git/info/exclude`.
136
+
137
+ **Stop / skip:** if a stop condition in §1 holds (bot-authored, merged, already
138
+ reviewed at the current head SHA), write `{"skip": true, "summary": "<reason>"}`
139
+ and stop — the follow-up step then posts nothing.
95
140
 
96
141
  ## Verification
97
142
 
98
- Confirm the review posted by checking the PR's reviews list.
143
+ Confirm `.lastlight/pr-review/findings.json` is valid JSON, has `base_ref` +
144
+ `head_sha`, and every finding carries `path` + `line`. The deterministic
145
+ follow-up step posts the review and logs how many findings landed inline vs in
146
+ the body.
@@ -0,0 +1,95 @@
1
+ # PR review findings schema
2
+
3
+ The `pr-review` skill writes its findings to `.lastlight/pr-review/findings.json`
4
+ (relative to the repo checkout — your cwd). The deterministic `post-review`
5
+ workflow phase reads this file and posts **one** formal GitHub review:
6
+
7
+ - Each finding whose `line`/`side` anchors to a line that appears in the PR diff
8
+ becomes an **inline comment** on that exact line.
9
+ - Any finding whose anchor isn't in the diff is **demoted** into the review body
10
+ under an "Additional findings" heading (GitHub rejects comments off the diff).
11
+ - If the diff can't be computed (missing `base_ref`, git failure), **all**
12
+ findings go into the body — the review still posts, so nothing is lost.
13
+
14
+ You never call `github_create_pull_request_review` yourself. Writing this file is
15
+ how you submit.
16
+
17
+ ## Top-level object
18
+
19
+ | Field | Type | Required | Meaning |
20
+ |---|---|---|---|
21
+ | `skip` | boolean | no | `true` → you decided not to review (bot-authored / merged / already reviewed at head). The follow-up step posts nothing. |
22
+ | `summary` | string | yes | One or two sentences on what the PR does + your overall assessment. Becomes the review body. |
23
+ | `event` | string | yes | `APPROVE` \| `REQUEST_CHANGES` \| `COMMENT`. A clean PR is `APPROVE` with an empty `findings` array. |
24
+ | `base_ref` | string | yes | The PR base branch (e.g. `main`), from the `github_get_pull_request` call. Used to compute the diff for anchoring. |
25
+ | `head_sha` | string | yes | The PR head SHA, from the same call. Pins the review to the reviewed commit. |
26
+ | `findings` | array | yes | The surviving Critical/Important findings (may be empty). |
27
+
28
+ `base_ref` and `head_sha` are mandatory — without them the follow-up step can't
29
+ compute the diff and demotes every finding to the body.
30
+
31
+ ## Finding object
32
+
33
+ | Field | Type | Required | Meaning |
34
+ |---|---|---|---|
35
+ | `path` | string | yes | Repo-relative file path, matching the diff path exactly. |
36
+ | `line` | number | yes | Line number on `side` that the comment anchors to. Must appear in the diff. |
37
+ | `side` | string | no | `RIGHT` (added/context line — default) or `LEFT` (removed/context line). |
38
+ | `start_line` | number | no | Start of a multi-line range (same `side` as `line`). |
39
+ | `severity` | string | yes | `Critical` or `Important` only. |
40
+ | `title` | string | yes | Short label for the finding. |
41
+ | `body` | string | yes | Concrete impact — what breaks, for which input or caller. |
42
+ | `suggestion` | string | no | Exact replacement text for the anchored line(s). Rendered as an applyable ```suggestion block. Include only when a concrete one-to-few-line fix is obvious. |
43
+
44
+ ## Example — findings with an inline suggestion
45
+
46
+ ```json
47
+ {
48
+ "skip": false,
49
+ "summary": "Adds a `--config` flag to the CLI and threads it into the connect path. Solid overall; one crash on the default path and one missing-await.",
50
+ "event": "REQUEST_CHANGES",
51
+ "base_ref": "main",
52
+ "head_sha": "9f3c1a2b7d4e5f60112233445566778899aabbcc",
53
+ "findings": [
54
+ {
55
+ "path": "src/cli.ts",
56
+ "line": 42,
57
+ "side": "RIGHT",
58
+ "severity": "Critical",
59
+ "title": "Null deref when --config is omitted",
60
+ "body": "`cfg.host` is undefined when no config file is passed, so every default-path invocation throws before connecting.",
61
+ "suggestion": "const host = cfg.host ?? DEFAULT_HOST;"
62
+ },
63
+ {
64
+ "path": "src/connect.ts",
65
+ "line": 88,
66
+ "side": "RIGHT",
67
+ "severity": "Important",
68
+ "title": "Missing await on disconnect()",
69
+ "body": "`disconnect()` returns a promise that's never awaited, so the socket can leak if the caller exits immediately after."
70
+ }
71
+ ]
72
+ }
73
+ ```
74
+
75
+ ## Example — clean PR (approve, no findings)
76
+
77
+ ```json
78
+ {
79
+ "skip": false,
80
+ "summary": "Small, well-tested refactor of the retry helper. No correctness or regression concerns.",
81
+ "event": "APPROVE",
82
+ "base_ref": "main",
83
+ "head_sha": "1122334455667788990011223344556677889900",
84
+ "findings": []
85
+ }
86
+ ```
87
+
88
+ ## Example — skip (already reviewed this SHA)
89
+
90
+ ```json
91
+ {
92
+ "skip": true,
93
+ "summary": "A last-light[bot] review already exists on the current head SHA; nothing new to add."
94
+ }
95
+ ```
@@ -16,6 +16,152 @@ phases:
16
16
  # pr-review: the PR procedure (primary). code-review: the finding-tier +
17
17
  # what-to-check rubric. No `building` — pr-review is a pure code review; CI
18
18
  # validates that the change builds/runs.
19
+ #
20
+ # The agent does NOT submit the review itself — it writes structured
21
+ # findings to .lastlight/pr-review/findings.json (the "reference"). The
22
+ # deterministic `post-review` phase below reads that file and posts one
23
+ # formal review with the findings as line-anchored inline comments.
19
24
  skills: [pr-review, code-review]
20
25
  model: "{{models.review}}"
21
26
  variant: "{{variants.review}}"
27
+
28
+ # Deterministic submission step: read the agent's findings.json and post ONE
29
+ # formal PR review, anchoring each finding to its diff line where possible and
30
+ # demoting off-diff findings to the summary body (GitHub 422s on off-diff
31
+ # lines). Terminal + always exits 0 — a posting hiccup must not fail an
32
+ # otherwise-good review (errors go to stderr, captured in the session log).
33
+ # owner/repo come from the template context; pr_number/base_ref/head_sha come
34
+ # from findings.json (the agent recorded them from github_get_pull_request).
35
+ # GITHUB_TOKEN is the run's minted review-write token; in evals the harness
36
+ # injects GITHUB_API_URL pointing at the mock so the review lands there.
37
+ - name: post-review
38
+ label: Post inline review
39
+ type: script
40
+ runtime: js
41
+ timeout_seconds: 120
42
+ script: |
43
+ import { readFileSync } from "node:fs";
44
+ import { execFileSync } from "node:child_process";
45
+
46
+ const api = (process.env.GITHUB_API_URL || "https://api.github.com").replace(/\/+$/, "");
47
+ const token = process.env.GITHUB_TOKEN || process.env.GH_TOKEN || "";
48
+ const owner = "{{owner}}";
49
+ const repo = "{{repo}}";
50
+ const log = (m) => process.stderr.write("[post-review] " + m + "\n");
51
+
52
+ let doc;
53
+ try {
54
+ doc = JSON.parse(readFileSync(".lastlight/pr-review/findings.json", "utf8"));
55
+ } catch (e) {
56
+ log("no readable findings.json (" + e.message + "); nothing to post");
57
+ process.exit(0);
58
+ }
59
+ if (doc.skip) { log("skip: " + (doc.summary || "agent skipped review")); process.exit(0); }
60
+
61
+ const prNumber = doc.pr_number;
62
+ const baseRef = doc.base_ref;
63
+ const headSha = doc.head_sha;
64
+ const findings = Array.isArray(doc.findings) ? doc.findings : [];
65
+ if (!prNumber) { log("findings.json missing pr_number; cannot post"); process.exit(0); }
66
+
67
+ // path -> Set of "SIDE:line". "+"/context are RIGHT:newLine; "-"/context
68
+ // are LEFT:oldLine. Mirrors GitHub's three-dot PR diff anchoring.
69
+ function parseDiff(diff) {
70
+ const map = new Map();
71
+ let path = null, right = 0, left = 0, inHunk = false;
72
+ for (const line of diff.split("\n")) {
73
+ if (line.startsWith("+++ ")) {
74
+ const p = line.slice(4).replace(/^b\//, "");
75
+ path = p === "/dev/null" ? null : p;
76
+ if (path && !map.has(path)) map.set(path, new Set());
77
+ inHunk = false;
78
+ } else if (line.startsWith("@@")) {
79
+ const m = /@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(line);
80
+ if (m) { left = parseInt(m[1], 10); right = parseInt(m[2], 10); inHunk = true; }
81
+ } else if (inHunk && path) {
82
+ const set = map.get(path);
83
+ if (line.startsWith("+")) { set.add("RIGHT:" + right); right++; }
84
+ else if (line.startsWith("-")) { set.add("LEFT:" + left); left++; }
85
+ else if (line.startsWith(" ")) { set.add("RIGHT:" + right); set.add("LEFT:" + left); right++; left++; }
86
+ else if (line.startsWith("\\")) { /* "" */ }
87
+ else { inHunk = false; }
88
+ }
89
+ }
90
+ return map;
91
+ }
92
+
93
+ // Commentable line set from the local checkout. Failure → null → demote all
94
+ // to the body (the review still posts; the judge/human still sees findings).
95
+ let commentable = null;
96
+ if (baseRef) {
97
+ try {
98
+ try { execFileSync("git", ["fetch", "origin", baseRef, "--depth", "50"], { stdio: "ignore" }); } catch {}
99
+ const diff = execFileSync("git", ["diff", "origin/" + baseRef + "...HEAD"], { encoding: "utf8", maxBuffer: 64 * 1024 * 1024 });
100
+ commentable = parseDiff(diff);
101
+ } catch (e) {
102
+ log("git diff failed (" + e.message + "); demoting all findings to the body");
103
+ }
104
+ }
105
+
106
+ const anchored = (f) => {
107
+ if (!commentable) return false;
108
+ const side = f.side === "LEFT" ? "LEFT" : "RIGHT";
109
+ const set = commentable.get(f.path);
110
+ if (!set || !set.has(side + ":" + f.line)) return false;
111
+ if (f.start_line && !set.has(side + ":" + f.start_line)) return false;
112
+ return true;
113
+ };
114
+
115
+ const inline = [], demoted = [];
116
+ for (const f of findings) {
117
+ if (f && f.path && f.line && anchored(f)) inline.push(f);
118
+ else if (f) demoted.push(f);
119
+ }
120
+
121
+ const FENCE = "```";
122
+ const commentBody = (f) => {
123
+ let b = "**[" + (f.severity || "Important") + "] " + (f.title || "") + "**\n\n" + (f.body || "");
124
+ if (f.suggestion) b += "\n\n" + FENCE + "suggestion\n" + f.suggestion + "\n" + FENCE;
125
+ return b;
126
+ };
127
+ const renderDemoted = (list) => list.length
128
+ ? "\n\n### Additional findings\n" + list.map((f) =>
129
+ "- **[" + (f.severity || "Important") + "] " + (f.title || "") + "** (" + f.path + ":" + f.line + ") — " + (f.body || "")).join("\n")
130
+ : "";
131
+ const buildComments = (list) => list.map((f) => {
132
+ const side = f.side === "LEFT" ? "LEFT" : "RIGHT";
133
+ const c = { path: f.path, line: f.line, side, body: commentBody(f) };
134
+ if (f.start_line) { c.start_line = f.start_line; c.start_side = side; }
135
+ return c;
136
+ });
137
+
138
+ const event = doc.event || (findings.length === 0 ? "APPROVE" : "COMMENT");
139
+ async function postReview(comments, extraBody) {
140
+ const payload = { body: (doc.summary || "") + (extraBody || ""), event, comments };
141
+ if (headSha) payload.commit_id = headSha;
142
+ return fetch(api + "/repos/" + owner + "/" + repo + "/pulls/" + prNumber + "/reviews", {
143
+ method: "POST",
144
+ headers: {
145
+ "Authorization": "Bearer " + token,
146
+ "Accept": "application/vnd.github+json",
147
+ "Content-Type": "application/json",
148
+ "User-Agent": "last-light",
149
+ "X-GitHub-Api-Version": "2022-11-28",
150
+ },
151
+ body: JSON.stringify(payload),
152
+ });
153
+ }
154
+
155
+ let res = await postReview(buildComments(inline), renderDemoted(demoted));
156
+ if (!res.ok) {
157
+ const t = await res.text().catch(() => "");
158
+ log("inline review POST failed (" + res.status + "): " + t.slice(0, 300) + "; retrying body-only");
159
+ res = await postReview([], renderDemoted([...inline, ...demoted]));
160
+ if (!res.ok) {
161
+ const t2 = await res.text().catch(() => "");
162
+ log("body-only review POST also failed (" + res.status + "): " + t2.slice(0, 300));
163
+ process.exit(0);
164
+ }
165
+ }
166
+ log("posted review: " + inline.length + " inline, " + demoted.length + " in body, event=" + event);
167
+ process.exit(0);