@quickchatai/pi-quickreview 1.3.1 → 1.3.2

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.
@@ -132,7 +132,11 @@ session_command_start_lease_s = 120
132
132
  session_command_running_max_min = 45
133
133
  # Command-correlated execution milestones: no first pass, incomplete pass plan,
134
134
  # and all-passes-done/no-verdict. Absolute start-derived bounds; activity cannot
135
- # renew them.
135
+ # renew them. The first pass is any discovery lens the daemon dispatched, a
136
+ # planned one or one of the round's optional rows. A plan above 20 discovery
137
+ # rows gets a minute per row more on both the passes bound and the running cap,
138
+ # up to 20 (packages/pi-plugin/src/round-stage-deadlines.ts); it does not stack
139
+ # with the follow-up sweep's allowance.
136
140
  round_first_pass_max_min = 5
137
141
  round_passes_max_min = 35
138
142
  round_finalize_grace_min = 5
@@ -11,9 +11,13 @@ export interface QuickReviewConfig {
11
11
  runner: Runner;
12
12
  /** Standard output (pi's print mode shows a command's result there). */
13
13
  print: (text: string) => void;
14
- /** Test seams: the running pi's version, its agent dir, the range, the
15
- * review's core. */
14
+ /** Resolve pi's own packages from the running pi's package dir for what the
15
+ * plugin imports later with Node's import() (src/plugin/peers.ts). */
16
+ peers?: (piDir: string) => void;
17
+ /** Test seams: the running pi's version and package dir, its agent dir, the
18
+ * range, the review's core. */
16
19
  piVersion?: string;
20
+ piDir?: string;
17
21
  agentDir?: string;
18
22
  range?: string;
19
23
  review?: ReviewCommandDeps;
@@ -1 +1 @@
1
- {"version":3,"file":"quickreview.d.ts","sourceRoot":"","sources":["../../extensions/quickreview.ts"],"names":[],"mappings":"AAsBA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC7B,MAAM,iCAAiC,CAAC;AAIzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAc,MAAM,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAK9E,4CAA4C;AAC5C,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B;wBACoB;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,kDAAmD,CAAC;AAErF,8DAA8D;AAC9D,wBAAgB,QAAQ,CAAC,GAAG,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,CA8BjF;AAKD,wEAAwE;AACxE,wBAAgB,SAAS,CACvB,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,uBAAuB,EAC5B,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GACzB,SAAS,CA6BX;AAED,oDAAoD;AACpD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,CAmGvF"}
1
+ {"version":3,"file":"quickreview.d.ts","sourceRoot":"","sources":["../../extensions/quickreview.ts"],"names":[],"mappings":"AAsBA,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC7B,MAAM,iCAAiC,CAAC;AAIzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAc,MAAM,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAK9E,4CAA4C;AAC5C,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B;0EACsE;IACtE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC;mCAC+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,kDAAmD,CAAC;AAErF,8DAA8D;AAC9D,wBAAgB,QAAQ,CAAC,GAAG,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,CA8BjF;AAKD,wEAAwE;AACxE,wBAAgB,SAAS,CACvB,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,uBAAuB,EAC5B,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GACzB,SAAS,CA6BX;AAED,oDAAoD;AACpD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,CAoGvF"}
@@ -20,7 +20,7 @@
20
20
  // The person's own session gets commands and messages from the plugin, never
21
21
  // a tool: the review's lens tools exist only inside the engine's own nested
22
22
  // sessions (passes are leaves: the single-shepherd invariant in AGENTS.md).
23
- import { VERSION, getAgentDir, } from "@earendil-works/pi-coding-agent";
23
+ import { VERSION, getAgentDir, getPackageDir, } from "@earendil-works/pi-coding-agent";
24
24
  import { existsSync, readFileSync } from "node:fs";
25
25
  import { join } from "node:path";
26
26
  import { loginSummary } from "../src/engine/auth.js";
@@ -102,6 +102,7 @@ export function createQuickReview(config) {
102
102
  });
103
103
  return;
104
104
  }
105
+ config.peers?.(config.piDir ?? getPackageDir());
105
106
  // The current session's end: a run in flight stops with it.
106
107
  let shutdown = new AbortController();
107
108
  pi.on("session_start", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"quickreview.js","sourceRoot":"","sources":["../../extensions/quickreview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quickreview.js","sourceRoot":"","sources":["../../extensions/quickreview.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugin/index.ts"],"names":[],"mappings":";AASA,wBAKG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugin/index.ts"],"names":[],"mappings":";AAYA,wBAMG"}
@@ -1,8 +1,11 @@
1
1
  // The pi plugin's entry, the file the package's `pi.extensions` names: the
2
2
  // one place the process's environment, home and standard output become the
3
- // plugin's config (extensions/quickreview.ts takes them as data).
3
+ // plugin's config (extensions/quickreview.ts takes them as data), and where
4
+ // the process-wide resolve hook for pi's own packages is registered
5
+ // (src/plugin/peers.ts).
4
6
  import { homedir } from "node:os";
5
7
  import { createQuickReview } from "../../extensions/quickreview.js";
8
+ import { resolvePeersFrom } from "./peers.js";
6
9
  import { nodeRunner } from "./runner.js";
7
10
  const env = process.env;
8
11
  export default createQuickReview({
@@ -10,5 +13,6 @@ export default createQuickReview({
10
13
  home: (env["HOME"] ?? "").trim() || homedir(),
11
14
  runner: nodeRunner(env),
12
15
  print: (text) => void process.stdout.write(text.endsWith("\n") ? text : `${text}\n`),
16
+ peers: (piDir) => void resolvePeersFrom(piDir),
13
17
  });
14
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugin/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,2EAA2E;AAC3E,kEAAkE;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AAExB,eAAe,iBAAiB,CAAC;IAC/B,GAAG;IACH,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,OAAO,EAAE;IAC7C,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC;IACvB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC;CACrF,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugin/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,2EAA2E;AAC3E,4EAA4E;AAC5E,oEAAoE;AACpE,yBAAyB;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AAExB,eAAe,iBAAiB,CAAC;IAC/B,GAAG;IACH,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,OAAO,EAAE;IAC7C,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC;IACvB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC;IACpF,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,gBAAgB,CAAC,KAAK,CAAC;CAC/C,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /** The packages the plugin's package.json declares as peers. */
2
+ export declare function declaredPeers(from?: string): string[];
3
+ /** Is `specifier` one of `peers` or a subpath of one? */
4
+ export declare function isPeer(specifier: string, peers: readonly string[]): boolean;
5
+ interface ResolveContext {
6
+ parentURL?: string | undefined;
7
+ [key: string]: unknown;
8
+ }
9
+ type NextResolve = (specifier: string, context?: ResolveContext) => unknown;
10
+ /** The resolve hook: Node's own answer first; a peer Node cannot find from the
11
+ * importer is resolved as if pi at `piDir` imported it. */
12
+ export declare function peerResolve(piDir: string, peers: readonly string[]): (specifier: string, context: ResolveContext, next: NextResolve) => unknown;
13
+ /** Register the hook for this process, once; false where this Node has no
14
+ * `module.registerHooks` or a hook is already in place. */
15
+ export declare function resolvePeersFrom(piDir: string, peers?: readonly string[]): boolean;
16
+ export {};
17
+ //# sourceMappingURL=peers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peers.d.ts","sourceRoot":"","sources":["../../../src/plugin/peers.ts"],"names":[],"mappings":"AAmBA,gEAAgE;AAChE,wBAAgB,aAAa,CAAC,IAAI,GAAE,MAAwB,GAAG,MAAM,EAAE,CAEtE;AAED,yDAAyD;AACzD,wBAAgB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAE3E;AAED,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AACD,KAAK,WAAW,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC;AAE5E;2DAC2D;AAC3D,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAW5E;AAID;2DAC2D;AAC3D,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,SAAS,MAAM,EAAoB,GACzC,OAAO,CAQT"}
@@ -0,0 +1,55 @@
1
+ // pi's own packages for the modules the plugin loads with Node's import().
2
+ //
3
+ // pi installs a package without its peer dependencies (`--omit=peer`, on
4
+ // purpose) and hands an extension its own modules through its loader's
5
+ // alias table. That covers the modules the loader loads: the entry and its
6
+ // static imports. The review's SDK is imported later with Node's own
7
+ // import() (src/engine/reviewruntime.ts), and Node resolves its bare
8
+ // specifiers from the plugin's install, where no pi is: ERR_MODULE_NOT_FOUND.
9
+ //
10
+ // The hook below resolves the plugin's declared peers (package.json
11
+ // `peerDependencies`) from the running pi's package dir instead, and only
12
+ // where Node found nothing from the importer. A host that installs pi beside
13
+ // the plugin (the qcr app, the image) never reaches the fallback, so its
14
+ // resolution is unchanged. One pi package dir per process: the first wins.
15
+ import * as nodeModule from "node:module";
16
+ import { join } from "node:path";
17
+ import { pathToFileURL } from "node:url";
18
+ import { declaredPeerRanges } from "./versiongate.js";
19
+ /** The packages the plugin's package.json declares as peers. */
20
+ export function declaredPeers(from = import.meta.url) {
21
+ return Object.keys(declaredPeerRanges(from));
22
+ }
23
+ /** Is `specifier` one of `peers` or a subpath of one? */
24
+ export function isPeer(specifier, peers) {
25
+ return peers.some((p) => specifier === p || specifier.startsWith(`${p}/`));
26
+ }
27
+ /** The resolve hook: Node's own answer first; a peer Node cannot find from the
28
+ * importer is resolved as if pi at `piDir` imported it. */
29
+ export function peerResolve(piDir, peers) {
30
+ const parentURL = pathToFileURL(join(piDir, "package.json")).href;
31
+ return (specifier, context, next) => {
32
+ try {
33
+ return next(specifier, context);
34
+ }
35
+ catch (err) {
36
+ if (err.code !== "ERR_MODULE_NOT_FOUND" || !isPeer(specifier, peers))
37
+ throw err;
38
+ return next(specifier, { ...context, parentURL });
39
+ }
40
+ };
41
+ }
42
+ const INSTALLED = Symbol.for("qcr.plugin.piPeers");
43
+ /** Register the hook for this process, once; false where this Node has no
44
+ * `module.registerHooks` or a hook is already in place. */
45
+ export function resolvePeersFrom(piDir, peers = declaredPeers()) {
46
+ const g = globalThis;
47
+ const register = nodeModule
48
+ .registerHooks;
49
+ if (g[INSTALLED] !== undefined || typeof register !== "function")
50
+ return false;
51
+ register({ resolve: peerResolve(piDir, peers) });
52
+ g[INSTALLED] = piDir;
53
+ return true;
54
+ }
55
+ //# sourceMappingURL=peers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peers.js","sourceRoot":"","sources":["../../../src/plugin/peers.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,yEAAyE;AACzE,uEAAuE;AACvE,2EAA2E;AAC3E,qEAAqE;AACrE,qEAAqE;AACrE,8EAA8E;AAC9E,EAAE;AACF,oEAAoE;AACpE,0EAA0E;AAC1E,6EAA6E;AAC7E,yEAAyE;AACzE,2EAA2E;AAC3E,OAAO,KAAK,UAAU,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,gEAAgE;AAChE,MAAM,UAAU,aAAa,CAAC,OAAe,MAAM,CAAC,IAAI,CAAC,GAAG;IAC1D,OAAO,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,MAAM,CAAC,SAAiB,EAAE,KAAwB;IAChE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,KAAK,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7E,CAAC;AAQD;2DAC2D;AAC3D,MAAM,UAAU,WAAW,CACzB,KAAa,EACb,KAAwB;IAExB,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAAyB,CAAC,IAAI,KAAK,sBAAsB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;gBACzF,MAAM,GAAG,CAAC;YACZ,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAEnD;2DAC2D;AAC3D,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,QAA2B,aAAa,EAAE;IAE1C,MAAM,CAAC,GAAG,UAAqC,CAAC;IAChD,MAAM,QAAQ,GAAI,UAA2E;SAC1F,aAAa,CAAC;IACjB,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAC/E,QAAQ,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -17,6 +17,9 @@ export declare function parseSemver(v: string): Semver | null;
17
17
  * prerelease never satisfies. Anything else is refused: false.
18
18
  */
19
19
  export declare function satisfiesRange(version: string, range: string): boolean;
20
+ /** The peer ranges this package declares, from its own package.json (the
21
+ * version gate's pi range, and the peers src/plugin/peers.ts resolves). */
22
+ export declare function declaredPeerRanges(from?: string): Record<string, string>;
20
23
  /** The range this package declares for pi, from its own package.json. */
21
24
  export declare function declaredPiRange(from?: string): string;
22
25
  /** The plugin's verdict on the running pi: null when it may load, else the
@@ -1 +1 @@
1
- {"version":3,"file":"versiongate.d.ts","sourceRoot":"","sources":["../../../src/plugin/versiongate.ts"],"names":[],"mappings":"AAYA,0CAA0C;AAC1C,eAAO,MAAM,UAAU,oCAAoC,CAAC;AAE5D,UAAU,MAAM;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED;oBACoB;AACpB,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIpD;AAKD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CA8BtE;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAwB,GAAG,MAAM,CAStE;AAED;mCACmC;AACnC,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOpE"}
1
+ {"version":3,"file":"versiongate.d.ts","sourceRoot":"","sources":["../../../src/plugin/versiongate.ts"],"names":[],"mappings":"AAYA,0CAA0C;AAC1C,eAAO,MAAM,UAAU,oCAAoC,CAAC;AAE5D,UAAU,MAAM;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED;oBACoB;AACpB,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIpD;AAKD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CA8BtE;AAED;2EAC2E;AAC3E,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMzF;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAwB,GAAG,MAAM,CAKtE;AAED;mCACmC;AACnC,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOpE"}
@@ -62,11 +62,16 @@ export function satisfiesRange(version, range) {
62
62
  }
63
63
  });
64
64
  }
65
- /** The range this package declares for pi, from its own package.json. */
66
- export function declaredPiRange(from = import.meta.url) {
65
+ /** The peer ranges this package declares, from its own package.json (the
66
+ * version gate's pi range, and the peers src/plugin/peers.ts resolves). */
67
+ export function declaredPeerRanges(from = import.meta.url) {
67
68
  const root = packageRootFrom(dirname(fileURLToPath(from)), "the plugin's package.json");
68
69
  const pkg = JSON.parse(readFileSync(join(root, "package.json"), "utf8"));
69
- const range = pkg.peerDependencies?.[PI_PACKAGE];
70
+ return pkg.peerDependencies ?? {};
71
+ }
72
+ /** The range this package declares for pi, from its own package.json. */
73
+ export function declaredPiRange(from = import.meta.url) {
74
+ const range = declaredPeerRanges(from)[PI_PACKAGE];
70
75
  if (typeof range !== "string" || range.trim() === "")
71
76
  throw new Error(`the plugin's package.json declares no peer range for ${PI_PACKAGE}`);
72
77
  return range;
@@ -1 +1 @@
1
- {"version":3,"file":"versiongate.js","sourceRoot":"","sources":["../../../src/plugin/versiongate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"versiongate.js","sourceRoot":"","sources":["../../../src/plugin/versiongate.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,4EAA4E;AAC5E,8EAA8E;AAC9E,0EAA0E;AAC1E,2EAA2E;AAC3E,2EAA2E;AAC3E,4BAA4B;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,0CAA0C;AAC1C,MAAM,CAAC,MAAM,UAAU,GAAG,iCAAiC,CAAC;AAU5D;oBACoB;AACpB,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,MAAM,CAAC,GAAG,oEAAoE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9F,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;AAC9F,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAC3C,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,KAAa;IAC3D,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACxD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;YAClC,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YACjD,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YACjC,OAAO,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,CAAC;QACrF,CAAC;QACD,MAAM,EAAE,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3C,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAChE,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrB,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;YACrB,KAAK,IAAI;gBACP,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,KAAK,IAAI;gBACP,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,KAAK,GAAG;gBACN,OAAO,CAAC,GAAG,CAAC,CAAC;YACf,KAAK,GAAG;gBACN,OAAO,CAAC,GAAG,CAAC,CAAC;YACf;gBACE,OAAO,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;2EAC2E;AAC3E,MAAM,UAAU,kBAAkB,CAAC,OAAe,MAAM,CAAC,IAAI,CAAC,GAAG;IAC/D,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC;IACxF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAEtE,CAAC;IACF,OAAO,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,eAAe,CAAC,OAAe,MAAM,CAAC,IAAI,CAAC,GAAG;IAC5D,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAClD,MAAM,IAAI,KAAK,CAAC,wDAAwD,UAAU,EAAE,CAAC,CAAC;IACxF,OAAO,KAAK,CAAC;AACf,CAAC;AAED;mCACmC;AACnC,MAAM,UAAU,MAAM,CAAC,OAAe,EAAE,KAAa;IACnD,IAAI,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,CACL,0BAA0B,KAAK,oBAAoB,OAAO,IAAI,oBAAoB,IAAI;QACtF,oEAAoE;QACpE,eAAe,KAAK,8CAA8C,CACnE,CAAC;AACJ,CAAC"}
@@ -1,10 +1,35 @@
1
+ /** A plan up to this many discovery rows runs inside the configured bounds:
2
+ * measured live rounds of 20 rows or fewer finished in under 19 minutes. */
3
+ export declare const LARGE_PLAN_ROWS = 20;
4
+ /** Each discovery row past LARGE_PLAN_ROWS earns this much more passes and
5
+ * running time: a 36-row plan took 27 minutes with nothing retried. */
6
+ export declare const LARGE_PLAN_MIN_PER_ROW = 1;
7
+ /** The most a large plan earns, so the hard cap (45 + 20) stays inside the
8
+ * 75-minute round deadline. */
9
+ export declare const LARGE_PLAN_EXTRA_MAX_MIN = 20;
10
+ /** Extra passes and running minutes a plan of `discoveryRows` rows earns. */
11
+ export declare function largePlanExtraMin(discoveryRows: number): number;
12
+ /** The minutes a round's passes and running bounds get over the configured
13
+ * ones: the follow-up sweep's allowance or the large plan's, whichever is
14
+ * larger. They do not stack: the hard cap stays inside the round deadline. */
15
+ export declare function roundStageAllowanceMin(o: {
16
+ sweepOwed: boolean;
17
+ sweepExtraMin: number;
18
+ discoveryRows?: number;
19
+ }): number;
20
+ /** The discovery rows of a round's plan: its `pass_plan` rows (a split lens
21
+ * counts once per row) without the validator, else its lens list. */
22
+ export declare function discoveryRowsOf(round: {
23
+ pass_plan: string | null;
24
+ lenses: string;
25
+ }): number;
1
26
  /** Start-derived round deadlines, shared by enforcement and status publication. */
2
27
  export declare function roundStageDeadlines(started: number, bounds: {
3
28
  first_pass_max_min: number;
4
29
  passes_max_min: number;
5
30
  running_max_min: number;
6
31
  follow_up_sweep_extra_min?: number;
7
- }, sweepOwed: boolean): {
32
+ }, sweepOwed: boolean, discoveryRows?: number): {
8
33
  first_pass_start: number;
9
34
  passes_complete: number;
10
35
  running_hard_bound: number;
@@ -1 +1 @@
1
- {"version":3,"file":"round-stage-deadlines.d.ts","sourceRoot":"","sources":["../../src/round-stage-deadlines.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;IACN,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC,EACD,SAAS,EAAE,OAAO,GACjB;IACD,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAOA"}
1
+ {"version":3,"file":"round-stage-deadlines.d.ts","sourceRoot":"","sources":["../../src/round-stage-deadlines.ts"],"names":[],"mappings":"AAAA;4EAC4E;AAC5E,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC;uEACuE;AACvE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC;+BAC+B;AAC/B,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED;;8EAE8E;AAC9E,wBAAgB,sBAAsB,CAAC,CAAC,EAAE;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CAKT;AAED;qEACqE;AACrE,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAe3F;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;IACN,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC,EACD,SAAS,EAAE,OAAO,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB;IACD,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAWA"}
@@ -1,6 +1,49 @@
1
+ /** A plan up to this many discovery rows runs inside the configured bounds:
2
+ * measured live rounds of 20 rows or fewer finished in under 19 minutes. */
3
+ export const LARGE_PLAN_ROWS = 20;
4
+ /** Each discovery row past LARGE_PLAN_ROWS earns this much more passes and
5
+ * running time: a 36-row plan took 27 minutes with nothing retried. */
6
+ export const LARGE_PLAN_MIN_PER_ROW = 1;
7
+ /** The most a large plan earns, so the hard cap (45 + 20) stays inside the
8
+ * 75-minute round deadline. */
9
+ export const LARGE_PLAN_EXTRA_MAX_MIN = 20;
10
+ /** Extra passes and running minutes a plan of `discoveryRows` rows earns. */
11
+ export function largePlanExtraMin(discoveryRows) {
12
+ const over = Math.max(0, discoveryRows - LARGE_PLAN_ROWS);
13
+ return Math.min(over * LARGE_PLAN_MIN_PER_ROW, LARGE_PLAN_EXTRA_MAX_MIN);
14
+ }
15
+ /** The minutes a round's passes and running bounds get over the configured
16
+ * ones: the follow-up sweep's allowance or the large plan's, whichever is
17
+ * larger. They do not stack: the hard cap stays inside the round deadline. */
18
+ export function roundStageAllowanceMin(o) {
19
+ return Math.max(o.sweepOwed ? o.sweepExtraMin : 0, o.discoveryRows === undefined ? 0 : largePlanExtraMin(o.discoveryRows));
20
+ }
21
+ /** The discovery rows of a round's plan: its `pass_plan` rows (a split lens
22
+ * counts once per row) without the validator, else its lens list. */
23
+ export function discoveryRowsOf(round) {
24
+ if (round.pass_plan) {
25
+ try {
26
+ const rows = JSON.parse(round.pass_plan);
27
+ if (Array.isArray(rows))
28
+ return rows.filter((row) => row?.lens !== "pass-validate")
29
+ .length;
30
+ }
31
+ catch {
32
+ // An unreadable plan falls back to the lens list.
33
+ }
34
+ }
35
+ return round.lenses
36
+ .split(",")
37
+ .map((name) => name.trim())
38
+ .filter((name) => name !== "" && name !== "pass-validate").length;
39
+ }
1
40
  /** Start-derived round deadlines, shared by enforcement and status publication. */
2
- export function roundStageDeadlines(started, bounds, sweepOwed) {
3
- const extra = sweepOwed ? (bounds.follow_up_sweep_extra_min ?? 0) : 0;
41
+ export function roundStageDeadlines(started, bounds, sweepOwed, discoveryRows) {
42
+ const extra = roundStageAllowanceMin({
43
+ sweepOwed,
44
+ sweepExtraMin: bounds.follow_up_sweep_extra_min ?? 0,
45
+ ...(discoveryRows === undefined ? {} : { discoveryRows }),
46
+ });
4
47
  return {
5
48
  first_pass_start: started + bounds.first_pass_max_min * 60_000,
6
49
  passes_complete: started + (bounds.passes_max_min + extra) * 60_000,
@@ -1 +1 @@
1
- {"version":3,"file":"round-stage-deadlines.js","sourceRoot":"","sources":["../../src/round-stage-deadlines.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,MAKC,EACD,SAAkB;IAMlB,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,yBAAyB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO;QACL,gBAAgB,EAAE,OAAO,GAAG,MAAM,CAAC,kBAAkB,GAAG,MAAM;QAC9D,eAAe,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG,MAAM;QACnE,kBAAkB,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC,eAAe,GAAG,KAAK,CAAC,GAAG,MAAM;KACxE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"round-stage-deadlines.js","sourceRoot":"","sources":["../../src/round-stage-deadlines.ts"],"names":[],"mappings":"AAAA;4EAC4E;AAC5E,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC;uEACuE;AACvE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACxC;+BAC+B;AAC/B,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAE3C,6EAA6E;AAC7E,MAAM,UAAU,iBAAiB,CAAC,aAAqB;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,eAAe,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,sBAAsB,EAAE,wBAAwB,CAAC,CAAC;AAC3E,CAAC;AAED;;8EAE8E;AAC9E,MAAM,UAAU,sBAAsB,CAAC,CAItC;IACC,OAAO,IAAI,CAAC,GAAG,CACb,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EACjC,CAAC,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CACvE,CAAC;AACJ,CAAC;AAED;qEACqE;AACrE,MAAM,UAAU,eAAe,CAAC,KAAmD;IACjF,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAClD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACrB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAE,GAAiC,EAAE,IAAI,KAAK,eAAe,CAAC;qBACtF,MAAM,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,MAAM;SAChB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,eAAe,CAAC,CAAC,MAAM,CAAC;AACtE,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,MAKC,EACD,SAAkB,EAClB,aAAsB;IAMtB,MAAM,KAAK,GAAG,sBAAsB,CAAC;QACnC,SAAS;QACT,aAAa,EAAE,MAAM,CAAC,yBAAyB,IAAI,CAAC;QACpD,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC;KAC1D,CAAC,CAAC;IACH,OAAO;QACL,gBAAgB,EAAE,OAAO,GAAG,MAAM,CAAC,kBAAkB,GAAG,MAAM;QAC9D,eAAe,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG,MAAM;QACnE,kBAAkB,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC,eAAe,GAAG,KAAK,CAAC,GAAG,MAAM;KACxE,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quickchatai/pi-quickreview",
3
- "version": "1.3.1",
3
+ "version": "1.3.2",
4
4
  "private": false,
5
5
  "description": "QuickReview for pi: /qcr-review (this branch, a PR, a branch or the uncommitted tree, in the background), /qcr-scan and /qcr-setup in your own pi session, each also a skill, on the same review core the QuickReview bot runs",
6
6
  "keywords": [