clud-bug 0.7.0-rc.11 → 0.7.0-rc.13

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.
Files changed (55) hide show
  1. package/dist/cli/hooks.d.ts +40 -0
  2. package/dist/cli/hooks.d.ts.map +1 -0
  3. package/dist/cli/hooks.js +105 -0
  4. package/dist/cli/hooks.js.map +1 -0
  5. package/dist/cli/main.d.ts.map +1 -1
  6. package/dist/cli/main.js +61 -0
  7. package/dist/cli/main.js.map +1 -1
  8. package/dist/cli/review-prompt.d.ts +28 -0
  9. package/dist/cli/review-prompt.d.ts.map +1 -0
  10. package/dist/cli/review-prompt.js +169 -0
  11. package/dist/cli/review-prompt.js.map +1 -0
  12. package/dist/cli/update.d.ts.map +1 -1
  13. package/dist/cli/update.js +22 -0
  14. package/dist/cli/update.js.map +1 -1
  15. package/dist/core/budget-plan.d.ts +125 -0
  16. package/dist/core/budget-plan.d.ts.map +1 -0
  17. package/dist/core/budget-plan.js +211 -0
  18. package/dist/core/budget-plan.js.map +1 -0
  19. package/dist/core/index.d.ts +5 -1
  20. package/dist/core/index.d.ts.map +1 -1
  21. package/dist/core/index.js +14 -0
  22. package/dist/core/index.js.map +1 -1
  23. package/dist/core/multi-pass-aggregate.d.ts +131 -0
  24. package/dist/core/multi-pass-aggregate.d.ts.map +1 -0
  25. package/dist/core/multi-pass-aggregate.js +427 -0
  26. package/dist/core/multi-pass-aggregate.js.map +1 -0
  27. package/dist/core/plan-review.d.ts +57 -0
  28. package/dist/core/plan-review.d.ts.map +1 -0
  29. package/dist/core/plan-review.js +77 -0
  30. package/dist/core/plan-review.js.map +1 -0
  31. package/dist/core/review-plan.d.ts +219 -0
  32. package/dist/core/review-plan.d.ts.map +1 -0
  33. package/dist/core/review-plan.js +274 -0
  34. package/dist/core/review-plan.js.map +1 -0
  35. package/dist/core/review-writeback.d.ts +20 -0
  36. package/dist/core/review-writeback.d.ts.map +1 -1
  37. package/dist/core/review-writeback.js +16 -0
  38. package/dist/core/review-writeback.js.map +1 -1
  39. package/dist/core/version.d.ts +1 -1
  40. package/dist/core/version.js +1 -1
  41. package/package.json +1 -1
  42. package/src/cli/hooks.ts +122 -0
  43. package/src/cli/main.ts +56 -0
  44. package/src/cli/review-prompt.ts +206 -0
  45. package/src/cli/update.ts +22 -0
  46. package/src/core/budget-plan.ts +324 -0
  47. package/src/core/index.ts +64 -0
  48. package/src/core/multi-pass-aggregate.ts +545 -0
  49. package/src/core/plan-review.ts +136 -0
  50. package/src/core/review-plan.ts +485 -0
  51. package/src/core/review-writeback.ts +38 -0
  52. package/src/core/version.ts +1 -1
  53. package/templates/workflow-py.yml.tmpl +1 -1
  54. package/templates/workflow-ts.yml.tmpl +1 -1
  55. package/templates/workflow.yml.tmpl +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,125 @@
1
+ import type { ResolvedReviewPasses } from './review-plan.js';
2
+ /**
3
+ * Default per-PR cap. Real number lives in `env.REVIEW_SPEND_CAP_USD` once
4
+ * D.4 wires that env var — for now this is the hard-coded ceiling.
5
+ *
6
+ * $5 = a 3-pass review across 10 expensive skills (~30 calls × $0.15 avg).
7
+ * Anything above that is almost certainly a misconfigured `reviewPasses`.
8
+ */
9
+ export declare const DEFAULT_PER_PR_CAP_USD = 5;
10
+ export interface BudgetEstimateInput {
11
+ /** Resolved per-skill config — one entry per skill in the catalog. */
12
+ resolved: ResolvedReviewPasses[];
13
+ /** Model slugs the orchestrator plans to route to, in pass order. */
14
+ roleModels: string[];
15
+ /**
16
+ * Optional per-PR USD cap override. Defaults to `DEFAULT_PER_PR_CAP_USD`.
17
+ * D.4 wires per-install caps via `INSTALLS:{id}.spend_cap_usd`.
18
+ */
19
+ perPrCapUsd?: number;
20
+ /**
21
+ * Installation flag — `billing === 'exempt'` orgs bypass the cap entirely.
22
+ * D.4 reads this from the install record. For D.2.5, the orchestrator
23
+ * passes the env-allowlist result here.
24
+ */
25
+ billingExempt?: boolean;
26
+ }
27
+ export interface BudgetEstimate {
28
+ /** Total AI calls = sum(skill_count × pass_count). */
29
+ estimatedCalls: number;
30
+ /** Worst-case cost in USD across all planned calls. */
31
+ estimatedCostUsd: number;
32
+ /** Per-call ceiling used (max across the role models). */
33
+ perCallCeilingUsd: number;
34
+ /** The cap the estimate was checked against. */
35
+ capUsd: number;
36
+ }
37
+ export type BudgetVerdict = {
38
+ verdict: 'allow';
39
+ estimate: BudgetEstimate;
40
+ } | {
41
+ verdict: 'deny';
42
+ estimate: BudgetEstimate;
43
+ /** Friendly reason for the orchestrator's "we paused this review" comment. */
44
+ reason: string;
45
+ };
46
+ /**
47
+ * Returns the per-call USD ceiling — max across the role models.
48
+ */
49
+ export declare function perCallCeiling(models: string[]): number;
50
+ /**
51
+ * Layer-1 cost gate. Decides whether the planned passes fit under the cap.
52
+ *
53
+ * Behavior matrix:
54
+ * billingExempt = true → allow (skip cap entirely)
55
+ * estimatedCostUsd > cap → deny + friendly reason
56
+ * estimatedCostUsd <= cap → allow
57
+ * resolved.length === 0 → allow (single-pass D.2.0 path)
58
+ *
59
+ * Until D.4 wires real per-install spending, callers see allow on every
60
+ * normal path — the deny branch only fires on truly absurd estimates.
61
+ */
62
+ export declare function estimateBudget(input: BudgetEstimateInput): BudgetVerdict;
63
+ /**
64
+ * Exposed for tests + future D.4 wiring. Lets callers register a cost
65
+ * ceiling for a newly-routed model without editing this module.
66
+ */
67
+ export declare function __setModelCeilingForTests(model: string, usd: number | null): void;
68
+ /**
69
+ * Default per-PR budget for D.2.6 verifier calls. The spec calls $0.10 the
70
+ * "5 findings × 3 fix-pushes" ceiling; we use 2x that as the cap so a
71
+ * sufficiently-large PR (20 threads × 3 fix-pushes = 60 calls) still fits.
72
+ *
73
+ * D.4 will plumb per-install caps; for D.2.6 we use a single repo-wide
74
+ * default. Installs in BILLING_EXEMPT_ORGS bypass this entirely.
75
+ */
76
+ export declare const DEFAULT_VERIFIER_PER_PR_CAP_USD = 0.6;
77
+ export interface VerifierBudgetInput {
78
+ /** Number of open threads we plan to verify on this fix-push. */
79
+ threadCount: number;
80
+ /**
81
+ * Pass count from D.2.5 multi-pass — we call the verifier once per pass
82
+ * per thread (see resolve-verifier integration doc). Defaults to 1
83
+ * for single-pass installs.
84
+ */
85
+ passesPerThread?: number;
86
+ /**
87
+ * Optional per-PR cap override. Defaults to DEFAULT_VERIFIER_PER_PR_CAP_USD.
88
+ */
89
+ perPrCapUsd?: number;
90
+ /** BILLING_EXEMPT installs bypass the cap. */
91
+ billingExempt?: boolean;
92
+ }
93
+ export interface VerifierBudgetEstimate {
94
+ /** Total verifier AI calls = threadCount × passesPerThread. */
95
+ estimatedCalls: number;
96
+ /** Worst-case cost. */
97
+ estimatedCostUsd: number;
98
+ /** Per-call ceiling used. */
99
+ perCallCeilingUsd: number;
100
+ /** Cap checked against. */
101
+ capUsd: number;
102
+ }
103
+ export type VerifierBudgetVerdict = {
104
+ verdict: 'allow';
105
+ estimate: VerifierBudgetEstimate;
106
+ } | {
107
+ verdict: 'deny';
108
+ estimate: VerifierBudgetEstimate;
109
+ /** Friendly reason for the orchestrator's "skipped: verifier-budget" log. */
110
+ reason: string;
111
+ };
112
+ /**
113
+ * Pre-flight gate for the D.2.6 fix-verifier. Called once per fix-push,
114
+ * BEFORE any verifier call runs. If denied, the orchestrator emits
115
+ * `skipped: budget` for the entire auto-resolve cycle and routes the
116
+ * threads through the heuristic fallback (see auto-resolve).
117
+ *
118
+ * Behavior:
119
+ * billingExempt = true → allow (bypass cap)
120
+ * estimated > cap → deny
121
+ * threadCount === 0 → allow with 0 calls (no-op fix-push, no threads to verify)
122
+ * otherwise → allow
123
+ */
124
+ export declare function estimateVerifierBudget(input: VerifierBudgetInput): VerifierBudgetVerdict;
125
+ //# sourceMappingURL=budget-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget-plan.d.ts","sourceRoot":"","sources":["../../src/core/budget-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AA6D7D;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,IAAM,CAAC;AAM1C,MAAM,WAAW,mBAAmB;IAClC,sEAAsE;IACtE,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,qEAAqE;IACrE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,sDAAsD;IACtD,cAAc,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,gBAAgB,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GACrB;IACE,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;CAC1B,GACD;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,cAAc,CAAC;IACzB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAMN;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAQvD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,aAAa,CA8BxE;AAiBD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,IAAI,CAMN;AAkBD;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IAClC,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,+DAA+D;IAC/D,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,6BAA6B;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,sBAAsB,CAAA;CAAE,GACtD;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEN;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,mBAAmB,GACzB,qBAAqB,CAwBvB"}
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Layer 1 cost gate — pre-flight estimator for multi-pass review.
3
+ *
4
+ * D.2.5 introduces a cost multiplier — a 3-pass review of a 5-skill catalog
5
+ * is 15 AI calls instead of 5. Without a gate, a misconfigured `reviewPasses`
6
+ * block can quietly burn through the AI Gateway budget on a single PR. This
7
+ * module decides BEFORE any AI call whether the review is cheap enough to
8
+ * run, and if not, returns a structured "deny" verdict the orchestrator
9
+ * surfaces as a friendly comment.
10
+ *
11
+ * Two layers, only the first lands in D.2.5:
12
+ *
13
+ * - Layer 1 (this module): per-PR estimate. Sums `skill_loads × pass_count`
14
+ * to produce an `estimatedCalls` count and an `estimatedCostUsd`
15
+ * ceiling. If `estimatedCostUsd > cap`, we deny.
16
+ *
17
+ * - Layer 2 (D.4 — NOT in this module): per-install rolling spend. Reads
18
+ * `INSTALLS:{id}.spend_usd_30d` from Redis. D.4 wires the actual gating;
19
+ * here we just stub the interface.
20
+ *
21
+ * The gate is BEST-EFFORT, intentionally pessimistic. We over-estimate cost
22
+ * (worst-case tokens × highest-tier model) because the alternative is the
23
+ * customer eating a surprise bill. A 20% over-estimate that occasionally
24
+ * causes a "we paused; raise the cap" comment is the right failure mode.
25
+ *
26
+ * Until D.4 wires real per-install budgets, this module always returns
27
+ * `{ verdict: 'allow' }`. The implementation is intentionally complete so
28
+ * D.4 can flip a single switch without changing the orchestrator surface.
29
+ */
30
+ // ---------------------------------------------------------------------------
31
+ // Constants — worst-case cost ceilings
32
+ // ---------------------------------------------------------------------------
33
+ /**
34
+ * Rough USD-per-call ceiling across the model tiers we route to.
35
+ *
36
+ * Numbers are deliberately over-stated — we'd rather deny a borderline
37
+ * review than blow past a billing cap. Reconciled monthly from the AI
38
+ * Gateway dashboard; the D.4 billing module replaces this with live data.
39
+ *
40
+ * Picking the max(model) across the roles array keeps the math local — we
41
+ * don't need per-pass attribution for the estimate, only for billing
42
+ * reconciliation later.
43
+ */
44
+ const MODEL_CEILING_USD = {
45
+ 'anthropic/claude-haiku-4.5': 0.02,
46
+ 'anthropic/claude-sonnet-4.6': 0.08,
47
+ 'anthropic/claude-opus-4.6': 0.4,
48
+ 'anthropic/claude-opus-4.7': 0.5,
49
+ 'openai/gpt-5': 0.4,
50
+ 'openai/gpt-5.2': 0.04,
51
+ 'google/gemini-3-flash': 0.02,
52
+ 'google/gemini-3.1-pro-preview': 0.3,
53
+ };
54
+ /** Fallback ceiling for unknown model slugs. Conservative. */
55
+ const DEFAULT_PER_CALL_USD = 0.5;
56
+ /**
57
+ * Default per-PR cap. Real number lives in `env.REVIEW_SPEND_CAP_USD` once
58
+ * D.4 wires that env var — for now this is the hard-coded ceiling.
59
+ *
60
+ * $5 = a 3-pass review across 10 expensive skills (~30 calls × $0.15 avg).
61
+ * Anything above that is almost certainly a misconfigured `reviewPasses`.
62
+ */
63
+ export const DEFAULT_PER_PR_CAP_USD = 5.0;
64
+ // ---------------------------------------------------------------------------
65
+ // Estimator
66
+ // ---------------------------------------------------------------------------
67
+ /**
68
+ * Returns the per-call USD ceiling — max across the role models.
69
+ */
70
+ export function perCallCeiling(models) {
71
+ if (models.length === 0)
72
+ return DEFAULT_PER_CALL_USD;
73
+ let max = 0;
74
+ for (const m of models) {
75
+ const c = MODEL_CEILING_USD[m] ?? DEFAULT_PER_CALL_USD;
76
+ if (c > max)
77
+ max = c;
78
+ }
79
+ return max;
80
+ }
81
+ /**
82
+ * Layer-1 cost gate. Decides whether the planned passes fit under the cap.
83
+ *
84
+ * Behavior matrix:
85
+ * billingExempt = true → allow (skip cap entirely)
86
+ * estimatedCostUsd > cap → deny + friendly reason
87
+ * estimatedCostUsd <= cap → allow
88
+ * resolved.length === 0 → allow (single-pass D.2.0 path)
89
+ *
90
+ * Until D.4 wires real per-install spending, callers see allow on every
91
+ * normal path — the deny branch only fires on truly absurd estimates.
92
+ */
93
+ export function estimateBudget(input) {
94
+ const cap = input.perPrCapUsd ?? DEFAULT_PER_PR_CAP_USD;
95
+ const ceiling = perCallCeiling(input.roleModels);
96
+ // The orchestrator (runMultiPass) sends all skills in a SINGLE prompt
97
+ // each pass and loops only the max skill's count times. Real call count
98
+ // is max(counts), not sum(counts). Summing over-estimates linearly with
99
+ // catalog size, making multi-pass unreachable for medium+ skill sets.
100
+ const calls = input.resolved.length === 0
101
+ ? 0
102
+ : input.resolved.reduce((max, r) => Math.max(max, r.count), 0);
103
+ const cost = calls * ceiling;
104
+ const estimate = {
105
+ estimatedCalls: calls,
106
+ estimatedCostUsd: cost,
107
+ perCallCeilingUsd: ceiling,
108
+ capUsd: cap,
109
+ };
110
+ if (input.billingExempt) {
111
+ return { verdict: 'allow', estimate };
112
+ }
113
+ if (cost > cap) {
114
+ return {
115
+ verdict: 'deny',
116
+ estimate,
117
+ reason: friendlyDenyReason({ cost, cap, calls, ceiling }),
118
+ };
119
+ }
120
+ return { verdict: 'allow', estimate };
121
+ }
122
+ function friendlyDenyReason(args) {
123
+ return [
124
+ `clud-bug paused this review — estimated cost \`$${args.cost.toFixed(2)}\``,
125
+ `exceeds the per-PR cap of \`$${args.cap.toFixed(2)}\`.`,
126
+ `(${args.calls} planned AI call${args.calls === 1 ? '' : 's'} ×`,
127
+ `worst-case \`$${args.ceiling.toFixed(2)}\` per call.)`,
128
+ 'Lower `reviewPasses.count` in `.claude/skills/.clud-bug.json` and re-trigger.',
129
+ ].join(' ');
130
+ }
131
+ /**
132
+ * Exposed for tests + future D.4 wiring. Lets callers register a cost
133
+ * ceiling for a newly-routed model without editing this module.
134
+ */
135
+ export function __setModelCeilingForTests(model, usd) {
136
+ if (usd === null) {
137
+ delete MODEL_CEILING_USD[model];
138
+ return;
139
+ }
140
+ MODEL_CEILING_USD[model] = usd;
141
+ }
142
+ // ---------------------------------------------------------------------------
143
+ // D.2.6 — auto-resolve verifier cost surface
144
+ // ---------------------------------------------------------------------------
145
+ /**
146
+ * Per-call ceiling for the D.2.6 fix-verifier. Each verifier call is small —
147
+ * ~500 token I/O at Sonnet rates — so a more aggressive ceiling makes sense
148
+ * vs the main-review per-call ceiling. We over-state by ~2x to keep the
149
+ * "$0.10 per PR with 5 findings × 3 fix-pushes" plan budget honest.
150
+ *
151
+ * Sonnet 4.6 at $3/$15 per million tokens × 500 token I/O ≈ $0.005;
152
+ * we use $0.01 as the gate ceiling so a borderline-overbudget verifier doesn't
153
+ * silently silently flip the install over the cap.
154
+ */
155
+ const VERIFIER_PER_CALL_CEILING_USD = 0.01;
156
+ /**
157
+ * Default per-PR budget for D.2.6 verifier calls. The spec calls $0.10 the
158
+ * "5 findings × 3 fix-pushes" ceiling; we use 2x that as the cap so a
159
+ * sufficiently-large PR (20 threads × 3 fix-pushes = 60 calls) still fits.
160
+ *
161
+ * D.4 will plumb per-install caps; for D.2.6 we use a single repo-wide
162
+ * default. Installs in BILLING_EXEMPT_ORGS bypass this entirely.
163
+ */
164
+ export const DEFAULT_VERIFIER_PER_PR_CAP_USD = 0.6;
165
+ /**
166
+ * Pre-flight gate for the D.2.6 fix-verifier. Called once per fix-push,
167
+ * BEFORE any verifier call runs. If denied, the orchestrator emits
168
+ * `skipped: budget` for the entire auto-resolve cycle and routes the
169
+ * threads through the heuristic fallback (see auto-resolve).
170
+ *
171
+ * Behavior:
172
+ * billingExempt = true → allow (bypass cap)
173
+ * estimated > cap → deny
174
+ * threadCount === 0 → allow with 0 calls (no-op fix-push, no threads to verify)
175
+ * otherwise → allow
176
+ */
177
+ export function estimateVerifierBudget(input) {
178
+ const cap = input.perPrCapUsd ?? DEFAULT_VERIFIER_PER_PR_CAP_USD;
179
+ const passes = input.passesPerThread ?? 1;
180
+ const calls = input.threadCount * Math.max(1, passes);
181
+ const cost = calls * VERIFIER_PER_CALL_CEILING_USD;
182
+ const estimate = {
183
+ estimatedCalls: calls,
184
+ estimatedCostUsd: cost,
185
+ perCallCeilingUsd: VERIFIER_PER_CALL_CEILING_USD,
186
+ capUsd: cap,
187
+ };
188
+ if (input.billingExempt) {
189
+ return { verdict: 'allow', estimate };
190
+ }
191
+ if (cost > cap) {
192
+ return {
193
+ verdict: 'deny',
194
+ estimate,
195
+ reason: friendlyVerifierDenyReason({ cost, cap, calls }),
196
+ };
197
+ }
198
+ return { verdict: 'allow', estimate };
199
+ }
200
+ function friendlyVerifierDenyReason(args) {
201
+ return [
202
+ `clud-bug paused D.2.6 fix-verification — estimated cost`,
203
+ `\`$${args.cost.toFixed(2)}\` exceeds the per-PR cap of`,
204
+ `\`$${args.cap.toFixed(2)}\`. (${args.calls} planned verifier call${args.calls === 1 ? '' : 's'} ×`,
205
+ `worst-case \`$${VERIFIER_PER_CALL_CEILING_USD.toFixed(2)}\` per call.)`,
206
+ 'Lower `autoResolve.max_threads_per_fix_push` in',
207
+ '`.claude/skills/.clud-bug.json` or set `autoResolve.mode = "heuristic"`',
208
+ 'to opt out of verified-mode for this install.',
209
+ ].join(' ');
210
+ }
211
+ //# sourceMappingURL=budget-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget-plan.js","sourceRoot":"","sources":["../../src/core/budget-plan.ts"],"names":[],"mappings":"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"}
@@ -6,12 +6,16 @@ export { render, renderFile, pickTemplate, templateLanguage, DEFAULTS, type Rend
6
6
  export { durationToGitSince, renderAuditHeader, type AuditHeaderInput, } from './audit.js';
7
7
  export { reviewSchema, crossCheckSchema, findingItemSchema, findingSchema, perSkillScanItemSchema, dedicatedSectionSchema, summaryCountsSchema, severitySchema, statusHeaderSchema, crossCheckVerdictSchema, severityValues, statusHeaderValues, flattenFindings, unflattenFindings, deriveSummaryCounts, deriveSkillsReferenced, buildReviewFromFindings, type Review, type CrossCheck, type CrossCheckVerdictSchema, type Severity, type StatusHeader, type SummaryCounts, type FindingItem, type PerSkillScanItem as ZodPerSkillScanItem, type DedicatedSection as ZodDedicatedSection, type Finding as ZodFinding, } from './review-schema-zod.js';
8
8
  export { buildReviewPrompt, buildCrossCheckPrompt, buildConsensusPrompt, skillMatchesDiff, globMatch, truncatePatch, sliceUtf8Bytes, MAX_PATCH_BYTES_PER_FILE, DEFAULT_MAX_SKILL_BYTES, type BuildReviewPromptInput, type BuildCrossCheckPromptInput, type BuiltPrompt, type ChangedFile, type ChangedFileStatus, type PullRequestDiff, type PromptAppliesToRule, type PromptSkillFrontmatter, type PromptLoadedSkill, } from './prompt-builder.js';
9
- export { renderReviewFile, renderMultiPassMarkdown, reviewFilePath, reviewCommitMessage, PROTOCOL_VERSION, WRITTEN_BY, SEVERITY_EMOJI as REVIEW_FILE_SEVERITY_EMOJI, type RenderReviewFileInput, type RenderedFindingRef, type CacheStats, type RenderMultiPassMarkdownInput, type MultiPassReview, type UnifiedFinding, type PassAttribution, type PassSource, type ReviewPassMode, type MultiPassVerdict, } from './review-writeback.js';
9
+ export { renderReviewFile, renderMultiPassMarkdown, reviewFilePath, reviewCommitMessage, PROTOCOL_VERSION, WRITTEN_BY, SEVERITY_EMOJI as REVIEW_FILE_SEVERITY_EMOJI, type RenderReviewFileInput, type RenderedFindingRef, type CacheStats, type RenderMultiPassMarkdownInput, type Consensus, type MultiPassReview, type UnifiedFinding, type PassAttribution, type PassSource, type ReviewPassMode, type MultiPassVerdict, } from './review-writeback.js';
10
10
  export { selectReviewEvent, type FormalReviewEvent, type AuthorAssociation, type SelectReviewEventInput, } from './formal-review.js';
11
11
  export { parsePriorReviewFile, diffFindings, findingIdentity, type ParsedFinding, type ParsedReview, } from './diff-findings.js';
12
12
  export { findingId, parseHeadLines, findingAnchorable, extractAnchorContext, renderThreadBody, extractFindingIdFromBody, parseThreadBody, planInlineThreads, REVIEW_THREADS_QUERY, REVIEW_THREADS_STATE_QUERY, RESOLVE_THREAD_MUTATION, ADD_REPLY_MUTATION, type Severity as InlineThreadSeverity, type FindingForThread, type DiffFile, type InlineCommentPlan, type PlanInlineThreadsResult, } from './inline-threads.js';
13
13
  export { resolveAutoResolveConfig, readAutoResolveConfigFromCludBug, runAutoResolve, applyResolutionRules, renderAutoResolveMarker, DEFAULT_AUTO_RESOLVE_CONFIG, type AutoResolveConfig, type PriorThread, type PriorFinding, type ThreadAction, type AutoResolveInput, type AutoResolveResult, type VerifyOutcome, } from './auto-resolve.js';
14
14
  export { VERIFIER_SYSTEM, buildVerifierPrompt, parseVerifierResponse, type VerifySingleFindingInput, } from './resolve-verifier.js';
15
15
  export { applyCanonicalRuleset, loadCanonicalV1, type CanonicalRuleset, type OctokitLike, type ApplyCanonicalRulesetParams, type ApplyResult, } from './configure-github.js';
16
+ export { readReviewPassesConfig, extractSkillReviewPassesOverride, resolveReviewPasses, roleForPass, anyMultiPass, totalPassCount, REVIEW_PASS_MODES, MAX_PASSES, MIN_PASSES, BUILTIN_DEFAULT, BUILTIN_ROLES, type ApplyTo, type ReviewPassesEntry, type ReviewRoleTier, type ReviewRole, type ResolvedReviewPasses, type ReviewPassesConfig, type SkillReviewPassesFrontmatter, type ReviewPlanSkill, type ResolveReviewPassesInput, type ResolveReviewPassesResult, } from './review-plan.js';
17
+ export { perCallCeiling, estimateBudget, estimateVerifierBudget, __setModelCeilingForTests, DEFAULT_PER_PR_CAP_USD, DEFAULT_VERIFIER_PER_PR_CAP_USD, type BudgetEstimateInput, type BudgetEstimate, type BudgetVerdict, type VerifierBudgetInput, type VerifierBudgetEstimate, type VerifierBudgetVerdict, } from './budget-plan.js';
18
+ export { planReview, LARGE_DIFF_THRESHOLD_BYTES, type PlanReviewInput, type ReviewPlan, type ReviewTrigger, type TierDownReason, } from './plan-review.js';
19
+ export { aggregatePasses, deriveConsensus, resolveVerdict, type CrossCheckVerdict, type CrossCheckPassResult, type AggregateInput, } from './multi-pass-aggregate.js';
16
20
  export { API_BASE, MAX_SKILLS, SkillsClient, normalizeList, rankAndCap, readReviewMode, readAppliesTo, appliesToPr, appliesToAuthor, partitionByReviewMode, extractPerSkillLine, selectReviewHeader, extractFirstReviewHeaderLine, selectReviewBody, extractStatsHeader, isCriticalReviewHeader, classifyPerSkillOutcome, parseFrontmatter, stripFrontmatter, type SkillDescriptor, type RankableSkill, type AppliesToRule, type SkillWithOptionalContent, type PrComment, type ReviewStatsHeader, type SkillFrontmatter, type SkillSource, type SkillReviewMode, type SkillKind, type VoiceScope, } from './skills.js';
17
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
@@ -62,5 +62,19 @@ export { VERIFIER_SYSTEM, buildVerifierPrompt, parseVerifierResponse, } from './
62
62
  // its real Octokit instance. Shipped in v0.7.0-rc.4 for Marketplace prep
63
63
  // (Phase 6 task #227).
64
64
  export { applyCanonicalRuleset, loadCanonicalV1, } from './configure-github.js';
65
+ // Wave 6b — review-planning "brain" ported from clud-bug-app/lib. Three pure
66
+ // modules: the multi-pass config resolver (`review-plan`), the Layer-1 cost
67
+ // gate (`budget-plan`), and the multi-pass aggregator (`multi-pass-aggregate`).
68
+ //
69
+ // `ReviewPassMode` is intentionally NOT re-exported here — `review-writeback`
70
+ // above already owns that name in the barrel (both declarations are the same
71
+ // `'cross-check' | 'consensus' | 'independent'` union). Likewise the
72
+ // aggregator's result types (`MultiPassReview`, `UnifiedFinding`,
73
+ // `PassAttribution`, `PassSource`) come from `review-writeback` and are NOT
74
+ // re-declared by the aggregator module — it imports them.
75
+ export { readReviewPassesConfig, extractSkillReviewPassesOverride, resolveReviewPasses, roleForPass, anyMultiPass, totalPassCount, REVIEW_PASS_MODES, MAX_PASSES, MIN_PASSES, BUILTIN_DEFAULT, BUILTIN_ROLES, } from './review-plan.js';
76
+ export { perCallCeiling, estimateBudget, estimateVerifierBudget, __setModelCeilingForTests, DEFAULT_PER_PR_CAP_USD, DEFAULT_VERIFIER_PER_PR_CAP_USD, } from './budget-plan.js';
77
+ export { planReview, LARGE_DIFF_THRESHOLD_BYTES, } from './plan-review.js';
78
+ export { aggregatePasses, deriveConsensus, resolveVerdict, } from './multi-pass-aggregate.js';
65
79
  export { API_BASE, MAX_SKILLS, SkillsClient, normalizeList, rankAndCap, readReviewMode, readAppliesTo, appliesToPr, appliesToAuthor, partitionByReviewMode, extractPerSkillLine, selectReviewHeader, extractFirstReviewHeaderLine, selectReviewBody, extractStatsHeader, isCriticalReviewHeader, classifyPerSkillOutcome, parseFrontmatter, stripFrontmatter, } from './skills.js';
66
80
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ import type { ReviewRole } from './review-plan.js';
2
+ import { type Finding, type Review } from './review-schema-zod.js';
3
+ import type { Consensus, MultiPassReview, PassAttribution, ReviewPassMode, UnifiedFinding } from './review-writeback.js';
4
+ /**
5
+ * Multi-pass aggregator.
6
+ *
7
+ * Takes N passes' review outputs + the active mode + the role definitions
8
+ * and produces a single unified `MultiPassReview` payload the renderer can
9
+ * format with per-pass attribution inline.
10
+ *
11
+ * The three modes are NOT interchangeable in their output shape — see the
12
+ * per-mode comments below.
13
+ *
14
+ * Design discipline:
15
+ * - Pure function. No I/O, no AI calls. Input = N validated reviews +
16
+ * metadata; output = aggregated findings list.
17
+ * - Order-stable. The renderer needs a deterministic finding order so the
18
+ * comment is stable across re-reviews (matters for thread continuity in
19
+ * D.2.6). We preserve Pass 1's order, then append later-pass findings.
20
+ * - Match semantics live here. Two findings are "the same" if their
21
+ * (file, line, skill) tuple matches. Summaries diverge stylistically
22
+ * between passes; key matching on summary is too brittle.
23
+ * - Resolution rules:
24
+ * cross-check → Pass 2 explicitly classified Pass-1 findings as
25
+ * agreed/disagreed via the cross-check schema; we use
26
+ * its verdict verbatim.
27
+ * consensus → Pass 2 ran independent. Same-tuple findings across
28
+ * passes are marked `agreed`; tuple-unique findings are
29
+ * attributed to their pass with provenance.
30
+ * independent → No merging. We emit a flat list with one entry per
31
+ * (pass, finding) — the renderer formats them as a
32
+ * side-by-side review block.
33
+ *
34
+ * The orchestrator owns the AI call orchestration upstream. This module just
35
+ * deals with shapes — call it once per skill (or once per shared bundle).
36
+ *
37
+ * Ported from clud-bug-app/lib/multi-pass-aggregator.ts. The result types
38
+ * (`MultiPassReview`, `UnifiedFinding`, `PassAttribution`, `PassSource`,
39
+ * `ReviewPassMode`) live in `./review-writeback.ts` and are imported here so
40
+ * core has a single declaration for each. The aggregator-internal contracts
41
+ * (`PassSource` is shared; `Consensus`, `CrossCheckVerdict`,
42
+ * `CrossCheckPassResult`, `AggregateInput`) are defined below.
43
+ */
44
+ /**
45
+ * Derive the SPEC §6.10.1 consensus marker from a finding's per-pass
46
+ * attribution list. Mapping rules:
47
+ *
48
+ * - any source === 'agreed' → '2-of-2' (consensus reached)
49
+ * - any source === 'disagreed' → 'arbitrated' (cross-check produced
50
+ * active dissent; the finding still made it through, which is the
51
+ * arbitration outcome we model today — see Consensus type doc)
52
+ * - otherwise (just 'first' / 'independent') → '1-of-N' (single-pass)
53
+ *
54
+ * Priority order: agreed > disagreed > default. If a finding has BOTH
55
+ * an `agreed` and a `disagreed` attribution (e.g., 3-pass setup with
56
+ * Pass 2 agreed + Pass 3 disagreed), `agreed` wins — at least one pass
57
+ * cross-validated the finding, so the gate has consensus.
58
+ */
59
+ export declare function deriveConsensus(attributions: PassAttribution[]): Consensus;
60
+ /**
61
+ * The cross-check pass returns:
62
+ * - One verdict per Pass-1 finding (agreed / disagreed + rationale).
63
+ * - A list of independently-discovered findings (same shape as Finding).
64
+ *
65
+ * We define the response shape here (not in review-schema-zod.ts) because
66
+ * it's an aggregator-internal contract. The orchestrator uses
67
+ * `crossCheckSchema` (from review-schema-zod) for the AI call output type.
68
+ */
69
+ export interface CrossCheckVerdict {
70
+ /** 0-indexed reference to the Pass-1 finding being judged. */
71
+ pass1Index: number;
72
+ /** Pass 2's verdict. */
73
+ verdict: 'agreed' | 'disagreed';
74
+ /** One-line rationale shown inline. Optional but recommended. */
75
+ rationale?: string;
76
+ }
77
+ export interface CrossCheckPassResult {
78
+ /** Per-Pass-1-finding judgements. */
79
+ verdicts: CrossCheckVerdict[];
80
+ /** Newly-discovered findings, independent of Pass 1's list. */
81
+ independentFindings: Finding[];
82
+ }
83
+ export interface AggregateInput {
84
+ /** Mode driving the merge. */
85
+ mode: ReviewPassMode;
86
+ /** Pass 1's review. Required — at minimum we need one pass. */
87
+ firstPass: Review;
88
+ /**
89
+ * Subsequent passes. Shape depends on mode:
90
+ * - cross-check: each entry has `crossCheck` populated; `review` may be
91
+ * omitted (the cross-check pass doesn't produce a full review object).
92
+ * - consensus / independent: each entry has `review` populated; the
93
+ * `crossCheck` field is ignored.
94
+ */
95
+ subsequentPasses: Array<{
96
+ /** 1-indexed pass number, starting at 2. */
97
+ passNumber: number;
98
+ /** Role label + model used. */
99
+ role: ReviewRole;
100
+ /** Cross-check response (only valid when mode === 'cross-check'). */
101
+ crossCheck?: CrossCheckPassResult;
102
+ /** Full review (for consensus / independent modes). */
103
+ review?: Review;
104
+ }>;
105
+ /** Role assigned to Pass 1 — needed for attribution headers. */
106
+ firstPassRole: ReviewRole;
107
+ }
108
+ /**
109
+ * Merges the per-pass results into a single MultiPassReview.
110
+ */
111
+ export declare function aggregatePasses(input: AggregateInput): MultiPassReview;
112
+ /**
113
+ * Resolves the APPROVE / REQUEST_CHANGES verdict per the SPEC §1.8.5 table:
114
+ *
115
+ * mode | request_changes when…
116
+ * --------------+------------------------------------------------------
117
+ * strict (=cross-check default) | ANY pass flagged critical
118
+ * consensus | ≥2 passes flagged the same critical tuple
119
+ * independent | findings side-by-side — human decides per finding.
120
+ * | For automation purposes we treat ANY critical as
121
+ * | request_changes (safer default; humans can downgrade).
122
+ *
123
+ * We expose this both as a return field on `MultiPassReview.verdict` and
124
+ * separately (for tests + future D.2 wiring) as `resolveVerdict`.
125
+ *
126
+ * NOTE: The broader D.2 phase wires APPROVE/REQUEST_CHANGES into actual
127
+ * PR check states. D.2.5 only computes the verdict — surfacing it is left
128
+ * to the renderer (which prefixes the header line with the verdict label).
129
+ */
130
+ export declare function resolveVerdict(mode: ReviewPassMode, findings: UnifiedFinding[], passCount: number): MultiPassReview['verdict'];
131
+ //# sourceMappingURL=multi-pass-aggregate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-pass-aggregate.d.ts","sourceRoot":"","sources":["../../src/core/multi-pass-aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,MAAM,EAEZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,eAAe,EAEf,cAAc,EACd,cAAc,EACf,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAUH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,eAAe,EAAE,GAAG,SAAS,CAO1E;AAWD;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,OAAO,EAAE,QAAQ,GAAG,WAAW,CAAC;IAChC,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,qCAAqC;IACrC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,+DAA+D;IAC/D,mBAAmB,EAAE,OAAO,EAAE,CAAC;CAChC;AAMD,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,gBAAgB,EAAE,KAAK,CAAC;QACtB,4CAA4C;QAC5C,UAAU,EAAE,MAAM,CAAC;QACnB,+BAA+B;QAC/B,IAAI,EAAE,UAAU,CAAC;QACjB,qEAAqE;QACrE,UAAU,CAAC,EAAE,oBAAoB,CAAC;QAClC,uDAAuD;QACvD,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,gEAAgE;IAChE,aAAa,EAAE,UAAU,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAStE;AA2UD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,cAAc,EAAE,EAC1B,SAAS,EAAE,MAAM,GAChB,eAAe,CAAC,SAAS,CAAC,CA0B5B"}