@farmslot/protocol 0.8.0 → 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 +10 -0
- 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/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 +1 -0
- package/dist/rpc/registry.d.ts.map +1 -1
- package/dist/rpc/registry.js +1 -0
- package/dist/rpc/registry.js.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 +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,8 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
- docs: slot-selection comments reference the retired find-slot.sh script (comment-only; no behavior change).
|
|
6
|
+
|
|
5
7
|
- Active-development baseline; add user-facing changes here before release or package publication.
|
|
6
8
|
|
|
9
|
+
## 0.9.0 - 2026-07-13
|
|
10
|
+
|
|
11
|
+
- feat: `contracts/pr-recommendation.ts` (`computePRRecommendation`, `derivePRMergeState`, `isPassiveMergeWaitCandidate` moved from the gateway, now covering the bash pr-monitor rule set) and `contracts/bug-input.ts` (`BugInput`, `parseBugInput` for GitHub/Jira incl. ADF flattening + shared image-URL extraction, `validateBugScore`)
|
|
12
|
+
- feat: `contracts/runner-ids.ts` — canonical runner-id vocabulary (`DEFAULT_RUNNER`, `RUNNER_ALIASES`, `normalizeRunner`) moved from the gateway runner registry so slot-config template expansion shares it; the registry re-exports
|
|
13
|
+
- feat: `contracts/slot-selection.ts` — operator slot availability + selection core (`selectSlot` over the fleet snapshot — stale-refusing, with discriminated failure codes —, `slotUnavailableReason`, `explicitSlotBlocker`, `slotSelectionScore`, `cdpLive`/`isCdpLiveValue`), the TypeScript port of the `scripts/find-slot.sh` decision logic; `isCdpLiveValue` is shared with the gateway dispatch scorer
|
|
14
|
+
- feat: `backlog.closeShipped` method + `BacklogItem.shipped` provenance field
|
|
15
|
+
- feat: RPC response errors may carry `userAction` and `details`; `SlotStatus.missingFromPool` and `FleetStatus.stale` flag ghost slots and stale fleet snapshots
|
|
16
|
+
|
|
7
17
|
## 0.8.0 - 2026-07-12
|
|
8
18
|
|
|
9
19
|
- feat: add Recipe Protocol v1 passive UI observation fields to manifests, recipes, and schemas.
|
|
@@ -96,6 +96,12 @@ export interface BacklogItem {
|
|
|
96
96
|
queuedQueueItemId?: string;
|
|
97
97
|
runId?: string;
|
|
98
98
|
lastObservedRunStatus?: RunStatus;
|
|
99
|
+
/** Operator close-out provenance for work that shipped outside the run engine (e.g. out-of-band merged PR). */
|
|
100
|
+
shipped?: {
|
|
101
|
+
prRef?: string;
|
|
102
|
+
note?: string;
|
|
103
|
+
closedAt: string;
|
|
104
|
+
};
|
|
99
105
|
lastDispatchAttempt?: string;
|
|
100
106
|
lastDispatchError?: string;
|
|
101
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backlog.d.ts","sourceRoot":"","sources":["../../src/contracts/backlog.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"backlog.d.ts","sourceRoot":"","sources":["../../src/contracts/backlog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export type BugInputSource = 'github' | 'jira';
|
|
2
|
+
export declare const BUG_SCORE_DIFFICULTIES: readonly ["low", "medium", "high", "extreme"];
|
|
3
|
+
export type BugScoreDifficulty = (typeof BUG_SCORE_DIFFICULTIES)[number];
|
|
4
|
+
export interface BugInput {
|
|
5
|
+
source: BugInputSource;
|
|
6
|
+
/** "owner/repo#123" for GitHub issues, empty string for Jira */
|
|
7
|
+
github_issue: string;
|
|
8
|
+
/** Jira key (e.g. "PROJ-2236"), empty string for GitHub */
|
|
9
|
+
jira_key: string;
|
|
10
|
+
title: string;
|
|
11
|
+
/** Flattened plain text of the issue description (ADF flattened for Jira) */
|
|
12
|
+
description: string;
|
|
13
|
+
acceptance_criteria: string[];
|
|
14
|
+
/** Always empty — present for schema compatibility with existing tooling */
|
|
15
|
+
affected_area: string;
|
|
16
|
+
steps_to_reproduce: string[];
|
|
17
|
+
labels: string[];
|
|
18
|
+
components: string[];
|
|
19
|
+
/** Image filenames (basename, ≤50 chars each) extracted from the description */
|
|
20
|
+
screenshots: string[];
|
|
21
|
+
state: string;
|
|
22
|
+
linked_prs: string[];
|
|
23
|
+
/** Full image URLs extracted from the description, for download scripts */
|
|
24
|
+
image_urls: string[];
|
|
25
|
+
}
|
|
26
|
+
export interface BugScore {
|
|
27
|
+
issue_ref?: string;
|
|
28
|
+
difficulty: BugScoreDifficulty;
|
|
29
|
+
one_shot_probability: number;
|
|
30
|
+
category: string;
|
|
31
|
+
[key: string]: unknown;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Extract image URLs from a GitHub issue body (markdown / HTML / bare
|
|
35
|
+
* GitHub user-content links). Shared helper for both GitHub markdown bodies
|
|
36
|
+
* and Jira ADF descriptions that happen to contain inline HTML.
|
|
37
|
+
*
|
|
38
|
+
* Returns full URLs filtered to image-like extensions or GitHub content hosts.
|
|
39
|
+
* Results are deduplicated and sorted for stable output.
|
|
40
|
+
*/
|
|
41
|
+
export declare function extractImageUrls(body: string): string[];
|
|
42
|
+
/**
|
|
43
|
+
* Recursively flatten an Atlassian Document Format (ADF) node to plain text.
|
|
44
|
+
* ADF is the JSON rich-text format used by Jira REST API v3 description fields.
|
|
45
|
+
*/
|
|
46
|
+
export declare function flattenAdf(node: unknown): string;
|
|
47
|
+
/**
|
|
48
|
+
* Derive the score-file key from a BugInput.
|
|
49
|
+
*
|
|
50
|
+
* GitHub issues become "gh-{number}" (e.g. "gh-12345").
|
|
51
|
+
* Jira keys are lowercased (e.g. "proj-2236").
|
|
52
|
+
*/
|
|
53
|
+
export declare function deriveScoreKey(bug: BugInput): string;
|
|
54
|
+
/**
|
|
55
|
+
* Parse a raw GitHub issue JSON response (from `gh issue view --json
|
|
56
|
+
* title,body,labels,state,url`) into a BugInput.
|
|
57
|
+
*
|
|
58
|
+
* Extracts: AC sections, reproduction steps, screenshot basenames,
|
|
59
|
+
* image URLs, and linked PR references from the issue body.
|
|
60
|
+
* Derives repo+number from the `url` field.
|
|
61
|
+
*/
|
|
62
|
+
export declare function parseBugInput(source: 'github' | 'jira', raw: unknown): BugInput;
|
|
63
|
+
/**
|
|
64
|
+
* Validate a scorer output object against the score-bug.sh contract.
|
|
65
|
+
* Throws with a teaching error message on any violation.
|
|
66
|
+
* On success, the value is narrowed to BugScore.
|
|
67
|
+
*/
|
|
68
|
+
export declare function validateBugScore(value: unknown): asserts value is BugScore;
|
|
69
|
+
//# sourceMappingURL=bug-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bug-input.d.ts","sourceRoot":"","sources":["../../src/contracts/bug-input.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/C,eAAO,MAAM,sBAAsB,+CAAgD,CAAC;AACpF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gFAAgF;IAChF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA6BvD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAShD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAWpD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,QAAQ,CAG/E;AA6MD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CA2C1E"}
|
|
@@ -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":"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"}
|
|
@@ -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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// slot-selection.ts — operator-facing slot availability + selection core.
|
|
2
|
+
// TypeScript port of the retired find-slot.sh script's decision logic (Phase 4 of the
|
|
3
|
+
// CLI overhaul): which slots can take a task right now, and which one to
|
|
4
|
+
// prefer. Shared by the CLI (`farmslot fleet find-slot`) and any renderer.
|
|
5
|
+
//
|
|
6
|
+
// Dispatch-time scoring (branch affinity, host load, family identity) is a
|
|
7
|
+
// richer, separate core in services/gateway/src/methods/dispatch/slot-scoring.ts —
|
|
8
|
+
// this module answers the simpler operator question find-slot.sh answered.
|
|
9
|
+
/**
|
|
10
|
+
* Why a slot cannot take a NEW task right now; null when it can. Mirrors the
|
|
11
|
+
* gateway dispatch gate (`isFreeSlot`): degraded health (device/CDP/fixtures)
|
|
12
|
+
* is a scoring concern, not an availability blocker — prepare rebuilds those.
|
|
13
|
+
*/
|
|
14
|
+
export function slotUnavailableReason(slot) {
|
|
15
|
+
if (slot.missingFromPool)
|
|
16
|
+
return 'ghost (missing from live pools)';
|
|
17
|
+
if (!slot.enabled || slot.lifecycle === 'disabled')
|
|
18
|
+
return 'disabled';
|
|
19
|
+
if (slot.lifecycle === 'manual')
|
|
20
|
+
return 'manual mode';
|
|
21
|
+
if (slot.agent === 'working')
|
|
22
|
+
return 'agent working';
|
|
23
|
+
if (slot.lifecycle !== 'ready') {
|
|
24
|
+
return `lifecycle=${slot.lifecycle}${slot.phase ? ` (${slot.phase})` : ''}`;
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Why an EXPLICITLY named slot cannot be used; null when it can. Broader than
|
|
30
|
+
* auto-selection: a held slot may be reused on purpose (PR affinity), matching
|
|
31
|
+
* find-slot.sh validate mode and the gateway's `validateSlot`.
|
|
32
|
+
*/
|
|
33
|
+
export function explicitSlotBlocker(slot) {
|
|
34
|
+
if (slot.missingFromPool)
|
|
35
|
+
return 'ghost (missing from live pools)';
|
|
36
|
+
if (!slot.enabled || slot.lifecycle === 'disabled')
|
|
37
|
+
return 'disabled';
|
|
38
|
+
if (slot.lifecycle === 'manual')
|
|
39
|
+
return 'manual mode';
|
|
40
|
+
if (slot.agent === 'working')
|
|
41
|
+
return 'agent working';
|
|
42
|
+
if (slot.lifecycle === 'busy')
|
|
43
|
+
return `busy${slot.phase ? ` (${slot.phase})` : ''}`;
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
/** Shared CDP-liveness check for raw health values (gateway + operator cores). */
|
|
47
|
+
export function isCdpLiveValue(cdp) {
|
|
48
|
+
return !['OFF', '-', 'FAIL', 'Other'].includes(cdp);
|
|
49
|
+
}
|
|
50
|
+
export function cdpLive(slot) {
|
|
51
|
+
return isCdpLiveValue(slot.health.cdp);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Preference score — lower is better. Mirrors find-slot.sh: CDP live (100),
|
|
55
|
+
* warm build (10 — the bash "ready > released" criterion; the gateway maps
|
|
56
|
+
* `released` to `lifecycle: ready, warm: false`), device OK (5), fixtures
|
|
57
|
+
* OK (1). CDP dominates by construction, so no separate prefer-CDP filter
|
|
58
|
+
* is needed.
|
|
59
|
+
*/
|
|
60
|
+
export function slotSelectionScore(slot) {
|
|
61
|
+
let score = 0;
|
|
62
|
+
if (!cdpLive(slot))
|
|
63
|
+
score += 100;
|
|
64
|
+
if (!slot.warm)
|
|
65
|
+
score += 10;
|
|
66
|
+
if (!slot.health.device.endsWith(':OK'))
|
|
67
|
+
score += 5;
|
|
68
|
+
if (slot.health.fixtures !== 'OK')
|
|
69
|
+
score += 1;
|
|
70
|
+
return score;
|
|
71
|
+
}
|
|
72
|
+
export function selectSlot(fleet, options) {
|
|
73
|
+
// Fleet honesty (Phase 0): never pick from a stale snapshot — the slot
|
|
74
|
+
// states may no longer be true and a re-probe is already running.
|
|
75
|
+
if (fleet.stale) {
|
|
76
|
+
return {
|
|
77
|
+
ok: false,
|
|
78
|
+
code: 'FLEET_STALE',
|
|
79
|
+
reason: `Fleet snapshot is stale (checked ${fleet.checkedAt}); refusing to pick a slot.`,
|
|
80
|
+
details: [],
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
const slots = fleet.slots;
|
|
84
|
+
if (options.slotId) {
|
|
85
|
+
const slot = slots.find((candidate) => candidate.slot === options.slotId);
|
|
86
|
+
if (!slot) {
|
|
87
|
+
return {
|
|
88
|
+
ok: false,
|
|
89
|
+
code: 'SLOT_NOT_FOUND',
|
|
90
|
+
reason: `Slot ${options.slotId} not found.`,
|
|
91
|
+
details: [],
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
const blocker = explicitSlotBlocker(slot);
|
|
95
|
+
if (blocker) {
|
|
96
|
+
return {
|
|
97
|
+
ok: false,
|
|
98
|
+
code: 'SLOT_UNAVAILABLE',
|
|
99
|
+
reason: `Slot ${options.slotId} is unavailable: ${blocker}.`,
|
|
100
|
+
details: [],
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
return { ok: true, slot };
|
|
104
|
+
}
|
|
105
|
+
const projectSlots = slots.filter((slot) => slot.project === options.project);
|
|
106
|
+
if (projectSlots.length === 0) {
|
|
107
|
+
// The fleet snapshot cannot distinguish an unknown project from a
|
|
108
|
+
// registered project with no pool slots — the code says only what is true.
|
|
109
|
+
return {
|
|
110
|
+
ok: false,
|
|
111
|
+
code: 'NO_PROJECT_SLOTS',
|
|
112
|
+
reason: `No slots found for project ${options.project}.`,
|
|
113
|
+
details: [],
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
const candidates = projectSlots.filter((slot) => slotUnavailableReason(slot) === null);
|
|
117
|
+
if (candidates.length === 0) {
|
|
118
|
+
return {
|
|
119
|
+
ok: false,
|
|
120
|
+
code: 'NO_SLOT_AVAILABLE',
|
|
121
|
+
reason: `All ${options.project} slots are occupied.`,
|
|
122
|
+
details: projectSlots.map((slot) => `${slot.slot}: ${slotUnavailableReason(slot) ?? 'unknown'}`),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
const best = [...candidates].sort((a, b) => slotSelectionScore(a) - slotSelectionScore(b))[0];
|
|
126
|
+
return { ok: true, slot: best };
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=slot-selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slot-selection.js","sourceRoot":"","sources":["../../src/contracts/slot-selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,8 @@ export interface SlotStatus {
|
|
|
41
41
|
agent: SlotAgent;
|
|
42
42
|
enabled: boolean;
|
|
43
43
|
dispatchable: boolean;
|
|
44
|
+
/** True when this slot id no longer resolves in live pool JSONs — a status-file ghost. Never prepare/dispatch it. */
|
|
45
|
+
missingFromPool?: boolean;
|
|
44
46
|
lifecycle: SlotLifecycle;
|
|
45
47
|
phase: SlotPhase;
|
|
46
48
|
warm: boolean;
|
|
@@ -97,6 +99,11 @@ export interface FleetStatus {
|
|
|
97
99
|
slots: SlotStatus[];
|
|
98
100
|
summary: FleetSummary;
|
|
99
101
|
machines?: MachineHealth[];
|
|
102
|
+
/**
|
|
103
|
+
* True when checkedAt is older than the gateway freshness threshold. Consumers
|
|
104
|
+
* must not surface prepare/dispatch suggestions from a stale fleet snapshot.
|
|
105
|
+
*/
|
|
106
|
+
stale?: boolean;
|
|
100
107
|
}
|
|
101
108
|
export type { ActiveResourcePointer, SlotActionDefinition, SlotActionMode, SlotActionPlacement, SlotActionRefreshTarget, SlotActionStyle, SlotActionSummary, SlotResource, } from './resources.js';
|
|
102
109
|
export type { SlotRunHistoryEntry } from './runs.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../src/contracts/slots.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../src/contracts/slots.ts"],"names":[],"mappings":"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"}
|
package/dist/rpc/backlog.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare const BacklogMethods: {
|
|
|
6
6
|
readonly update: "backlog.update";
|
|
7
7
|
readonly delete: "backlog.delete";
|
|
8
8
|
readonly markReady: "backlog.markReady";
|
|
9
|
+
readonly closeShipped: "backlog.closeShipped";
|
|
9
10
|
readonly archive: "backlog.archive";
|
|
10
11
|
readonly enqueue: "backlog.enqueue";
|
|
11
12
|
readonly dequeue: "backlog.dequeue";
|
|
@@ -33,6 +34,15 @@ export interface BacklogUpdateParams extends BacklogUpdateInput {
|
|
|
33
34
|
export interface BacklogUpdateResult {
|
|
34
35
|
item: BacklogItem;
|
|
35
36
|
}
|
|
37
|
+
export interface BacklogCloseShippedParams {
|
|
38
|
+
itemId: string;
|
|
39
|
+
/** Merged PR reference (e.g. owner/repo#123 or a PR URL) proving the work shipped. */
|
|
40
|
+
prRef?: string;
|
|
41
|
+
note?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface BacklogCloseShippedResult {
|
|
44
|
+
item: BacklogItem;
|
|
45
|
+
}
|
|
36
46
|
export interface BacklogDeleteParams {
|
|
37
47
|
itemId: string;
|
|
38
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backlog.d.ts","sourceRoot":"","sources":["../../src/rpc/backlog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,WAAW,EACX,aAAa,EACb,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"backlog.d.ts","sourceRoot":"","sources":["../../src/rpc/backlog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,WAAW,EACX,aAAa,EACb,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,eAAO,MAAM,cAAc;;;;;;;;;;;;;CAajB,CAAC;AAEX,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;CAAG;AAClE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AACD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AACD,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAE3C,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AACD,MAAM,WAAW,oBAAqB,SAAQ,wBAAwB;CAAG;AAEzE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,wBAAwB,EAAE,CAAC;IACrC,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd"}
|
package/dist/rpc/backlog.js
CHANGED
|
@@ -5,6 +5,7 @@ export const BacklogMethods = {
|
|
|
5
5
|
update: Methods.BACKLOG_UPDATE,
|
|
6
6
|
delete: Methods.BACKLOG_DELETE,
|
|
7
7
|
markReady: Methods.BACKLOG_MARK_READY,
|
|
8
|
+
closeShipped: Methods.BACKLOG_CLOSE_SHIPPED,
|
|
8
9
|
archive: Methods.BACKLOG_ARCHIVE,
|
|
9
10
|
enqueue: Methods.BACKLOG_ENQUEUE,
|
|
10
11
|
dequeue: Methods.BACKLOG_DEQUEUE,
|
package/dist/rpc/backlog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backlog.js","sourceRoot":"","sources":["../../src/rpc/backlog.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,MAAM,EAAE,OAAO,CAAC,cAAc;IAC9B,IAAI,EAAE,OAAO,CAAC,YAAY;IAC1B,MAAM,EAAE,OAAO,CAAC,cAAc;IAC9B,MAAM,EAAE,OAAO,CAAC,cAAc;IAC9B,SAAS,EAAE,OAAO,CAAC,kBAAkB;IACrC,OAAO,EAAE,OAAO,CAAC,eAAe;IAChC,OAAO,EAAE,OAAO,CAAC,eAAe;IAChC,OAAO,EAAE,OAAO,CAAC,eAAe;IAChC,gBAAgB,EAAE,OAAO,CAAC,0BAA0B;IACpD,QAAQ,EAAE,OAAO,CAAC,gBAAgB;IAClC,OAAO,EAAE,OAAO,CAAC,gBAAgB;CACzB,CAAC"}
|
|
1
|
+
{"version":3,"file":"backlog.js","sourceRoot":"","sources":["../../src/rpc/backlog.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,MAAM,EAAE,OAAO,CAAC,cAAc;IAC9B,IAAI,EAAE,OAAO,CAAC,YAAY;IAC1B,MAAM,EAAE,OAAO,CAAC,cAAc;IAC9B,MAAM,EAAE,OAAO,CAAC,cAAc;IAC9B,SAAS,EAAE,OAAO,CAAC,kBAAkB;IACrC,YAAY,EAAE,OAAO,CAAC,qBAAqB;IAC3C,OAAO,EAAE,OAAO,CAAC,eAAe;IAChC,OAAO,EAAE,OAAO,CAAC,eAAe;IAChC,OAAO,EAAE,OAAO,CAAC,eAAe;IAChC,gBAAgB,EAAE,OAAO,CAAC,0BAA0B;IACpD,QAAQ,EAAE,OAAO,CAAC,gBAAgB;IAClC,OAAO,EAAE,OAAO,CAAC,gBAAgB;CACzB,CAAC"}
|
package/dist/rpc/registry.d.ts
CHANGED
|
@@ -38,6 +38,7 @@ export declare const Methods: {
|
|
|
38
38
|
readonly BACKLOG_AUTO_DISPATCH_TICK: "backlog.autoDispatchTick";
|
|
39
39
|
readonly BACKLOG_UPCOMING: "backlog.upcoming";
|
|
40
40
|
readonly BACKLOG_SPEC_GET: "backlog.spec.get";
|
|
41
|
+
readonly BACKLOG_CLOSE_SHIPPED: "backlog.closeShipped";
|
|
41
42
|
readonly WORK_GRAPH_CREATE: "workGraph.create";
|
|
42
43
|
readonly WORK_GRAPH_GET: "workGraph.get";
|
|
43
44
|
readonly WORK_GRAPH_LIST: "workGraph.list";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/rpc/registry.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/rpc/registry.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0TV,CAAC"}
|
package/dist/rpc/registry.js
CHANGED
|
@@ -46,6 +46,7 @@ export const Methods = {
|
|
|
46
46
|
BACKLOG_AUTO_DISPATCH_TICK: 'backlog.autoDispatchTick',
|
|
47
47
|
BACKLOG_UPCOMING: 'backlog.upcoming',
|
|
48
48
|
BACKLOG_SPEC_GET: 'backlog.spec.get',
|
|
49
|
+
BACKLOG_CLOSE_SHIPPED: 'backlog.closeShipped',
|
|
49
50
|
// Work Graph
|
|
50
51
|
WORK_GRAPH_CREATE: 'workGraph.create',
|
|
51
52
|
WORK_GRAPH_GET: 'workGraph.get',
|
package/dist/rpc/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/rpc/registry.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,sBAAsB;IACtB,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAEhC,QAAQ;IACR,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAE9B,OAAO;IACP,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IAEpC,iBAAiB;IACjB,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,mBAAmB,EAAE,oBAAoB;IACzC,oBAAoB,EAAE,qBAAqB;IAE3C,aAAa;IACb,mBAAmB,EAAE,oBAAoB;IACzC,0BAA0B,EAAE,2BAA2B;IACvD,gBAAgB,EAAE,iBAAiB;IAEnC,WAAW;IACX,gBAAgB,EAAE,kBAAkB;IACpC,sBAAsB,EAAE,uBAAuB;IAC/C,mBAAmB,EAAE,qBAAqB;IAC1C,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,4BAA4B,EAAE,6BAA6B;IAC3D,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAEhD,UAAU;IACV,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,kBAAkB,EAAE,mBAAmB;IACvC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,0BAA0B,EAAE,0BAA0B;IACtD,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/rpc/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../src/transport/frames.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,KAAK,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,KAAK,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../src/transport/frames.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,KAAK,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,KAAK,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,wEAAwE;QACxE,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,KAAK,GAAG,YAAY,GAAG,aAAa,GAAG,UAAU,CAAC;AAG9D,eAAO,MAAM,gBAAgB,MAAO,CAAC;AACrC,eAAO,MAAM,cAAc,MAAO,CAAC;AAEnC,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,YAAY,CAErD;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,aAAa,CAEvD;AACD,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,UAAU,CAEjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frames.js","sourceRoot":"","sources":["../../src/transport/frames.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,qDAAqD;
|
|
1
|
+
{"version":3,"file":"frames.js","sourceRoot":"","sources":["../../src/transport/frames.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,qDAAqD;AAgCrD,oDAAoD;AACpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,CAAC,kBAAkB;AACxD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,gBAAgB;AAEpD,MAAM,UAAU,SAAS,CAAC,CAAQ;IAChC,OAAO,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC;AAC1B,CAAC;AACD,MAAM,UAAU,UAAU,CAAC,CAAQ;IACjC,OAAO,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC;AAC1B,CAAC;AACD,MAAM,UAAU,OAAO,CAAC,CAAQ;IAC9B,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;AAC5B,CAAC"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const PROTOCOL_VERSION = "0.
|
|
1
|
+
export declare const PROTOCOL_VERSION = "0.9.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
// fleet can be upgraded deliberately; optional method/event fields remain
|
|
4
4
|
// backward-compatible unless a caller requires a new node capability.
|
|
5
5
|
// Format: semver-ish, increment when methods/events/frame format changes.
|
|
6
|
-
export const PROTOCOL_VERSION = '0.
|
|
6
|
+
export const PROTOCOL_VERSION = '0.9.0';
|
|
7
7
|
//# sourceMappingURL=version.js.map
|