@humanbased/crosscheck 1.6.0-beta.8 → 1.6.1-beta.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 +2 -0
- package/crosscheck.config.example.yml +17 -4
- package/dist/__tests__/board.test.js +68 -30
- package/dist/__tests__/board.test.js.map +1 -1
- package/dist/__tests__/lock-ownership.test.d.ts +2 -0
- package/dist/__tests__/lock-ownership.test.d.ts.map +1 -0
- package/dist/__tests__/lock-ownership.test.js +167 -0
- package/dist/__tests__/lock-ownership.test.js.map +1 -0
- package/dist/__tests__/optimize.test.js +4 -3
- package/dist/__tests__/optimize.test.js.map +1 -1
- package/dist/__tests__/repository-cache.test.d.ts +2 -0
- package/dist/__tests__/repository-cache.test.d.ts.map +1 -0
- package/dist/__tests__/repository-cache.test.js +91 -0
- package/dist/__tests__/repository-cache.test.js.map +1 -0
- package/dist/__tests__/repository-guidance.test.js +1 -1
- package/dist/__tests__/repository-guidance.test.js.map +1 -1
- package/dist/__tests__/review-command-strategy.test.d.ts +2 -0
- package/dist/__tests__/review-command-strategy.test.d.ts.map +1 -0
- package/dist/__tests__/review-command-strategy.test.js +194 -0
- package/dist/__tests__/review-command-strategy.test.js.map +1 -0
- package/dist/__tests__/review-efficiency-config.test.d.ts +2 -0
- package/dist/__tests__/review-efficiency-config.test.d.ts.map +1 -0
- package/dist/__tests__/review-efficiency-config.test.js +16 -0
- package/dist/__tests__/review-efficiency-config.test.js.map +1 -0
- package/dist/__tests__/review-memory.test.d.ts +2 -0
- package/dist/__tests__/review-memory.test.d.ts.map +1 -0
- package/dist/__tests__/review-memory.test.js +252 -0
- package/dist/__tests__/review-memory.test.js.map +1 -0
- package/dist/__tests__/review-models.test.js +1 -0
- package/dist/__tests__/review-models.test.js.map +1 -1
- package/dist/__tests__/review-strategy.test.js +78 -3
- package/dist/__tests__/review-strategy.test.js.map +1 -1
- package/dist/__tests__/vendor-error-summary.test.d.ts +2 -0
- package/dist/__tests__/vendor-error-summary.test.d.ts.map +1 -0
- package/dist/__tests__/vendor-error-summary.test.js +74 -0
- package/dist/__tests__/vendor-error-summary.test.js.map +1 -0
- package/dist/__tests__/watch-concurrency.test.d.ts +2 -0
- package/dist/__tests__/watch-concurrency.test.d.ts.map +1 -0
- package/dist/__tests__/watch-concurrency.test.js +53 -0
- package/dist/__tests__/watch-concurrency.test.js.map +1 -0
- package/dist/cli.js +18 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/onboard.js +2 -2
- package/dist/commands/onboard.js.map +1 -1
- package/dist/commands/review.d.ts +3 -1
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +146 -7
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +24 -6
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/watch.d.ts +3 -0
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +170 -25
- package/dist/commands/watch.js.map +1 -1
- package/dist/config/schema.d.ts +27 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +12 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/github/review-status.d.ts +33 -0
- package/dist/github/review-status.d.ts.map +1 -1
- package/dist/github/review-status.js +94 -9
- package/dist/github/review-status.js.map +1 -1
- package/dist/lib/board.d.ts +1 -0
- package/dist/lib/board.d.ts.map +1 -1
- package/dist/lib/board.js +42 -37
- package/dist/lib/board.js.map +1 -1
- package/dist/lib/clone.d.ts +3 -0
- package/dist/lib/clone.d.ts.map +1 -1
- package/dist/lib/clone.js +21 -1
- package/dist/lib/clone.js.map +1 -1
- package/dist/lib/pr-lock.d.ts +37 -1
- package/dist/lib/pr-lock.d.ts.map +1 -1
- package/dist/lib/pr-lock.js +176 -29
- package/dist/lib/pr-lock.js.map +1 -1
- package/dist/lib/pr-workflow-state.d.ts +2 -0
- package/dist/lib/pr-workflow-state.d.ts.map +1 -1
- package/dist/lib/pr-workflow-state.js +15 -0
- package/dist/lib/pr-workflow-state.js.map +1 -1
- package/dist/lib/repository-cache.d.ts +18 -0
- package/dist/lib/repository-cache.d.ts.map +1 -0
- package/dist/lib/repository-cache.js +125 -0
- package/dist/lib/repository-cache.js.map +1 -0
- package/dist/lib/review-memory.d.ts +212 -0
- package/dist/lib/review-memory.d.ts.map +1 -0
- package/dist/lib/review-memory.js +305 -0
- package/dist/lib/review-memory.js.map +1 -0
- package/dist/lib/review-models.d.ts +2 -2
- package/dist/lib/review-models.js +2 -2
- package/dist/lib/runner.d.ts +37 -2
- package/dist/lib/runner.d.ts.map +1 -1
- package/dist/lib/runner.js +81 -28
- package/dist/lib/runner.js.map +1 -1
- package/dist/lib/tips.js +1 -1
- package/dist/lib/tips.js.map +1 -1
- package/dist/lib/vendor-error-summary.d.ts +19 -0
- package/dist/lib/vendor-error-summary.d.ts.map +1 -0
- package/dist/lib/vendor-error-summary.js +95 -0
- package/dist/lib/vendor-error-summary.js.map +1 -0
- package/dist/reviewers/claude.d.ts.map +1 -1
- package/dist/reviewers/claude.js +2 -1
- package/dist/reviewers/claude.js.map +1 -1
- package/dist/reviewers/codex.d.ts.map +1 -1
- package/dist/reviewers/codex.js +2 -1
- package/dist/reviewers/codex.js.map +1 -1
- package/docs/dynamic-thoroughness.md +7 -4
- package/get-started.md +83 -9
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-memory.js","sourceRoot":"","sources":["../../src/lib/review-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@ export declare const CODEX_TIER_MODELS_API: Record<QualityConfig['tier'], string
|
|
|
4
4
|
/**
|
|
5
5
|
* The tier in force for one call. Under `quality.mode: 'smart'` the per-PR
|
|
6
6
|
* strategy wins; otherwise the single configured tier applies. Falls back to the
|
|
7
|
-
* configured tier whenever no strategy
|
|
8
|
-
*
|
|
7
|
+
* configured tier whenever no strategy tier is in force: a PR whose file list
|
|
8
|
+
* could not be read, or a class that names no tier.
|
|
9
9
|
*/
|
|
10
10
|
export declare function effectiveTier(quality: QualityConfig, strategy?: {
|
|
11
11
|
tier: QualityConfig['tier'] | null;
|
|
@@ -17,8 +17,8 @@ export const CODEX_TIER_MODELS_API = reviewModelTierConfig.codex_api;
|
|
|
17
17
|
/**
|
|
18
18
|
* The tier in force for one call. Under `quality.mode: 'smart'` the per-PR
|
|
19
19
|
* strategy wins; otherwise the single configured tier applies. Falls back to the
|
|
20
|
-
* configured tier whenever no strategy
|
|
21
|
-
*
|
|
20
|
+
* configured tier whenever no strategy tier is in force: a PR whose file list
|
|
21
|
+
* could not be read, or a class that names no tier.
|
|
22
22
|
*/
|
|
23
23
|
export function effectiveTier(quality, strategy) {
|
|
24
24
|
if (quality.mode === 'smart' && strategy?.tier)
|
package/dist/lib/runner.d.ts
CHANGED
|
@@ -180,6 +180,15 @@ export declare function resolveConflictResolveVendor(stepReviewer: string, origi
|
|
|
180
180
|
usedHumanFallback: boolean;
|
|
181
181
|
substitutedOriginVendor?: 'claude' | 'codex';
|
|
182
182
|
};
|
|
183
|
+
/**
|
|
184
|
+
* The clone and the PR fields classification reads. Narrower than
|
|
185
|
+
* WorkflowContext so `crosscheck review`, which clones the same way but runs no
|
|
186
|
+
* workflow, classifies through the same functions as run and watch.
|
|
187
|
+
*/
|
|
188
|
+
export interface PRContextSource {
|
|
189
|
+
tmpDir: string;
|
|
190
|
+
pr: Pick<WorkflowContext['pr'], 'title' | 'base' | 'labels'>;
|
|
191
|
+
}
|
|
183
192
|
/**
|
|
184
193
|
* Builds the input the review strategy classifies on, from the already-cloned
|
|
185
194
|
* working copy rather than the API — the runner has the repo on disk, so this
|
|
@@ -188,7 +197,7 @@ export declare function resolveConflictResolveVendor(stepReviewer: string, origi
|
|
|
188
197
|
* Returns null when the diff can't be read. Callers then fall back to the
|
|
189
198
|
* configured tier, which is why `quality.tier` stays meaningful under smart mode.
|
|
190
199
|
*/
|
|
191
|
-
export declare function buildPRContext(ctx:
|
|
200
|
+
export declare function buildPRContext(ctx: PRContextSource): PRContext | null;
|
|
192
201
|
/**
|
|
193
202
|
* Folds a resolved strategy into the quality config the reviewers receive, so
|
|
194
203
|
* every downstream `quality.tier` read picks up the per-PR decision without
|
|
@@ -227,11 +236,37 @@ export declare function strategyVendor<T extends {
|
|
|
227
236
|
export declare function strategyDeterminedModel(vendor: {
|
|
228
237
|
model?: string | null;
|
|
229
238
|
}, strategy: ResolvedStrategy | null, resolvedModel?: string): boolean;
|
|
239
|
+
/**
|
|
240
|
+
* The strategy fields a review comment may cite, or undefined when citing them
|
|
241
|
+
* would name a tier the run did not use. One function so run/watch and
|
|
242
|
+
* `crosscheck review` cannot disagree about when a tier is named.
|
|
243
|
+
*
|
|
244
|
+
* Takes the class as matched and the class as run this round, because
|
|
245
|
+
* resolveRoundExecution fills a null class tier from `quality.tier`. A class
|
|
246
|
+
* that names no tier only runs when an explicit request overrides its skip, and
|
|
247
|
+
* then the configured tier ran, not one the class chose — so the class and its
|
|
248
|
+
* reason are cited with a null tier, which the comment renders without one.
|
|
249
|
+
*/
|
|
250
|
+
export declare function strategyCitation(vendor: {
|
|
251
|
+
model?: string | null;
|
|
252
|
+
}, classStrategy: ResolvedStrategy | null, roundStrategy: ResolvedStrategy | null, resolvedModel: string): {
|
|
253
|
+
version: string;
|
|
254
|
+
classId: string;
|
|
255
|
+
tier: string | null;
|
|
256
|
+
reason: string;
|
|
257
|
+
} | undefined;
|
|
230
258
|
/**
|
|
231
259
|
* Classifies the PR and resolves the strategy, or returns null under
|
|
232
260
|
* `quality.mode: fixed` so the single configured tier applies unchanged.
|
|
233
261
|
*/
|
|
234
|
-
export declare function resolveStrategyForPR(ctx:
|
|
262
|
+
export declare function resolveStrategyForPR(ctx: PRContextSource & {
|
|
263
|
+
config: Pick<Config, 'quality'>;
|
|
264
|
+
}): ResolvedStrategy | null;
|
|
265
|
+
/**
|
|
266
|
+
* Records how classification resolved for one PR. Shared by run/watch and
|
|
267
|
+
* `crosscheck review` so both write the same events with the same fields.
|
|
268
|
+
*/
|
|
269
|
+
export declare function logStrategyResolution(quality: Config['quality'], strategy: ResolvedStrategy | null, repo: string, prNumber: number): void;
|
|
235
270
|
export interface RoundExecution {
|
|
236
271
|
/** The class as escalated for this round; null under fixed mode. */
|
|
237
272
|
strategy: ResolvedStrategy | null;
|
package/dist/lib/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAqB,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAUjE,OAAO,EAAiC,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAK9F,OAAO,EAA2C,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAIzF,OAAO,EAAwF,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAOlK,OAAO,
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAqB,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAUjE,OAAO,EAAiC,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAK9F,OAAO,EAA2C,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAIzF,OAAO,EAAwF,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAOlK,OAAO,EAAoG,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEzK,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAsB9C,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAIzD;AAaD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CAEpF;AAWD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,wBAAgB,mCAAmC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAqB1G;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnF;AAOD,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAA;AAE7F,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACnC,cAAc,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAOD,MAAM,MAAM,mBAAmB,GAC3B,WAAW,GACX,OAAO,GACP,eAAe,GACf,gBAAgB,GAChB,cAAc,CAAA;AAElB,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,sBAAsB,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsCzB;AAKD,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,OAAO,CAOT;AAKD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,OAAO,CAE1E;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAA;AAanE,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,yBAAyB,GAAG,SAAS,CAAA;AACzE,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,eAAe,GAAG,UAAU,CAM3E;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,EAAE,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,QAAQ,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,IAAI,CAAA;IAE1D,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAG3B,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB,KAAK,CAAC,EAAE,MAAM,CAAA;IAGd,MAAM,CAAC,EAAE,OAAO,CAAA;IAGhB,UAAU,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAA;IAGtC,KAAK,CAAC,EAAE,OAAO,eAAe,EAAE,YAAY,EAAE,CAAA;IAY9C,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAG/B,mBAAmB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;IAMxC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IAIrB,oBAAoB,CAAC,EAAE;QACrB,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IAID,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAG1B,SAAS,CAAC,EAAE,OAAO,GAAG,WAAW,CAAA;IAGjC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B,OAAO,CAAC,EAAE,eAAe,CAAA;IAIzB,YAAY,CAAC,EAAE,MAAM,CAAA;IAIrB,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;CAChH;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB;uEACmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAA;IAGxB,eAAe,CAAC,EAAE,MAAM,CAAA;IAIxB,aAAa,CAAC,EAAE,MAAM,CAAA;IAItB,mBAAmB,CAAC,EAAE;QACpB,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD;;;uDAGmD;IACnD,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B;wEACoE;IACpE,GAAG,EAAE,MAAM,EAAE,CAAA;IACb;kCAC8B;IAC9B,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC3C;;;;8DAI0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CAC1C;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;4EAEwE;IACxE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAA;AAEnE,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,OAAO,EAAE,eAAe,CAAA;IACxB,kFAAkF;IAClF,UAAU,EAAE,gBAAgB,EAAE,CAAA;IAC9B,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAA;IACf,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,eAAe,EAAE,YAAY,EAAE,CAAA;IAC/B,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAChC,qBAAqB,EAAE,OAAO,CAAA;CAC/B,GAAG,QAAQ,CAoBX;AAKD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAClC,YAAY,CAoBd;AAWD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,YAAY,GAAG,SAAS,EAC9B,IAAI,EAAE,YAAY,GAAG,SAAS,GAC7B,YAAY,GAAG,SAAS,CAyB1B;AAkDD,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAgB,4BAA4B,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1F;AA8DD,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,GAC5B;IAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;IAAC,iBAAiB,EAAE,OAAO,CAAC;IAAC,uBAAuB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;CAAE,CAEjH;AAKD,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,GAC5B;IAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;IAAC,iBAAiB,EAAE,OAAO,CAAC;IAAC,uBAAuB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;CAAE,CAEjH;AAgCD;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAA;CAC7D;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,CAcrE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAC7C,QAAQ,EAAE,gBAAgB,GAAG,IAAI,GAChC,eAAe,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAGtC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1D,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,gBAAgB,GAAG,IAAI,EACjC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,CAAC,CAKH;AASD;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACjC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,EACjC,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAIT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACjC,aAAa,EAAE,gBAAgB,GAAG,IAAI,EACtC,aAAa,EAAE,gBAAgB,GAAG,IAAI,EACtC,aAAa,EAAE,MAAM,GACpB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAIvF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,GAAG;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CAAE,GAAG,gBAAgB,GAAG,IAAI,CAKxH;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,EAC1B,QAAQ,EAAE,gBAAgB,GAAG,IAAI,EACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,IAAI,CAsBN;AAED,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACjC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAA;IACzC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAA;IACvC,iFAAiF;IACjF,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,GAAG,IAAI,EACjC,KAAK,EAAE,MAAM,GACZ,cAAc,CA4ChB;AAuDD,wBAAsB,8BAA8B,CAAC,MAAM,EAAE;IAC3D,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAK1B,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyEhB;AAID,wBAAsB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CA26C/E"}
|
package/dist/lib/runner.js
CHANGED
|
@@ -29,7 +29,8 @@ import { buildStepIdentityFields } from '../lib/event-fields.js';
|
|
|
29
29
|
import { planAutoFixDelivery, forceWithLeaseArgs, parseLsRemoteOid, isLeaseRejection, assessFixBranchOwnership, isInvalidBaseError } from '../lib/auto-fix-branch.js';
|
|
30
30
|
import { prOpenToVerdictMs } from '../lib/adoption.js';
|
|
31
31
|
import { buildAttributionFooter, buildFixAppliedCommentBody, buildFixFailedCommentBody, buildConflictResolvedCommentBody, buildRetriedReviewBanner } from '../lib/comment-bodies.js';
|
|
32
|
-
import { linearWritePossible, loadWorkflow, loadHarnessSection, evaluateWhen } from '../lib/workflow.js';
|
|
32
|
+
import { linearWritePossible, loadWorkflow, loadHarnessSection, evaluateWhen, DEFAULT_REVIEW_INSTRUCTIONS } from '../lib/workflow.js';
|
|
33
|
+
import { prepareReviewPlan, finishReviewOrFallback, savePublishedReview, assertReviewFresh } from '../lib/review-memory.js';
|
|
33
34
|
import { isSubscriptionLimitError, isVendorUnavailableError } from '../lib/smart-switch.js';
|
|
34
35
|
import { tierTimeoutMs } from '../reviewers/tier-timeouts.js';
|
|
35
36
|
import { loadSkillCatalog } from '../skills/catalog.js';
|
|
@@ -475,6 +476,23 @@ export function strategyDeterminedModel(vendor, strategy, resolvedModel) {
|
|
|
475
476
|
// 'default' means the vendor CLI chose, not us.
|
|
476
477
|
return resolvedModel !== 'default';
|
|
477
478
|
}
|
|
479
|
+
/**
|
|
480
|
+
* The strategy fields a review comment may cite, or undefined when citing them
|
|
481
|
+
* would name a tier the run did not use. One function so run/watch and
|
|
482
|
+
* `crosscheck review` cannot disagree about when a tier is named.
|
|
483
|
+
*
|
|
484
|
+
* Takes the class as matched and the class as run this round, because
|
|
485
|
+
* resolveRoundExecution fills a null class tier from `quality.tier`. A class
|
|
486
|
+
* that names no tier only runs when an explicit request overrides its skip, and
|
|
487
|
+
* then the configured tier ran, not one the class chose — so the class and its
|
|
488
|
+
* reason are cited with a null tier, which the comment renders without one.
|
|
489
|
+
*/
|
|
490
|
+
export function strategyCitation(vendor, classStrategy, roundStrategy, resolvedModel) {
|
|
491
|
+
if (!roundStrategy || !strategyDeterminedModel(vendor, roundStrategy, resolvedModel))
|
|
492
|
+
return undefined;
|
|
493
|
+
const tier = classStrategy?.tier === null ? null : roundStrategy.tier;
|
|
494
|
+
return { version: roundStrategy.version, classId: roundStrategy.classId, tier, reason: roundStrategy.reason };
|
|
495
|
+
}
|
|
478
496
|
/**
|
|
479
497
|
* Classifies the PR and resolves the strategy, or returns null under
|
|
480
498
|
* `quality.mode: fixed` so the single configured tier applies unchanged.
|
|
@@ -487,6 +505,34 @@ export function resolveStrategyForPR(ctx) {
|
|
|
487
505
|
return null;
|
|
488
506
|
return resolveReviewStrategy(prContext);
|
|
489
507
|
}
|
|
508
|
+
/**
|
|
509
|
+
* Records how classification resolved for one PR. Shared by run/watch and
|
|
510
|
+
* `crosscheck review` so both write the same events with the same fields.
|
|
511
|
+
*/
|
|
512
|
+
export function logStrategyResolution(quality, strategy, repo, prNumber) {
|
|
513
|
+
if (quality.mode === 'smart' && !strategy) {
|
|
514
|
+
// A smart-mode install quietly behaving as fixed is otherwise invisible.
|
|
515
|
+
fileLog({ level: 'warn', event: 'strategy_unresolved', repo, pr: prNumber, reason: 'pr_context_unavailable', fallback_tier: quality.tier });
|
|
516
|
+
}
|
|
517
|
+
else if (strategy) {
|
|
518
|
+
// A config written before `mode` existed parses as smart on upgrade, so a
|
|
519
|
+
// hand-set `quality.tier` can be silently overridden. onboard preserves the
|
|
520
|
+
// old tier by reading raw yaml, but that only helps users who re-run it —
|
|
521
|
+
// so record it here for everyone else.
|
|
522
|
+
//
|
|
523
|
+
// info, not warn: `config.quality.tier` carries a schema default of
|
|
524
|
+
// `balanced` on every install, so the parsed config cannot tell a hand-set
|
|
525
|
+
// tier from an unset one. Five of the eight classes resolve to something
|
|
526
|
+
// other than balanced, which made this fire on the majority of PRs — and
|
|
527
|
+
// recommend a `mode: fixed` opt-out to users who never chose a tier at all.
|
|
528
|
+
// Only the raw yaml can draw that distinction (thoroughnessDefaults), and it
|
|
529
|
+
// is not available on this path.
|
|
530
|
+
if (strategy.tier && strategy.tier !== quality.tier) {
|
|
531
|
+
fileLog({ level: 'info', event: 'strategy_overrode_configured_tier', repo, pr: prNumber, configured_tier: quality.tier, applied_tier: strategy.tier, pr_class: strategy.classId });
|
|
532
|
+
}
|
|
533
|
+
fileLog({ level: 'info', event: 'strategy_resolved', repo, pr: prNumber, strategy_version: strategy.version, pr_class: strategy.classId, tier: strategy.tier, effort: strategy.effort, steps: strategy.steps, domain: strategy.domain });
|
|
534
|
+
}
|
|
535
|
+
}
|
|
490
536
|
/**
|
|
491
537
|
* The tier, effort, and vendor configs every step of one round runs under.
|
|
492
538
|
*
|
|
@@ -679,28 +725,7 @@ export async function runWorkflow(ctx) {
|
|
|
679
725
|
// all-or-nothing answer on every install. Independent of `strategy` for that
|
|
680
726
|
// reason, and cheap — buildPRContext is one `git diff --numstat`.
|
|
681
727
|
const docOnlyChange = isDocOnlyChange(buildPRContext(ctx)?.files ?? []);
|
|
682
|
-
|
|
683
|
-
// A smart-mode install quietly behaving as fixed is otherwise invisible.
|
|
684
|
-
fileLog({ level: 'warn', event: 'strategy_unresolved', repo: `${owner}/${repoName}`, pr: prNumber, reason: 'pr_context_unavailable', fallback_tier: config.quality.tier });
|
|
685
|
-
}
|
|
686
|
-
else if (strategy) {
|
|
687
|
-
// A config written before `mode` existed parses as smart on upgrade, so a
|
|
688
|
-
// hand-set `quality.tier` can be silently overridden. onboard preserves the
|
|
689
|
-
// old tier by reading raw yaml, but that only helps users who re-run it —
|
|
690
|
-
// so record it here for everyone else.
|
|
691
|
-
//
|
|
692
|
-
// info, not warn: `config.quality.tier` carries a schema default of
|
|
693
|
-
// `balanced` on every install, so the parsed config cannot tell a hand-set
|
|
694
|
-
// tier from an unset one. Five of the eight classes resolve to something
|
|
695
|
-
// other than balanced, which made this fire on the majority of PRs — and
|
|
696
|
-
// recommend a `mode: fixed` opt-out to users who never chose a tier at all.
|
|
697
|
-
// Only the raw yaml can draw that distinction (thoroughnessDefaults), and it
|
|
698
|
-
// is not available on this path.
|
|
699
|
-
if (strategy.tier && strategy.tier !== config.quality.tier) {
|
|
700
|
-
fileLog({ level: 'info', event: 'strategy_overrode_configured_tier', repo: `${owner}/${repoName}`, pr: prNumber, configured_tier: config.quality.tier, applied_tier: strategy.tier, pr_class: strategy.classId });
|
|
701
|
-
}
|
|
702
|
-
fileLog({ level: 'info', event: 'strategy_resolved', repo: `${owner}/${repoName}`, pr: prNumber, strategy_version: strategy.version, pr_class: strategy.classId, tier: strategy.tier, effort: strategy.effort, steps: strategy.steps, domain: strategy.domain });
|
|
703
|
-
}
|
|
728
|
+
logStrategyResolution(config.quality, strategy, `${owner}/${repoName}`, prNumber);
|
|
704
729
|
// The class's step set NARROWS the configured pipeline; it never widens it.
|
|
705
730
|
// A repo set to review-only stays review-only whatever the class says, which
|
|
706
731
|
// matches how per-repo `crosscheck alter` overrides compose.
|
|
@@ -935,16 +960,22 @@ export async function runWorkflow(ctx) {
|
|
|
935
960
|
const reviewContext = [ctx.issueContext, humanFeedbackBlock].filter(Boolean).join('\n\n') || undefined;
|
|
936
961
|
// Under `quality.mode: smart` the PR's class picks the tier; under fixed
|
|
937
962
|
// this is config.quality untouched.
|
|
963
|
+
const memoryPlan = config.quality.review_memory ? prepareReviewPlan({
|
|
964
|
+
repoDir: tmpDir, subject: `${owner}/${repoName}#${prNumber}`, baseBranch: pr.base.ref,
|
|
965
|
+
instructions: step.instructions ?? DEFAULT_REVIEW_INSTRUCTIONS, policy: JSON.stringify(config.quality),
|
|
966
|
+
}) : undefined;
|
|
967
|
+
if (memoryPlan)
|
|
968
|
+
fileLog({ level: 'info', event: 'review_memory_plan', repo: `${owner}/${repoName}`, pr: prNumber, reviewer, ...stepIdentity, mode: memoryPlan.mode, reason: memoryPlan.reason });
|
|
938
969
|
const runReviewWithVendor = async (candidate) => {
|
|
939
970
|
if (candidate === 'codex') {
|
|
940
971
|
;
|
|
941
|
-
({ review: rawReview, tokensUsed, model, effort, retried } = await runCodexReview(tmpDir, pr.base.ref, pr.title, quality, codexVendor, step.instructions, undefined, ctx.overrideTimeoutMs ?? vendorTimeoutMs(config.vendors.codex.timeout_sec), log, reviewContext, skillSession, config.skills.codex_full_access));
|
|
972
|
+
({ review: rawReview, tokensUsed, model, effort, retried } = await runCodexReview(tmpDir, pr.base.ref, pr.title, quality, codexVendor, memoryPlan?.instructions ?? step.instructions, undefined, ctx.overrideTimeoutMs ?? vendorTimeoutMs(config.vendors.codex.timeout_sec), log, reviewContext, skillSession, config.skills.codex_full_access));
|
|
942
973
|
inputTokens = undefined;
|
|
943
974
|
outputTokens = undefined;
|
|
944
975
|
}
|
|
945
976
|
else {
|
|
946
977
|
;
|
|
947
|
-
({ review: rawReview, tokensUsed, inputTokens, outputTokens, model, effort, retried } = await runClaudeReview(tmpDir, pr.base.ref, pr.title, quality, claudeVendor, config.budget.per_review_usd, step.instructions, undefined, ctx.overrideTimeoutMs ?? vendorTimeoutMs(config.vendors.claude.timeout_sec), !!ctx.roundMode, log, reviewContext, skillSession));
|
|
978
|
+
({ review: rawReview, tokensUsed, inputTokens, outputTokens, model, effort, retried } = await runClaudeReview(tmpDir, pr.base.ref, pr.title, quality, claudeVendor, config.budget.per_review_usd, memoryPlan?.instructions ?? step.instructions, undefined, ctx.overrideTimeoutMs ?? vendorTimeoutMs(config.vendors.claude.timeout_sec), !!ctx.roundMode, log, reviewContext, skillSession));
|
|
948
979
|
}
|
|
949
980
|
};
|
|
950
981
|
try {
|
|
@@ -1011,6 +1042,16 @@ export async function runWorkflow(ctx) {
|
|
|
1011
1042
|
if (retried) {
|
|
1012
1043
|
fileLog({ level: 'info', event: 'review_retried', repo: `${owner}/${repoName}`, pr: prNumber, reviewer, ...stepIdentity, retry_timeout_sec: Math.round(retried.timeoutMs / 1000), retry_delay_sec: Math.round(retried.delayMs / 1000), ...(ctx.round !== undefined && { round: ctx.round }), ...triggerField });
|
|
1013
1044
|
}
|
|
1045
|
+
const structured = memoryPlan ? finishReviewOrFallback(memoryPlan, rawReview) : undefined;
|
|
1046
|
+
if (structured)
|
|
1047
|
+
rawReview = structured.text;
|
|
1048
|
+
if (structured?.adjustments?.length) {
|
|
1049
|
+
fileLog({ level: 'info', event: 'structured_review_reconciled', repo: `${owner}/${repoName}`, pr: prNumber, reviewer, ...stepIdentity, adjustments: structured.adjustments });
|
|
1050
|
+
}
|
|
1051
|
+
if (structured?.fallbackReason) {
|
|
1052
|
+
fileLog({ level: 'warn', event: 'structured_review_fallback', repo: `${owner}/${repoName}`, pr: prNumber, reviewer, ...stepIdentity, reason: structured.fallbackReason });
|
|
1053
|
+
log(chalk.yellow(` structured review unusable (${structured.fallbackReason}) — posting raw output without a verdict`));
|
|
1054
|
+
}
|
|
1014
1055
|
const parsed = parseVerdict(rawReview);
|
|
1015
1056
|
const { clean } = parsed;
|
|
1016
1057
|
if (parsed.verdict === null) {
|
|
@@ -1106,13 +1147,25 @@ export async function runWorkflow(ctx) {
|
|
|
1106
1147
|
// explicable from the log rather than looking like the head-matching case.
|
|
1107
1148
|
fileLog({ level: 'warn', event: 'verdict_sha_off_head', repo: `${owner}/${repoName}`, pr: prNumber, reviewer, ...stepIdentity, verdict, sha: annotationSha, head_sha: shaVerification.headSha, ...(ctx.round !== undefined && { round: ctx.round }), ...triggerField });
|
|
1108
1149
|
}
|
|
1150
|
+
if (memoryPlan) {
|
|
1151
|
+
const { data: current } = await octokit.rest.pulls.get({ owner, repo: repoName, pull_number: prNumber });
|
|
1152
|
+
assertReviewFresh(memoryPlan, current, annotationSha, shaVerification.headSha);
|
|
1153
|
+
}
|
|
1109
1154
|
const commentId = await postReviewComment(octokit, owner, repoName, prNumber, commentBody, reviewer, config.brand, origin, verdict ?? undefined, priorReviewId, isRecheck, model, effectiveType, ctx.round ?? 1, annotationSha, nextStepAnnotation, ctx.trigger === 'kickass' ? 'kickass' : undefined, activatedSkills, effort,
|
|
1110
1155
|
// Withheld when an explicit vendors.*.model overrode the tier map:
|
|
1111
1156
|
// citing a tier the run did not use would assert a routing decision
|
|
1112
1157
|
// that never happened.
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1158
|
+
strategyCitation(reviewer === 'codex' ? config.vendors.codex : config.vendors.claude, strategy, roundStrategy, model));
|
|
1159
|
+
if (memoryPlan && structured?.snapshot) {
|
|
1160
|
+
// The review is already posted; a memory write failure only costs the next review its delta.
|
|
1161
|
+
try {
|
|
1162
|
+
if (!await savePublishedReview(memoryPlan, structured.snapshot))
|
|
1163
|
+
fileLog({ level: 'info', event: 'review_memory_superseded', repo: `${owner}/${repoName}`, pr: prNumber });
|
|
1164
|
+
}
|
|
1165
|
+
catch (err) {
|
|
1166
|
+
fileLog({ level: 'warn', event: 'review_memory_save_failed', repo: `${owner}/${repoName}`, pr: prNumber, error: err instanceof Error ? err.message : String(err) });
|
|
1167
|
+
}
|
|
1168
|
+
}
|
|
1116
1169
|
const commentUrl = `github.com/${owner}/${repoName}/pull/${prNumber}`;
|
|
1117
1170
|
fileLog({ level: 'info', event: 'comment_posted', repo: `${owner}/${repoName}`, pr: prNumber, url: `https://${commentUrl}` });
|
|
1118
1171
|
// A posted verdict that blocks the merge is the product's whole reason to
|