@heyditto/cli 2.20.0 → 2.22.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 +73 -0
- package/dist/api.d.ts +1 -0
- package/dist/api.js +1 -0
- package/dist/api.js.map +1 -1
- package/dist/review-commands.d.ts +25 -0
- package/dist/review-commands.js +164 -2
- package/dist/review-commands.js.map +1 -1
- package/dist/review-findings.d.ts +150 -0
- package/dist/review-findings.js +281 -0
- package/dist/review-findings.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -194,6 +194,44 @@ heyditto search "typescript" "language choices"
|
|
|
194
194
|
heyditto search "launch notes" --include-public --filter-username peyton
|
|
195
195
|
```
|
|
196
196
|
|
|
197
|
+
### `review`
|
|
198
|
+
|
|
199
|
+
Manage Ditto Review and follow reviews from either `ditto` or `heyditto`.
|
|
200
|
+
Commands use your selected organization (`orgs use`) or `--org`; without one,
|
|
201
|
+
they use your personal workspace. Repositories must already be set up for
|
|
202
|
+
Review. Workspace membership and manager permissions are enforced by the API.
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
heyditto review repos --org omniaura
|
|
206
|
+
heyditto review set ditto-assistant/console --max-minutes 20 --org omniaura
|
|
207
|
+
heyditto review pulls ditto-assistant/console --org omniaura
|
|
208
|
+
heyditto review start ditto-assistant/console 88 --org omniaura --watch
|
|
209
|
+
heyditto review runs ditto-assistant/console --org omniaura --output json
|
|
210
|
+
heyditto review status <run-id> --org omniaura --output json
|
|
211
|
+
heyditto review watch <run-id> --org omniaura --interval 10 --timeout 3600
|
|
212
|
+
heyditto review retry <run-id> --org omniaura
|
|
213
|
+
heyditto review cancel <run-id> --org omniaura
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
`start` reviews the PR's current head using the repository's saved budget and
|
|
217
|
+
settings. Starting a previously completed head requests another paid attempt.
|
|
218
|
+
`retry` can reuse a stored result after publication failure; other eligible
|
|
219
|
+
retries can spend a new per-run budget. It does not raise any budget or enable
|
|
220
|
+
a paused repository. `cancel` requests cancellation; a running review stops
|
|
221
|
+
asynchronously, and a review already being published may refuse cancellation.
|
|
222
|
+
|
|
223
|
+
`runs` lists the API's recent workspace runs; `status --output json` includes findings and
|
|
224
|
+
prior attempts. `watch` polls without starting, retrying, or cancelling the run.
|
|
225
|
+
It stops on completion, partial coverage, failure, cancellation, skip, or
|
|
226
|
+
supersession. Failed runs and timeouts return a nonzero exit code. A partial
|
|
227
|
+
review remains partial even though the command succeeds. A timeout or Ctrl-C
|
|
228
|
+
only stops the local watcher; use `cancel` to stop the server review.
|
|
229
|
+
`--output json` prints one final JSON document, with watch progress on stderr.
|
|
230
|
+
|
|
231
|
+
The lifecycle commands require a backend with CLI-key access to Review run
|
|
232
|
+
and PR routes. On an older backend they return an authentication refusal;
|
|
233
|
+
upgrading the CLI alone cannot enable those routes.
|
|
234
|
+
|
|
197
235
|
### `fetch`
|
|
198
236
|
|
|
199
237
|
Fetch memory content for private pair ids or public share ids. The default
|
|
@@ -648,6 +686,41 @@ List your Ditto agents (`GET /api/v5/chat-agents`): id, kind (`main`, `chat`,
|
|
|
648
686
|
`inference_endpoint`, `mcp`, `connector`), name, thread count, last activity and
|
|
649
687
|
the live connections (API keys, OAuth grants, endpoints) writing into each.
|
|
650
688
|
|
|
689
|
+
### `review` — Ditto Review from the shell
|
|
690
|
+
|
|
691
|
+
The developer console's Review pages, as commands. Repository settings:
|
|
692
|
+
|
|
693
|
+
```bash
|
|
694
|
+
heyditto review repos --org omniaura # repositories set up for Ditto Review
|
|
695
|
+
heyditto review set ditto-assistant/console --max-minutes 20 --org omniaura
|
|
696
|
+
```
|
|
697
|
+
|
|
698
|
+
Findings on a pull request (its newest run), and acting on one. A finding is
|
|
699
|
+
named the way you meet it: by the GitHub review comment's URL
|
|
700
|
+
(`…/pull/12#discussion_r<id>`), by `<run-id>:<finding-id>`, or by a bare
|
|
701
|
+
finding id with `--pr`. Without `--org` the PR's repository is looked up in
|
|
702
|
+
your personal workspace and then in each organization you belong to.
|
|
703
|
+
|
|
704
|
+
```bash
|
|
705
|
+
heyditto review findings https://github.com/ditto-assistant/backend/pull/3158
|
|
706
|
+
heyditto review findings ditto-assistant/ditto-app#3163 --all --output json # include dismissed
|
|
707
|
+
|
|
708
|
+
# Managers: dismiss with a reason. Ditto replies on the GitHub thread, resolves
|
|
709
|
+
# it, and keeps the same issue off this PR on later reviews.
|
|
710
|
+
heyditto review dismiss "https://github.com/ditto-assistant/backend/pull/3112#discussion_r4171976544" \
|
|
711
|
+
--reason "Retrying with different arguments is the documented design (trace_test.go:106-115)."
|
|
712
|
+
heyditto review undismiss <run-id>:<finding-id>
|
|
713
|
+
|
|
714
|
+
# Any member: say whether a finding was useful, wrong or not useful.
|
|
715
|
+
heyditto review feedback "<comment-url>" wrong --note "The retry test covers different arguments."
|
|
716
|
+
```
|
|
717
|
+
|
|
718
|
+
Every action is recorded as the same signal the console records
|
|
719
|
+
(`review_finding_feedback`, `review_finding_dismissals`), so it feeds
|
|
720
|
+
false-positive learning; a plain GitHub reply does not. The key reaches the run
|
|
721
|
+
detail, feedback and dismiss routes only — not cancel, retry, the event stream
|
|
722
|
+
or posting a withheld finding.
|
|
723
|
+
|
|
651
724
|
## Remote Control
|
|
652
725
|
|
|
653
726
|
Every `heyditto claude` / `heyditto codex` session is reachable from the Ditto
|
package/dist/api.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export declare function apiFetch<T>(path: string, init?: {
|
|
|
11
11
|
method?: string;
|
|
12
12
|
body?: unknown;
|
|
13
13
|
auth?: boolean;
|
|
14
|
+
signal?: AbortSignal;
|
|
14
15
|
}): Promise<T>;
|
|
15
16
|
export type EndpointStatus = "active" | "pending_plan";
|
|
16
17
|
/** Backend-controlled copy explaining why an endpoint cannot serve requests yet. */
|
package/dist/api.js
CHANGED
|
@@ -41,6 +41,7 @@ export async function apiFetch(path, init = {}) {
|
|
|
41
41
|
method: init.method ?? "GET",
|
|
42
42
|
headers,
|
|
43
43
|
body: init.body === undefined ? undefined : JSON.stringify(init.body),
|
|
44
|
+
signal: init.signal,
|
|
44
45
|
});
|
|
45
46
|
if (!response.ok) {
|
|
46
47
|
const text = await response.text().catch(() => "");
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,31 @@ interface SetOptions extends ScopeOptions {
|
|
|
49
49
|
enabled?: string;
|
|
50
50
|
}
|
|
51
51
|
export declare function listReviewRepositories(company: Company | undefined): Promise<ReviewRepository[]>;
|
|
52
|
+
export interface ReviewRun {
|
|
53
|
+
id: string;
|
|
54
|
+
repositoryId: string;
|
|
55
|
+
prNumber: number;
|
|
56
|
+
status: string;
|
|
57
|
+
headSha: string;
|
|
58
|
+
attempts: number;
|
|
59
|
+
reviewUrl?: string;
|
|
60
|
+
error?: string;
|
|
61
|
+
cancelRequested?: boolean;
|
|
62
|
+
chargedCredits?: number;
|
|
63
|
+
creditsPerDollar?: number;
|
|
64
|
+
summary?: unknown;
|
|
65
|
+
}
|
|
66
|
+
interface WatchOptions extends ScopeOptions {
|
|
67
|
+
interval?: string;
|
|
68
|
+
timeout?: string;
|
|
69
|
+
watch?: boolean;
|
|
70
|
+
}
|
|
71
|
+
export declare function cmdReviewRuns(fullName: string | undefined, options: ScopeOptions): Promise<void>;
|
|
72
|
+
export declare function cmdReviewPulls(fullName: string, options: ScopeOptions): Promise<void>;
|
|
73
|
+
export declare function cmdReviewStatus(id: string, options: ScopeOptions): Promise<void>;
|
|
74
|
+
export declare function cmdReviewWatch(id: string, options: WatchOptions): Promise<void>;
|
|
75
|
+
export declare function cmdReviewStart(fullName: string, prNumber: string, options: WatchOptions): Promise<void>;
|
|
76
|
+
export declare function cmdReviewAction(id: string, action: "retry" | "cancel", options: ScopeOptions): Promise<void>;
|
|
52
77
|
export declare function cmdReviewRepos(options: ScopeOptions): Promise<void>;
|
|
53
78
|
/** The PUT body that saves `repo` exactly as read, guarded by its revision. */
|
|
54
79
|
export declare function reviewRepositoryInput(repo: ReviewRepository): Record<string, unknown>;
|
package/dist/review-commands.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { setTimeout as delay } from "node:timers/promises";
|
|
1
2
|
import { apiFetch, resolveCompany } from "./api.js";
|
|
3
|
+
import { registerReviewFindingCommands } from "./review-findings.js";
|
|
2
4
|
import { readStoredAuth } from "./store.js";
|
|
3
5
|
/** The server's bounds (backend reviewLimits). */
|
|
4
6
|
const MIN_MAX_MINUTES = 5;
|
|
@@ -20,6 +22,144 @@ export async function listReviewRepositories(company) {
|
|
|
20
22
|
const out = await apiFetch(`/api/v5/review${scopeQuery(company)}`);
|
|
21
23
|
return out.repositories ?? [];
|
|
22
24
|
}
|
|
25
|
+
const TERMINAL_REVIEW_STATUSES = new Set(["completed", "partial", "failed", "cancelled", "skipped", "superseded"]);
|
|
26
|
+
const ACTIVE_REVIEW_STATUSES = new Set(["queued", "running", "publishing"]);
|
|
27
|
+
function runPath(id) {
|
|
28
|
+
if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(id)) {
|
|
29
|
+
throw new Error("run id must be a UUID (see `heyditto review runs`)");
|
|
30
|
+
}
|
|
31
|
+
return `/api/v5/review/runs/${encodeURIComponent(id)}`;
|
|
32
|
+
}
|
|
33
|
+
async function findReviewRepository(fullName, company) {
|
|
34
|
+
const repos = await listReviewRepositories(company);
|
|
35
|
+
const repo = repos.find((r) => r.fullName.toLowerCase() === fullName.trim().toLowerCase());
|
|
36
|
+
if (!repo)
|
|
37
|
+
throw new Error(`${fullName} is not set up in this workspace (see \`heyditto review repos --org <organization>\`).`);
|
|
38
|
+
return repo;
|
|
39
|
+
}
|
|
40
|
+
function writeJSON(value) {
|
|
41
|
+
process.stdout.write(`${JSON.stringify(value, null, 2)}\n`);
|
|
42
|
+
}
|
|
43
|
+
function printRun(detail, options) {
|
|
44
|
+
if (isJSON(options))
|
|
45
|
+
return writeJSON(detail);
|
|
46
|
+
const r = detail.run;
|
|
47
|
+
process.stdout.write(`${detail.repository.fullName} #${r.prNumber}: ${r.status}${r.cancelRequested ? " (cancellation requested)" : ""}\n`);
|
|
48
|
+
process.stdout.write(`Run: ${r.id}\nHead: ${r.headSha}\n`);
|
|
49
|
+
if (r.reviewUrl)
|
|
50
|
+
process.stdout.write(`Review: ${r.reviewUrl}\n`);
|
|
51
|
+
if (r.summary)
|
|
52
|
+
process.stdout.write(`Summary: ${JSON.stringify(r.summary)}\n`);
|
|
53
|
+
if (r.error)
|
|
54
|
+
process.stdout.write(`Error: ${r.error}\n`);
|
|
55
|
+
}
|
|
56
|
+
export async function cmdReviewRuns(fullName, options) {
|
|
57
|
+
const company = await resolveScope(options);
|
|
58
|
+
const out = await apiFetch(`/api/v5/review${scopeQuery(company)}`);
|
|
59
|
+
let runs = out.runs ?? [];
|
|
60
|
+
if (fullName) {
|
|
61
|
+
const repo = out.repositories.find((r) => r.fullName.toLowerCase() === fullName.trim().toLowerCase());
|
|
62
|
+
if (!repo)
|
|
63
|
+
throw new Error(`${fullName} is not set up in this workspace`);
|
|
64
|
+
runs = runs.filter((r) => r.repositoryId === repo.id);
|
|
65
|
+
}
|
|
66
|
+
if (isJSON(options))
|
|
67
|
+
return writeJSON({ runs });
|
|
68
|
+
const names = new Map(out.repositories.map((r) => [r.id, r.fullName]));
|
|
69
|
+
if (!runs.length)
|
|
70
|
+
process.stdout.write("No recent review runs in this workspace.\n");
|
|
71
|
+
for (const r of runs)
|
|
72
|
+
process.stdout.write(`${r.id} ${r.status} ${names.get(r.repositoryId) ?? r.repositoryId} #${r.prNumber} ${r.headSha.slice(0, 7)}\n`);
|
|
73
|
+
}
|
|
74
|
+
export async function cmdReviewPulls(fullName, options) {
|
|
75
|
+
const company = await resolveScope(options);
|
|
76
|
+
const repo = await findReviewRepository(fullName, company);
|
|
77
|
+
const out = await apiFetch(`/api/v5/review/repositories/${encodeURIComponent(repo.id)}/pulls${scopeQuery(company)}`);
|
|
78
|
+
if (isJSON(options))
|
|
79
|
+
return writeJSON(out);
|
|
80
|
+
if (!out.pulls.length)
|
|
81
|
+
process.stdout.write(`No open pull requests in ${repo.fullName}.\n`);
|
|
82
|
+
for (const p of out.pulls)
|
|
83
|
+
process.stdout.write(`#${p.number}${p.draft ? " (draft)" : ""} ${p.title}\n ${p.url}\n`);
|
|
84
|
+
}
|
|
85
|
+
export async function cmdReviewStatus(id, options) {
|
|
86
|
+
const route = runPath(id);
|
|
87
|
+
const company = await resolveScope(options);
|
|
88
|
+
printRun(await apiFetch(`${route}${scopeQuery(company)}`), options);
|
|
89
|
+
}
|
|
90
|
+
function watchLimits(options) {
|
|
91
|
+
return {
|
|
92
|
+
intervalMs: intFlag("--interval", options.interval ?? "10", 1, 60) * 1000,
|
|
93
|
+
timeoutMs: intFlag("--timeout", options.timeout ?? "3600", 1, 86400) * 1000,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
async function watchReview(id, company, options) {
|
|
97
|
+
const route = runPath(id);
|
|
98
|
+
const { intervalMs, timeoutMs } = watchLimits(options);
|
|
99
|
+
const deadline = performance.now() + timeoutMs;
|
|
100
|
+
let prior = "";
|
|
101
|
+
for (;;) {
|
|
102
|
+
const remaining = deadline - performance.now();
|
|
103
|
+
if (remaining <= 0)
|
|
104
|
+
throw new Error(`timed out waiting for review ${id}; the review continues on the server`);
|
|
105
|
+
let detail;
|
|
106
|
+
try {
|
|
107
|
+
detail = await apiFetch(`${route}${scopeQuery(company)}`, { signal: AbortSignal.timeout(Math.ceil(remaining)) });
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
if (performance.now() >= deadline)
|
|
111
|
+
throw new Error(`timed out waiting for review ${id}; the review continues on the server`);
|
|
112
|
+
throw error;
|
|
113
|
+
}
|
|
114
|
+
const status = detail.run.status;
|
|
115
|
+
if (status !== prior) {
|
|
116
|
+
process.stderr.write(`Review ${id}: ${status}\n`);
|
|
117
|
+
prior = status;
|
|
118
|
+
}
|
|
119
|
+
if (TERMINAL_REVIEW_STATUSES.has(status)) {
|
|
120
|
+
printRun(detail, options);
|
|
121
|
+
if (status === "failed")
|
|
122
|
+
process.exitCode = 1;
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
if (!ACTIVE_REVIEW_STATUSES.has(status))
|
|
126
|
+
throw new Error(`unknown review status: ${status}`);
|
|
127
|
+
await delay(Math.max(1, Math.min(intervalMs, deadline - performance.now())));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
export async function cmdReviewWatch(id, options) {
|
|
131
|
+
runPath(id);
|
|
132
|
+
watchLimits(options);
|
|
133
|
+
const company = await resolveScope(options);
|
|
134
|
+
await watchReview(id, company, options);
|
|
135
|
+
}
|
|
136
|
+
export async function cmdReviewStart(fullName, prNumber, options) {
|
|
137
|
+
const number = intFlag("pr-number", prNumber, 1, 2_147_483_647);
|
|
138
|
+
if (options.watch)
|
|
139
|
+
watchLimits(options);
|
|
140
|
+
const company = await resolveScope(options);
|
|
141
|
+
const repo = await findReviewRepository(fullName, company);
|
|
142
|
+
const out = await apiFetch(`/api/v5/review/repositories/${encodeURIComponent(repo.id)}/pulls/${number}/review${scopeQuery(company)}`, { method: "POST" });
|
|
143
|
+
if (options.watch) {
|
|
144
|
+
process.stderr.write(`Review requested for ${repo.fullName} #${number}: ${out.runId}\n`);
|
|
145
|
+
if (out.alreadyReviewed)
|
|
146
|
+
process.stderr.write("This head was already reviewed; this request starts a new attempt within the repository's budget.\n");
|
|
147
|
+
return watchReview(out.runId, company, options);
|
|
148
|
+
}
|
|
149
|
+
if (isJSON(options))
|
|
150
|
+
return writeJSON(out);
|
|
151
|
+
process.stdout.write(`${repo.fullName} #${number}: ${out.status}\nRun: ${out.runId}\n`);
|
|
152
|
+
if (out.alreadyReviewed)
|
|
153
|
+
process.stdout.write("This head was already reviewed; a new attempt was requested.\n");
|
|
154
|
+
}
|
|
155
|
+
export async function cmdReviewAction(id, action, options) {
|
|
156
|
+
const route = runPath(id);
|
|
157
|
+
const company = await resolveScope(options);
|
|
158
|
+
const out = await apiFetch(`${route}/${action}${scopeQuery(company)}`, { method: "POST" });
|
|
159
|
+
if (isJSON(options))
|
|
160
|
+
return writeJSON(out);
|
|
161
|
+
process.stdout.write(`${id}: ${out.status}${out.cancelRequested ? " (cancellation requested)" : ""}${out.reusedResult ? " (reusing stored result)" : ""}${out.watchCancelled ? " (CI watch cancelled)" : ""}\n`);
|
|
162
|
+
}
|
|
23
163
|
function money(cents) {
|
|
24
164
|
return `$${(cents / 100).toFixed(2)}`;
|
|
25
165
|
}
|
|
@@ -126,8 +266,8 @@ export async function cmdReviewSet(fullName, options) {
|
|
|
126
266
|
export function registerReviewCommands(program, addExamples, outputOption, orgOption) {
|
|
127
267
|
const review = program
|
|
128
268
|
.command("review")
|
|
129
|
-
.description("Ditto Review repositories and
|
|
130
|
-
.summary("Ditto Review
|
|
269
|
+
.description("Ditto Review repositories, settings, and review runs")
|
|
270
|
+
.summary("manage and follow Ditto Review");
|
|
131
271
|
addExamples(review
|
|
132
272
|
.command("repos", { isDefault: true })
|
|
133
273
|
.description("list the repositories set up for Ditto Review")
|
|
@@ -135,6 +275,27 @@ export function registerReviewCommands(program, addExamples, outputOption, orgOp
|
|
|
135
275
|
.addOption(outputOption())
|
|
136
276
|
.action(cmdReviewRepos), ` heyditto review repos --org omni-aura
|
|
137
277
|
heyditto review repos --output json`);
|
|
278
|
+
const scoped = (command) => command.addOption(orgOption()).addOption(outputOption());
|
|
279
|
+
const watched = (command) => command
|
|
280
|
+
.option("--interval <seconds>", "poll interval (1-60 seconds)", "10")
|
|
281
|
+
.option("--timeout <seconds>", "stop waiting after this many seconds (review continues)", "3600");
|
|
282
|
+
scoped(review.command("runs").description("list recent review runs in this workspace")
|
|
283
|
+
.argument("[repository]", "filter by owner/name")).action(cmdReviewRuns);
|
|
284
|
+
scoped(review.command("pulls").description("list open pull requests available to review")
|
|
285
|
+
.argument("<repository>", "owner/name")).action(cmdReviewPulls);
|
|
286
|
+
addExamples(watched(scoped(review.command("start").description("request a review of the current PR head (uses the repository's budget; re-reviews cost a new attempt)")
|
|
287
|
+
.argument("<repository>", "owner/name").argument("<pr-number>", "open pull request number")
|
|
288
|
+
.option("--watch", "follow the requested run until it finishes"))).action(cmdReviewStart), ` heyditto review start ditto-assistant/console 88 --org omniaura --watch`);
|
|
289
|
+
scoped(review.command("status").description("show run status; JSON includes results and prior attempts")
|
|
290
|
+
.argument("<run-id>", "review run UUID")).action(cmdReviewStatus);
|
|
291
|
+
watched(scoped(review.command("watch").description("follow a review until it finishes; does not start or retry it")
|
|
292
|
+
.argument("<run-id>", "review run UUID"))).action(cmdReviewWatch);
|
|
293
|
+
for (const action of ["retry", "cancel"]) {
|
|
294
|
+
scoped(review.command(action).description(action === "retry"
|
|
295
|
+
? "retry an eligible run (may spend a new budget; publication retries reuse stored results)"
|
|
296
|
+
: "request cancellation of a queued/running review or its CI watch")
|
|
297
|
+
.argument("<run-id>", "review run UUID")).action((id, options) => cmdReviewAction(id, action, options));
|
|
298
|
+
}
|
|
138
299
|
addExamples(review
|
|
139
300
|
.command("set")
|
|
140
301
|
.description("change a repository's review settings (the rest are kept as saved)")
|
|
@@ -146,5 +307,6 @@ export function registerReviewCommands(program, addExamples, outputOption, orgOp
|
|
|
146
307
|
.addOption(outputOption())
|
|
147
308
|
.action(cmdReviewSet), ` heyditto review set ditto-assistant/console --max-minutes 20 --org omni-aura
|
|
148
309
|
heyditto review set acme/api --budget-cents 300 --enabled on`);
|
|
310
|
+
registerReviewFindingCommands(review, addExamples, outputOption, orgOption);
|
|
149
311
|
}
|
|
150
312
|
//# sourceMappingURL=review-commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-commands.js","sourceRoot":"","sources":["../src/review-commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"review-commands.js","sourceRoot":"","sources":["../src/review-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import type { Command, Option } from "commander";
|
|
2
|
+
import { type Company } from "./api.js";
|
|
3
|
+
/**
|
|
4
|
+
* Ditto Review findings from the shell (DITTO-178): list a pull request's
|
|
5
|
+
* findings, dismiss or undismiss one, and give feedback on one. Every action
|
|
6
|
+
* goes through the same backend routes the developer console uses, so it is
|
|
7
|
+
* recorded as the same learning signal (review_finding_feedback,
|
|
8
|
+
* review_finding_dismissals) and a dismissal replies on the GitHub thread and
|
|
9
|
+
* resolves it exactly as a console dismissal does.
|
|
10
|
+
*
|
|
11
|
+
* A finding is addressed the way a person meets it: by the GitHub
|
|
12
|
+
* review-comment URL (`…/pull/12#discussion_r4167148147`), by `<run-id>:<finding-id>`,
|
|
13
|
+
* or by a bare finding id together with `--pr`.
|
|
14
|
+
*/
|
|
15
|
+
/** One finding as `GET /api/v5/review/runs/{id}` returns it (the fields the CLI shows). */
|
|
16
|
+
export interface ReviewFinding {
|
|
17
|
+
id: string;
|
|
18
|
+
path: string;
|
|
19
|
+
line: number;
|
|
20
|
+
startLine?: number;
|
|
21
|
+
severity: string;
|
|
22
|
+
category?: string;
|
|
23
|
+
title?: string;
|
|
24
|
+
status?: string;
|
|
25
|
+
withheldReason?: string;
|
|
26
|
+
confidence?: number;
|
|
27
|
+
commentUrl?: string;
|
|
28
|
+
dismissed?: boolean;
|
|
29
|
+
dismissReason?: string;
|
|
30
|
+
feedback?: {
|
|
31
|
+
mine?: string | null;
|
|
32
|
+
};
|
|
33
|
+
canFeedback?: boolean;
|
|
34
|
+
canDismiss?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface ReviewRunDetail {
|
|
37
|
+
run: {
|
|
38
|
+
id: string;
|
|
39
|
+
prNumber: number;
|
|
40
|
+
headSha: string;
|
|
41
|
+
status: string;
|
|
42
|
+
reviewUrl?: string;
|
|
43
|
+
prTitle?: string;
|
|
44
|
+
createdAt?: string;
|
|
45
|
+
};
|
|
46
|
+
result: {
|
|
47
|
+
findings: ReviewFinding[];
|
|
48
|
+
};
|
|
49
|
+
repository: {
|
|
50
|
+
id: string;
|
|
51
|
+
fullName: string;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export interface ReviewDismissResponse {
|
|
55
|
+
runId: string;
|
|
56
|
+
findingId: string;
|
|
57
|
+
githubStatus: string;
|
|
58
|
+
githubReason?: string;
|
|
59
|
+
replyUrl?: string;
|
|
60
|
+
alreadyDismissed: boolean;
|
|
61
|
+
githubUpdated: boolean;
|
|
62
|
+
threadResolved: boolean;
|
|
63
|
+
markerConflict?: {
|
|
64
|
+
message: string;
|
|
65
|
+
findingIds: string[];
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export interface ReviewUndismissResponse {
|
|
69
|
+
runId: string;
|
|
70
|
+
findingId: string;
|
|
71
|
+
wasDismissed: boolean;
|
|
72
|
+
dismissed: boolean;
|
|
73
|
+
githubNote: string;
|
|
74
|
+
githubReplyUrl?: string;
|
|
75
|
+
}
|
|
76
|
+
export interface ReviewFeedbackResponse {
|
|
77
|
+
runId: string;
|
|
78
|
+
findingId: string;
|
|
79
|
+
attempt: number;
|
|
80
|
+
feedback?: {
|
|
81
|
+
mine?: string | null;
|
|
82
|
+
counts?: Record<string, number>;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
export declare const FEEDBACK_VERDICTS: readonly ["useful", "wrong", "not_useful"];
|
|
86
|
+
export type FeedbackVerdict = (typeof FEEDBACK_VERDICTS)[number];
|
|
87
|
+
interface ScopeOptions {
|
|
88
|
+
org?: string;
|
|
89
|
+
output?: string;
|
|
90
|
+
}
|
|
91
|
+
interface FindingsOptions extends ScopeOptions {
|
|
92
|
+
all?: boolean;
|
|
93
|
+
}
|
|
94
|
+
interface FindingOptions extends ScopeOptions {
|
|
95
|
+
pr?: string;
|
|
96
|
+
}
|
|
97
|
+
interface DismissOptions extends FindingOptions {
|
|
98
|
+
reason?: string;
|
|
99
|
+
}
|
|
100
|
+
interface FeedbackOptions extends FindingOptions {
|
|
101
|
+
note?: string;
|
|
102
|
+
}
|
|
103
|
+
/** A pull request named by URL or `owner/name#N`. */
|
|
104
|
+
export interface PullRef {
|
|
105
|
+
fullName: string;
|
|
106
|
+
number: number;
|
|
107
|
+
/** The GitHub review-comment id from a `#discussion_r<id>` fragment. */
|
|
108
|
+
commentId?: string;
|
|
109
|
+
}
|
|
110
|
+
/** What a `<finding>` argument named. */
|
|
111
|
+
export type FindingRef = {
|
|
112
|
+
kind: "comment";
|
|
113
|
+
pull: PullRef;
|
|
114
|
+
commentId: string;
|
|
115
|
+
} | {
|
|
116
|
+
kind: "direct";
|
|
117
|
+
runId: string;
|
|
118
|
+
findingId: string;
|
|
119
|
+
} | {
|
|
120
|
+
kind: "id";
|
|
121
|
+
findingId: string;
|
|
122
|
+
};
|
|
123
|
+
/** Parses a pull request reference: a GitHub PR URL (with or without a review-comment fragment) or `owner/name#N`. */
|
|
124
|
+
export declare function parsePullRef(text: string): PullRef | undefined;
|
|
125
|
+
/** Parses a `<finding>` argument. */
|
|
126
|
+
export declare function parseFindingRef(text: string): FindingRef;
|
|
127
|
+
/**
|
|
128
|
+
* The PR's newest run and the workspace it was found in. With --org (or a
|
|
129
|
+
* stored default) only that workspace is asked; otherwise the personal
|
|
130
|
+
* workspace and then every organization the key can see, because a GitHub
|
|
131
|
+
* URL already names the repository and nobody wants to look up which
|
|
132
|
+
* organization reviews it.
|
|
133
|
+
*/
|
|
134
|
+
export declare function findLatestRun(options: ScopeOptions, pull: PullRef): Promise<{
|
|
135
|
+
company: Company | undefined;
|
|
136
|
+
detail: ReviewRunDetail;
|
|
137
|
+
}>;
|
|
138
|
+
/** The run and finding a `<finding>` argument names, with the workspace to act in. */
|
|
139
|
+
export declare function resolveFinding(text: string, options: FindingOptions): Promise<{
|
|
140
|
+
company: Company | undefined;
|
|
141
|
+
runId: string;
|
|
142
|
+
finding: ReviewFinding;
|
|
143
|
+
detail?: ReviewRunDetail;
|
|
144
|
+
}>;
|
|
145
|
+
export declare function cmdReviewFindings(target: string, options: FindingsOptions): Promise<void>;
|
|
146
|
+
export declare function cmdReviewDismiss(target: string, options: DismissOptions): Promise<void>;
|
|
147
|
+
export declare function cmdReviewUndismiss(target: string, options: FindingOptions): Promise<void>;
|
|
148
|
+
export declare function cmdReviewFeedback(target: string, verdict: string, options: FeedbackOptions): Promise<void>;
|
|
149
|
+
export declare function registerReviewFindingCommands(review: Command, addExamples: (c: Command, ex: string) => Command, outputOption: () => Option, orgOption: () => Option): void;
|
|
150
|
+
export {};
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
import { ApiError, apiFetch, listCompanies, resolveCompany } from "./api.js";
|
|
2
|
+
import { readStoredAuth } from "./store.js";
|
|
3
|
+
export const FEEDBACK_VERDICTS = ["useful", "wrong", "not_useful"];
|
|
4
|
+
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
5
|
+
/** Parses a pull request reference: a GitHub PR URL (with or without a review-comment fragment) or `owner/name#N`. */
|
|
6
|
+
export function parsePullRef(text) {
|
|
7
|
+
const value = text.trim();
|
|
8
|
+
const url = value.match(/^https?:\/\/github\.com\/([^/\s]+)\/([^/\s#?]+)\/pull\/(\d+)(?:\/[^#?\s]*)?(?:\?[^#\s]*)?(?:#(.*))?$/i);
|
|
9
|
+
if (url) {
|
|
10
|
+
const fragment = url[4] ?? "";
|
|
11
|
+
const comment = fragment.match(/^discussion_r(\d+)$/) ?? fragment.match(/^r(\d+)$/);
|
|
12
|
+
return { fullName: `${url[1]}/${url[2]}`, number: Number(url[3]), commentId: comment?.[1] };
|
|
13
|
+
}
|
|
14
|
+
const short = value.match(/^([\w.-]+\/[\w.-]+)#(\d+)$/);
|
|
15
|
+
if (short)
|
|
16
|
+
return { fullName: short[1], number: Number(short[2]) };
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
/** Parses a `<finding>` argument. */
|
|
20
|
+
export function parseFindingRef(text) {
|
|
21
|
+
const value = text.trim();
|
|
22
|
+
const pull = parsePullRef(value);
|
|
23
|
+
if (pull) {
|
|
24
|
+
if (!pull.commentId) {
|
|
25
|
+
throw new Error(`${value} names a pull request, not a finding. Pass the review comment's URL (…#discussion_r<id>), or a finding id with --pr ${pull.fullName}#${pull.number}.`);
|
|
26
|
+
}
|
|
27
|
+
return { kind: "comment", pull, commentId: pull.commentId };
|
|
28
|
+
}
|
|
29
|
+
const direct = value.match(/^([0-9a-f-]{36})[:/](\S+)$/i);
|
|
30
|
+
if (direct && UUID.test(direct[1]))
|
|
31
|
+
return { kind: "direct", runId: direct[1].toLowerCase(), findingId: direct[2] };
|
|
32
|
+
if (!value || /\s/.test(value))
|
|
33
|
+
throw new Error(`"${value}" is not a finding: pass a review comment URL, <run-id>:<finding-id>, or a finding id with --pr`);
|
|
34
|
+
return { kind: "id", findingId: value };
|
|
35
|
+
}
|
|
36
|
+
function isJSON(options) {
|
|
37
|
+
return options.output === "json" || options.output === "raw";
|
|
38
|
+
}
|
|
39
|
+
function scopeQuery(company) {
|
|
40
|
+
return company ? `?company=${encodeURIComponent(company.id)}` : "";
|
|
41
|
+
}
|
|
42
|
+
function scopeSuffix(company) {
|
|
43
|
+
return company ? `&company=${encodeURIComponent(company.id)}` : "";
|
|
44
|
+
}
|
|
45
|
+
/** The workspace named by --org or the stored default; undefined means "not chosen" (not "personal"). */
|
|
46
|
+
async function chosenScope(options) {
|
|
47
|
+
const wanted = options.org?.trim() || (await readStoredAuth())?.defaultCompany;
|
|
48
|
+
if (!wanted)
|
|
49
|
+
return undefined;
|
|
50
|
+
return resolveCompany(wanted);
|
|
51
|
+
}
|
|
52
|
+
/** The run detail of a PR's newest run in one workspace; undefined on 404. */
|
|
53
|
+
async function latestRunIn(company, pull) {
|
|
54
|
+
try {
|
|
55
|
+
return await apiFetch(`/api/v5/review/runs/latest?repository=${encodeURIComponent(pull.fullName)}&pr=${pull.number}${scopeSuffix(company)}`);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
if (error instanceof ApiError && error.status === 404)
|
|
59
|
+
return undefined;
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The PR's newest run and the workspace it was found in. With --org (or a
|
|
65
|
+
* stored default) only that workspace is asked; otherwise the personal
|
|
66
|
+
* workspace and then every organization the key can see, because a GitHub
|
|
67
|
+
* URL already names the repository and nobody wants to look up which
|
|
68
|
+
* organization reviews it.
|
|
69
|
+
*/
|
|
70
|
+
export async function findLatestRun(options, pull) {
|
|
71
|
+
const chosen = await chosenScope(options);
|
|
72
|
+
if (chosen || options.org) {
|
|
73
|
+
const detail = await latestRunIn(chosen, pull);
|
|
74
|
+
if (!detail)
|
|
75
|
+
throw new Error(`Ditto Review has no run for ${pull.fullName}#${pull.number} in ${chosen?.slug ?? "your personal workspace"}.`);
|
|
76
|
+
return { company: chosen, detail };
|
|
77
|
+
}
|
|
78
|
+
const tried = [];
|
|
79
|
+
const personal = await latestRunIn(undefined, pull);
|
|
80
|
+
if (personal)
|
|
81
|
+
return { company: undefined, detail: personal };
|
|
82
|
+
tried.push("your personal workspace");
|
|
83
|
+
for (const company of await listCompanies()) {
|
|
84
|
+
const detail = await latestRunIn(company, pull);
|
|
85
|
+
if (detail)
|
|
86
|
+
return { company, detail };
|
|
87
|
+
tried.push(company.slug);
|
|
88
|
+
}
|
|
89
|
+
throw new Error(`Ditto Review has no run for ${pull.fullName}#${pull.number} in ${tried.join(", ")}. Is the repository set up for Ditto Review (heyditto review repos --org <org>)?`);
|
|
90
|
+
}
|
|
91
|
+
/** The run and finding a `<finding>` argument names, with the workspace to act in. */
|
|
92
|
+
export async function resolveFinding(text, options) {
|
|
93
|
+
const ref = parseFindingRef(text);
|
|
94
|
+
if (ref.kind === "direct") {
|
|
95
|
+
const company = await chosenScope(options);
|
|
96
|
+
const detail = await apiFetch(`/api/v5/review/runs/${encodeURIComponent(ref.runId)}${scopeQuery(company)}`);
|
|
97
|
+
const finding = detail.result.findings.find((f) => f.id === ref.findingId);
|
|
98
|
+
if (!finding)
|
|
99
|
+
throw new Error(`run ${ref.runId} has no finding ${ref.findingId}. Findings: ${detail.result.findings.map((f) => f.id).join(", ") || "none"}`);
|
|
100
|
+
return { company, runId: detail.run.id, finding, detail };
|
|
101
|
+
}
|
|
102
|
+
let pull;
|
|
103
|
+
if (ref.kind === "comment")
|
|
104
|
+
pull = ref.pull;
|
|
105
|
+
else {
|
|
106
|
+
if (!options.pr)
|
|
107
|
+
throw new Error(`a bare finding id needs --pr <pull-request url or owner/name#N>, or pass the review comment's URL instead`);
|
|
108
|
+
pull = parsePullRef(options.pr);
|
|
109
|
+
if (!pull)
|
|
110
|
+
throw new Error(`--pr ${options.pr} is not a pull request URL or owner/name#N`);
|
|
111
|
+
}
|
|
112
|
+
const { company, detail } = await findLatestRun(options, pull);
|
|
113
|
+
const finding = ref.kind === "comment"
|
|
114
|
+
? detail.result.findings.find((f) => f.commentUrl?.endsWith(`discussion_r${ref.commentId}`))
|
|
115
|
+
: detail.result.findings.find((f) => f.id === ref.findingId);
|
|
116
|
+
if (!finding) {
|
|
117
|
+
const what = ref.kind === "comment" ? `the review comment discussion_r${ref.commentId}` : `finding ${ref.findingId}`;
|
|
118
|
+
throw new Error(`${what} is not in the newest Ditto Review run of ${pull.fullName}#${pull.number} (run ${detail.run.id}, head ${detail.run.headSha.slice(0, 8)}). ` +
|
|
119
|
+
`List it with: heyditto review findings ${pull.fullName}#${pull.number}`);
|
|
120
|
+
}
|
|
121
|
+
return { company, runId: detail.run.id, finding, detail };
|
|
122
|
+
}
|
|
123
|
+
function short(value, width) {
|
|
124
|
+
if (!value)
|
|
125
|
+
return "";
|
|
126
|
+
return value.length > width ? `${value.slice(0, width - 1)}…` : value;
|
|
127
|
+
}
|
|
128
|
+
function findingState(f) {
|
|
129
|
+
if (f.dismissed)
|
|
130
|
+
return "dismissed";
|
|
131
|
+
if (f.status === "withheld")
|
|
132
|
+
return f.withheldReason ? `held (${f.withheldReason})` : "held";
|
|
133
|
+
return f.status || "";
|
|
134
|
+
}
|
|
135
|
+
function table(header, rows) {
|
|
136
|
+
const widths = header.map((h, i) => Math.max(h.length, ...rows.map((row) => row[i].length)));
|
|
137
|
+
for (const row of [header, ...rows]) {
|
|
138
|
+
process.stdout.write(`${row.map((c, i) => (i === row.length - 1 ? c : c.padEnd(widths[i]))).join(" ")}\n`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
export async function cmdReviewFindings(target, options) {
|
|
142
|
+
const value = target.trim();
|
|
143
|
+
let detail;
|
|
144
|
+
let company;
|
|
145
|
+
if (UUID.test(value)) {
|
|
146
|
+
company = await chosenScope(options);
|
|
147
|
+
detail = await apiFetch(`/api/v5/review/runs/${encodeURIComponent(value.toLowerCase())}${scopeQuery(company)}`);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
const pull = parsePullRef(value);
|
|
151
|
+
if (!pull)
|
|
152
|
+
throw new Error(`${value} is not a pull request URL, owner/name#N, or a run id`);
|
|
153
|
+
({ company, detail } = await findLatestRun(options, pull));
|
|
154
|
+
}
|
|
155
|
+
const findings = options.all ? detail.result.findings : detail.result.findings.filter((f) => !f.dismissed);
|
|
156
|
+
if (isJSON(options)) {
|
|
157
|
+
process.stdout.write(`${JSON.stringify({ company: company?.slug, run: detail.run, repository: detail.repository, findings }, null, 2)}\n`);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const run = detail.run;
|
|
161
|
+
process.stdout.write(`${detail.repository.fullName}#${run.prNumber}${run.prTitle ? ` ${run.prTitle}` : ""}\nrun ${run.id} · head ${run.headSha.slice(0, 8)} · ${run.status}${run.reviewUrl ? ` · ${run.reviewUrl}` : ""}\n\n`);
|
|
162
|
+
if (findings.length === 0) {
|
|
163
|
+
process.stdout.write(options.all ? "No findings.\n" : "No open findings (pass --all to include dismissed ones).\n");
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
table(["FINDING", "SEV", "CONF", "STATE", "MINE", "WHERE", "TITLE"], findings.map((f) => [
|
|
167
|
+
f.id,
|
|
168
|
+
f.severity,
|
|
169
|
+
f.confidence ? `${f.confidence}%` : "",
|
|
170
|
+
findingState(f),
|
|
171
|
+
f.feedback?.mine ?? "",
|
|
172
|
+
`${f.path}:${f.line}`,
|
|
173
|
+
short(f.title, 70),
|
|
174
|
+
]));
|
|
175
|
+
const withComments = findings.filter((f) => f.commentUrl);
|
|
176
|
+
if (withComments.length > 0) {
|
|
177
|
+
process.stdout.write("\nOn GitHub:\n");
|
|
178
|
+
for (const f of withComments)
|
|
179
|
+
process.stdout.write(` ${f.id} ${f.commentUrl}\n`);
|
|
180
|
+
}
|
|
181
|
+
process.stdout.write(`\nAct on one: heyditto review dismiss <comment-url|${run.id.slice(0, 8)}…:<finding>> --reason "…" · heyditto review feedback <finding> useful|wrong|not_useful\n`);
|
|
182
|
+
}
|
|
183
|
+
export async function cmdReviewDismiss(target, options) {
|
|
184
|
+
const reason = options.reason?.trim() ?? "";
|
|
185
|
+
if (!reason)
|
|
186
|
+
throw new Error('--reason is required: say why this finding does not apply (it is posted on the GitHub thread and kept as a team decision)');
|
|
187
|
+
if (reason.length > 1000)
|
|
188
|
+
throw new Error("--reason must be at most 1000 characters");
|
|
189
|
+
const { company, runId, finding } = await resolveFinding(target, options);
|
|
190
|
+
const out = await apiFetch(`/api/v5/review/runs/${encodeURIComponent(runId)}/findings/${encodeURIComponent(finding.id)}/dismiss${scopeQuery(company)}`, { method: "POST", body: { reason } });
|
|
191
|
+
if (isJSON(options)) {
|
|
192
|
+
process.stdout.write(`${JSON.stringify(out, null, 2)}\n`);
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
const lines = [`${out.alreadyDismissed ? "Already dismissed" : "Dismissed"} ${finding.id} (${finding.severity}, ${finding.path}:${finding.line})${finding.title ? `: ${finding.title}` : ""}`];
|
|
196
|
+
switch (out.githubStatus) {
|
|
197
|
+
case "updated":
|
|
198
|
+
lines.push(` GitHub: replied and resolved the thread${out.replyUrl ? ` — ${out.replyUrl}` : ""}`);
|
|
199
|
+
break;
|
|
200
|
+
case "no_thread":
|
|
201
|
+
lines.push(" GitHub: nothing to update (the finding has no review thread)");
|
|
202
|
+
break;
|
|
203
|
+
case "pending":
|
|
204
|
+
lines.push(" GitHub: reply and resolve still running; check the thread in a minute");
|
|
205
|
+
break;
|
|
206
|
+
case "marker_conflict":
|
|
207
|
+
lines.push(" GitHub: thread left open because another, different issue shares it");
|
|
208
|
+
break;
|
|
209
|
+
default:
|
|
210
|
+
lines.push(` GitHub: ${out.githubStatus}${out.githubReason ? ` — ${out.githubReason}` : ""} (run the command again to retry)`);
|
|
211
|
+
}
|
|
212
|
+
if (out.markerConflict)
|
|
213
|
+
lines.push(` Note: ${out.markerConflict.message}`);
|
|
214
|
+
lines.push(` Undo: heyditto review undismiss ${runId}:${finding.id}${company ? ` --org ${company.slug}` : ""}`);
|
|
215
|
+
process.stdout.write(`${lines.join("\n")}\n`);
|
|
216
|
+
}
|
|
217
|
+
export async function cmdReviewUndismiss(target, options) {
|
|
218
|
+
const { company, runId, finding } = await resolveFinding(target, options);
|
|
219
|
+
const out = await apiFetch(`/api/v5/review/runs/${encodeURIComponent(runId)}/findings/${encodeURIComponent(finding.id)}/dismiss${scopeQuery(company)}`, { method: "DELETE" });
|
|
220
|
+
if (isJSON(options)) {
|
|
221
|
+
process.stdout.write(`${JSON.stringify(out, null, 2)}\n`);
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
process.stdout.write(`${out.wasDismissed ? "Undismissed" : "Not dismissed"} ${finding.id} (${finding.path}:${finding.line}).\n ${out.githubNote}\n`);
|
|
225
|
+
}
|
|
226
|
+
export async function cmdReviewFeedback(target, verdict, options) {
|
|
227
|
+
const v = verdict.trim().toLowerCase().replace("-", "_");
|
|
228
|
+
if (!FEEDBACK_VERDICTS.includes(v))
|
|
229
|
+
throw new Error(`verdict must be one of ${FEEDBACK_VERDICTS.join(", ")}`);
|
|
230
|
+
const note = options.note?.trim() ?? "";
|
|
231
|
+
if (note.length > 1000)
|
|
232
|
+
throw new Error("--note must be at most 1000 characters");
|
|
233
|
+
const { company, runId, finding } = await resolveFinding(target, options);
|
|
234
|
+
const out = await apiFetch(`/api/v5/review/runs/${encodeURIComponent(runId)}/findings/${encodeURIComponent(finding.id)}/feedback${scopeQuery(company)}`, { method: "POST", body: { verdict: v, note } });
|
|
235
|
+
if (isJSON(options)) {
|
|
236
|
+
process.stdout.write(`${JSON.stringify(out, null, 2)}\n`);
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
process.stdout.write(`Recorded "${v}" on ${finding.id} (${finding.path}:${finding.line})${finding.title ? `: ${finding.title}` : ""}${note ? `\n note: ${note}` : ""}\n`);
|
|
240
|
+
}
|
|
241
|
+
export function registerReviewFindingCommands(review, addExamples, outputOption, orgOption) {
|
|
242
|
+
addExamples(review
|
|
243
|
+
.command("findings")
|
|
244
|
+
.description("list a pull request's Ditto Review findings (its newest run), or a run's by id")
|
|
245
|
+
.argument("<pull-request|run-id>", "GitHub PR URL, owner/name#N, or a run id")
|
|
246
|
+
.option("--all", "include dismissed findings")
|
|
247
|
+
.addOption(orgOption())
|
|
248
|
+
.addOption(outputOption())
|
|
249
|
+
.action(cmdReviewFindings), ` heyditto review findings https://github.com/ditto-assistant/backend/pull/3158
|
|
250
|
+
heyditto review findings ditto-assistant/ditto-app#3163 --all --output json`);
|
|
251
|
+
addExamples(review
|
|
252
|
+
.command("dismiss")
|
|
253
|
+
.description("dismiss a finding with a reason (managers): replies on its GitHub thread, resolves it, and keeps the same issue off this PR")
|
|
254
|
+
.argument("<finding>", "review comment URL (…#discussion_r<id>), <run-id>:<finding-id>, or a finding id with --pr")
|
|
255
|
+
.requiredOption("--reason <text>", "why it does not apply; posted on GitHub and kept as a team decision")
|
|
256
|
+
.option("--pr <pull-request>", "the PR a bare finding id belongs to (URL or owner/name#N)")
|
|
257
|
+
.addOption(orgOption())
|
|
258
|
+
.addOption(outputOption())
|
|
259
|
+
.action(cmdReviewDismiss), ` heyditto review dismiss "https://github.com/ditto-assistant/backend/pull/3112#discussion_r4171976544" --reason "Retrying with different arguments is the documented design (trace_test.go:106-115)."
|
|
260
|
+
heyditto review dismiss f_6eb378e97faaaf48 --pr ditto-assistant/backend#3112 --reason "Theoretical: tool arguments never carry integers above 2^53."`);
|
|
261
|
+
addExamples(review
|
|
262
|
+
.command("undismiss")
|
|
263
|
+
.description("undo a dismissal (managers); the GitHub thread stays as it is")
|
|
264
|
+
.argument("<finding>", "review comment URL, <run-id>:<finding-id>, or a finding id with --pr")
|
|
265
|
+
.option("--pr <pull-request>", "the PR a bare finding id belongs to (URL or owner/name#N)")
|
|
266
|
+
.addOption(orgOption())
|
|
267
|
+
.addOption(outputOption())
|
|
268
|
+
.action(cmdReviewUndismiss), ` heyditto review undismiss "https://github.com/ditto-assistant/backend/pull/3112#discussion_r4171976544"`);
|
|
269
|
+
addExamples(review
|
|
270
|
+
.command("feedback")
|
|
271
|
+
.description("say whether a finding was useful, wrong or not useful (any workspace member)")
|
|
272
|
+
.argument("<finding>", "review comment URL, <run-id>:<finding-id>, or a finding id with --pr")
|
|
273
|
+
.argument("<verdict>", FEEDBACK_VERDICTS.join("|"))
|
|
274
|
+
.option("--note <text>", "what was wrong or missing (up to 1000 characters)")
|
|
275
|
+
.option("--pr <pull-request>", "the PR a bare finding id belongs to (URL or owner/name#N)")
|
|
276
|
+
.addOption(orgOption())
|
|
277
|
+
.addOption(outputOption())
|
|
278
|
+
.action(cmdReviewFeedback), ` heyditto review feedback "https://github.com/ditto-assistant/ditto-app/pull/3161#discussion_r4167262944" useful
|
|
279
|
+
heyditto review feedback f_0a073e36dfb26698 --pr ditto-assistant/backend#3112 wrong --note "The retry test covers different arguments."`);
|
|
280
|
+
}
|
|
281
|
+
//# sourceMappingURL=review-findings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-findings.js","sourceRoot":"","sources":["../src/review-findings.ts"],"names":[],"mappings":"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"}
|