@farmslot/protocol 0.7.6 → 0.9.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/CHANGELOG.md +18 -2
- package/dist/agents/reviewer-context.d.ts +73 -0
- package/dist/agents/reviewer-context.d.ts.map +1 -0
- package/dist/agents/reviewer-context.js +184 -0
- package/dist/agents/reviewer-context.js.map +1 -0
- package/dist/contracts/agents.d.ts +2 -0
- package/dist/contracts/agents.d.ts.map +1 -1
- package/dist/contracts/backlog.d.ts +6 -0
- package/dist/contracts/backlog.d.ts.map +1 -1
- package/dist/contracts/bug-input.d.ts +69 -0
- package/dist/contracts/bug-input.d.ts.map +1 -0
- package/dist/contracts/bug-input.js +288 -0
- package/dist/contracts/bug-input.js.map +1 -0
- package/dist/contracts/index.d.ts +4 -0
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js +4 -0
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/pr-recommendation.d.ts +66 -0
- package/dist/contracts/pr-recommendation.d.ts.map +1 -0
- package/dist/contracts/pr-recommendation.js +88 -0
- package/dist/contracts/pr-recommendation.js.map +1 -0
- package/dist/contracts/reviews.d.ts +2 -0
- package/dist/contracts/reviews.d.ts.map +1 -1
- package/dist/contracts/reviews.js.map +1 -1
- package/dist/contracts/runner-ids.d.ts +4 -0
- package/dist/contracts/runner-ids.d.ts.map +1 -0
- package/dist/contracts/runner-ids.js +12 -0
- package/dist/contracts/runner-ids.js.map +1 -0
- package/dist/contracts/slot-selection.d.ts +41 -0
- package/dist/contracts/slot-selection.d.ts.map +1 -0
- package/dist/contracts/slot-selection.js +128 -0
- package/dist/contracts/slot-selection.js.map +1 -0
- package/dist/contracts/slots.d.ts +7 -0
- package/dist/contracts/slots.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/recipe/common.d.ts +12 -0
- package/dist/recipe/common.d.ts.map +1 -1
- package/dist/recipe/common.js +2 -0
- package/dist/recipe/common.js.map +1 -1
- package/dist/recipe/document.d.ts.map +1 -1
- package/dist/recipe/document.js +83 -0
- package/dist/recipe/document.js.map +1 -1
- package/dist/recipe/index.d.ts +1 -1
- package/dist/recipe/index.d.ts.map +1 -1
- package/dist/recipe/index.js +1 -1
- package/dist/recipe/index.js.map +1 -1
- package/dist/recipe/manifest.d.ts.map +1 -1
- package/dist/recipe/manifest.js +49 -1
- package/dist/recipe/manifest.js.map +1 -1
- package/dist/rpc/backlog.d.ts +10 -0
- package/dist/rpc/backlog.d.ts.map +1 -1
- package/dist/rpc/backlog.js +1 -0
- package/dist/rpc/backlog.js.map +1 -1
- package/dist/rpc/registry.d.ts +2 -0
- package/dist/rpc/registry.d.ts.map +1 -1
- package/dist/rpc/registry.js +2 -0
- package/dist/rpc/registry.js.map +1 -1
- package/dist/rpc/tmux.d.ts +22 -0
- package/dist/rpc/tmux.d.ts.map +1 -1
- package/dist/rpc/work-graph.d.ts +6 -0
- package/dist/rpc/work-graph.d.ts.map +1 -1
- package/dist/transport/frames.d.ts +3 -0
- package/dist/transport/frames.d.ts.map +1 -1
- package/dist/transport/frames.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -1
- package/schemas/recipe-v1.schema.json +43 -0
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
// bug-input.ts — Pure parsing/validation for bug-input.json (ported from
|
|
2
|
+
// triage-bug.sh, score-bug.sh, download-github-images.sh, and
|
|
3
|
+
// download-jira-images.sh). No IO — callers own network and file operations.
|
|
4
|
+
export const BUG_SCORE_DIFFICULTIES = ['low', 'medium', 'high', 'extreme'];
|
|
5
|
+
/**
|
|
6
|
+
* Extract image URLs from a GitHub issue body (markdown / HTML / bare
|
|
7
|
+
* GitHub user-content links). Shared helper for both GitHub markdown bodies
|
|
8
|
+
* and Jira ADF descriptions that happen to contain inline HTML.
|
|
9
|
+
*
|
|
10
|
+
* Returns full URLs filtered to image-like extensions or GitHub content hosts.
|
|
11
|
+
* Results are deduplicated and sorted for stable output.
|
|
12
|
+
*/
|
|
13
|
+
export function extractImageUrls(body) {
|
|
14
|
+
const urls = new Set();
|
|
15
|
+
//  markdown images
|
|
16
|
+
for (const m of body.matchAll(/!\[[^\]]*\]\(([^)]+)\)/g)) {
|
|
17
|
+
urls.add(m[1]);
|
|
18
|
+
}
|
|
19
|
+
// <img src="url"> or <img src='url'>
|
|
20
|
+
for (const m of body.matchAll(/<img[^>]+src=["']([^"'>]+)["']/g)) {
|
|
21
|
+
urls.add(m[1]);
|
|
22
|
+
}
|
|
23
|
+
// Bare GitHub user-content URLs (user-images.githubusercontent.com and
|
|
24
|
+
// github.com/user-attachments/assets paths used for drag-and-drop uploads)
|
|
25
|
+
for (const m of body.matchAll(/(https:\/\/(?:user-images\.githubusercontent\.com|github\.com\/user-attachments\/assets)\/[^\s)"'>]+)/g)) {
|
|
26
|
+
urls.add(m[1]);
|
|
27
|
+
}
|
|
28
|
+
const IMAGE_EXTENSIONS = ['.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg'];
|
|
29
|
+
return [...urls].sort().filter((url) => {
|
|
30
|
+
const lower = url.toLowerCase();
|
|
31
|
+
const isImage = IMAGE_EXTENSIONS.some((ext) => lower.endsWith(ext));
|
|
32
|
+
const isGhContent = lower.includes('githubusercontent.com') || lower.includes('github.com/user-attachments');
|
|
33
|
+
return isImage || isGhContent;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Recursively flatten an Atlassian Document Format (ADF) node to plain text.
|
|
38
|
+
* ADF is the JSON rich-text format used by Jira REST API v3 description fields.
|
|
39
|
+
*/
|
|
40
|
+
export function flattenAdf(node) {
|
|
41
|
+
if (typeof node === 'string')
|
|
42
|
+
return node;
|
|
43
|
+
if (Array.isArray(node))
|
|
44
|
+
return node.map(flattenAdf).join(' ');
|
|
45
|
+
if (node !== null && typeof node === 'object') {
|
|
46
|
+
const n = node;
|
|
47
|
+
if (n['type'] === 'text')
|
|
48
|
+
return typeof n['text'] === 'string' ? n['text'] : '';
|
|
49
|
+
if (Array.isArray(n['content']))
|
|
50
|
+
return n['content'].map(flattenAdf).join(' ');
|
|
51
|
+
}
|
|
52
|
+
return '';
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Derive the score-file key from a BugInput.
|
|
56
|
+
*
|
|
57
|
+
* GitHub issues become "gh-{number}" (e.g. "gh-12345").
|
|
58
|
+
* Jira keys are lowercased (e.g. "proj-2236").
|
|
59
|
+
*/
|
|
60
|
+
export function deriveScoreKey(bug) {
|
|
61
|
+
if (bug.github_issue) {
|
|
62
|
+
const num = bug.github_issue.includes('#')
|
|
63
|
+
? bug.github_issue.split('#').pop()
|
|
64
|
+
: bug.github_issue;
|
|
65
|
+
return `gh-${num}`;
|
|
66
|
+
}
|
|
67
|
+
if (bug.jira_key) {
|
|
68
|
+
return bug.jira_key.toLowerCase();
|
|
69
|
+
}
|
|
70
|
+
throw new Error('BugInput has neither github_issue nor jira_key — cannot derive score key');
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Parse a raw GitHub issue JSON response (from `gh issue view --json
|
|
74
|
+
* title,body,labels,state,url`) into a BugInput.
|
|
75
|
+
*
|
|
76
|
+
* Extracts: AC sections, reproduction steps, screenshot basenames,
|
|
77
|
+
* image URLs, and linked PR references from the issue body.
|
|
78
|
+
* Derives repo+number from the `url` field.
|
|
79
|
+
*/
|
|
80
|
+
export function parseBugInput(source, raw) {
|
|
81
|
+
if (source === 'github')
|
|
82
|
+
return parseGitHubIssue(raw);
|
|
83
|
+
return parseJiraIssue(raw);
|
|
84
|
+
}
|
|
85
|
+
// ── Private helpers ──────────────────────────────────────────────────────────
|
|
86
|
+
function parseGitHubIssue(raw) {
|
|
87
|
+
const gh = (raw ?? {});
|
|
88
|
+
const url = typeof gh['url'] === 'string' ? gh['url'] : '';
|
|
89
|
+
const urlMatch = url.match(/https?:\/\/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);
|
|
90
|
+
if (!urlMatch) {
|
|
91
|
+
throw Object.assign(new Error(`Cannot parse GitHub issue URL from raw JSON: "${url}"`), {
|
|
92
|
+
code: 'PARSE_ERROR',
|
|
93
|
+
userAction: 'Ensure the raw JSON comes from `gh issue view --json title,body,labels,state,url`.',
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
const repo = urlMatch[1];
|
|
97
|
+
const number = urlMatch[2];
|
|
98
|
+
const body = typeof gh['body'] === 'string' ? gh['body'] : '';
|
|
99
|
+
const title = typeof gh['title'] === 'string' ? gh['title'] : '';
|
|
100
|
+
const state = typeof gh['state'] === 'string' ? gh['state'].toLowerCase() : 'open';
|
|
101
|
+
const labels = parseLabels(gh['labels']);
|
|
102
|
+
const ac = parseMarkdownSection(body, /##\s*(?:Acceptance Criteria|Expected Behavior)\s*\n([\s\S]*?)(?=\n##|$)/);
|
|
103
|
+
const steps = parseMarkdownSection(body, /##\s*(?:Steps to Reproduce|Repro Steps)\s*\n([\s\S]*?)(?=\n##|$)/, true);
|
|
104
|
+
// Screenshots: basenames (≤50 chars) from markdown images and <img> tags,
|
|
105
|
+
// matching the shape triage-bug.sh's Python produced.
|
|
106
|
+
const screenshotUrls = [];
|
|
107
|
+
for (const m of body.matchAll(/!\[[^\]]*\]\(([^)]+)\)/g)) {
|
|
108
|
+
screenshotUrls.push(m[1]);
|
|
109
|
+
}
|
|
110
|
+
for (const m of body.matchAll(/<img[^>]+src=["']([^"'>]+)["']/g)) {
|
|
111
|
+
screenshotUrls.push(m[1]);
|
|
112
|
+
}
|
|
113
|
+
const screenshots = screenshotUrls.map((u) => {
|
|
114
|
+
const basename = u.split('/').pop() ?? u;
|
|
115
|
+
return basename.slice(0, 50);
|
|
116
|
+
});
|
|
117
|
+
// Linked PRs: #N or repo#N in body, excluding the current issue number.
|
|
118
|
+
const escapedRepo = repo.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
119
|
+
const linkPattern = new RegExp(`(?:${escapedRepo})?#(\\d+)`, 'g');
|
|
120
|
+
const linkedPrSet = new Set();
|
|
121
|
+
for (const m of body.matchAll(linkPattern)) {
|
|
122
|
+
if (m[1] !== number)
|
|
123
|
+
linkedPrSet.add(`${repo}#${m[1]}`);
|
|
124
|
+
}
|
|
125
|
+
const linked_prs = [...linkedPrSet];
|
|
126
|
+
const image_urls = extractImageUrls(body);
|
|
127
|
+
return {
|
|
128
|
+
source: 'github',
|
|
129
|
+
github_issue: `${repo}#${number}`,
|
|
130
|
+
jira_key: '',
|
|
131
|
+
title,
|
|
132
|
+
description: body,
|
|
133
|
+
acceptance_criteria: ac,
|
|
134
|
+
affected_area: '',
|
|
135
|
+
steps_to_reproduce: steps,
|
|
136
|
+
labels,
|
|
137
|
+
components: [],
|
|
138
|
+
screenshots,
|
|
139
|
+
state,
|
|
140
|
+
linked_prs,
|
|
141
|
+
image_urls,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function parseJiraIssue(raw) {
|
|
145
|
+
const jira = (raw ?? {});
|
|
146
|
+
if ('errorMessages' in jira) {
|
|
147
|
+
const msgs = jira['errorMessages'];
|
|
148
|
+
throw Object.assign(new Error(`Jira API error: ${JSON.stringify(msgs)}`), {
|
|
149
|
+
code: 'JIRA_API_ERROR',
|
|
150
|
+
userAction: 'Check JIRA_EMAIL, JIRA_TOKEN, and the Jira base URL in project.json.',
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
const key = typeof jira['key'] === 'string' ? jira['key'] : '';
|
|
154
|
+
const fields = (jira['fields'] ?? {});
|
|
155
|
+
const title = typeof fields['summary'] === 'string' ? fields['summary'] : '';
|
|
156
|
+
// Description: ADF object → flatten to text, or plain string fallback.
|
|
157
|
+
const descRaw = fields['description'];
|
|
158
|
+
const body = typeof descRaw === 'object' && descRaw !== null
|
|
159
|
+
? flattenAdf(descRaw)
|
|
160
|
+
: typeof descRaw === 'string'
|
|
161
|
+
? descRaw
|
|
162
|
+
: '';
|
|
163
|
+
const state = (() => {
|
|
164
|
+
const s = fields['status'];
|
|
165
|
+
if (s !== null && typeof s === 'object') {
|
|
166
|
+
const name = s['name'];
|
|
167
|
+
return typeof name === 'string' ? name.toLowerCase() : 'open';
|
|
168
|
+
}
|
|
169
|
+
return typeof s === 'string' ? s.toLowerCase() : 'open';
|
|
170
|
+
})();
|
|
171
|
+
const rawLabels = fields['labels'];
|
|
172
|
+
const labels = Array.isArray(rawLabels)
|
|
173
|
+
? rawLabels.filter((l) => typeof l === 'string')
|
|
174
|
+
: [];
|
|
175
|
+
const components = (() => {
|
|
176
|
+
const raw = fields['components'];
|
|
177
|
+
if (!Array.isArray(raw))
|
|
178
|
+
return [];
|
|
179
|
+
return raw
|
|
180
|
+
.map((c) => {
|
|
181
|
+
if (c !== null && typeof c === 'object') {
|
|
182
|
+
const name = c['name'];
|
|
183
|
+
return typeof name === 'string' ? name : '';
|
|
184
|
+
}
|
|
185
|
+
return typeof c === 'string' ? c : '';
|
|
186
|
+
})
|
|
187
|
+
.filter(Boolean);
|
|
188
|
+
})();
|
|
189
|
+
const ac = parseJiraSection(body, /(?:Acceptance Criteria|Expected Behavior)[:\s]*\n([\s\S]*?)(?=\n[A-Z]|$)/);
|
|
190
|
+
const steps = parseJiraSection(body, /(?:Steps to Reproduce|Repro Steps)[:\s]*\n([\s\S]*?)(?=\n[A-Z]|$)/, true);
|
|
191
|
+
// Jira attachments are downloaded separately via the attachment API;
|
|
192
|
+
// image_urls from the description text is available for embedded images.
|
|
193
|
+
const image_urls = extractImageUrls(body);
|
|
194
|
+
return {
|
|
195
|
+
source: 'jira',
|
|
196
|
+
github_issue: '',
|
|
197
|
+
jira_key: key,
|
|
198
|
+
title,
|
|
199
|
+
description: body,
|
|
200
|
+
acceptance_criteria: ac,
|
|
201
|
+
affected_area: '',
|
|
202
|
+
steps_to_reproduce: steps,
|
|
203
|
+
labels,
|
|
204
|
+
components,
|
|
205
|
+
screenshots: [],
|
|
206
|
+
state,
|
|
207
|
+
linked_prs: [],
|
|
208
|
+
image_urls,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Parse a markdown `## Section` into trimmed non-empty lines.
|
|
213
|
+
* When `isSteps` is true, also strips leading ordered-list markers (e.g. "1. ")
|
|
214
|
+
* matching the Python `re.sub(r'^[\s\d.*-]+', '', line)` used for steps sections.
|
|
215
|
+
* For other sections (e.g. AC), only list bullets (`*`, `-`) and whitespace are stripped.
|
|
216
|
+
*/
|
|
217
|
+
function parseMarkdownSection(body, pattern, isSteps = false) {
|
|
218
|
+
const match = body.match(pattern);
|
|
219
|
+
if (!match?.[1])
|
|
220
|
+
return [];
|
|
221
|
+
const stripPattern = isSteps ? /^[\s\d.*-]+/ : /^[\s*-]+/;
|
|
222
|
+
return match[1]
|
|
223
|
+
.trim()
|
|
224
|
+
.split('\n')
|
|
225
|
+
.map((line) => line.replace(stripPattern, '').trim())
|
|
226
|
+
.filter(Boolean);
|
|
227
|
+
}
|
|
228
|
+
/** Parse a Jira section header (no `##` prefix) into trimmed non-empty lines. */
|
|
229
|
+
function parseJiraSection(body, pattern, isSteps = false) {
|
|
230
|
+
const match = body.match(pattern);
|
|
231
|
+
if (!match?.[1])
|
|
232
|
+
return [];
|
|
233
|
+
const stripPattern = isSteps ? /^[\s\d.*-]+/ : /^[\s*-]+/;
|
|
234
|
+
return match[1]
|
|
235
|
+
.trim()
|
|
236
|
+
.split('\n')
|
|
237
|
+
.map((line) => line.replace(stripPattern, '').trim())
|
|
238
|
+
.filter(Boolean);
|
|
239
|
+
}
|
|
240
|
+
function parseLabels(raw) {
|
|
241
|
+
if (!Array.isArray(raw))
|
|
242
|
+
return [];
|
|
243
|
+
return raw
|
|
244
|
+
.map((l) => {
|
|
245
|
+
if (l !== null && typeof l === 'object') {
|
|
246
|
+
const name = l['name'];
|
|
247
|
+
return typeof name === 'string' ? name : '';
|
|
248
|
+
}
|
|
249
|
+
return typeof l === 'string' ? l : '';
|
|
250
|
+
})
|
|
251
|
+
.filter(Boolean);
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Validate a scorer output object against the score-bug.sh contract.
|
|
255
|
+
* Throws with a teaching error message on any violation.
|
|
256
|
+
* On success, the value is narrowed to BugScore.
|
|
257
|
+
*/
|
|
258
|
+
export function validateBugScore(value) {
|
|
259
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
260
|
+
throw Object.assign(new Error('scorer output must be a JSON object'), {
|
|
261
|
+
code: 'INVALID_SCORE',
|
|
262
|
+
userAction: 'Ensure the scoring script emits a JSON object to stdout.',
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
const d = value;
|
|
266
|
+
const required = ['difficulty', 'one_shot_probability', 'category'];
|
|
267
|
+
const missing = required.filter((f) => !(f in d));
|
|
268
|
+
if (missing.length > 0) {
|
|
269
|
+
throw Object.assign(new Error(`scorer output is missing required fields: ${JSON.stringify(missing)}`), {
|
|
270
|
+
code: 'INVALID_SCORE',
|
|
271
|
+
userAction: `Add the missing fields to your scoring script output: ${missing.join(', ')}.`,
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
if (!BUG_SCORE_DIFFICULTIES.includes(d['difficulty'])) {
|
|
275
|
+
throw Object.assign(new Error(`difficulty must be one of ${JSON.stringify([...BUG_SCORE_DIFFICULTIES])}, got: ${JSON.stringify(d['difficulty'])}`), {
|
|
276
|
+
code: 'INVALID_SCORE',
|
|
277
|
+
userAction: `Set difficulty to one of: ${BUG_SCORE_DIFFICULTIES.join(', ')}.`,
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
const prob = d['one_shot_probability'];
|
|
281
|
+
if (typeof prob !== 'number' || isNaN(prob) || prob < 0 || prob > 1) {
|
|
282
|
+
throw Object.assign(new Error(`one_shot_probability must be a number in [0, 1], got: ${JSON.stringify(prob)}`), {
|
|
283
|
+
code: 'INVALID_SCORE',
|
|
284
|
+
userAction: 'Set one_shot_probability to a decimal between 0 and 1 (e.g. 0.4).',
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=bug-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bug-input.js","sourceRoot":"","sources":["../../src/contracts/bug-input.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,8DAA8D;AAC9D,6EAA6E;AAI7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAU,CAAC;AAkCpF;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,8BAA8B;IAC9B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,qCAAqC;IACrC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,iCAAiC,CAAC,EAAE,CAAC;QACjE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,uEAAuE;IACvE,2EAA2E;IAC3E,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAC3B,wGAAwG,CACzG,EAAE,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACpE,MAAM,WAAW,GACf,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;QAC3F,OAAO,OAAO,IAAI,WAAW,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/D,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,IAA+B,CAAC;QAC1C,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,MAAM;YAAE,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAa;IAC1C,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;YACxC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG;YACpC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QACrB,OAAO,MAAM,GAAG,EAAE,CAAC;IACrB,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;AAC9F,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,MAAyB,EAAE,GAAY;IACnE,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACtD,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,gFAAgF;AAEhF,SAAS,gBAAgB,CAAC,GAAY;IACpC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAA4B,CAAC;IAElD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;IACpF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iDAAiD,GAAG,GAAG,CAAC,EAAE;YACtF,IAAI,EAAE,aAAa;YACnB,UAAU,EACR,oFAAoF;SACvF,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE3B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAEnF,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEzC,MAAM,EAAE,GAAG,oBAAoB,CAC7B,IAAI,EACJ,yEAAyE,CAC1E,CAAC;IACF,MAAM,KAAK,GAAG,oBAAoB,CAChC,IAAI,EACJ,kEAAkE,EAClE,IAAI,CACL,CAAC;IAEF,0EAA0E;IAC1E,sDAAsD;IACtD,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;QACzD,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,iCAAiC,CAAC,EAAE,CAAC;QACjE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,MAAM,WAAW,WAAW,EAAE,GAAG,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM;YAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,UAAU,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;IAEpC,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAE1C,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,GAAG,IAAI,IAAI,MAAM,EAAE;QACjC,QAAQ,EAAE,EAAE;QACZ,KAAK;QACL,WAAW,EAAE,IAAI;QACjB,mBAAmB,EAAE,EAAE;QACvB,aAAa,EAAE,EAAE;QACjB,kBAAkB,EAAE,KAAK;QACzB,MAAM;QACN,UAAU,EAAE,EAAE;QACd,WAAW;QACX,KAAK;QACL,UAAU;QACV,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,GAAY;IAClC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAA4B,CAAC;IAEpD,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;QACnC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YACxE,IAAI,EAAE,gBAAgB;YACtB,UAAU,EAAE,sEAAsE;SACnF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAC;IAEjE,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7E,uEAAuE;IACvE,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IACtC,MAAM,IAAI,GACR,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;QAC7C,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;QACrB,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ;YAC3B,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,EAAE,CAAC;IAEX,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxC,MAAM,IAAI,GAAI,CAA6B,CAAC,MAAM,CAAC,CAAC;YACpD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAChE,CAAC;QACD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1D,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,SAAS,GAAY,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QACrC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QAC7D,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;QACvB,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QACnC,OAAO,GAAG;aACP,GAAG,CAAC,CAAC,CAAU,EAAE,EAAE;YAClB,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAI,CAA6B,CAAC,MAAM,CAAC,CAAC;gBACpD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,CAAC;YACD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,EAAE,GAAG,gBAAgB,CACzB,IAAI,EACJ,0EAA0E,CAC3E,CAAC;IACF,MAAM,KAAK,GAAG,gBAAgB,CAC5B,IAAI,EACJ,mEAAmE,EACnE,IAAI,CACL,CAAC;IAEF,qEAAqE;IACrE,yEAAyE;IACzE,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAE1C,OAAO;QACL,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE,GAAG;QACb,KAAK;QACL,WAAW,EAAE,IAAI;QACjB,mBAAmB,EAAE,EAAE;QACvB,aAAa,EAAE,EAAE;QACjB,kBAAkB,EAAE,KAAK;QACzB,MAAM;QACN,UAAU;QACV,WAAW,EAAE,EAAE;QACf,KAAK;QACL,UAAU,EAAE,EAAE;QACd,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,IAAY,EAAE,OAAe,EAAE,OAAO,GAAG,KAAK;IAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC;IAC1D,OAAO,KAAK,CAAC,CAAC,CAAC;SACZ,IAAI,EAAE;SACN,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SACpD,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,iFAAiF;AACjF,SAAS,gBAAgB,CAAC,IAAY,EAAE,OAAe,EAAE,OAAO,GAAG,KAAK;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC;IAC1D,OAAO,KAAK,CAAC,CAAC,CAAC;SACZ,IAAI,EAAE;SACN,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SACpD,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,GAAG;SACP,GAAG,CAAC,CAAC,CAAU,EAAE,EAAE;QAClB,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxC,MAAM,IAAI,GAAI,CAA6B,CAAC,MAAM,CAAC,CAAC;YACpD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,CAAC;QACD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,EAAE;YACpE,IAAI,EAAE,eAAe;YACrB,UAAU,EAAE,0DAA0D;SACvE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,GAAG,KAAgC,CAAC;IAE3C,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,sBAAsB,EAAE,UAAU,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,6CAA6C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EACjF;YACE,IAAI,EAAE,eAAe;YACrB,UAAU,EAAE,yDAAyD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;SAC3F,CACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAuB,CAAC,EAAE,CAAC;QAC5E,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,6BAA6B,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,sBAAsB,CAAC,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CACpH,EACD;YACE,IAAI,EAAE,eAAe;YACrB,UAAU,EAAE,6BAA6B,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;SAC9E,CACF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC;IACvC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACpE,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,yDAAyD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAC1F;YACE,IAAI,EAAE,eAAe;YACrB,UAAU,EAAE,mEAAmE;SAChF,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './agents.js';
|
|
2
2
|
export * from './analytics.js';
|
|
3
3
|
export * from './backlog.js';
|
|
4
|
+
export * from './bug-input.js';
|
|
4
5
|
export * from './chat.js';
|
|
5
6
|
export * from './common.js';
|
|
6
7
|
export * from './config.js';
|
|
@@ -8,12 +9,15 @@ export * from './dispatch.js';
|
|
|
8
9
|
export * from './evals.js';
|
|
9
10
|
export * from './family.js';
|
|
10
11
|
export * from './interactive-operator-packets.js';
|
|
12
|
+
export * from './pr-recommendation.js';
|
|
11
13
|
export * from './recipes.js';
|
|
12
14
|
export * from './resources.js';
|
|
13
15
|
export * from './reviews.js';
|
|
14
16
|
export * from './roadmap.js';
|
|
15
17
|
export * from './run-bundles.js';
|
|
18
|
+
export * from './runner-ids.js';
|
|
16
19
|
export * from './runs.js';
|
|
20
|
+
export * from './slot-selection.js';
|
|
17
21
|
export * from './slots.js';
|
|
18
22
|
export * from './task.js';
|
|
19
23
|
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,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"}
|
package/dist/contracts/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './agents.js';
|
|
2
2
|
export * from './analytics.js';
|
|
3
3
|
export * from './backlog.js';
|
|
4
|
+
export * from './bug-input.js';
|
|
4
5
|
export * from './chat.js';
|
|
5
6
|
export * from './common.js';
|
|
6
7
|
export * from './config.js';
|
|
@@ -8,12 +9,15 @@ export * from './dispatch.js';
|
|
|
8
9
|
export * from './evals.js';
|
|
9
10
|
export * from './family.js';
|
|
10
11
|
export * from './interactive-operator-packets.js';
|
|
12
|
+
export * from './pr-recommendation.js';
|
|
11
13
|
export * from './recipes.js';
|
|
12
14
|
export * from './resources.js';
|
|
13
15
|
export * from './reviews.js';
|
|
14
16
|
export * from './roadmap.js';
|
|
15
17
|
export * from './run-bundles.js';
|
|
18
|
+
export * from './runner-ids.js';
|
|
16
19
|
export * from './runs.js';
|
|
20
|
+
export * from './slot-selection.js';
|
|
17
21
|
export * from './slots.js';
|
|
18
22
|
export * from './task.js';
|
|
19
23
|
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,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"}
|
|
@@ -56,6 +56,8 @@ export interface PRStatus {
|
|
|
56
56
|
mergeConflict: boolean;
|
|
57
57
|
reviewDecision: string;
|
|
58
58
|
recommendation: PRRecommendation;
|
|
59
|
+
/** True when a dispatch worker is actively running against this PR. */
|
|
60
|
+
workerActive?: boolean;
|
|
59
61
|
ownedFamily?: boolean;
|
|
60
62
|
familyId?: string | null;
|
|
61
63
|
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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reviews.js","sourceRoot":"","sources":["../../src/contracts/reviews.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reviews.js","sourceRoot":"","sources":["../../src/contracts/reviews.ts"],"names":[],"mappings":"AAyHA,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner-ids.d.ts","sourceRoot":"","sources":["../../src/contracts/runner-ids.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc,WAAW,CAAC;AAEvC,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAEjD,CAAC;AAEF,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGhE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// runner-ids.ts — canonical runner-id vocabulary shared by every surface
|
|
2
|
+
// (gateway registry, CLI, slot-config template expansion). Capability data
|
|
3
|
+
// stays in the gateway runner registry (ADR-023); this is names only.
|
|
4
|
+
export const DEFAULT_RUNNER = 'claude';
|
|
5
|
+
export const RUNNER_ALIASES = {
|
|
6
|
+
'claude-code': 'claude',
|
|
7
|
+
};
|
|
8
|
+
export function normalizeRunner(runnerId) {
|
|
9
|
+
const normalized = (runnerId ?? DEFAULT_RUNNER).trim().toLowerCase();
|
|
10
|
+
return (RUNNER_ALIASES[normalized] ?? normalized) || DEFAULT_RUNNER;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=runner-ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner-ids.js","sourceRoot":"","sources":["../../src/contracts/runner-ids.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,2EAA2E;AAC3E,sEAAsE;AAEtE,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEvC,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD,aAAa,EAAE,QAAQ;CACxB,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,QAAwB;IACtD,MAAM,UAAU,GAAG,CAAC,QAAQ,IAAI,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrE,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,cAAc,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { FleetStatus, SlotStatus } from './slots.js';
|
|
2
|
+
export interface SelectSlotOptions {
|
|
3
|
+
project?: string;
|
|
4
|
+
/** Validate mode: check this specific slot instead of picking one. */
|
|
5
|
+
slotId?: string;
|
|
6
|
+
}
|
|
7
|
+
export type SelectSlotFailureCode = 'FLEET_STALE' | 'SLOT_NOT_FOUND' | 'SLOT_UNAVAILABLE' | 'NO_PROJECT_SLOTS' | 'NO_SLOT_AVAILABLE';
|
|
8
|
+
export type SelectSlotResult = {
|
|
9
|
+
ok: true;
|
|
10
|
+
slot: SlotStatus;
|
|
11
|
+
} | {
|
|
12
|
+
ok: false;
|
|
13
|
+
code: SelectSlotFailureCode;
|
|
14
|
+
reason: string;
|
|
15
|
+
details: string[];
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Why a slot cannot take a NEW task right now; null when it can. Mirrors the
|
|
19
|
+
* gateway dispatch gate (`isFreeSlot`): degraded health (device/CDP/fixtures)
|
|
20
|
+
* is a scoring concern, not an availability blocker — prepare rebuilds those.
|
|
21
|
+
*/
|
|
22
|
+
export declare function slotUnavailableReason(slot: SlotStatus): string | null;
|
|
23
|
+
/**
|
|
24
|
+
* Why an EXPLICITLY named slot cannot be used; null when it can. Broader than
|
|
25
|
+
* auto-selection: a held slot may be reused on purpose (PR affinity), matching
|
|
26
|
+
* find-slot.sh validate mode and the gateway's `validateSlot`.
|
|
27
|
+
*/
|
|
28
|
+
export declare function explicitSlotBlocker(slot: SlotStatus): string | null;
|
|
29
|
+
/** Shared CDP-liveness check for raw health values (gateway + operator cores). */
|
|
30
|
+
export declare function isCdpLiveValue(cdp: string): boolean;
|
|
31
|
+
export declare function cdpLive(slot: SlotStatus): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Preference score — lower is better. Mirrors find-slot.sh: CDP live (100),
|
|
34
|
+
* warm build (10 — the bash "ready > released" criterion; the gateway maps
|
|
35
|
+
* `released` to `lifecycle: ready, warm: false`), device OK (5), fixtures
|
|
36
|
+
* OK (1). CDP dominates by construction, so no separate prefer-CDP filter
|
|
37
|
+
* is needed.
|
|
38
|
+
*/
|
|
39
|
+
export declare function slotSelectionScore(slot: SlotStatus): number;
|
|
40
|
+
export declare function selectSlot(fleet: FleetStatus, options: SelectSlotOptions): SelectSlotResult;
|
|
41
|
+
//# sourceMappingURL=slot-selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slot-selection.d.ts","sourceRoot":"","sources":["../../src/contracts/slot-selection.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,qBAAqB,GAC7B,aAAa,GACb,gBAAgB,GAChB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,CAAC;AAExB,MAAM,MAAM,gBAAgB,GACxB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC9B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,qBAAqB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAElF;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CASrE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAOnE;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAEjD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAO3D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CA0D3F"}
|