@farmslot/protocol 0.8.0 → 0.10.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.
Files changed (102) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/agents/roles.js +2 -2
  3. package/dist/agents/roles.js.map +1 -1
  4. package/dist/contracts/agents.d.ts +7 -0
  5. package/dist/contracts/agents.d.ts.map +1 -1
  6. package/dist/contracts/backlog.d.ts +17 -0
  7. package/dist/contracts/backlog.d.ts.map +1 -1
  8. package/dist/contracts/backlog.js.map +1 -1
  9. package/dist/contracts/bug-input.d.ts +77 -0
  10. package/dist/contracts/bug-input.d.ts.map +1 -0
  11. package/dist/contracts/bug-input.js +300 -0
  12. package/dist/contracts/bug-input.js.map +1 -0
  13. package/dist/contracts/bug-score.d.ts +73 -0
  14. package/dist/contracts/bug-score.d.ts.map +1 -0
  15. package/dist/contracts/bug-score.js +208 -0
  16. package/dist/contracts/bug-score.js.map +1 -0
  17. package/dist/contracts/dispatch.d.ts +5 -1
  18. package/dist/contracts/dispatch.d.ts.map +1 -1
  19. package/dist/contracts/index.d.ts +5 -0
  20. package/dist/contracts/index.d.ts.map +1 -1
  21. package/dist/contracts/index.js +5 -0
  22. package/dist/contracts/index.js.map +1 -1
  23. package/dist/contracts/pr-recommendation.d.ts +66 -0
  24. package/dist/contracts/pr-recommendation.d.ts.map +1 -0
  25. package/dist/contracts/pr-recommendation.js +88 -0
  26. package/dist/contracts/pr-recommendation.js.map +1 -0
  27. package/dist/contracts/recipes.js +1 -1
  28. package/dist/contracts/recipes.js.map +1 -1
  29. package/dist/contracts/reviews.d.ts +4 -1
  30. package/dist/contracts/reviews.d.ts.map +1 -1
  31. package/dist/contracts/reviews.js.map +1 -1
  32. package/dist/contracts/runner-ids.d.ts +4 -0
  33. package/dist/contracts/runner-ids.d.ts.map +1 -0
  34. package/dist/contracts/runner-ids.js +12 -0
  35. package/dist/contracts/runner-ids.js.map +1 -0
  36. package/dist/contracts/runs.d.ts +50 -2
  37. package/dist/contracts/runs.d.ts.map +1 -1
  38. package/dist/contracts/runs.js +42 -2
  39. package/dist/contracts/runs.js.map +1 -1
  40. package/dist/contracts/slot-selection.d.ts +41 -0
  41. package/dist/contracts/slot-selection.d.ts.map +1 -0
  42. package/dist/contracts/slot-selection.js +128 -0
  43. package/dist/contracts/slot-selection.js.map +1 -0
  44. package/dist/contracts/slots.d.ts +18 -0
  45. package/dist/contracts/slots.d.ts.map +1 -1
  46. package/dist/contracts/slots.js +11 -0
  47. package/dist/contracts/slots.js.map +1 -1
  48. package/dist/contracts/work-graph.d.ts +1 -1
  49. package/dist/contracts/work-graph.d.ts.map +1 -1
  50. package/dist/integrations/github-ref.js +1 -1
  51. package/dist/integrations/github-ref.js.map +1 -1
  52. package/dist/recipe/common.d.ts +3 -0
  53. package/dist/recipe/common.d.ts.map +1 -1
  54. package/dist/recipe/common.js.map +1 -1
  55. package/dist/recipe/index.d.ts +2 -1
  56. package/dist/recipe/index.d.ts.map +1 -1
  57. package/dist/recipe/index.js +2 -1
  58. package/dist/recipe/index.js.map +1 -1
  59. package/dist/recipe/manifest.d.ts.map +1 -1
  60. package/dist/recipe/manifest.js +14 -0
  61. package/dist/recipe/manifest.js.map +1 -1
  62. package/dist/recipe/trust.d.ts +45 -0
  63. package/dist/recipe/trust.d.ts.map +1 -0
  64. package/dist/recipe/trust.js +63 -0
  65. package/dist/recipe/trust.js.map +1 -0
  66. package/dist/recipe/workflow.d.ts +3 -0
  67. package/dist/recipe/workflow.d.ts.map +1 -1
  68. package/dist/recipe/workflow.js +37 -7
  69. package/dist/recipe/workflow.js.map +1 -1
  70. package/dist/rpc/backlog.d.ts +10 -0
  71. package/dist/rpc/backlog.d.ts.map +1 -1
  72. package/dist/rpc/backlog.js +1 -0
  73. package/dist/rpc/backlog.js.map +1 -1
  74. package/dist/rpc/dispatch.d.ts +1 -1
  75. package/dist/rpc/dispatch.d.ts.map +1 -1
  76. package/dist/rpc/registry.d.ts +6 -0
  77. package/dist/rpc/registry.d.ts.map +1 -1
  78. package/dist/rpc/registry.js +6 -0
  79. package/dist/rpc/registry.js.map +1 -1
  80. package/dist/rpc/run.d.ts +11 -1
  81. package/dist/rpc/run.d.ts.map +1 -1
  82. package/dist/rpc/slot.d.ts +53 -1
  83. package/dist/rpc/slot.d.ts.map +1 -1
  84. package/dist/rpc/slot.js +5 -0
  85. package/dist/rpc/slot.js.map +1 -1
  86. package/dist/rpc/tmux.d.ts +1 -1
  87. package/dist/rpc/tmux.d.ts.map +1 -1
  88. package/dist/runs/family-iteration-ledger.js +2 -2
  89. package/dist/runs/family-iteration-ledger.js.map +1 -1
  90. package/dist/runs/run-mode.d.ts +1 -1
  91. package/dist/runs/run-mode.js +2 -2
  92. package/dist/runs/run-mode.js.map +1 -1
  93. package/dist/transport/events.d.ts +2 -0
  94. package/dist/transport/events.d.ts.map +1 -1
  95. package/dist/transport/frames.d.ts +3 -0
  96. package/dist/transport/frames.d.ts.map +1 -1
  97. package/dist/transport/frames.js.map +1 -1
  98. package/dist/version.d.ts +1 -1
  99. package/dist/version.d.ts.map +1 -1
  100. package/dist/version.js +1 -1
  101. package/dist/version.js.map +1 -1
  102. package/package.json +1 -1
@@ -0,0 +1,73 @@
1
+ import { type BugScore, type BugScoreDifficulty } from './bug-input.js';
2
+ export declare const LLM_COMPLEXITIES: readonly ["single-file change", "multi-file change", "architectural change", "unknown"];
3
+ export type LlmComplexity = (typeof LLM_COMPLEXITIES)[number];
4
+ export interface LlmGrade {
5
+ difficulty: BugScoreDifficulty;
6
+ confidence: number;
7
+ one_shot_probability: number;
8
+ reasoning: string;
9
+ similar_past_bugs: string[];
10
+ risk_factors: string[];
11
+ estimated_complexity: LlmComplexity;
12
+ }
13
+ export declare const FINAL_SCORE_SOURCES: readonly ["agreement", "conservative", "heuristic-only", "llm-only", "none"];
14
+ export type FinalScoreSource = (typeof FINAL_SCORE_SOURCES)[number];
15
+ export interface FinalScore {
16
+ difficulty: BugScoreDifficulty;
17
+ one_shot_probability: number;
18
+ recommended_model: string;
19
+ source: FinalScoreSource;
20
+ }
21
+ export interface BugValidation {
22
+ still_valid: boolean;
23
+ confidence: number;
24
+ reason: string;
25
+ }
26
+ /**
27
+ * Strip a leading Markdown code fence (```…```), if present, and parse the
28
+ * remainder as JSON. Mirrors the fence-stripping the grade-bug.sh /
29
+ * validate-bug.sh Python did before `json.loads`. Throws with a teaching error
30
+ * on invalid JSON; callers that tolerate unparseable LLM output (validity check)
31
+ * catch it and fall back to a default.
32
+ */
33
+ export declare function parseLlmJson(text: string): unknown;
34
+ /**
35
+ * Validate a raw LLM grade object against the grade-bug.sh schema rules and
36
+ * return the cleaned, schema-only shape. Throws with a teaching error listing
37
+ * every violation. Optional fields (`risk_factors`, `similar_past_bugs`) default
38
+ * to empty arrays, matching the Python `setdefault` behaviour.
39
+ */
40
+ export declare function normalizeLlmGrade(value: unknown): LlmGrade;
41
+ /**
42
+ * Deterministically merge an LLM grade with the optional heuristic score into a
43
+ * final assessment (grade-bug.sh's final-score block). When both exist and
44
+ * agree, the shared difficulty wins (`agreement`); when they differ, the harder
45
+ * estimate wins (`conservative`) and the one-shot probability is their mean
46
+ * rounded to two decimals. With no heuristic, the LLM grade passes through
47
+ * (`llm-only`).
48
+ */
49
+ export declare function computeFinalScore(llm: LlmGrade, heuristic: BugScore | null): FinalScore;
50
+ /**
51
+ * Apply the validate-bug.sh defaults to a parsed validity object: fill missing
52
+ * `still_valid` (default true), `confidence` (0), and `reason` (empty), coercing
53
+ * each to its declared type. Unparseable LLM output is handled by the caller —
54
+ * pass `{ reason: 'LLM response unparseable' }` to reproduce that fallback.
55
+ */
56
+ export declare function normalizeBugValidation(value: unknown): BugValidation;
57
+ export interface BatchIssueFilter {
58
+ /** ISO date (YYYY-MM-DD); issues last updated before it are dropped. */
59
+ since?: string;
60
+ /** Drop issues that already have an assignee. */
61
+ excludeAssigned?: boolean;
62
+ }
63
+ /**
64
+ * The batch-triage.sh GitHub post-filter: keep issues updated on/after `since`
65
+ * and (when `excludeAssigned`) drop already-assigned issues. ISO timestamps
66
+ * compare lexically, so the `updatedAt[:10] < since` string comparison the Python
67
+ * did is preserved.
68
+ */
69
+ export declare function filterBatchIssues<T extends {
70
+ updatedAt?: string;
71
+ assigned?: boolean;
72
+ }>(issues: T[], filter: BatchIssueFilter): T[];
73
+ //# sourceMappingURL=bug-score.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bug-score.d.ts","sourceRoot":"","sources":["../../src/contracts/bug-score.ts"],"names":[],"mappings":"AAQA,OAAO,EAA0B,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAIhG,eAAO,MAAM,gBAAgB,yFAKnB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oBAAoB,EAAE,aAAa,CAAC;CACrC;AAED,eAAO,MAAM,mBAAmB,8EAMtB,CAAC;AACX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAID,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgBlD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAiD1D;AAgBD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,CA6BvF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAWpE;AAID,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EACpF,MAAM,EAAE,CAAC,EAAE,EACX,MAAM,EAAE,gBAAgB,GACvB,CAAC,EAAE,CASL"}
@@ -0,0 +1,208 @@
1
+ // bug-score.ts — Pure decision cores for the LLM grading / validity / batch
2
+ // stages of the bug pipeline (ported from grade-bug.sh, validate-bug.sh, and
3
+ // the GitHub post-filter in batch-triage.sh). No IO — callers own the `claude`
4
+ // CLI edge, network fetches, and score-file reads/writes.
5
+ //
6
+ // Companion to bug-input.ts (parseBugInput / validateBugScore / deriveScoreKey);
7
+ // together they hold every decision the retired bug scripts encoded.
8
+ import { BUG_SCORE_DIFFICULTIES } from './bug-input.js';
9
+ // ── LLM grade (grade-bug.sh) ─────────────────────────────────────────────────
10
+ export const LLM_COMPLEXITIES = [
11
+ 'single-file change',
12
+ 'multi-file change',
13
+ 'architectural change',
14
+ 'unknown',
15
+ ];
16
+ export const FINAL_SCORE_SOURCES = [
17
+ 'agreement',
18
+ 'conservative',
19
+ 'heuristic-only',
20
+ 'llm-only',
21
+ 'none',
22
+ ];
23
+ /**
24
+ * Strip a leading Markdown code fence (```…```), if present, and parse the
25
+ * remainder as JSON. Mirrors the fence-stripping the grade-bug.sh /
26
+ * validate-bug.sh Python did before `json.loads`. Throws with a teaching error
27
+ * on invalid JSON; callers that tolerate unparseable LLM output (validity check)
28
+ * catch it and fall back to a default.
29
+ */
30
+ export function parseLlmJson(text) {
31
+ let body = text.trim();
32
+ if (body.startsWith('```')) {
33
+ // Drop the opening fence line, then everything from the closing fence on.
34
+ const afterFirstLine = body.slice(body.indexOf('\n') + 1);
35
+ const closeIdx = afterFirstLine.lastIndexOf('```');
36
+ body = (closeIdx === -1 ? afterFirstLine : afterFirstLine.slice(0, closeIdx)).trim();
37
+ }
38
+ try {
39
+ return JSON.parse(body);
40
+ }
41
+ catch {
42
+ throw Object.assign(new Error('could not parse LLM response as JSON'), {
43
+ code: 'LLM_PARSE_ERROR',
44
+ userAction: 'The model must return a single JSON object (optionally in a ``` fence).',
45
+ });
46
+ }
47
+ }
48
+ /**
49
+ * Validate a raw LLM grade object against the grade-bug.sh schema rules and
50
+ * return the cleaned, schema-only shape. Throws with a teaching error listing
51
+ * every violation. Optional fields (`risk_factors`, `similar_past_bugs`) default
52
+ * to empty arrays, matching the Python `setdefault` behaviour.
53
+ */
54
+ export function normalizeLlmGrade(value) {
55
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
56
+ throw Object.assign(new Error('LLM grade must be a JSON object'), {
57
+ code: 'INVALID_LLM_GRADE',
58
+ userAction: 'Ensure the grading model emits a JSON object.',
59
+ });
60
+ }
61
+ const d = value;
62
+ const errors = [];
63
+ if (!BUG_SCORE_DIFFICULTIES.includes(d['difficulty'])) {
64
+ errors.push(`difficulty must be one of ${JSON.stringify([...BUG_SCORE_DIFFICULTIES])}, got: ${JSON.stringify(d['difficulty'])}`);
65
+ }
66
+ const conf = d['confidence'];
67
+ if (typeof conf !== 'number' || isNaN(conf) || conf < 0 || conf > 1) {
68
+ errors.push(`confidence must be 0-1, got: ${JSON.stringify(conf)}`);
69
+ }
70
+ const prob = d['one_shot_probability'];
71
+ if (typeof prob !== 'number' || isNaN(prob) || prob < 0 || prob > 1) {
72
+ errors.push(`one_shot_probability must be 0-1, got: ${JSON.stringify(prob)}`);
73
+ }
74
+ const reasoning = d['reasoning'];
75
+ if (typeof reasoning !== 'string' || reasoning.length === 0) {
76
+ errors.push('reasoning is required and must be a non-empty string');
77
+ }
78
+ if (!LLM_COMPLEXITIES.includes(d['estimated_complexity'])) {
79
+ errors.push(`estimated_complexity must be one of ${JSON.stringify([...LLM_COMPLEXITIES])}, got: ${JSON.stringify(d['estimated_complexity'])}`);
80
+ }
81
+ if (errors.length > 0) {
82
+ throw Object.assign(new Error(`LLM response validation failed: ${errors.join('; ')}`), {
83
+ code: 'INVALID_LLM_GRADE',
84
+ userAction: 'Fix the grading prompt/model so its JSON satisfies the grade schema.',
85
+ });
86
+ }
87
+ return {
88
+ difficulty: d['difficulty'],
89
+ confidence: conf,
90
+ one_shot_probability: prob,
91
+ reasoning: reasoning,
92
+ similar_past_bugs: toStringArray(d['similar_past_bugs']),
93
+ risk_factors: toStringArray(d['risk_factors']),
94
+ estimated_complexity: d['estimated_complexity'],
95
+ };
96
+ }
97
+ const DIFFICULTY_RANK = {
98
+ low: 0,
99
+ medium: 1,
100
+ high: 2,
101
+ extreme: 3,
102
+ };
103
+ const MODEL_BY_DIFFICULTY = {
104
+ low: 'sonnet',
105
+ medium: 'sonnet',
106
+ high: 'sonnet',
107
+ extreme: 'opus',
108
+ };
109
+ /**
110
+ * Deterministically merge an LLM grade with the optional heuristic score into a
111
+ * final assessment (grade-bug.sh's final-score block). When both exist and
112
+ * agree, the shared difficulty wins (`agreement`); when they differ, the harder
113
+ * estimate wins (`conservative`) and the one-shot probability is their mean
114
+ * rounded to two decimals. With no heuristic, the LLM grade passes through
115
+ * (`llm-only`).
116
+ */
117
+ export function computeFinalScore(llm, heuristic) {
118
+ const lRank = DIFFICULTY_RANK[llm.difficulty];
119
+ let difficulty;
120
+ let oneShot;
121
+ let source;
122
+ if (heuristic) {
123
+ const hRank = DIFFICULTY_RANK[heuristic.difficulty];
124
+ if (hRank === lRank) {
125
+ difficulty = heuristic.difficulty;
126
+ source = 'agreement';
127
+ }
128
+ else {
129
+ // Conservative: keep the harder estimate.
130
+ difficulty = hRank > lRank ? heuristic.difficulty : llm.difficulty;
131
+ source = 'conservative';
132
+ }
133
+ oneShot = round2((heuristic.one_shot_probability + llm.one_shot_probability) / 2);
134
+ }
135
+ else {
136
+ difficulty = llm.difficulty;
137
+ oneShot = llm.one_shot_probability;
138
+ source = 'llm-only';
139
+ }
140
+ return {
141
+ difficulty,
142
+ one_shot_probability: oneShot,
143
+ recommended_model: MODEL_BY_DIFFICULTY[difficulty],
144
+ source,
145
+ };
146
+ }
147
+ /**
148
+ * Apply the validate-bug.sh defaults to a parsed validity object: fill missing
149
+ * `still_valid` (default true), `confidence` (0), and `reason` (empty), coercing
150
+ * each to its declared type. Unparseable LLM output is handled by the caller —
151
+ * pass `{ reason: 'LLM response unparseable' }` to reproduce that fallback.
152
+ */
153
+ export function normalizeBugValidation(value) {
154
+ const v = value !== null && typeof value === 'object' && !Array.isArray(value)
155
+ ? value
156
+ : {};
157
+ return {
158
+ still_valid: typeof v['still_valid'] === 'boolean' ? v['still_valid'] : true,
159
+ confidence: typeof v['confidence'] === 'number' && !isNaN(v['confidence']) ? v['confidence'] : 0,
160
+ reason: typeof v['reason'] === 'string' ? v['reason'] : '',
161
+ };
162
+ }
163
+ /**
164
+ * The batch-triage.sh GitHub post-filter: keep issues updated on/after `since`
165
+ * and (when `excludeAssigned`) drop already-assigned issues. ISO timestamps
166
+ * compare lexically, so the `updatedAt[:10] < since` string comparison the Python
167
+ * did is preserved.
168
+ */
169
+ export function filterBatchIssues(issues, filter) {
170
+ return issues.filter((issue) => {
171
+ if (filter.since) {
172
+ const updated = (issue.updatedAt ?? '').slice(0, 10);
173
+ if (updated < filter.since)
174
+ return false;
175
+ }
176
+ if (filter.excludeAssigned && issue.assigned)
177
+ return false;
178
+ return true;
179
+ });
180
+ }
181
+ // ── Private helpers ──────────────────────────────────────────────────────────
182
+ function toStringArray(raw) {
183
+ if (!Array.isArray(raw))
184
+ return [];
185
+ return raw.filter((v) => typeof v === 'string');
186
+ }
187
+ // Round half to even (banker's rounding) at 2 decimals, approximating the
188
+ // retired Python grader's round(x, 2). Math.round rounds half up and diverged on
189
+ // clean decimal ties (mean 0.125 → 0.13 vs Python's 0.12), desyncing new score
190
+ // files from the ones already on disk; the exact-*.5 branch below fixes those.
191
+ //
192
+ // NOTE: this does NOT bit-match Python round(x, 2) on *binary* near-ties. Python
193
+ // rounds the true IEEE-754 double, while we round n*100 — a value like
194
+ // (0.01 + 0.02) / 2 is 0.015000000000000001 in JS, so n*100 lands just above
195
+ // 1.5 and we round to 0.02, whereas Python's round(0.015, 2) yields 0.01. We do
196
+ // not chase bit-parity (it would need arbitrary-precision decimal handling for a
197
+ // cosmetic 0.01 on a probability); scores may therefore differ by 0.01 from the
198
+ // retired Python grader on such near-ties. See the CHANGELOG entry for this port.
199
+ function round2(n) {
200
+ const scaled = n * 100;
201
+ const remainder = scaled - Math.floor(scaled);
202
+ if (remainder === 0.5) {
203
+ const floor = Math.floor(scaled);
204
+ return (floor % 2 === 0 ? floor : floor + 1) / 100;
205
+ }
206
+ return Math.round(scaled) / 100;
207
+ }
208
+ //# sourceMappingURL=bug-score.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bug-score.js","sourceRoot":"","sources":["../../src/contracts/bug-score.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,10 @@ export interface QueueItem {
28
28
  launchCandidateId?: string;
29
29
  launchGroupId?: string;
30
30
  launchSlotPolicy?: import('./backlog.js').BacklogLaunchSlotPolicy['kind'];
31
+ /** Monotonic per-candidate launch attempt: each (re)enqueue of a
32
+ * launch-plan candidate stamps a strictly higher value so run observations can tell
33
+ * a legitimate takeover from a stale echo of a superseded run. */
34
+ launchAttempt?: number;
31
35
  label?: string;
32
36
  flowType: FlowType;
33
37
  project: string;
@@ -66,7 +70,7 @@ export interface QueueItem {
66
70
  startRef?: RunStartRefProvenance | null;
67
71
  /** Fix-bug publication review depth requested when the queue item was created. */
68
72
  reviewDepth?: ReviewDepthPolicy;
69
- /** Ordered extra review loops to run before the first ready gate. */
73
+ /** Ordered independent review loops to run before the first ready gate. */
70
74
  pendingReviewPlan?: ReviewLoopRequest[];
71
75
  evalCell?: EvalQueueCell;
72
76
  priority: number;
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/contracts/dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/contracts/dispatch.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  export * from './agents.js';
2
2
  export * from './analytics.js';
3
3
  export * from './backlog.js';
4
+ export * from './bug-input.js';
5
+ export * from './bug-score.js';
4
6
  export * from './chat.js';
5
7
  export * from './common.js';
6
8
  export * from './config.js';
@@ -8,12 +10,15 @@ export * from './dispatch.js';
8
10
  export * from './evals.js';
9
11
  export * from './family.js';
10
12
  export * from './interactive-operator-packets.js';
13
+ export * from './pr-recommendation.js';
11
14
  export * from './recipes.js';
12
15
  export * from './resources.js';
13
16
  export * from './reviews.js';
14
17
  export * from './roadmap.js';
15
18
  export * from './run-bundles.js';
19
+ export * from './runner-ids.js';
16
20
  export * from './runs.js';
21
+ export * from './slot-selection.js';
17
22
  export * from './slots.js';
18
23
  export * from './task.js';
19
24
  export * from './terminal.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,mCAAmC,CAAC;AAClD,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,mCAAmC,CAAC;AAClD,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC"}
@@ -1,6 +1,8 @@
1
1
  export * from './agents.js';
2
2
  export * from './analytics.js';
3
3
  export * from './backlog.js';
4
+ export * from './bug-input.js';
5
+ export * from './bug-score.js';
4
6
  export * from './chat.js';
5
7
  export * from './common.js';
6
8
  export * from './config.js';
@@ -8,12 +10,15 @@ export * from './dispatch.js';
8
10
  export * from './evals.js';
9
11
  export * from './family.js';
10
12
  export * from './interactive-operator-packets.js';
13
+ export * from './pr-recommendation.js';
11
14
  export * from './recipes.js';
12
15
  export * from './resources.js';
13
16
  export * from './reviews.js';
14
17
  export * from './roadmap.js';
15
18
  export * from './run-bundles.js';
19
+ export * from './runner-ids.js';
16
20
  export * from './runs.js';
21
+ export * from './slot-selection.js';
17
22
  export * from './slots.js';
18
23
  export * from './task.js';
19
24
  export * from './terminal.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,mCAAmC,CAAC;AAClD,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,mCAAmC,CAAC;AAClD,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,66 @@
1
+ import type { PRFamilyMergeState, PRFamilyWorkflowState, PRRecommendation } from './reviews.js';
2
+ /**
3
+ * Minimal family context consumed by recommendation + merge-state functions.
4
+ * The gateway's PRFamilyContext is a superset of this; structural typing
5
+ * means any PRFamilyContext satisfies PRFamilyContextForRecommendation.
6
+ */
7
+ export interface PRFamilyContextForRecommendation {
8
+ workflowState: PRFamilyWorkflowState;
9
+ ownedPrFamily: boolean;
10
+ }
11
+ export interface PRRecommendationParams {
12
+ prState: 'OPEN' | 'CLOSED' | 'MERGED';
13
+ workerActive: boolean;
14
+ anyFailed: boolean;
15
+ mergeConflict: boolean;
16
+ actionableCount: number;
17
+ allPassed: boolean;
18
+ approved: boolean;
19
+ familyContext: PRFamilyContextForRecommendation | null;
20
+ }
21
+ export interface PRMergeStateParams {
22
+ prState: 'OPEN' | 'CLOSED' | 'MERGED';
23
+ familyContext: PRFamilyContextForRecommendation | null;
24
+ anyFailed: boolean;
25
+ mergeConflict: boolean;
26
+ actionableCount: number;
27
+ allPassed: boolean;
28
+ approved: boolean;
29
+ }
30
+ /**
31
+ * Returns true when the PR is in a "passive merge wait" state: the workflow
32
+ * is complete, CI has passed, the PR is approved, and there are no blockers.
33
+ * The operator just needs to click Merge (or enable auto-merge).
34
+ *
35
+ * NOTE: prState='OPEN' is intentional — the PR has not merged yet but is
36
+ * fully ready. Callers filter familyContext to ownedPrFamily=true before
37
+ * passing it here.
38
+ */
39
+ export declare function isPassiveMergeWaitCandidate(params: PRMergeStateParams): boolean;
40
+ export declare function derivePRMergeState(params: PRMergeStateParams): PRFamilyMergeState;
41
+ /**
42
+ * First-match rule engine mapping PR state to a recommendation.
43
+ *
44
+ * Rule ordering vs. pr-monitor.sh (bash):
45
+ * INTENTIONAL DIFFERENCE — workerActive is evaluated first (before
46
+ * MERGED/CLOSED). Bash checks MERGED/CLOSED first, then worker-active
47
+ * within sub-cases. The TS ordering surfaces the live worker sooner in
48
+ * the UI; MERGED/CLOSED slots with an active worker are handled by
49
+ * the pr-monitor.sh formatter using the merged/prState PRStatus fields.
50
+ *
51
+ * Rule ordering vs. bash rule engine (first-match order, bash → TS):
52
+ * merged → MERGED (bash: MERGED)
53
+ * pr_state=CLOSED → CLOSED_WITHOUT_MERGE (bash: CLOSED)
54
+ * merge_conflict → NEEDS_ATTENTION (bash: MERGE CONFLICT [worker-active|action-needed])
55
+ * any_failed → NEEDS_ATTENTION (bash: CI FAILED [worker-active|action-needed])
56
+ * has_actionable → NEEDS_ATTENTION (bash: COMMENTS [worker-active|action-needed])
57
+ * all_passed && !actionable → READY/WAITING (bash: READY)
58
+ * else → IN_REVIEW (bash: PENDING)
59
+ *
60
+ * The bash sub-classifications (worker-active vs action-needed within each
61
+ * NEEDS_ATTENTION case) are visible in PRStatus.workerActive + the individual
62
+ * boolean fields (mergeConflict, anyFailed, actionableBotComments) so
63
+ * formatters can still derive the bash-style detail strings.
64
+ */
65
+ export declare function computePRRecommendation(params: PRRecommendationParams): PRRecommendation;
66
+ //# sourceMappingURL=pr-recommendation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-recommendation.d.ts","sourceRoot":"","sources":["../../src/contracts/pr-recommendation.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhG;;;;GAIG;AACH,MAAM,WAAW,gCAAgC;IAC/C,aAAa,EAAE,qBAAqB,CAAC;IACrC,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtC,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,gCAAgC,GAAG,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtC,aAAa,EAAE,gCAAgC,GAAG,IAAI,CAAC;IACvD,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAW/E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,kBAAkB,CAKjF;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,sBAAsB,GAAG,gBAAgB,CAqBxF"}
@@ -0,0 +1,88 @@
1
+ // pr-recommendation.ts — pure decision functions for PR recommendation.
2
+ // Canonical home for computePRRecommendation, isPassiveMergeWaitCandidate,
3
+ // and derivePRMergeState, shared by gateway (methods/pr.ts), CLI internal
4
+ // verbs, and tests without importing services/gateway.
5
+ //
6
+ // Ported from services/gateway/src/methods/pr.ts as part of the Phase 3 CLI
7
+ // overhaul (bash-decision-core-inventory.md item 4: reconcile pr-monitor.sh
8
+ // rules with computePRRecommendation).
9
+ /**
10
+ * Returns true when the PR is in a "passive merge wait" state: the workflow
11
+ * is complete, CI has passed, the PR is approved, and there are no blockers.
12
+ * The operator just needs to click Merge (or enable auto-merge).
13
+ *
14
+ * NOTE: prState='OPEN' is intentional — the PR has not merged yet but is
15
+ * fully ready. Callers filter familyContext to ownedPrFamily=true before
16
+ * passing it here.
17
+ */
18
+ export function isPassiveMergeWaitCandidate(params) {
19
+ return Boolean(params.familyContext &&
20
+ params.prState === 'OPEN' &&
21
+ params.familyContext.workflowState === 'complete' &&
22
+ !params.anyFailed &&
23
+ !params.mergeConflict &&
24
+ params.actionableCount === 0 &&
25
+ params.allPassed &&
26
+ params.approved);
27
+ }
28
+ export function derivePRMergeState(params) {
29
+ if (!params.familyContext)
30
+ return 'not_applicable';
31
+ if (params.prState === 'MERGED')
32
+ return 'merged';
33
+ if (params.prState === 'CLOSED')
34
+ return 'closed_without_merge';
35
+ return isPassiveMergeWaitCandidate(params) ? 'waiting_for_merge' : 'not_applicable';
36
+ }
37
+ /**
38
+ * First-match rule engine mapping PR state to a recommendation.
39
+ *
40
+ * Rule ordering vs. pr-monitor.sh (bash):
41
+ * INTENTIONAL DIFFERENCE — workerActive is evaluated first (before
42
+ * MERGED/CLOSED). Bash checks MERGED/CLOSED first, then worker-active
43
+ * within sub-cases. The TS ordering surfaces the live worker sooner in
44
+ * the UI; MERGED/CLOSED slots with an active worker are handled by
45
+ * the pr-monitor.sh formatter using the merged/prState PRStatus fields.
46
+ *
47
+ * Rule ordering vs. bash rule engine (first-match order, bash → TS):
48
+ * merged → MERGED (bash: MERGED)
49
+ * pr_state=CLOSED → CLOSED_WITHOUT_MERGE (bash: CLOSED)
50
+ * merge_conflict → NEEDS_ATTENTION (bash: MERGE CONFLICT [worker-active|action-needed])
51
+ * any_failed → NEEDS_ATTENTION (bash: CI FAILED [worker-active|action-needed])
52
+ * has_actionable → NEEDS_ATTENTION (bash: COMMENTS [worker-active|action-needed])
53
+ * all_passed && !actionable → READY/WAITING (bash: READY)
54
+ * else → IN_REVIEW (bash: PENDING)
55
+ *
56
+ * The bash sub-classifications (worker-active vs action-needed within each
57
+ * NEEDS_ATTENTION case) are visible in PRStatus.workerActive + the individual
58
+ * boolean fields (mergeConflict, anyFailed, actionableBotComments) so
59
+ * formatters can still derive the bash-style detail strings.
60
+ */
61
+ export function computePRRecommendation(params) {
62
+ if (params.workerActive)
63
+ return 'WORKING';
64
+ if (params.prState === 'MERGED')
65
+ return 'MERGED';
66
+ if (params.prState === 'CLOSED')
67
+ return 'CLOSED_WITHOUT_MERGE';
68
+ if (params.mergeConflict)
69
+ return 'NEEDS_ATTENTION';
70
+ if (params.anyFailed)
71
+ return 'NEEDS_ATTENTION';
72
+ if (params.actionableCount > 0)
73
+ return 'NEEDS_ATTENTION';
74
+ if (isPassiveMergeWaitCandidate({
75
+ prState: params.prState,
76
+ familyContext: params.familyContext,
77
+ anyFailed: params.anyFailed,
78
+ mergeConflict: params.mergeConflict,
79
+ actionableCount: params.actionableCount,
80
+ allPassed: params.allPassed,
81
+ approved: params.approved,
82
+ }))
83
+ return 'WAITING_FOR_MERGE';
84
+ if (params.allPassed && params.approved && params.actionableCount === 0)
85
+ return 'READY';
86
+ return 'IN_REVIEW';
87
+ }
88
+ //# sourceMappingURL=pr-recommendation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-recommendation.js","sourceRoot":"","sources":["../../src/contracts/pr-recommendation.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,2EAA2E;AAC3E,0EAA0E;AAC1E,uDAAuD;AACvD,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,uCAAuC;AAmCvC;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAA0B;IACpE,OAAO,OAAO,CACZ,MAAM,CAAC,aAAa;QACpB,MAAM,CAAC,OAAO,KAAK,MAAM;QACzB,MAAM,CAAC,aAAa,CAAC,aAAa,KAAK,UAAU;QACjD,CAAC,MAAM,CAAC,SAAS;QACjB,CAAC,MAAM,CAAC,aAAa;QACrB,MAAM,CAAC,eAAe,KAAK,CAAC;QAC5B,MAAM,CAAC,SAAS;QAChB,MAAM,CAAC,QAAQ,CAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,IAAI,CAAC,MAAM,CAAC,aAAa;QAAE,OAAO,gBAAgB,CAAC;IACnD,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACjD,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,sBAAsB,CAAC;IAC/D,OAAO,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACtF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAA8B;IACpE,IAAI,MAAM,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACjD,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,sBAAsB,CAAC;IAC/D,IAAI,MAAM,CAAC,aAAa;QAAE,OAAO,iBAAiB,CAAC;IACnD,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,iBAAiB,CAAC;IAC/C,IAAI,MAAM,CAAC,eAAe,GAAG,CAAC;QAAE,OAAO,iBAAiB,CAAC;IACzD,IACE,2BAA2B,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;QAEF,OAAO,mBAAmB,CAAC;IAC7B,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,eAAe,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACxF,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -40,7 +40,7 @@ const RECIPE_QUALITY_FLOW_TYPES = [
40
40
  'review-pr',
41
41
  'dev',
42
42
  'pr-complete',
43
- 'merge-main',
43
+ 'update-branch',
44
44
  ];
45
45
  function isStringArray(value) {
46
46
  return Array.isArray(value) && value.every((entry) => typeof entry === 'string');
@@ -1 +1 @@
1
- {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/contracts/recipes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/contracts/recipes.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAC,MAAM,sBAAsB,GAG/B;IACF,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,mCAAmC,EAAE;IAC7E,QAAQ,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,oCAAoC,EAAE;IACvF,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,yCAAyC,EAAE;CACnF,CAAC;AAuCF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAEjD,8EAA8E;AAC9E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;AACzE,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,MAAM;IACN,MAAM;IACN,MAAM;IACN,gBAAgB;CACR,CAAC;AACX,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,MAAM;IACN,OAAO;IACP,OAAO;IACP,YAAY;IACZ,OAAO;IACP,SAAS;CACD,CAAC;AACX,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,QAAQ;IACR,SAAS;IACT,0BAA0B;IAC1B,sBAAsB;IACtB,iBAAiB;IACjB,kBAAkB;CACV,CAAC;AACX,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,0BAA0B;IAC1B,sBAAsB;IACtB,iBAAiB;IACjB,kBAAkB;CACV,CAAC;AAEX,MAAM,yBAAyB,GAAG;IAChC,SAAS;IACT,WAAW;IACX,KAAK;IACL,aAAa;IACb,eAAe;CACP,CAAC;AAmEX,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,MAAM,OAAO,GAAG,KAAgC,CAAC;IACjD,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1F,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACrF,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc;IAC/C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE;QAC9C,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1F,MAAM,MAAM,GAAG,SAAoC,CAAC;QACpD,OAAO,CACL,iCAAiC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAsC,CAAC;YACzF,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;YACjC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAC/B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,6BAA6B,CACpC,KAAc;IAEd,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACzE,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC/E,IACE,MAAM,CAAC,SAAS,IAAI,IAAI;QACxB,CAAC,yBAAyB,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAa,CAAC;QAEzE,OAAO,KAAK,CAAC;IACf,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACnF,IAAI,MAAM,CAAC,eAAe,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAChG,IACE,MAAM,CAAC,UAAU,IAAI,IAAI;QACzB,CAAC,0BAA0B,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAA8B,CAAC;QAE5F,OAAO,KAAK,CAAC;IACf,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC;QAAE,OAAO,KAAK,CAAC;IACvF,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC;QAAE,OAAO,KAAK,CAAC;IACvF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,MAAM,IAAI,GAAG,KAAgC,CAAC;IAC9C,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAuC,CAAC;QACzF,OAAO,KAAK,CAAC;IACf,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC1D,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,OAAO,IAAI,CAAC,iBAAiB,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,IACE,IAAI,CAAC,eAAe,IAAI,IAAI;QAC5B,CAAC,+BAA+B,CAAC,QAAQ,CACvC,IAAI,CAAC,eAA6E,CACnF;QAED,OAAO,KAAK,CAAC;IACf,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,MAAM,QAAQ,GAAG,KAAgC,CAAC;IAClD,IAAI,QAAQ,CAAC,OAAO,KAAK,+BAA+B;QAAE,OAAO,KAAK,CAAC;IACvE,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAA+B,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9F,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC9F,OAAO,KAAK,CAAC;IACf,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAkC,CAAC;IAC5D,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,uBAAuB,CAAC;QACpF,OAAO,KAAK,CAAC;IACf,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAClE,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC5C,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,sBAAsB,CAAC;QAE3D,OAAO,KAAK,CAAC;IACf,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC5C,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,sBAAsB,CAAC;QAE3D,OAAO,KAAK,CAAC;IACf,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QAAE,OAAO,KAAK,CAAC;IAClE,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,eAAe,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3E,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,OAAO,IAAI,CAAC;AACd,CAAC;AAaD,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,WAAW,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export interface CICheck {
2
2
  name: string;
3
- status: 'pass' | 'fail' | 'pending';
3
+ status: 'pass' | 'fail' | 'pending' | 'skipped';
4
4
  watchName: string;
5
5
  }
6
6
  export interface BotComment {
@@ -30,6 +30,7 @@ export interface PRStatus {
30
30
  passed: number;
31
31
  failed: number;
32
32
  pending: number;
33
+ skipped: number;
33
34
  total: number;
34
35
  };
35
36
  allCheckSummary?: {
@@ -56,6 +57,8 @@ export interface PRStatus {
56
57
  mergeConflict: boolean;
57
58
  reviewDecision: string;
58
59
  recommendation: PRRecommendation;
60
+ /** True when a dispatch worker is actively running against this PR. */
61
+ workerActive?: boolean;
59
62
  ownedFamily?: boolean;
60
63
  familyId?: string | null;
61
64
  familyRootTicketOrPr?: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"reviews.d.ts","sourceRoot":"","sources":["../../src/contracts/reviews.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reviews.d.ts","sourceRoot":"","sources":["../../src/contracts/reviews.ts"],"names":[],"mappings":"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"}