@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.
- package/assets/config.example.toml +5 -1
- package/dist/extensions/quickreview.d.ts +6 -2
- package/dist/extensions/quickreview.d.ts.map +1 -1
- package/dist/extensions/quickreview.js +2 -1
- package/dist/extensions/quickreview.js.map +1 -1
- package/dist/src/plugin/index.d.ts.map +1 -1
- package/dist/src/plugin/index.js +5 -1
- package/dist/src/plugin/index.js.map +1 -1
- package/dist/src/plugin/peers.d.ts +17 -0
- package/dist/src/plugin/peers.d.ts.map +1 -0
- package/dist/src/plugin/peers.js +55 -0
- package/dist/src/plugin/peers.js.map +1 -0
- package/dist/src/plugin/versiongate.d.ts +3 -0
- package/dist/src/plugin/versiongate.d.ts.map +1 -1
- package/dist/src/plugin/versiongate.js +8 -3
- package/dist/src/plugin/versiongate.js.map +1 -1
- package/dist/src/round-stage-deadlines.d.ts +26 -1
- package/dist/src/round-stage-deadlines.d.ts.map +1 -1
- package/dist/src/round-stage-deadlines.js +45 -2
- package/dist/src/round-stage-deadlines.js.map +1 -1
- package/package.json +1 -1
|
@@ -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
|
-
/**
|
|
15
|
-
*
|
|
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,
|
|
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":"AAAA,wEAAwE;AACxE,oEAAoE;AACpE,iEAAiE;AACjE,4EAA4E;AAC5E,gDAAgD;AAChD,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,yEAAyE;AACzE,EAAE;AACF,0EAA0E;AAC1E,6EAA6E;AAC7E,wEAAwE;AACxE,wDAAwD;AACxD,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,oDAAoD;AACpD,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,OAAO,EACL,OAAO,EACP,WAAW,
|
|
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":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugin/index.ts"],"names":[],"mappings":";AAYA,wBAMG"}
|
package/dist/src/plugin/index.js
CHANGED
|
@@ -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,
|
|
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,
|
|
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
|
|
66
|
-
|
|
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
|
-
|
|
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":"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"}
|
|
@@ -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,
|
|
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 =
|
|
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;
|
|
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.
|
|
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": [
|