@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.
Files changed (42) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/contracts/backlog.d.ts +6 -0
  3. package/dist/contracts/backlog.d.ts.map +1 -1
  4. package/dist/contracts/bug-input.d.ts +69 -0
  5. package/dist/contracts/bug-input.d.ts.map +1 -0
  6. package/dist/contracts/bug-input.js +288 -0
  7. package/dist/contracts/bug-input.js.map +1 -0
  8. package/dist/contracts/index.d.ts +4 -0
  9. package/dist/contracts/index.d.ts.map +1 -1
  10. package/dist/contracts/index.js +4 -0
  11. package/dist/contracts/index.js.map +1 -1
  12. package/dist/contracts/pr-recommendation.d.ts +66 -0
  13. package/dist/contracts/pr-recommendation.d.ts.map +1 -0
  14. package/dist/contracts/pr-recommendation.js +88 -0
  15. package/dist/contracts/pr-recommendation.js.map +1 -0
  16. package/dist/contracts/reviews.d.ts +2 -0
  17. package/dist/contracts/reviews.d.ts.map +1 -1
  18. package/dist/contracts/reviews.js.map +1 -1
  19. package/dist/contracts/runner-ids.d.ts +4 -0
  20. package/dist/contracts/runner-ids.d.ts.map +1 -0
  21. package/dist/contracts/runner-ids.js +12 -0
  22. package/dist/contracts/runner-ids.js.map +1 -0
  23. package/dist/contracts/slot-selection.d.ts +41 -0
  24. package/dist/contracts/slot-selection.d.ts.map +1 -0
  25. package/dist/contracts/slot-selection.js +128 -0
  26. package/dist/contracts/slot-selection.js.map +1 -0
  27. package/dist/contracts/slots.d.ts +7 -0
  28. package/dist/contracts/slots.d.ts.map +1 -1
  29. package/dist/rpc/backlog.d.ts +10 -0
  30. package/dist/rpc/backlog.d.ts.map +1 -1
  31. package/dist/rpc/backlog.js +1 -0
  32. package/dist/rpc/backlog.js.map +1 -1
  33. package/dist/rpc/registry.d.ts +1 -0
  34. package/dist/rpc/registry.d.ts.map +1 -1
  35. package/dist/rpc/registry.js +1 -0
  36. package/dist/rpc/registry.js.map +1 -1
  37. package/dist/transport/frames.d.ts +3 -0
  38. package/dist/transport/frames.d.ts.map +1 -1
  39. package/dist/transport/frames.js.map +1 -1
  40. package/dist/version.d.ts +1 -1
  41. package/dist/version.js +1 -1
  42. 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
+ // ![alt](url) 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"}
@@ -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":"AAuHA,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,WAAW,CAAC"}
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,4 @@
1
+ export declare const DEFAULT_RUNNER = "claude";
2
+ export declare const RUNNER_ALIASES: Record<string, string>;
3
+ export declare function normalizeRunner(runnerId?: string | null): string;
4
+ //# sourceMappingURL=runner-ids.d.ts.map
@@ -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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"}
@@ -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;;;;;;;;;;;;CAYjB,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,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"}
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"}
@@ -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,
@@ -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"}
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyTV,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/rpc/registry.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0TV,CAAC"}
@@ -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',
@@ -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;IAEpC,aAAa;IACb,iBAAiB,EAAE,kBAAkB;IACrC,cAAc,EAAE,eAAe;IAC/B,eAAe,EAAE,gBAAgB;IACjC,mBAAmB,EAAE,mBAAmB;IACxC,mBAAmB,EAAE,mBAAmB;IACxC,sBAAsB,EAAE,sBAAsB;IAC9C,sBAAsB,EAAE,sBAAsB;IAC9C,sBAAsB,EAAE,sBAAsB;IAC9C,mBAAmB,EAAE,oBAAoB;IACzC,gBAAgB,EAAE,iBAAiB;IACnC,uBAAuB,EAAE,uBAAuB;IAChD,yBAAyB,EAAE,yBAAyB;IAEpD,UAAU;IACV,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,8BAA8B,EAAE,+BAA+B;IAC/D,kBAAkB,EAAE,oBAAoB;IACxC,4BAA4B,EAAE,6BAA6B;IAC3D,2BAA2B,EAAE,4BAA4B;IACzD,4BAA4B,EAAE,6BAA6B;IAC3D,eAAe,EAAE,iBAAiB;IAElC,WAAW;IACX,kBAAkB,EAAE,oBAAoB;IACxC,oBAAoB,EAAE,sBAAsB;IAC5C,aAAa,EAAE,eAAe;IAC9B,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,yBAAyB,EAAE,2BAA2B;IACtD,2BAA2B,EAAE,6BAA6B;IAC1D,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,wBAAwB,EAAE,0BAA0B;IAEpD,2DAA2D;IAC3D,0BAA0B,EAAE,4BAA4B;IACxD,gCAAgC,EAAE,kCAAkC;IACpE,kCAAkC,EAAE,oCAAoC;IAExE,KAAK;IACL,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,kBAAkB,EAAE,mBAAmB;IACvC,cAAc,EAAE,eAAe;IAC/B,iBAAiB,EAAE,kBAAkB;IACrC,WAAW,EAAE,YAAY;IACzB,eAAe,EAAE,gBAAgB;IACjC,iBAAiB,EAAE,kBAAkB;IACrC,gBAAgB,EAAE,iBAAiB;IAEnC,YAAY;IACZ,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;IAEpC,6BAA6B;IAC7B,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,cAAc;IAE3B,OAAO;IACP,aAAa,EAAE,eAAe;IAE9B,eAAe;IACf,UAAU,EAAE,YAAY;IACxB,gBAAgB,EAAE,iBAAiB;IACnC,cAAc,EAAE,eAAe;IAC/B,cAAc,EAAE,eAAe;IAC/B,eAAe,EAAE,gBAAgB;IACjC,kBAAkB,EAAE,mBAAmB;IACvC,SAAS,EAAE,WAAW;IACtB,gBAAgB,EAAE,kBAAkB;IACpC,mBAAmB,EAAE,qBAAqB;IAC1C,kBAAkB,EAAE,mBAAmB;IACvC,cAAc,EAAE,eAAe;IAC/B,sBAAsB,EAAE,uBAAuB;IAE/C,SAAS;IACT,gBAAgB,EAAE,iBAAiB;IAEnC,SAAS;IACT,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,gBAAgB,EAAE,kBAAkB;IACpC,uBAAuB,EAAE,wBAAwB;IACjD,uBAAuB,EAAE,wBAAwB;IACjD,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,mCAAmC,EAAE,oCAAoC;IACzE,6BAA6B,EAAE,+BAA+B;IAE9D,aAAa;IACb,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IAEpB,MAAM;IACN,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,eAAe,EAAE,gBAAgB;IAEjC,cAAc;IACd,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAE1B,SAAS;IACT,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,WAAW;IAEtB,cAAc;IACd,eAAe,EAAE,iBAAiB;IAElC,yBAAyB;IACzB,yBAAyB,EAAE,2BAA2B;IACtD,2BAA2B,EAAE,6BAA6B;IAE1D,SAAS;IACT,gBAAgB,EAAE,kBAAkB;IACpC,kBAAkB,EAAE,oBAAoB;IACxC,eAAe,EAAE,iBAAiB;IAElC,iCAAiC;IACjC,gBAAgB,EAAE,kBAAkB;IACpC,kBAAkB,EAAE,oBAAoB;IAExC,YAAY;IACZ,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;IAClC,gBAAgB,EAAE,kBAAkB;IACpC,0BAA0B,EAAE,2BAA2B;IACvD,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;IAElC,OAAO;IACP,iBAAiB,EAAE,mBAAmB;IACtC,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;IAClB,kBAAkB,EAAE,mBAAmB;IACvC,qBAAqB,EAAE,sBAAsB;IAC7C,QAAQ,EAAE,UAAU;IACpB,gBAAgB,EAAE,iBAAiB;IACnC,UAAU,EAAE,YAAY;IACxB,kBAAkB,EAAE,mBAAmB;IACvC,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,eAAe,EAAE,gBAAgB;IACjC,oBAAoB,EAAE,oBAAoB;IAC1C,sBAAsB,EAAE,uBAAuB;IAC/C,iBAAiB,EAAE,kBAAkB;IACrC,uBAAuB,EAAE,uBAAuB;IAChD,2BAA2B,EAAE,2BAA2B;IACxD,kBAAkB,EAAE,mBAAmB;IACvC,uBAAuB,EAAE,uBAAuB;IAChD,2BAA2B,EAAE,4BAA4B;IACzD,YAAY,EAAE,aAAa;IAC3B,oBAAoB,EAAE,qBAAqB;IAC3C,uBAAuB,EAAE,uBAAuB;IAChD,SAAS,EAAE,WAAW;IACtB,aAAa,EAAE,cAAc;IAC7B,uBAAuB,EAAE,wBAAwB;IACjD,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,eAAe,EAAE,gBAAgB;IACjC,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,sBAAsB,EAAE,uBAAuB;IAE/C,uEAAuE;IACvE,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB;IACxC,sBAAsB,EAAE,wBAAwB;IAChD,gBAAgB,EAAE,kBAAkB;IACpC,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;IACxC,qBAAqB,EAAE,uBAAuB;IAC9C,wBAAwB,EAAE,0BAA0B;IACpD,sBAAsB,EAAE,wBAAwB;IAChD,4BAA4B,EAAE,8BAA8B;IAE5D,0BAA0B;IAC1B,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,oBAAoB;IACzC,mBAAmB,EAAE,oBAAoB;IAEzC,WAAW;IACX,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,cAAc;IAC5B,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAClC,gBAAgB,EAAE,kBAAkB;IACpC,cAAc,EAAE,gBAAgB;IAEhC,cAAc;IACd,gBAAgB,EAAE,kBAAkB;IACpC,iBAAiB,EAAE,mBAAmB;IAEtC,aAAa;IACb,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,SAAS,EAAE,WAAW;IAEtB,gBAAgB;IAChB,iBAAiB,EAAE,mBAAmB;IACtC,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,eAAe;IAC9B,mBAAmB,EAAE,oBAAoB;IACzC,mBAAmB,EAAE,oBAAoB;IACzC,yBAAyB,EAAE,yBAAyB;IACpD,gBAAgB,EAAE,iBAAiB;IACnC,oBAAoB,EAAE,qBAAqB;IAC3C,sBAAsB,EAAE,uBAAuB;IAC/C,gBAAgB,EAAE,iBAAiB;IACnC,mBAAmB,EAAE,oBAAoB;IACzC,iBAAiB,EAAE,kBAAkB;IACrC,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,cAAc;IAC5B,oBAAoB,EAAE,qBAAqB;IAC3C,0BAA0B,EAAE,2BAA2B;IAEvD,cAAc;IACd,WAAW,EAAE,aAAa;IAC1B,eAAe,EAAE,iBAAiB;IAElC,oBAAoB;IACpB,gBAAgB,EAAE,kBAAkB;IAEpC,SAAS;IACT,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,2BAA2B,EAAE,2BAA2B;IACxD,uBAAuB,EAAE,uBAAuB;IAChD,wBAAwB,EAAE,uBAAuB;IACjD,uBAAuB,EAAE,sBAAsB;CACvC,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/rpc/registry.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,9 @@ export interface ResponseFrame {
12
12
  error?: {
13
13
  code: string;
14
14
  message: string;
15
+ /** Exact next command(s) that resolve THIS error (teach-the-escape). */
16
+ userAction?: string;
17
+ details?: unknown;
15
18
  };
16
19
  }
17
20
  export interface EventFrame {
@@ -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;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;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
+ {"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;AA0BrD,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"}
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.7.6";
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.7.6';
6
+ export const PROTOCOL_VERSION = '0.9.0';
7
7
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farmslot/protocol",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",