@heyditto/cli 2.21.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 +35 -0
- package/dist/review-commands.js +2 -0
- 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
|
@@ -686,6 +686,41 @@ List your Ditto agents (`GET /api/v5/chat-agents`): id, kind (`main`, `chat`,
|
|
|
686
686
|
`inference_endpoint`, `mcp`, `connector`), name, thread count, last activity and
|
|
687
687
|
the live connections (API keys, OAuth grants, endpoints) writing into each.
|
|
688
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
|
+
|
|
689
724
|
## Remote Control
|
|
690
725
|
|
|
691
726
|
Every `heyditto claude` / `heyditto codex` session is reachable from the Ditto
|
package/dist/review-commands.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { setTimeout as delay } from "node:timers/promises";
|
|
2
2
|
import { apiFetch, resolveCompany } from "./api.js";
|
|
3
|
+
import { registerReviewFindingCommands } from "./review-findings.js";
|
|
3
4
|
import { readStoredAuth } from "./store.js";
|
|
4
5
|
/** The server's bounds (backend reviewLimits). */
|
|
5
6
|
const MIN_MAX_MINUTES = 5;
|
|
@@ -306,5 +307,6 @@ export function registerReviewCommands(program, addExamples, outputOption, orgOp
|
|
|
306
307
|
.addOption(outputOption())
|
|
307
308
|
.action(cmdReviewSet), ` heyditto review set ditto-assistant/console --max-minutes 20 --org omni-aura
|
|
308
309
|
heyditto review set acme/api --budget-cents 300 --enabled on`);
|
|
310
|
+
registerReviewFindingCommands(review, addExamples, outputOption, orgOption);
|
|
309
311
|
}
|
|
310
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":"AAAA,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAgB,cAAc,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAsD5C,kDAAkD;AAClD,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEhC,SAAS,MAAM,CAAC,OAA4B;IAC1C,OAAO,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAqB;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,cAAc,EAAE,CAAC,EAAE,cAAc,CAAC;IAC/E,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,UAAU,CAAC,OAA4B;IAC9C,OAAO,OAAO,CAAC,CAAC,CAAC,YAAY,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAA4B;IACvE,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAwC,iBAAiB,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1G,OAAO,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;AAChC,CAAC;AAmCD,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;AACnH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;AAE5E,SAAS,OAAO,CAAC,EAAU;IACzB,IAAI,CAAC,iEAAiE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,uBAAuB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,QAAgB,EAAE,OAA4B;IAChF,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3F,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,wFAAwF,CAAC,CAAC;IAChI,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,QAAQ,CAAC,MAAoB,EAAE,OAAqB;IAC3D,IAAI,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;IACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3I,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,SAAS;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC;IAClE,IAAI,CAAC,CAAC,OAAO;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,IAAI,CAAC,CAAC,KAAK;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAA4B,EAAE,OAAqB;IACrF,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAa,iBAAiB,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/E,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IAC1B,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACtG,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,kCAAkC,CAAC,CAAC;QAC1E,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACrF,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChK,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,OAAqB;IAC1E,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,QAAQ,CACxB,+BAA+B,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,CACzF,CAAC;IACF,IAAI,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;IAC5F,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACxH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAAU,EAAE,OAAqB;IACrE,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,QAAQ,CAAC,MAAM,QAAQ,CAAe,GAAG,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,WAAW,CAAC,OAAqB;IACxC,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI;QACzE,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI;KAC5E,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,EAAU,EAAE,OAA4B,EAAE,OAAqB;IACxF,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1B,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAC/C,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,SAAS,CAAC;QACR,MAAM,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC/C,IAAI,SAAS,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,EAAE,sCAAsC,CAAC,CAAC;QAC9G,IAAI,MAAoB,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,QAAQ,CAAe,GAAG,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;QACjI,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,WAAW,CAAC,GAAG,EAAE,IAAI,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,EAAE,sCAAsC,CAAC,CAAC;YAC7H,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QACjC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC;YAClD,KAAK,GAAG,MAAM,CAAC;QACjB,CAAC;QACD,IAAI,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACzC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC1B,IAAI,MAAM,KAAK,QAAQ;gBAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QACD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;QAC7F,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EAAU,EAAE,OAAqB;IACpE,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,WAAW,CAAC,OAAO,CAAC,CAAC;IACrB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,QAAgB,EAAE,OAAqB;IAC5F,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;IAChE,IAAI,OAAO,CAAC,KAAK;QAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,QAAQ,CACxB,+BAA+B,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,MAAM,UAAU,UAAU,CAAC,OAAO,CAAC,EAAE,EACzG,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB,CAAC;IACF,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,QAAQ,KAAK,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QACzF,IAAI,GAAG,CAAC,eAAe;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qGAAqG,CAAC,CAAC;QACrJ,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,KAAK,MAAM,KAAK,GAAG,CAAC,MAAM,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;IACxF,IAAI,GAAG,CAAC,eAAe;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;AAClH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAAU,EAAE,MAA0B,EAAE,OAAqB;IACjG,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,QAAQ,CACxB,GAAG,KAAK,IAAI,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAC/D,CAAC;IACF,IAAI,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACnN,CAAC;AAED,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAqB;IACxD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9E,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9G,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC5B,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;QACxB,GAAG,CAAC,CAAC,UAAU,MAAM;QACrB,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;QACpB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,OAAO;KACV,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9F,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/G,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,qBAAqB,CAAC,IAAsB;IAC1D,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,QAAQ;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;QACnC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,EAAE;QAC7C,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;KACxC,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW,EAAE,GAAW;IACpE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,gCAAgC,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;IACxH,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,OAAmB;IACtE,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,UAAU,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IAC1I,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACjI,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC1G,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3F,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,GAAG,QAAQ,kCAAkC,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,2CAA2C,GAAG;YAC3H,CAAC,KAAK,CAAC,CAAC,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACnD,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAmB,8BAA8B,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE;QAClG,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE;KACrD,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,EAAsB,CAAC;IAC1D,MAAM,KAAK,GAAG,CAAC,SAAS,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC1C,IAAI,YAAY,IAAI,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC,UAAU,MAAM,CAAC,CAAC;IACtG,IAAI,aAAa,IAAI,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACnH,IAAI,SAAS,IAAI,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACvH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAgB,EAChB,WAAgD,EAChD,YAA0B,EAC1B,SAAuB;IAEvB,MAAM,MAAM,GAAG,OAAO;SACnB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,sDAAsD,CAAC;SACnE,OAAO,CAAC,gCAAgC,CAAC,CAAC;IAC7C,WAAW,CACT,MAAM;SACH,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SACrC,WAAW,CAAC,+CAA+C,CAAC;SAC5D,SAAS,CAAC,SAAS,EAAE,CAAC;SACtB,SAAS,CAAC,YAAY,EAAE,CAAC;SACzB,MAAM,CAAC,cAAc,CAAC,EACzB;sCACkC,CACnC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;IACvG,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAW,EAAE,CAAC,OAAO;SACnD,MAAM,CAAC,sBAAsB,EAAE,8BAA8B,EAAE,IAAI,CAAC;SACpE,MAAM,CAAC,qBAAqB,EAAE,yDAAyD,EAAE,MAAM,CAAC,CAAC;IACpG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,2CAA2C,CAAC;SACnF,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC3E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,6CAA6C,CAAC;SACtF,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAClE,WAAW,CACT,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,uGAAuG,CAAC;SACxJ,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC;SAC1F,MAAM,CAAC,SAAS,EAAE,4CAA4C,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,EAC3F,2EAA2E,CAC5E,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,2DAA2D,CAAC;SACrG,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACpE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,+DAA+D,CAAC;SAChH,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACpE,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAU,EAAE,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,OAAO;YAC1D,CAAC,CAAC,0FAA0F;YAC5F,CAAC,CAAC,iEAAiE,CAAC;aACnE,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAU,EAAE,OAAqB,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAClI,CAAC;IACD,WAAW,CACT,MAAM;SACH,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,oEAAoE,CAAC;SACjF,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC;SACtC,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,eAAe,IAAI,eAAe,GAAG,CAAC;SAC/F,MAAM,CAAC,oBAAoB,EAAE,+CAA+C,CAAC;SAC7E,MAAM,CAAC,oBAAoB,EAAE,wCAAwC,CAAC;SACtE,SAAS,CAAC,SAAS,EAAE,CAAC;SACtB,SAAS,CAAC,YAAY,EAAE,CAAC;SACzB,MAAM,CAAC,YAAY,CAAC,EACvB;+DAC2D,CAC5D,CAAC;IACF,6BAA6B,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -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":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAgB,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAqE5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAU,CAAC;AAsC5E,MAAM,IAAI,GAAG,iEAAiE,CAAC;AAE/E,sHAAsH;AACtH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,uGAAuG,CAAC,CAAC;IACjI,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpF,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACxD,IAAI,KAAK;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,uHAAuH,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAC/J,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAC9D,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC1D,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAE,EAAE,CAAC;IACvH,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iGAAiG,CAAC,CAAC;IAC5J,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,MAAM,CAAC,OAA4B;IAC1C,OAAO,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC;AAC/D,CAAC;AAED,SAAS,UAAU,CAAC,OAA4B;IAC9C,OAAO,OAAO,CAAC,CAAC,CAAC,YAAY,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,SAAS,WAAW,CAAC,OAA4B;IAC/C,OAAO,OAAO,CAAC,CAAC,CAAC,YAAY,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,yGAAyG;AACzG,KAAK,UAAU,WAAW,CAAC,OAAqB;IAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,cAAc,EAAE,CAAC,EAAE,cAAc,CAAC;IAC/E,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,8EAA8E;AAC9E,KAAK,UAAU,WAAW,CAAC,OAA4B,EAAE,IAAa;IACpE,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CACnB,yCAAyC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,CACtH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,SAAS,CAAC;QACxE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAqB,EAAE,IAAa;IACtE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,OAAO,MAAM,EAAE,IAAI,IAAI,yBAAyB,GAAG,CAAC,CAAC;QAC7I,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACpD,IAAI,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9D,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtC,KAAK,MAAM,OAAO,IAAI,MAAM,aAAa,EAAE,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,MAAM;YAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,IAAI,KAAK,CACb,+BAA+B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kFAAkF,CACrK,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,OAAuB;IAEvB,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAkB,uBAAuB,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7H,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3E,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,mBAAmB,GAAG,CAAC,SAAS,eAAe,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;QAC7J,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC5D,CAAC;IACD,IAAI,IAAyB,CAAC;IAC9B,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;SACvC,CAAC;QACJ,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,2GAA2G,CAAC,CAAC;QAC9I,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,OAAO,CAAC,EAAE,4CAA4C,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/D,MAAM,OAAO,GACX,GAAG,CAAC,IAAI,KAAK,SAAS;QACpB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,eAAe,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QAC5F,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;IACjE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,kCAAkC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,SAAS,EAAE,CAAC;QACrH,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,6CAA6C,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,SAAS,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK;YACjJ,0CAA0C,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAC3E,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC5D,CAAC;AAED,SAAS,KAAK,CAAC,KAAyB,EAAE,KAAa;IACrD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AACxE,CAAC;AAED,SAAS,YAAY,CAAC,CAAgB;IACpC,IAAI,CAAC,CAAC,SAAS;QAAE,OAAO,WAAW,CAAC;IACpC,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7F,OAAO,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,KAAK,CAAC,MAAgB,EAAE,IAAgB;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9F,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/G,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc,EAAE,OAAwB;IAC9E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,MAAuB,CAAC;IAC5B,IAAI,OAA4B,CAAC;IACjC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,GAAG,MAAM,QAAQ,CAAkB,uBAAuB,kBAAkB,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,uDAAuD,CAAC,CAAC;QAC5F,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3G,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3I,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CACzM,CAAC;IACF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,4DAA4D,CAAC,CAAC;QACpH,OAAO;IACT,CAAC;IACD,KAAK,CACH,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAC7D,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAClB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE;QACtC,YAAY,CAAC,CAAC,CAAC;QACf,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE;QACtB,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE;QACrB,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;KACnB,CAAC,CACH,CAAC;IACF,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC1D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACvC,KAAK,MAAM,CAAC,IAAI,YAAY;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sDAAsD,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,0FAA0F,CACnK,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAc,EAAE,OAAuB;IAC5E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5C,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,2HAA2H,CAAC,CAAC;IAC1J,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACtF,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,MAAM,QAAQ,CACxB,uBAAuB,kBAAkB,CAAC,KAAK,CAAC,aAAa,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,UAAU,CAAC,OAAO,CAAC,EAAE,EAC3H,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CACrC,CAAC;IACF,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/L,QAAQ,GAAG,CAAC,YAAY,EAAE,CAAC;QACzB,KAAK,SAAS;YACZ,KAAK,CAAC,IAAI,CAAC,4CAA4C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnG,MAAM;QACR,KAAK,WAAW;YACd,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;YAC7E,MAAM;QACR,KAAK,SAAS;YACZ,KAAK,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;YACtF,MAAM;QACR,KAAK,iBAAiB;YACpB,KAAK,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;YACpF,MAAM;QACR;YACE,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,mCAAmC,CAAC,CAAC;IACpI,CAAC;IACD,IAAI,GAAG,CAAC,cAAc;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,KAAK,CAAC,IAAI,CAAC,qCAAqC,KAAK,IAAI,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACjH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAc,EAAE,OAAuB;IAC9E,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,MAAM,QAAQ,CACxB,uBAAuB,kBAAkB,CAAC,KAAK,CAAC,aAAa,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,UAAU,CAAC,OAAO,CAAC,EAAE,EAC3H,EAAE,MAAM,EAAE,QAAQ,EAAE,CACrB,CAAC;IACF,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,IAAI,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,SAAS,GAAG,CAAC,UAAU,IAAI,CAChI,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc,EAAE,OAAe,EAAE,OAAwB;IAC/F,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAoB,CAAC;IAC5E,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9G,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAClF,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,MAAM,QAAQ,CACxB,uBAAuB,kBAAkB,CAAC,KAAK,CAAC,aAAa,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,UAAU,CAAC,OAAO,CAAC,EAAE,EAC5H,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAC/C,CAAC;IACF,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC7K,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,MAAe,EACf,WAAgD,EAChD,YAA0B,EAC1B,SAAuB;IAEvB,WAAW,CACT,MAAM;SACH,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,gFAAgF,CAAC;SAC7F,QAAQ,CAAC,uBAAuB,EAAE,0CAA0C,CAAC;SAC7E,MAAM,CAAC,OAAO,EAAE,4BAA4B,CAAC;SAC7C,SAAS,CAAC,SAAS,EAAE,CAAC;SACtB,SAAS,CAAC,YAAY,EAAE,CAAC;SACzB,MAAM,CAAC,iBAAiB,CAAC,EAC5B;8EAC0E,CAC3E,CAAC;IACF,WAAW,CACT,MAAM;SACH,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,6HAA6H,CAAC;SAC1I,QAAQ,CAAC,WAAW,EAAE,2FAA2F,CAAC;SAClH,cAAc,CAAC,iBAAiB,EAAE,qEAAqE,CAAC;SACxG,MAAM,CAAC,qBAAqB,EAAE,2DAA2D,CAAC;SAC1F,SAAS,CAAC,SAAS,EAAE,CAAC;SACtB,SAAS,CAAC,YAAY,EAAE,CAAC;SACzB,MAAM,CAAC,gBAAgB,CAAC,EAC3B;uJACmJ,CACpJ,CAAC;IACF,WAAW,CACT,MAAM;SACH,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,+DAA+D,CAAC;SAC5E,QAAQ,CAAC,WAAW,EAAE,sEAAsE,CAAC;SAC7F,MAAM,CAAC,qBAAqB,EAAE,2DAA2D,CAAC;SAC1F,SAAS,CAAC,SAAS,EAAE,CAAC;SACtB,SAAS,CAAC,YAAY,EAAE,CAAC;SACzB,MAAM,CAAC,kBAAkB,CAAC,EAC7B,2GAA2G,CAC5G,CAAC;IACF,WAAW,CACT,MAAM;SACH,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,8EAA8E,CAAC;SAC3F,QAAQ,CAAC,WAAW,EAAE,sEAAsE,CAAC;SAC7F,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAClD,MAAM,CAAC,eAAe,EAAE,mDAAmD,CAAC;SAC5E,MAAM,CAAC,qBAAqB,EAAE,2DAA2D,CAAC;SAC1F,SAAS,CAAC,SAAS,EAAE,CAAC;SACtB,SAAS,CAAC,YAAY,EAAE,CAAC;SACzB,MAAM,CAAC,iBAAiB,CAAC,EAC5B;0IACsI,CACvI,CAAC;AACJ,CAAC"}
|