bellwether 0.0.1
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/.claude-plugin/plugin.json +13 -0
- package/LICENSE +21 -0
- package/README.md +120 -0
- package/SKILL.md +92 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +17 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli.d.ts +13 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +36 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/check.d.ts +191 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +186 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/ci.d.ts +8 -0
- package/dist/commands/ci.d.ts.map +1 -0
- package/dist/commands/ci.js +28 -0
- package/dist/commands/ci.js.map +1 -0
- package/dist/commands/hook-add.d.ts +2 -0
- package/dist/commands/hook-add.d.ts.map +1 -0
- package/dist/commands/hook-add.js +97 -0
- package/dist/commands/hook-add.js.map +1 -0
- package/dist/commands/hook-check.d.ts +2 -0
- package/dist/commands/hook-check.d.ts.map +1 -0
- package/dist/commands/hook-check.js +29 -0
- package/dist/commands/hook-check.js.map +1 -0
- package/dist/commands/reviews.d.ts +74 -0
- package/dist/commands/reviews.d.ts.map +1 -0
- package/dist/commands/reviews.js +133 -0
- package/dist/commands/reviews.js.map +1 -0
- package/dist/context.d.ts +13 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +53 -0
- package/dist/context.js.map +1 -0
- package/dist/github/auth.d.ts +9 -0
- package/dist/github/auth.d.ts.map +1 -0
- package/dist/github/auth.js +49 -0
- package/dist/github/auth.js.map +1 -0
- package/dist/github/checks.d.ts +19 -0
- package/dist/github/checks.d.ts.map +1 -0
- package/dist/github/checks.js +112 -0
- package/dist/github/checks.js.map +1 -0
- package/dist/github/comments.d.ts +86 -0
- package/dist/github/comments.d.ts.map +1 -0
- package/dist/github/comments.js +309 -0
- package/dist/github/comments.js.map +1 -0
- package/dist/github/fetch.d.ts +21 -0
- package/dist/github/fetch.d.ts.map +1 -0
- package/dist/github/fetch.js +177 -0
- package/dist/github/fetch.js.map +1 -0
- package/dist/github/index.d.ts +6 -0
- package/dist/github/index.d.ts.map +1 -0
- package/dist/github/index.js +6 -0
- package/dist/github/index.js.map +1 -0
- package/dist/github/repo.d.ts +27 -0
- package/dist/github/repo.d.ts.map +1 -0
- package/dist/github/repo.js +72 -0
- package/dist/github/repo.js.map +1 -0
- package/hooks/hooks.json +29 -0
- package/package.json +65 -0
- package/skills/bellwether/SKILL.md +92 -0
- package/src/bin.ts +15 -0
- package/src/cli.ts +39 -0
- package/src/commands/check.ts +251 -0
- package/src/commands/ci.ts +44 -0
- package/src/commands/hook-add.ts +139 -0
- package/src/commands/hook-check.ts +35 -0
- package/src/commands/reviews.ts +225 -0
- package/src/context.ts +86 -0
- package/src/github/auth.ts +40 -0
- package/src/github/checks.ts +187 -0
- package/src/github/comments.ts +522 -0
- package/src/github/fetch.ts +233 -0
- package/src/github/index.ts +35 -0
- package/src/github/repo.ts +146 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "bellwether",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Drive PRs to merge-ready: watch CI, fix failures, resolve review comments. Self-contained watch loop that keeps going until pr.ready=true.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Roderik van der Veer",
|
|
7
|
+
"url": "https://github.com/roderik"
|
|
8
|
+
},
|
|
9
|
+
"repository": "https://github.com/roderik/bellwether",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"keywords": ["ci", "pr", "review", "merge", "github", "watch"],
|
|
12
|
+
"skills": "./skills/"
|
|
13
|
+
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Roderik van der Veer
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# bellwether
|
|
2
|
+
|
|
3
|
+
Drive GitHub PRs to merge-ready: watch CI, fix failures, resolve review comments. Self-contained watch loop that keeps going until `pr.ready=true`.
|
|
4
|
+
|
|
5
|
+
Built with [incur](https://github.com/wevm/incur). Inspired by [RTK](https://github.com/rtk-ai/rtk) (token-efficient CLI output filtering) and [agent-reviews](https://github.com/pbakaus/agent-reviews) (automated PR review resolution).
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx -y bellwether@latest skills add
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# CI status + review comments + merge state
|
|
17
|
+
npx -y bellwether@latest check
|
|
18
|
+
|
|
19
|
+
# Watch until CI completes
|
|
20
|
+
npx -y bellwether@latest check --watch
|
|
21
|
+
|
|
22
|
+
# Show only unresolved reviews
|
|
23
|
+
npx -y bellwether@latest check --unresolved
|
|
24
|
+
|
|
25
|
+
# Reply to a review comment and resolve
|
|
26
|
+
npx -y bellwether@latest check --reply "456:Fixed in abc1234" --resolve
|
|
27
|
+
|
|
28
|
+
# Full detail for a specific comment
|
|
29
|
+
npx -y bellwether@latest check --detail 456
|
|
30
|
+
|
|
31
|
+
# Full help
|
|
32
|
+
npx -y bellwether@latest check --help
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Output
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
pr:
|
|
39
|
+
state: open
|
|
40
|
+
mergeable: clean
|
|
41
|
+
ready: true
|
|
42
|
+
ci:
|
|
43
|
+
sha: abc1234
|
|
44
|
+
checks: "3 total, 3 passing, 0 failing, 0 pending"
|
|
45
|
+
passed: "build, lint, test"
|
|
46
|
+
reviews:
|
|
47
|
+
total: "0 unresolved, 0 unanswered"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
When CI fails, the output includes the actual error log (filtered, not raw GitHub metadata):
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
ci:
|
|
54
|
+
FAIL check: "TypeError: Cannot find name 'fetch'..."
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Development
|
|
58
|
+
|
|
59
|
+
### Prerequisites
|
|
60
|
+
|
|
61
|
+
- [Bun](https://bun.sh) (package manager and dev runtime)
|
|
62
|
+
- Node.js >= 22 (the published package runs on Node)
|
|
63
|
+
|
|
64
|
+
### Setup
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
bun install
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Commands
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
bun run dev # zile dev — symlinks dist/ to src/
|
|
74
|
+
bun src/bin.ts check # run directly from source
|
|
75
|
+
bun run build # compile to dist/
|
|
76
|
+
bun check # oxlint with type-aware rules
|
|
77
|
+
bun run test # vitest
|
|
78
|
+
bun run test:coverage # vitest with v8 coverage
|
|
79
|
+
bun run format # oxfmt
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Publishing
|
|
83
|
+
|
|
84
|
+
Automated via GitHub Actions on tag push:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
git tag v0.1.0
|
|
88
|
+
git push --tags
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
The workflow sets the version in `package.json` and `.claude-plugin/plugin.json`, builds, publishes to npm with provenance, and commits the version bump back to main.
|
|
92
|
+
|
|
93
|
+
## Project structure
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
src/
|
|
97
|
+
bin.ts # CLI entry point
|
|
98
|
+
cli.ts # incur CLI definition
|
|
99
|
+
context.ts # Bootstrap + PR resolution
|
|
100
|
+
commands/
|
|
101
|
+
check.ts # unified check command (CI + reviews + merge state)
|
|
102
|
+
ci.ts # CI data helpers (flatten, getCISection)
|
|
103
|
+
reviews.ts # Review data helpers (list, detail, reply, watch)
|
|
104
|
+
github/
|
|
105
|
+
auth.ts # GitHub token resolution
|
|
106
|
+
fetch.ts # Proxy-aware fetch + pagination
|
|
107
|
+
repo.ts # Git/repo helpers + merge state
|
|
108
|
+
checks.ts # Check Runs API + job log filtering
|
|
109
|
+
comments.ts # PR comments + review threads + GraphQL resolve
|
|
110
|
+
index.ts # Re-exports
|
|
111
|
+
skills/
|
|
112
|
+
bellwether/
|
|
113
|
+
SKILL.md # Agent skill (shared across all install channels)
|
|
114
|
+
.claude-plugin/
|
|
115
|
+
plugin.json # Claude Code plugin manifest
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## License
|
|
119
|
+
|
|
120
|
+
[MIT](LICENSE)
|
package/SKILL.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bellwether
|
|
3
|
+
description: >-
|
|
4
|
+
Bring the current PR to a mergeable state: CI green, all review comments resolved,
|
|
5
|
+
no merge conflicts. Self-contained — watches CI, fixes issues, watches again until
|
|
6
|
+
merge-ready. Use when the user wants to keep a PR green, auto-fix CI, resolve
|
|
7
|
+
review comments, or says "get this merged".
|
|
8
|
+
user-invocable: true
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Bellwether — Drive PR to Merge-Ready
|
|
12
|
+
|
|
13
|
+
Self-contained cycle: watch CI → fix failures → address reviews → watch again → until merge-ready.
|
|
14
|
+
|
|
15
|
+
## The Loop
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
1. npx -y bellwether@latest check --watch (blocks until CI completes)
|
|
19
|
+
2. If pr.ready=true → done, report "merge-ready"
|
|
20
|
+
3. If pr.state=merged|closed → done, report status
|
|
21
|
+
4. If CI failures → fix them (Step 2), push, go to 1
|
|
22
|
+
5. If unresolved reviews → address them (Step 3), push, go to 1
|
|
23
|
+
6. If pr.mergeable=dirty|behind → /sync, push, go to 1
|
|
24
|
+
7. If timed out → go to 1 (restart watch)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## What `npx -y bellwether@latest check --watch` returns
|
|
28
|
+
|
|
29
|
+
Three sections:
|
|
30
|
+
|
|
31
|
+
- **pr** — `state` (open/closed/merged), `mergeable` (clean/dirty/behind/blocked/unstable), `ready` (true when all conditions met)
|
|
32
|
+
- **ci** — SHA, check summary, and for each failing check: the filtered error log with file paths and line numbers
|
|
33
|
+
- **reviews** — unresolved review comments with full body, file path, and line number
|
|
34
|
+
|
|
35
|
+
## Step 2: Fix CI failures
|
|
36
|
+
|
|
37
|
+
For each `FAIL` key in the CI section:
|
|
38
|
+
|
|
39
|
+
1. **Read the error log** — it contains actual compiler/test output with file paths and line numbers.
|
|
40
|
+
2. **Fix the code** — minimal change that resolves the root cause.
|
|
41
|
+
3. **Verify locally** — run the same check that failed.
|
|
42
|
+
4. **Stage, commit, push** — stage files by name (never `git add -A`).
|
|
43
|
+
5. **Go to step 1** — restart the watch. New CI runs, new bot comments may arrive.
|
|
44
|
+
|
|
45
|
+
## Step 3: Address review comments
|
|
46
|
+
|
|
47
|
+
For each `REVIEW` key in the reviews section:
|
|
48
|
+
|
|
49
|
+
### Classify
|
|
50
|
+
|
|
51
|
+
**Bot comments** (CodeRabbit, Copilot, Cursor Bugbot):
|
|
52
|
+
- **True positive** — real bug → fix the code
|
|
53
|
+
- **False positive** — bot doesn't understand the pattern → won't fix
|
|
54
|
+
- **Uncertain** — ask the user
|
|
55
|
+
|
|
56
|
+
**Human comments**:
|
|
57
|
+
- **Actionable** — fix the code
|
|
58
|
+
- **Discussion** — ask the user
|
|
59
|
+
- **Already addressed** — reply only
|
|
60
|
+
|
|
61
|
+
### Fix and commit
|
|
62
|
+
|
|
63
|
+
Fix all true positives and actionable items in a single commit. Verify locally, push.
|
|
64
|
+
|
|
65
|
+
### Reply
|
|
66
|
+
|
|
67
|
+
For inline code review comments (with file path), reply individually with `--resolve`:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
npx -y bellwether@latest check --reply "<id>:Fixed in <hash>. <description>" --resolve
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
For top-level bot comments (no file path), post a single summary reply:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Addressed review findings in <hash>:
|
|
77
|
+
- REVIEW 456: Fixed null check in src/foo.ts
|
|
78
|
+
- REVIEW 789: Won't fix — pattern is intentional
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Every comment gets a response. Use `--resolve` on every reply.
|
|
82
|
+
|
|
83
|
+
After all replies, go to step 1 — restart the watch.
|
|
84
|
+
|
|
85
|
+
## Principles
|
|
86
|
+
|
|
87
|
+
- **One fix per watch cycle** — fix CI OR reviews, not both. Push and restart watch.
|
|
88
|
+
- **Minimal changes** — don't refactor unrelated code.
|
|
89
|
+
- **Every comment gets a response** — no silent ignores.
|
|
90
|
+
- **Ask when uncertain** — don't guess on architectural questions.
|
|
91
|
+
- **Verify before pushing** — always run the failing check locally first.
|
|
92
|
+
- **Never stop until terminal** — if `pr.ready` is false, keep going.
|
package/dist/bin.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
|
package/dist/bin.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const cmd = process.argv[2];
|
|
3
|
+
// Fast path for hook commands — bypass incur entirely for speed
|
|
4
|
+
if (cmd === "hook-check") {
|
|
5
|
+
const { run } = await import("./commands/hook-check.js");
|
|
6
|
+
await run();
|
|
7
|
+
}
|
|
8
|
+
else if (cmd === "hook-add") {
|
|
9
|
+
const { run } = await import("./commands/hook-add.js");
|
|
10
|
+
await run();
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
const { cli } = await import("./cli.js");
|
|
14
|
+
void cli.serve();
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=bin.js.map
|
package/dist/bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AAEA,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE5B,gEAAgE;AAChE,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;IACzB,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IACzD,MAAM,GAAG,EAAE,CAAC;AACd,CAAC;KAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;IAC9B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACvD,MAAM,GAAG,EAAE,CAAC;AACd,CAAC;KAAM,CAAC;IACN,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACzC,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Cli, z } from "incur";
|
|
2
|
+
import { type Context } from "./context.js";
|
|
3
|
+
declare const cli: Cli.Cli<{}, z.ZodObject<{
|
|
4
|
+
ctx: z.ZodCustom<Context, Context>;
|
|
5
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
6
|
+
GITHUB_TOKEN: z.ZodOptional<z.ZodString>;
|
|
7
|
+
GH_TOKEN: z.ZodOptional<z.ZodString>;
|
|
8
|
+
GH_REPO: z.ZodOptional<z.ZodString>;
|
|
9
|
+
HTTPS_PROXY: z.ZodOptional<z.ZodString>;
|
|
10
|
+
}, z.core.$strip>>;
|
|
11
|
+
export { cli };
|
|
12
|
+
export default cli;
|
|
13
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvD,QAAA,MAAM,GAAG;;;;;;;kBAwBP,CAAC;AASH,OAAO,EAAE,GAAG,EAAE,CAAC;AACf,eAAe,GAAG,CAAC"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Cli, z } from "incur";
|
|
2
|
+
import { bootstrap } from "./context.js";
|
|
3
|
+
import { checkCommand } from "./commands/check.js";
|
|
4
|
+
const cli = Cli.create("bellwether", {
|
|
5
|
+
version: "0.0.1",
|
|
6
|
+
description: "Monitor GitHub PRs — review comments and CI status",
|
|
7
|
+
vars: z.object({
|
|
8
|
+
ctx: z.custom(),
|
|
9
|
+
}),
|
|
10
|
+
env: z.object({
|
|
11
|
+
GITHUB_TOKEN: z
|
|
12
|
+
.string()
|
|
13
|
+
.optional()
|
|
14
|
+
.describe("GitHub personal access token (also reads GH_TOKEN, .env.local, gh CLI)"),
|
|
15
|
+
GH_TOKEN: z.string().optional().describe("Alternative GitHub token env var"),
|
|
16
|
+
GH_REPO: z.string().optional().describe("Override repository in owner/repo format"),
|
|
17
|
+
HTTPS_PROXY: z.string().optional().describe("HTTPS proxy URL for corporate/cloud environments"),
|
|
18
|
+
}),
|
|
19
|
+
sync: {
|
|
20
|
+
include: ["_root"],
|
|
21
|
+
suggestions: [
|
|
22
|
+
"check CI and reviews for this PR",
|
|
23
|
+
"check CI and reviews for PR 123",
|
|
24
|
+
"watch CI until complete",
|
|
25
|
+
"reply to review comment 12345",
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
cli.use(async (c, next) => {
|
|
30
|
+
c.set("ctx", await bootstrap());
|
|
31
|
+
await next();
|
|
32
|
+
});
|
|
33
|
+
cli.command("check", checkCommand);
|
|
34
|
+
export { cli };
|
|
35
|
+
export default cli;
|
|
36
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAgB,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE;IACnC,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,oDAAoD;IACjE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,GAAG,EAAE,CAAC,CAAC,MAAM,EAAW;KACzB,CAAC;IACF,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;QACZ,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,wEAAwE,CAAC;QACrF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAC5E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QACnF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;KAChG,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC,OAAO,CAAC;QAClB,WAAW,EAAE;YACX,kCAAkC;YAClC,iCAAiC;YACjC,yBAAyB;YACzB,+BAA+B;SAChC;KACF;CACF,CAAC,CAAC;AAEH,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;IACxB,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,SAAS,EAAE,CAAC,CAAC;IAChC,MAAM,IAAI,EAAE,CAAC;AACf,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,YAA4D,CAAC,CAAC;AAEnF,OAAO,EAAE,GAAG,EAAE,CAAC;AACf,eAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { z } from "incur";
|
|
2
|
+
import { type Context } from "../context.js";
|
|
3
|
+
interface CheckCommandContext {
|
|
4
|
+
var: {
|
|
5
|
+
ctx: Context;
|
|
6
|
+
};
|
|
7
|
+
args: {
|
|
8
|
+
pr?: number;
|
|
9
|
+
};
|
|
10
|
+
options: {
|
|
11
|
+
watch: boolean;
|
|
12
|
+
interval: number;
|
|
13
|
+
timeout: number;
|
|
14
|
+
unresolved: boolean;
|
|
15
|
+
unanswered: boolean;
|
|
16
|
+
botsOnly: boolean;
|
|
17
|
+
humansOnly: boolean;
|
|
18
|
+
reply?: string;
|
|
19
|
+
resolve: boolean;
|
|
20
|
+
detail?: number;
|
|
21
|
+
};
|
|
22
|
+
ok: (data: Record<string, unknown>, meta?: Record<string, unknown>) => unknown;
|
|
23
|
+
error: (data: {
|
|
24
|
+
message: string;
|
|
25
|
+
}) => unknown;
|
|
26
|
+
}
|
|
27
|
+
export declare const checkCommand: {
|
|
28
|
+
description: string;
|
|
29
|
+
hint: string;
|
|
30
|
+
args: z.ZodObject<{
|
|
31
|
+
pr: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
32
|
+
}, z.core.$strip>;
|
|
33
|
+
options: z.ZodObject<{
|
|
34
|
+
watch: z.ZodDefault<z.ZodBoolean>;
|
|
35
|
+
interval: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
36
|
+
timeout: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
37
|
+
unresolved: z.ZodDefault<z.ZodBoolean>;
|
|
38
|
+
unanswered: z.ZodDefault<z.ZodBoolean>;
|
|
39
|
+
botsOnly: z.ZodDefault<z.ZodBoolean>;
|
|
40
|
+
humansOnly: z.ZodDefault<z.ZodBoolean>;
|
|
41
|
+
reply: z.ZodOptional<z.ZodString>;
|
|
42
|
+
resolve: z.ZodDefault<z.ZodBoolean>;
|
|
43
|
+
detail: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
44
|
+
}, z.core.$strip>;
|
|
45
|
+
alias: {
|
|
46
|
+
watch: string;
|
|
47
|
+
interval: string;
|
|
48
|
+
unresolved: string;
|
|
49
|
+
unanswered: string;
|
|
50
|
+
botsOnly: string;
|
|
51
|
+
humansOnly: string;
|
|
52
|
+
reply: string;
|
|
53
|
+
detail: string;
|
|
54
|
+
};
|
|
55
|
+
usage: ({
|
|
56
|
+
args?: undefined;
|
|
57
|
+
options?: undefined;
|
|
58
|
+
} | {
|
|
59
|
+
args: {
|
|
60
|
+
pr: boolean;
|
|
61
|
+
};
|
|
62
|
+
options?: undefined;
|
|
63
|
+
} | {
|
|
64
|
+
options: {
|
|
65
|
+
watch: boolean;
|
|
66
|
+
detail?: undefined;
|
|
67
|
+
reply?: undefined;
|
|
68
|
+
resolve?: undefined;
|
|
69
|
+
};
|
|
70
|
+
args?: undefined;
|
|
71
|
+
} | {
|
|
72
|
+
options: {
|
|
73
|
+
detail: boolean;
|
|
74
|
+
watch?: undefined;
|
|
75
|
+
reply?: undefined;
|
|
76
|
+
resolve?: undefined;
|
|
77
|
+
};
|
|
78
|
+
args?: undefined;
|
|
79
|
+
} | {
|
|
80
|
+
options: {
|
|
81
|
+
reply: boolean;
|
|
82
|
+
watch?: undefined;
|
|
83
|
+
detail?: undefined;
|
|
84
|
+
resolve?: undefined;
|
|
85
|
+
};
|
|
86
|
+
args?: undefined;
|
|
87
|
+
} | {
|
|
88
|
+
options: {
|
|
89
|
+
reply: boolean;
|
|
90
|
+
resolve: boolean;
|
|
91
|
+
watch?: undefined;
|
|
92
|
+
detail?: undefined;
|
|
93
|
+
};
|
|
94
|
+
args?: undefined;
|
|
95
|
+
})[];
|
|
96
|
+
output: z.ZodObject<{
|
|
97
|
+
pr: z.ZodOptional<z.ZodObject<{
|
|
98
|
+
state: z.ZodString;
|
|
99
|
+
mergeable: z.ZodString;
|
|
100
|
+
ready: z.ZodBoolean;
|
|
101
|
+
}, z.core.$strip>>;
|
|
102
|
+
ci: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
|
|
103
|
+
reviews: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
104
|
+
comment: z.ZodOptional<z.ZodObject<{
|
|
105
|
+
id: z.ZodNumber;
|
|
106
|
+
type: z.ZodEnum<{
|
|
107
|
+
review_comment: "review_comment";
|
|
108
|
+
issue_comment: "issue_comment";
|
|
109
|
+
review: "review";
|
|
110
|
+
}>;
|
|
111
|
+
user: z.ZodString;
|
|
112
|
+
isBot: z.ZodBoolean;
|
|
113
|
+
path: z.ZodNullable<z.ZodString>;
|
|
114
|
+
line: z.ZodNullable<z.ZodNumber>;
|
|
115
|
+
diffHunk: z.ZodNullable<z.ZodString>;
|
|
116
|
+
body: z.ZodString;
|
|
117
|
+
createdAt: z.ZodString;
|
|
118
|
+
updatedAt: z.ZodString;
|
|
119
|
+
url: z.ZodString;
|
|
120
|
+
replies: z.ZodArray<z.ZodObject<{
|
|
121
|
+
id: z.ZodNumber;
|
|
122
|
+
user: z.ZodString;
|
|
123
|
+
body: z.ZodString;
|
|
124
|
+
createdAt: z.ZodString;
|
|
125
|
+
isBot: z.ZodBoolean;
|
|
126
|
+
}, z.core.$strip>>;
|
|
127
|
+
hasHumanReply: z.ZodBoolean;
|
|
128
|
+
hasAnyReply: z.ZodBoolean;
|
|
129
|
+
isResolved: z.ZodBoolean;
|
|
130
|
+
}, z.core.$strip>>;
|
|
131
|
+
replied: z.ZodOptional<z.ZodBoolean>;
|
|
132
|
+
commentId: z.ZodOptional<z.ZodNumber>;
|
|
133
|
+
message: z.ZodOptional<z.ZodString>;
|
|
134
|
+
url: z.ZodOptional<z.ZodString>;
|
|
135
|
+
resolved: z.ZodOptional<z.ZodBoolean>;
|
|
136
|
+
allPassing: z.ZodOptional<z.ZodBoolean>;
|
|
137
|
+
timedOut: z.ZodOptional<z.ZodBoolean>;
|
|
138
|
+
}, z.core.$strip>;
|
|
139
|
+
examples: ({
|
|
140
|
+
description: string;
|
|
141
|
+
options?: undefined;
|
|
142
|
+
} | {
|
|
143
|
+
options: {
|
|
144
|
+
watch: boolean;
|
|
145
|
+
unresolved?: undefined;
|
|
146
|
+
detail?: undefined;
|
|
147
|
+
reply?: undefined;
|
|
148
|
+
resolve?: undefined;
|
|
149
|
+
};
|
|
150
|
+
description: string;
|
|
151
|
+
} | {
|
|
152
|
+
options: {
|
|
153
|
+
unresolved: boolean;
|
|
154
|
+
watch?: undefined;
|
|
155
|
+
detail?: undefined;
|
|
156
|
+
reply?: undefined;
|
|
157
|
+
resolve?: undefined;
|
|
158
|
+
};
|
|
159
|
+
description: string;
|
|
160
|
+
} | {
|
|
161
|
+
options: {
|
|
162
|
+
detail: number;
|
|
163
|
+
watch?: undefined;
|
|
164
|
+
unresolved?: undefined;
|
|
165
|
+
reply?: undefined;
|
|
166
|
+
resolve?: undefined;
|
|
167
|
+
};
|
|
168
|
+
description: string;
|
|
169
|
+
} | {
|
|
170
|
+
options: {
|
|
171
|
+
reply: string;
|
|
172
|
+
watch?: undefined;
|
|
173
|
+
unresolved?: undefined;
|
|
174
|
+
detail?: undefined;
|
|
175
|
+
resolve?: undefined;
|
|
176
|
+
};
|
|
177
|
+
description: string;
|
|
178
|
+
} | {
|
|
179
|
+
options: {
|
|
180
|
+
reply: string;
|
|
181
|
+
resolve: boolean;
|
|
182
|
+
watch?: undefined;
|
|
183
|
+
unresolved?: undefined;
|
|
184
|
+
detail?: undefined;
|
|
185
|
+
};
|
|
186
|
+
description: string;
|
|
187
|
+
})[];
|
|
188
|
+
run(c: CheckCommandContext): Promise<unknown>;
|
|
189
|
+
};
|
|
190
|
+
export {};
|
|
191
|
+
//# sourceMappingURL=check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AA4BxD,UAAU,mBAAmB;IAC3B,GAAG,EAAE;QAAE,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;IACtB,IAAI,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtB,OAAO,EAAE;QACP,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,OAAO,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,OAAO,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;IAC/E,KAAK,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;CAC/C;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAqEV,mBAAmB;CAqIjC,CAAC"}
|