@fullstackhouse/cerber 0.10.1 → 0.11.0
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.
- package/README.md +14 -7
- package/dist/server/index.js +9 -0
- package/package.json +2 -1
- package/web/dist/assets/index-BCFXfB2G.js +236 -0
- package/web/dist/assets/index-BS-7TZbc.css +10 -0
- package/web/dist/favicon.svg +13 -0
- package/web/dist/index.html +3 -2
- package/web/dist/assets/index-C25hWJar.js +0 -236
- package/web/dist/assets/index-si1RfFZU.css +0 -10
package/README.md
CHANGED
|
@@ -8,9 +8,7 @@ verdict with a confidence score. You go through it in a local web cockpit.
|
|
|
8
8
|
write is the Send button (plus opt-in daemon auto-send you turn on yourself) —
|
|
9
9
|
reviewing is 100% local and read-only.
|
|
10
10
|
|
|
11
|
-
Named after Cerberus, the gatekeeper
|
|
12
|
-
[cezar](https://github.com/open-mercato/cezar): cezar runs coding agents,
|
|
13
|
-
cerber guards what gets merged.
|
|
11
|
+
Named after Cerberus, the gatekeeper: cerber guards what gets merged.
|
|
14
12
|
|
|
15
13
|
## Quick start
|
|
16
14
|
|
|
@@ -37,9 +35,11 @@ npx @fullstackhouse/cerber serve # → http://127.0.0.1:4820
|
|
|
37
35
|
Sending stays a human click. Tame it with `--no-auto-review` (list awaiting
|
|
38
36
|
PRs, review on click) or `--no-poll` (no GitHub polling at all) — or flip the
|
|
39
37
|
same two switches in the cockpit's Settings, which persist in
|
|
40
|
-
`~/.cerber/config.json` and apply on the next poll.
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
`~/.cerber/config.json` and apply on the next poll. The queue only lists what
|
|
39
|
+
still wants you: anything you have settled drops into a drawer under it — one
|
|
40
|
+
for reviews you sent, one for the ones you marked reviewed or skipped, one for
|
|
41
|
+
merged and closed PRs — and PRs in archived repos are never picked up at all,
|
|
42
|
+
since the repo is read-only and a review could never be sent.
|
|
43
43
|
|
|
44
44
|
## What a review looks like
|
|
45
45
|
|
|
@@ -59,6 +59,13 @@ Each review is a plain JSON artifact in `~/.cerber/reviews/` (override with
|
|
|
59
59
|
The cockpit (`cerber serve`) renders the queue and the per-PR walkthrough with
|
|
60
60
|
diffs. Artifacts are plain JSON you can `cat`, edit, or pipe into anything.
|
|
61
61
|
|
|
62
|
+
The queue is meant to be walked, not clicked through: `j`/`k` move the cursor
|
|
63
|
+
and the strip under the table explains whatever it lands on — the verdict's own
|
|
64
|
+
reasoning, what the run read, how it sits against the auto-send bar — so most
|
|
65
|
+
rows can be judged without opening them. `↵` opens one, `r` drafts (or
|
|
66
|
+
re-drafts) it. Inside a review, `[` and `]` walk to the previous/next PR still
|
|
67
|
+
awaiting you, `n` steps through the chapters, and `s` sends.
|
|
68
|
+
|
|
62
69
|
### It reviews the code, not just the diff
|
|
63
70
|
|
|
64
71
|
Cerber checks the PR's head out locally and lets the review read it. That
|
|
@@ -301,4 +308,4 @@ Web cockpit dev with hot reload: `pnpm dev serve` in one terminal,
|
|
|
301
308
|
|
|
302
309
|
## License
|
|
303
310
|
|
|
304
|
-
MIT © Full Stack House
|
|
311
|
+
MIT © [Full Stack House](https://fullstack.house)
|
package/dist/server/index.js
CHANGED
|
@@ -144,10 +144,19 @@ export async function buildApp(opts) {
|
|
|
144
144
|
additions: a.pr.additions,
|
|
145
145
|
deletions: a.pr.deletions,
|
|
146
146
|
changedFiles: a.pr.changedFiles,
|
|
147
|
+
// The queue's cursor row explains itself without opening the review,
|
|
148
|
+
// so the list carries what that explanation is made of.
|
|
149
|
+
baseRefName: a.pr.baseRefName,
|
|
150
|
+
headRefName: a.pr.headRefName,
|
|
147
151
|
},
|
|
148
152
|
verdict: a.verdict,
|
|
149
153
|
commentCount: a.comments.filter((cm) => cm.status !== "dropped").length,
|
|
154
|
+
driftedCount: a.comments.filter((cm) => cm.status !== "dropped" && cm.drifted).length,
|
|
150
155
|
costUsd: a.run?.costUsd ?? null,
|
|
156
|
+
withSource: a.run?.withSource ?? null,
|
|
157
|
+
trusted: a.run?.trusted ?? null,
|
|
158
|
+
runError: a.run?.error ?? null,
|
|
159
|
+
sent: a.sent ? { at: a.sent.at, event: a.sent.event, url: a.sent.url, auto: a.sent.auto ?? false } : null,
|
|
151
160
|
})));
|
|
152
161
|
});
|
|
153
162
|
app.get("/api/reviews/:key", async (c) => {
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fullstackhouse/cerber",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "AI code-review cockpit: Claude reviews your PRs into local artifacts; nothing reaches GitHub until you say so.",
|
|
5
5
|
"license": "MIT",
|
|
6
|
+
"author": "Full Stack House (https://fullstack.house)",
|
|
6
7
|
"repository": "github:fullstackhouse/cerber",
|
|
7
8
|
"type": "module",
|
|
8
9
|
"packageManager": "pnpm@10.33.2",
|