@shapeshift-labs/frontier-swarm 0.5.20 → 0.5.22

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 (354) hide show
  1. package/README.md +123 -132
  2. package/benchmarks/package-bench.mjs +294 -20
  3. package/dist/index.d.ts +4801 -41
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +10368 -40
  6. package/dist/index.js.map +1 -1
  7. package/package.json +6 -7
  8. package/benchmarks/package-bench-fixtures.mjs +0 -95
  9. package/benchmarks/package-bench-rows.mjs +0 -211
  10. package/benchmarks/package-bench-runtime.mjs +0 -94
  11. package/dist/adaptive-load-decisions.d.ts +0 -8
  12. package/dist/adaptive-load-decisions.d.ts.map +0 -1
  13. package/dist/adaptive-load-decisions.js +0 -133
  14. package/dist/adaptive-load-decisions.js.map +0 -1
  15. package/dist/adaptive-load-limits.d.ts +0 -8
  16. package/dist/adaptive-load-limits.d.ts.map +0 -1
  17. package/dist/adaptive-load-limits.js +0 -105
  18. package/dist/adaptive-load-limits.js.map +0 -1
  19. package/dist/adaptive-load-observations.d.ts +0 -17
  20. package/dist/adaptive-load-observations.d.ts.map +0 -1
  21. package/dist/adaptive-load-observations.js +0 -296
  22. package/dist/adaptive-load-observations.js.map +0 -1
  23. package/dist/adaptive-load-types.d.ts +0 -117
  24. package/dist/adaptive-load-types.d.ts.map +0 -1
  25. package/dist/adaptive-load-types.js +0 -3
  26. package/dist/adaptive-load-types.js.map +0 -1
  27. package/dist/adaptive-load.d.ts +0 -10
  28. package/dist/adaptive-load.d.ts.map +0 -1
  29. package/dist/adaptive-load.js +0 -98
  30. package/dist/adaptive-load.js.map +0 -1
  31. package/dist/adaptive-types.d.ts +0 -127
  32. package/dist/adaptive-types.d.ts.map +0 -1
  33. package/dist/adaptive-types.js +0 -2
  34. package/dist/adaptive-types.js.map +0 -1
  35. package/dist/artifact-routing-runtime.d.ts +0 -3
  36. package/dist/artifact-routing-runtime.d.ts.map +0 -1
  37. package/dist/artifact-routing-runtime.js +0 -72
  38. package/dist/artifact-routing-runtime.js.map +0 -1
  39. package/dist/auto-review.d.ts +0 -47
  40. package/dist/auto-review.d.ts.map +0 -1
  41. package/dist/auto-review.js +0 -69
  42. package/dist/auto-review.js.map +0 -1
  43. package/dist/blackboard.d.ts +0 -81
  44. package/dist/blackboard.d.ts.map +0 -1
  45. package/dist/blackboard.js +0 -60
  46. package/dist/blackboard.js.map +0 -1
  47. package/dist/coercion.d.ts +0 -12
  48. package/dist/coercion.d.ts.map +0 -1
  49. package/dist/coercion.js +0 -48
  50. package/dist/coercion.js.map +0 -1
  51. package/dist/constants.d.ts +0 -106
  52. package/dist/constants.d.ts.map +0 -1
  53. package/dist/constants.js +0 -106
  54. package/dist/constants.js.map +0 -1
  55. package/dist/context-pack-runtime.d.ts +0 -3
  56. package/dist/context-pack-runtime.d.ts.map +0 -1
  57. package/dist/context-pack-runtime.js +0 -77
  58. package/dist/context-pack-runtime.js.map +0 -1
  59. package/dist/context-types.d.ts +0 -188
  60. package/dist/context-types.d.ts.map +0 -1
  61. package/dist/context-types.js +0 -2
  62. package/dist/context-types.js.map +0 -1
  63. package/dist/coordinator-dashboard-helpers.d.ts +0 -14
  64. package/dist/coordinator-dashboard-helpers.d.ts.map +0 -1
  65. package/dist/coordinator-dashboard-helpers.js +0 -106
  66. package/dist/coordinator-dashboard-helpers.js.map +0 -1
  67. package/dist/coordinator-dashboard-types.d.ts +0 -163
  68. package/dist/coordinator-dashboard-types.d.ts.map +0 -1
  69. package/dist/coordinator-dashboard-types.js +0 -3
  70. package/dist/coordinator-dashboard-types.js.map +0 -1
  71. package/dist/coordinator-dashboard.d.ts +0 -4
  72. package/dist/coordinator-dashboard.d.ts.map +0 -1
  73. package/dist/coordinator-dashboard.js +0 -163
  74. package/dist/coordinator-dashboard.js.map +0 -1
  75. package/dist/coordinator-scoring.d.ts +0 -8
  76. package/dist/coordinator-scoring.d.ts.map +0 -1
  77. package/dist/coordinator-scoring.js +0 -167
  78. package/dist/coordinator-scoring.js.map +0 -1
  79. package/dist/coordinator-types.d.ts +0 -166
  80. package/dist/coordinator-types.d.ts.map +0 -1
  81. package/dist/coordinator-types.js +0 -2
  82. package/dist/coordinator-types.js.map +0 -1
  83. package/dist/debug-runtime.d.ts +0 -4
  84. package/dist/debug-runtime.d.ts.map +0 -1
  85. package/dist/debug-runtime.js +0 -93
  86. package/dist/debug-runtime.js.map +0 -1
  87. package/dist/debug-types.d.ts +0 -194
  88. package/dist/debug-types.d.ts.map +0 -1
  89. package/dist/debug-types.js +0 -2
  90. package/dist/debug-types.js.map +0 -1
  91. package/dist/diagnostic-helpers.d.ts +0 -5
  92. package/dist/diagnostic-helpers.d.ts.map +0 -1
  93. package/dist/diagnostic-helpers.js +0 -54
  94. package/dist/diagnostic-helpers.js.map +0 -1
  95. package/dist/evidence-index-helpers.d.ts +0 -10
  96. package/dist/evidence-index-helpers.d.ts.map +0 -1
  97. package/dist/evidence-index-helpers.js +0 -78
  98. package/dist/evidence-index-helpers.js.map +0 -1
  99. package/dist/evidence-index.d.ts +0 -4
  100. package/dist/evidence-index.d.ts.map +0 -1
  101. package/dist/evidence-index.js +0 -59
  102. package/dist/evidence-index.js.map +0 -1
  103. package/dist/evidence-types.d.ts +0 -151
  104. package/dist/evidence-types.d.ts.map +0 -1
  105. package/dist/evidence-types.js +0 -2
  106. package/dist/evidence-types.js.map +0 -1
  107. package/dist/fixtures.d.ts +0 -45
  108. package/dist/fixtures.d.ts.map +0 -1
  109. package/dist/fixtures.js +0 -39
  110. package/dist/fixtures.js.map +0 -1
  111. package/dist/governance-types.d.ts +0 -172
  112. package/dist/governance-types.d.ts.map +0 -1
  113. package/dist/governance-types.js +0 -2
  114. package/dist/governance-types.js.map +0 -1
  115. package/dist/instrumentation-runtime.d.ts +0 -6
  116. package/dist/instrumentation-runtime.d.ts.map +0 -1
  117. package/dist/instrumentation-runtime.js +0 -111
  118. package/dist/instrumentation-runtime.js.map +0 -1
  119. package/dist/internal.d.ts +0 -11
  120. package/dist/internal.d.ts.map +0 -1
  121. package/dist/internal.js +0 -49
  122. package/dist/internal.js.map +0 -1
  123. package/dist/leases.d.ts +0 -32
  124. package/dist/leases.d.ts.map +0 -1
  125. package/dist/leases.js +0 -36
  126. package/dist/leases.js.map +0 -1
  127. package/dist/manifest-normalization.d.ts +0 -8
  128. package/dist/manifest-normalization.d.ts.map +0 -1
  129. package/dist/manifest-normalization.js +0 -191
  130. package/dist/manifest-normalization.js.map +0 -1
  131. package/dist/manifest-types.d.ts +0 -227
  132. package/dist/manifest-types.d.ts.map +0 -1
  133. package/dist/manifest-types.js +0 -2
  134. package/dist/manifest-types.js.map +0 -1
  135. package/dist/manifest.d.ts +0 -7
  136. package/dist/manifest.d.ts.map +0 -1
  137. package/dist/manifest.js +0 -126
  138. package/dist/manifest.js.map +0 -1
  139. package/dist/merge-admission.d.ts +0 -3
  140. package/dist/merge-admission.d.ts.map +0 -1
  141. package/dist/merge-admission.js +0 -71
  142. package/dist/merge-admission.js.map +0 -1
  143. package/dist/merge-bundles.d.ts +0 -13
  144. package/dist/merge-bundles.d.ts.map +0 -1
  145. package/dist/merge-bundles.js +0 -144
  146. package/dist/merge-bundles.js.map +0 -1
  147. package/dist/merge-classification.d.ts +0 -6
  148. package/dist/merge-classification.d.ts.map +0 -1
  149. package/dist/merge-classification.js +0 -36
  150. package/dist/merge-classification.js.map +0 -1
  151. package/dist/merge-index.d.ts +0 -3
  152. package/dist/merge-index.d.ts.map +0 -1
  153. package/dist/merge-index.js +0 -130
  154. package/dist/merge-index.js.map +0 -1
  155. package/dist/merge-plan-helpers.d.ts +0 -11
  156. package/dist/merge-plan-helpers.d.ts.map +0 -1
  157. package/dist/merge-plan-helpers.js +0 -97
  158. package/dist/merge-plan-helpers.js.map +0 -1
  159. package/dist/merge-plans-runtime.d.ts +0 -8
  160. package/dist/merge-plans-runtime.d.ts.map +0 -1
  161. package/dist/merge-plans-runtime.js +0 -106
  162. package/dist/merge-plans-runtime.js.map +0 -1
  163. package/dist/merge-review-types.d.ts +0 -76
  164. package/dist/merge-review-types.d.ts.map +0 -1
  165. package/dist/merge-review-types.js +0 -2
  166. package/dist/merge-review-types.js.map +0 -1
  167. package/dist/merge-review.d.ts +0 -7
  168. package/dist/merge-review.d.ts.map +0 -1
  169. package/dist/merge-review.js +0 -142
  170. package/dist/merge-review.js.map +0 -1
  171. package/dist/merge-types.d.ts +0 -196
  172. package/dist/merge-types.d.ts.map +0 -1
  173. package/dist/merge-types.js +0 -2
  174. package/dist/merge-types.js.map +0 -1
  175. package/dist/merge-wrappers.d.ts +0 -5
  176. package/dist/merge-wrappers.d.ts.map +0 -1
  177. package/dist/merge-wrappers.js +0 -231
  178. package/dist/merge-wrappers.js.map +0 -1
  179. package/dist/observability-types.d.ts +0 -164
  180. package/dist/observability-types.d.ts.map +0 -1
  181. package/dist/observability-types.js +0 -2
  182. package/dist/observability-types.js.map +0 -1
  183. package/dist/oracle-helpers.d.ts +0 -6
  184. package/dist/oracle-helpers.d.ts.map +0 -1
  185. package/dist/oracle-helpers.js +0 -73
  186. package/dist/oracle-helpers.js.map +0 -1
  187. package/dist/oracle-runtime.d.ts +0 -5
  188. package/dist/oracle-runtime.d.ts.map +0 -1
  189. package/dist/oracle-runtime.js +0 -154
  190. package/dist/oracle-runtime.js.map +0 -1
  191. package/dist/ownership-runtime.d.ts +0 -6
  192. package/dist/ownership-runtime.d.ts.map +0 -1
  193. package/dist/ownership-runtime.js +0 -49
  194. package/dist/ownership-runtime.js.map +0 -1
  195. package/dist/patch-stack-runtime.d.ts +0 -4
  196. package/dist/patch-stack-runtime.d.ts.map +0 -1
  197. package/dist/patch-stack-runtime.js +0 -97
  198. package/dist/patch-stack-runtime.js.map +0 -1
  199. package/dist/plan-helpers.d.ts +0 -13
  200. package/dist/plan-helpers.d.ts.map +0 -1
  201. package/dist/plan-helpers.js +0 -236
  202. package/dist/plan-helpers.js.map +0 -1
  203. package/dist/plan-selection.d.ts +0 -7
  204. package/dist/plan-selection.d.ts.map +0 -1
  205. package/dist/plan-selection.js +0 -86
  206. package/dist/plan-selection.js.map +0 -1
  207. package/dist/plan.d.ts +0 -126
  208. package/dist/plan.d.ts.map +0 -1
  209. package/dist/plan.js +0 -67
  210. package/dist/plan.js.map +0 -1
  211. package/dist/progress.d.ts +0 -42
  212. package/dist/progress.d.ts.map +0 -1
  213. package/dist/progress.js +0 -31
  214. package/dist/progress.js.map +0 -1
  215. package/dist/proof-runtime.d.ts +0 -16
  216. package/dist/proof-runtime.d.ts.map +0 -1
  217. package/dist/proof-runtime.js +0 -143
  218. package/dist/proof-runtime.js.map +0 -1
  219. package/dist/queue-overlays.d.ts +0 -7
  220. package/dist/queue-overlays.d.ts.map +0 -1
  221. package/dist/queue-overlays.js +0 -184
  222. package/dist/queue-overlays.js.map +0 -1
  223. package/dist/queue-types.d.ts +0 -194
  224. package/dist/queue-types.d.ts.map +0 -1
  225. package/dist/queue-types.js +0 -2
  226. package/dist/queue-types.js.map +0 -1
  227. package/dist/rebase-report.d.ts +0 -3
  228. package/dist/rebase-report.d.ts.map +0 -1
  229. package/dist/rebase-report.js +0 -52
  230. package/dist/rebase-report.js.map +0 -1
  231. package/dist/record-helpers.d.ts +0 -15
  232. package/dist/record-helpers.d.ts.map +0 -1
  233. package/dist/record-helpers.js +0 -78
  234. package/dist/record-helpers.js.map +0 -1
  235. package/dist/reference-oracle-runtime.d.ts +0 -4
  236. package/dist/reference-oracle-runtime.d.ts.map +0 -1
  237. package/dist/reference-oracle-runtime.js +0 -89
  238. package/dist/reference-oracle-runtime.js.map +0 -1
  239. package/dist/reference-types.d.ts +0 -204
  240. package/dist/reference-types.d.ts.map +0 -1
  241. package/dist/reference-types.js +0 -2
  242. package/dist/reference-types.js.map +0 -1
  243. package/dist/result-types.d.ts +0 -75
  244. package/dist/result-types.d.ts.map +0 -1
  245. package/dist/result-types.js +0 -2
  246. package/dist/result-types.js.map +0 -1
  247. package/dist/run-normalization.d.ts +0 -9
  248. package/dist/run-normalization.d.ts.map +0 -1
  249. package/dist/run-normalization.js +0 -126
  250. package/dist/run-normalization.js.map +0 -1
  251. package/dist/run-records.d.ts +0 -8
  252. package/dist/run-records.d.ts.map +0 -1
  253. package/dist/run-records.js +0 -145
  254. package/dist/run-records.js.map +0 -1
  255. package/dist/run-store-shards-runtime.d.ts +0 -3
  256. package/dist/run-store-shards-runtime.d.ts.map +0 -1
  257. package/dist/run-store-shards-runtime.js +0 -54
  258. package/dist/run-store-shards-runtime.js.map +0 -1
  259. package/dist/run-types.d.ts +0 -112
  260. package/dist/run-types.d.ts.map +0 -1
  261. package/dist/run-types.js +0 -2
  262. package/dist/run-types.js.map +0 -1
  263. package/dist/scheduler.d.ts +0 -94
  264. package/dist/scheduler.d.ts.map +0 -1
  265. package/dist/scheduler.js +0 -213
  266. package/dist/scheduler.js.map +0 -1
  267. package/dist/semantic-normalization.d.ts +0 -3
  268. package/dist/semantic-normalization.d.ts.map +0 -1
  269. package/dist/semantic-normalization.js +0 -195
  270. package/dist/semantic-normalization.js.map +0 -1
  271. package/dist/semantic-types.d.ts +0 -265
  272. package/dist/semantic-types.d.ts.map +0 -1
  273. package/dist/semantic-types.js +0 -2
  274. package/dist/semantic-types.js.map +0 -1
  275. package/dist/status-types.d.ts +0 -28
  276. package/dist/status-types.d.ts.map +0 -1
  277. package/dist/status-types.js +0 -2
  278. package/dist/status-types.js.map +0 -1
  279. package/dist/task-types.d.ts +0 -165
  280. package/dist/task-types.d.ts.map +0 -1
  281. package/dist/task-types.js +0 -2
  282. package/dist/task-types.js.map +0 -1
  283. package/dist/tournament-adaptive-feedback.d.ts +0 -22
  284. package/dist/tournament-adaptive-feedback.d.ts.map +0 -1
  285. package/dist/tournament-adaptive-feedback.js +0 -241
  286. package/dist/tournament-adaptive-feedback.js.map +0 -1
  287. package/dist/tournament-bandit-types.d.ts +0 -91
  288. package/dist/tournament-bandit-types.d.ts.map +0 -1
  289. package/dist/tournament-bandit-types.js +0 -2
  290. package/dist/tournament-bandit-types.js.map +0 -1
  291. package/dist/tournament-bandit.d.ts +0 -4
  292. package/dist/tournament-bandit.d.ts.map +0 -1
  293. package/dist/tournament-bandit.js +0 -212
  294. package/dist/tournament-bandit.js.map +0 -1
  295. package/dist/tournament-history-types.d.ts +0 -138
  296. package/dist/tournament-history-types.d.ts.map +0 -1
  297. package/dist/tournament-history-types.js +0 -2
  298. package/dist/tournament-history-types.js.map +0 -1
  299. package/dist/tournament-history.d.ts +0 -5
  300. package/dist/tournament-history.d.ts.map +0 -1
  301. package/dist/tournament-history.js +0 -210
  302. package/dist/tournament-history.js.map +0 -1
  303. package/dist/tournament-merge.d.ts +0 -7
  304. package/dist/tournament-merge.d.ts.map +0 -1
  305. package/dist/tournament-merge.js +0 -172
  306. package/dist/tournament-merge.js.map +0 -1
  307. package/dist/tournament-runtime-helpers.d.ts +0 -9
  308. package/dist/tournament-runtime-helpers.d.ts.map +0 -1
  309. package/dist/tournament-runtime-helpers.js +0 -114
  310. package/dist/tournament-runtime-helpers.js.map +0 -1
  311. package/dist/tournament-runtime.d.ts +0 -6
  312. package/dist/tournament-runtime.d.ts.map +0 -1
  313. package/dist/tournament-runtime.js +0 -202
  314. package/dist/tournament-runtime.js.map +0 -1
  315. package/dist/tournament-sample-observations.d.ts +0 -4
  316. package/dist/tournament-sample-observations.d.ts.map +0 -1
  317. package/dist/tournament-sample-observations.js +0 -19
  318. package/dist/tournament-sample-observations.js.map +0 -1
  319. package/dist/tournament-sample-quality-types.d.ts +0 -17
  320. package/dist/tournament-sample-quality-types.d.ts.map +0 -1
  321. package/dist/tournament-sample-quality-types.js +0 -2
  322. package/dist/tournament-sample-quality-types.js.map +0 -1
  323. package/dist/tournament-sample-quality.d.ts +0 -8
  324. package/dist/tournament-sample-quality.d.ts.map +0 -1
  325. package/dist/tournament-sample-quality.js +0 -66
  326. package/dist/tournament-sample-quality.js.map +0 -1
  327. package/dist/tournament-scoring.d.ts +0 -18
  328. package/dist/tournament-scoring.d.ts.map +0 -1
  329. package/dist/tournament-scoring.js +0 -136
  330. package/dist/tournament-scoring.js.map +0 -1
  331. package/dist/tournament-types.d.ts +0 -269
  332. package/dist/tournament-types.d.ts.map +0 -1
  333. package/dist/tournament-types.js +0 -2
  334. package/dist/tournament-types.js.map +0 -1
  335. package/dist/trace-helpers.d.ts +0 -22
  336. package/dist/trace-helpers.d.ts.map +0 -1
  337. package/dist/trace-helpers.js +0 -181
  338. package/dist/trace-helpers.js.map +0 -1
  339. package/dist/trace-runtime.d.ts +0 -7
  340. package/dist/trace-runtime.d.ts.map +0 -1
  341. package/dist/trace-runtime.js +0 -196
  342. package/dist/trace-runtime.js.map +0 -1
  343. package/dist/trace-types.d.ts +0 -168
  344. package/dist/trace-types.d.ts.map +0 -1
  345. package/dist/trace-types.js +0 -2
  346. package/dist/trace-types.js.map +0 -1
  347. package/dist/types.d.ts +0 -23
  348. package/dist/types.d.ts.map +0 -1
  349. package/dist/types.js +0 -2
  350. package/dist/types.js.map +0 -1
  351. package/dist/usage-governor.d.ts +0 -41
  352. package/dist/usage-governor.d.ts.map +0 -1
  353. package/dist/usage-governor.js +0 -43
  354. package/dist/usage-governor.js.map +0 -1
@@ -1,71 +0,0 @@
1
- import { stableHash, toJsonObject, uniqueStrings } from './internal.js';
2
- export function createSwarmMergeAdmission(input) {
3
- const generatedAt = input.generatedAt ?? Date.now();
4
- const maxReady = Math.max(0, Math.floor(input.maxReady ?? input.index.entries.length));
5
- const maxChangedPaths = input.maxChangedPaths === undefined ? undefined : Math.max(0, Math.floor(input.maxChangedPaths));
6
- const maxChangedRegions = input.maxChangedRegions === undefined ? undefined : Math.max(0, Math.floor(input.maxChangedRegions));
7
- const maxHighRisk = input.maxHighRisk === undefined ? undefined : Math.max(0, Math.floor(input.maxHighRisk));
8
- const allowRisks = uniqueStrings(input.allowRisks ?? ['low', 'medium']);
9
- const admitted = [];
10
- const deferred = [];
11
- const usedPaths = new Set();
12
- const usedRegions = new Set();
13
- let highRiskCount = 0;
14
- for (const entry of input.index.entries) {
15
- const reasons = [];
16
- if (entry.disposition !== 'auto-mergeable' || !entry.autoMergeable)
17
- reasons.push('not-auto-mergeable');
18
- if (entry.staleAgainstHead)
19
- reasons.push('stale-against-head');
20
- if (entry.conflictingJobIds.length)
21
- reasons.push('conflicting-changes');
22
- if (!allowRisks.includes(entry.riskLevel))
23
- reasons.push('risk-not-admitted');
24
- if (admitted.length >= maxReady)
25
- reasons.push('max-ready');
26
- const nextPaths = new Set([...usedPaths, ...entry.changedPaths]);
27
- const nextRegions = new Set([...usedRegions, ...entry.changedRegions]);
28
- const nextHighRiskCount = highRiskCount + (entry.riskLevel === 'high' ? 1 : 0);
29
- if (maxChangedPaths !== undefined && nextPaths.size > maxChangedPaths)
30
- reasons.push('max-changed-paths');
31
- if (maxChangedRegions !== undefined && nextRegions.size > maxChangedRegions)
32
- reasons.push('max-changed-regions');
33
- if (maxHighRisk !== undefined && nextHighRiskCount > maxHighRisk)
34
- reasons.push('max-high-risk');
35
- if (reasons.length) {
36
- deferred.push({ jobId: entry.jobId, reasons: uniqueStrings(reasons) });
37
- continue;
38
- }
39
- admitted.push(entry.jobId);
40
- for (const file of entry.changedPaths)
41
- usedPaths.add(file);
42
- for (const region of entry.changedRegions)
43
- usedRegions.add(region);
44
- highRiskCount = nextHighRiskCount;
45
- }
46
- return {
47
- kind: 'frontier.swarm.merge-admission',
48
- version: 1,
49
- id: input.id ?? 'swarm-merge-admission:' + stableHash([input.index.id, admitted, deferred, generatedAt]),
50
- mergeIndexId: input.index.id,
51
- generatedAt,
52
- admitted,
53
- deferred,
54
- budget: {
55
- maxReady,
56
- ...(maxChangedPaths !== undefined ? { maxChangedPaths } : {}),
57
- ...(maxChangedRegions !== undefined ? { maxChangedRegions } : {}),
58
- ...(maxHighRisk !== undefined ? { maxHighRisk } : {}),
59
- allowRisks
60
- },
61
- summary: {
62
- admittedCount: admitted.length,
63
- deferredCount: deferred.length,
64
- changedPathCount: usedPaths.size,
65
- changedRegionCount: usedRegions.size,
66
- highRiskCount
67
- },
68
- ...(toJsonObject(input.metadata) ? { metadata: toJsonObject(input.metadata) } : {})
69
- };
70
- }
71
- //# sourceMappingURL=merge-admission.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-admission.js","sourceRoot":"","sources":["../src/merge-admission.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import type { FrontierSwarmJob, FrontierSwarmJobResult, FrontierSwarmJobResultInput, FrontierSwarmMergeBundle, FrontierSwarmMergeBundleInput, FrontierSwarmMergeDisposition, FrontierSwarmMergeReadiness, FrontierSwarmSemanticImportSummary, FrontierSwarmTraceShard, FrontierSwarmTraceShardInput } from './index.js';
2
- export interface FrontierSwarmMergeBundleDeps {
3
- normalizeResult(input: FrontierSwarmJobResultInput): FrontierSwarmJobResult;
4
- normalizeSemanticImportSummary(input: unknown): FrontierSwarmSemanticImportSummary | undefined;
5
- createSwarmTraceShard(input?: FrontierSwarmTraceShardInput): FrontierSwarmTraceShard;
6
- resolveSwarmChangedRegions(job: FrontierSwarmJob, changedPaths: readonly string[]): string[];
7
- }
8
- export declare function classifySwarmMergeReadiness(result: FrontierSwarmJobResultInput | FrontierSwarmJobResult): FrontierSwarmMergeReadiness;
9
- export declare function classifySwarmMergeDisposition(result: FrontierSwarmJobResultInput | FrontierSwarmJobResult, input?: {
10
- staleAgainstHead?: boolean;
11
- }): FrontierSwarmMergeDisposition;
12
- export declare function createSwarmMergeBundle(input: FrontierSwarmMergeBundleInput, deps: FrontierSwarmMergeBundleDeps): FrontierSwarmMergeBundle;
13
- //# sourceMappingURL=merge-bundles.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-bundles.d.ts","sourceRoot":"","sources":["../src/merge-bundles.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,EACxB,6BAA6B,EAC7B,6BAA6B,EAC7B,2BAA2B,EAE3B,kCAAkC,EAClC,uBAAuB,EACvB,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,4BAA4B;IAC3C,eAAe,CAAC,KAAK,EAAE,2BAA2B,GAAG,sBAAsB,CAAC;IAC5E,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,kCAAkC,GAAG,SAAS,CAAC;IAC/F,qBAAqB,CAAC,KAAK,CAAC,EAAE,4BAA4B,GAAG,uBAAuB,CAAC;IACrF,0BAA0B,CAAC,GAAG,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;CAC9F;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,2BAA2B,GAAG,sBAAsB,GAAG,2BAA2B,CAYrI;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,2BAA2B,GAAG,sBAAsB,EAC5D,KAAK,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GACzC,6BAA6B,CAS/B;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,6BAA6B,EACpC,IAAI,EAAE,4BAA4B,GACjC,wBAAwB,CAwD1B"}
@@ -1,144 +0,0 @@
1
- import { cloneJsonValue, matchesGlob, stableHash, toJsonObject, uniqueStrings } from './internal.js';
2
- export function classifySwarmMergeReadiness(result) {
3
- if (result.mergeReadiness)
4
- return result.mergeReadiness;
5
- if (result.status === 'blocked')
6
- return 'blocked';
7
- if (result.status === 'failed' || result.exitCode !== undefined && result.exitCode !== 0)
8
- return 'rejected';
9
- const changedPaths = result.changedPaths ?? [];
10
- if (changedPaths.length === 0)
11
- return 'discovery-only';
12
- const ownershipViolations = result.ownershipViolations ?? [];
13
- if (ownershipViolations.length)
14
- return 'rejected';
15
- const verification = result.verification ?? [];
16
- const failedRequired = verification.some((entry) => entry.required !== false && entry.status !== 0);
17
- if (failedRequired)
18
- return 'patch-candidate';
19
- return verification.length > 0 || result.status === 'verified' ? 'verified-patch' : 'patch-candidate';
20
- }
21
- export function classifySwarmMergeDisposition(result, input = {}) {
22
- if (result.mergeDisposition)
23
- return result.mergeDisposition;
24
- if (input.staleAgainstHead)
25
- return 'stale-against-head';
26
- const readiness = classifySwarmMergeReadiness(result);
27
- if (readiness === 'discovery-only')
28
- return 'discovery-only';
29
- if (readiness === 'blocked')
30
- return 'blocked';
31
- if (readiness === 'rejected')
32
- return 'rejected';
33
- if (readiness === 'verified-patch')
34
- return 'auto-mergeable';
35
- return 'needs-port';
36
- }
37
- export function createSwarmMergeBundle(input, deps) {
38
- const generatedAt = input.generatedAt ?? Date.now();
39
- const result = isSwarmJobResult(input.result) ? cloneJsonValue(input.result) : deps.normalizeResult(input.result);
40
- const job = input.job;
41
- const inputMetadata = toJsonObject(input.metadata);
42
- const semanticImport = deps.normalizeSemanticImportSummary(input.semanticImport ?? result.semanticImport ?? inputMetadata?.semanticImport);
43
- const changedPaths = uniqueStrings(result.changedPaths);
44
- const changedRegions = uniqueStrings([
45
- ...result.changedRegions,
46
- ...(job ? deps.resolveSwarmChangedRegions(job, changedPaths) : [])
47
- ]);
48
- const evidencePaths = uniqueStrings([...(result.evidencePaths ?? []), ...(input.evidencePaths ?? [])]);
49
- const queueItemIds = uniqueStrings([...(result.queueItemIds ?? []), ...(input.queueItemIds ?? []), ...(job ? [job.taskId] : [])]);
50
- const disposition = input.disposition ?? classifySwarmMergeDisposition(result, { staleAgainstHead: input.staleAgainstHead });
51
- const commandsPassed = result.verification.filter((entry) => entry.status === 0 || entry.required === false && entry.status === undefined);
52
- const commandsFailed = result.verification.filter((entry) => entry.status !== undefined && entry.status !== 0 && entry.required !== false);
53
- const ownedFilesTouched = job ? changedPaths.filter((file) => job.allowedWrites.some((glob) => matchesGlob(file, glob))) : changedPaths;
54
- const traceShards = [
55
- ...(input.traceShards ?? []),
56
- ...traceShardInputsFromUnknown(result.metadata?.traceShards),
57
- ...traceShardInputsFromUnknown(inputMetadata?.traceShards)
58
- ].map((shard) => normalizeTraceShardForBundle(shard, result, job, generatedAt, deps));
59
- const reasons = mergeBundleReasons(result, disposition, input.staleAgainstHead ?? false);
60
- return {
61
- kind: 'frontier.swarm.merge-bundle',
62
- version: 1,
63
- id: input.id ?? 'swarm-merge-bundle:' + stableHash([input.runId, input.planId, result.jobId, changedPaths, changedRegions, disposition, generatedAt]),
64
- ...(input.runId ? { runId: input.runId } : {}),
65
- ...(input.planId ? { planId: input.planId } : {}),
66
- jobId: result.jobId,
67
- ...(job ? { taskId: job.taskId, lane: job.lane, title: job.title } : {}),
68
- generatedAt,
69
- status: result.status,
70
- mergeReadiness: result.mergeReadiness,
71
- disposition,
72
- riskLevel: input.riskLevel ?? result.riskLevel ?? inferMergeRisk(result, disposition),
73
- autoMergeable: disposition === 'auto-mergeable' && reasons.length === 0,
74
- changedPaths,
75
- changedRegions,
76
- ownedFilesTouched,
77
- allowedWrites: job ? [...job.allowedWrites] : [],
78
- ownershipViolations: [...result.ownershipViolations],
79
- ...(input.patchPath ?? result.patchPath ? { patchPath: input.patchPath ?? result.patchPath } : {}),
80
- ...(input.patchHash ? { patchHash: input.patchHash } : {}),
81
- evidencePaths,
82
- commandsPassed,
83
- commandsFailed,
84
- queueItemIds,
85
- ...(input.branchName ? { branchName: input.branchName } : {}),
86
- ...(input.commit ? { commit: input.commit } : {}),
87
- staleAgainstHead: input.staleAgainstHead ?? false,
88
- reasons,
89
- ...(semanticImport ? { semanticImport } : {}),
90
- traceShards,
91
- ...(inputMetadata ? { metadata: inputMetadata } : {})
92
- };
93
- }
94
- function isSwarmJobResult(value) {
95
- return Array.isArray(value.changedPaths)
96
- && Array.isArray(value.changedRegions)
97
- && Array.isArray(value.verification)
98
- && Array.isArray(value.queueItemIds)
99
- && typeof value.riskLevel === 'string'
100
- && typeof value.mergeDisposition === 'string';
101
- }
102
- function traceShardInputsFromUnknown(value) {
103
- if (!Array.isArray(value))
104
- return [];
105
- return value.filter((entry) => !!entry && typeof entry === 'object');
106
- }
107
- function normalizeTraceShardForBundle(shard, result, job, generatedAt, deps) {
108
- return deps.createSwarmTraceShard({
109
- ...cloneJsonValue(shard),
110
- jobId: shard.jobId ?? result.jobId,
111
- lane: shard.lane ?? job?.lane,
112
- generatedAt: shard.generatedAt ?? generatedAt
113
- });
114
- }
115
- function mergeBundleReasons(result, disposition, staleAgainstHead) {
116
- const reasons = [];
117
- if (staleAgainstHead)
118
- reasons.push('stale-against-head');
119
- if (result.status === 'blocked')
120
- reasons.push('blocked');
121
- if (result.status === 'failed')
122
- reasons.push('failed');
123
- if (result.ownershipViolations.length)
124
- reasons.push('ownership-violations');
125
- if (result.verification.some((entry) => entry.required !== false && entry.status !== 0))
126
- reasons.push('failed-verification');
127
- if (disposition === 'needs-port')
128
- reasons.push('needs-human-port');
129
- if (disposition === 'rejected')
130
- reasons.push('rejected');
131
- return uniqueStrings(reasons);
132
- }
133
- function inferMergeRisk(result, disposition) {
134
- if (disposition === 'discovery-only')
135
- return 'low';
136
- if (disposition === 'rejected' || disposition === 'blocked' || disposition === 'stale-against-head')
137
- return 'high';
138
- if (result.changedPaths.length <= 2 && result.ownershipViolations.length === 0)
139
- return 'low';
140
- if (result.changedPaths.length <= 8)
141
- return 'medium';
142
- return 'high';
143
- }
144
- //# sourceMappingURL=merge-bundles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-bundles.js","sourceRoot":"","sources":["../src/merge-bundles.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import type { FrontierSwarmJobResult, FrontierSwarmJobResultInput, FrontierSwarmMergeDisposition, FrontierSwarmMergeReadiness } from './index.js';
2
- export declare function classifySwarmMergeReadiness(result: FrontierSwarmJobResultInput | FrontierSwarmJobResult): FrontierSwarmMergeReadiness;
3
- export declare function classifySwarmMergeDisposition(result: FrontierSwarmJobResultInput | FrontierSwarmJobResult, input?: {
4
- staleAgainstHead?: boolean;
5
- }): FrontierSwarmMergeDisposition;
6
- //# sourceMappingURL=merge-classification.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-classification.d.ts","sourceRoot":"","sources":["../src/merge-classification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC5B,MAAM,YAAY,CAAC;AAEpB,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,2BAA2B,GAAG,sBAAsB,GAAG,2BAA2B,CAYrI;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,2BAA2B,GAAG,sBAAsB,EAC5D,KAAK,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GACzC,6BAA6B,CAS/B"}
@@ -1,36 +0,0 @@
1
- export function classifySwarmMergeReadiness(result) {
2
- if (result.mergeReadiness)
3
- return result.mergeReadiness;
4
- if (result.status === 'blocked')
5
- return 'blocked';
6
- if (result.status === 'failed' || result.exitCode !== undefined && result.exitCode !== 0)
7
- return 'rejected';
8
- const changedPaths = result.changedPaths ?? [];
9
- if (changedPaths.length === 0)
10
- return 'discovery-only';
11
- const ownershipViolations = result.ownershipViolations ?? [];
12
- if (ownershipViolations.length)
13
- return 'rejected';
14
- const verification = result.verification ?? [];
15
- const failedRequired = verification.some((entry) => entry.required !== false && entry.status !== 0);
16
- if (failedRequired)
17
- return 'patch-candidate';
18
- return verification.length > 0 || result.status === 'verified' ? 'verified-patch' : 'patch-candidate';
19
- }
20
- export function classifySwarmMergeDisposition(result, input = {}) {
21
- if (result.mergeDisposition)
22
- return result.mergeDisposition;
23
- if (input.staleAgainstHead)
24
- return 'stale-against-head';
25
- const readiness = classifySwarmMergeReadiness(result);
26
- if (readiness === 'discovery-only')
27
- return 'discovery-only';
28
- if (readiness === 'blocked')
29
- return 'blocked';
30
- if (readiness === 'rejected')
31
- return 'rejected';
32
- if (readiness === 'verified-patch')
33
- return 'auto-mergeable';
34
- return 'needs-port';
35
- }
36
- //# sourceMappingURL=merge-classification.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-classification.js","sourceRoot":"","sources":["../src/merge-classification.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,2BAA2B,CAAC,MAA4D;IACtG,IAAI,MAAM,CAAC,cAAc;QAAE,OAAO,MAAM,CAAC,cAAc,CAAC;IACxD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAClD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC;IAC5G,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;IAC/C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,gBAAgB,CAAC;IACvD,MAAM,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC;IAC7D,IAAI,mBAAmB,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC;IAClD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;IAC/C,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IACpG,IAAI,cAAc;QAAE,OAAO,iBAAiB,CAAC;IAC7C,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,MAA4D,EAC5D,QAAwC,EAAE;IAE1C,IAAI,MAAM,CAAC,gBAAgB;QAAE,OAAO,MAAM,CAAC,gBAAgB,CAAC;IAC5D,IAAI,KAAK,CAAC,gBAAgB;QAAE,OAAO,oBAAoB,CAAC;IACxD,MAAM,SAAS,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,SAAS,KAAK,gBAAgB;QAAE,OAAO,gBAAgB,CAAC;IAC5D,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,SAAS,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAChD,IAAI,SAAS,KAAK,gBAAgB;QAAE,OAAO,gBAAgB,CAAC;IAC5D,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { FrontierSwarmMergeIndex, FrontierSwarmMergeIndexInput } from './index.js';
2
- export declare function createSwarmMergeIndex(input: FrontierSwarmMergeIndexInput): FrontierSwarmMergeIndex;
3
- //# sourceMappingURL=merge-index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-index.d.ts","sourceRoot":"","sources":["../src/merge-index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAIV,uBAAuB,EAEvB,4BAA4B,EAE7B,MAAM,YAAY,CAAC;AAEpB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,4BAA4B,GAAG,uBAAuB,CAwElG"}
@@ -1,130 +0,0 @@
1
- import { cloneJsonValue, stableHash, toJsonObject, uniqueStrings } from './internal.js';
2
- export function createSwarmMergeIndex(input) {
3
- const generatedAt = input.generatedAt ?? Date.now();
4
- const entries = input.bundles.map((bundle) => {
5
- const patchStatus = input.patchStatuses?.[bundle.jobId] ?? (bundle.staleAgainstHead ? 'stale' : bundle.patchPath ? 'unknown' : 'missing');
6
- const staleAgainstHead = bundle.staleAgainstHead || patchStatus === 'stale' || patchStatus === 'failed-check';
7
- return {
8
- jobId: bundle.jobId,
9
- ...(bundle.taskId ? { taskId: bundle.taskId } : {}),
10
- ...(bundle.lane ? { lane: bundle.lane } : {}),
11
- ...(bundle.title ? { title: bundle.title } : {}),
12
- status: bundle.status,
13
- mergeReadiness: bundle.mergeReadiness,
14
- disposition: staleAgainstHead ? 'stale-against-head' : bundle.disposition,
15
- riskLevel: bundle.riskLevel,
16
- patchStatus,
17
- staleAgainstHead,
18
- autoMergeable: bundle.autoMergeable && !staleAgainstHead,
19
- changedPaths: [...bundle.changedPaths],
20
- changedRegions: [...bundle.changedRegions],
21
- conflictKeys: mergeIndexConflictKeys(bundle),
22
- conflictingJobIds: [],
23
- ownedFilesTouched: [...bundle.ownedFilesTouched],
24
- ownershipViolations: [...bundle.ownershipViolations],
25
- ...(bundle.patchPath ? { patchPath: bundle.patchPath } : {}),
26
- ...(bundle.patchHash ? { patchHash: bundle.patchHash } : {}),
27
- evidencePaths: [...bundle.evidencePaths],
28
- queueItemIds: [...bundle.queueItemIds],
29
- reasons: uniqueStrings([...bundle.reasons, ...(staleAgainstHead ? ['stale-against-head'] : [])]),
30
- ...(bundle.semanticImport ? { semanticImport: cloneJsonValue(bundle.semanticImport) } : {}),
31
- generatedAt: bundle.generatedAt
32
- };
33
- });
34
- const conflicts = createMergeIndexConflicts(entries);
35
- const conflictsByJob = new Map();
36
- for (const conflict of conflicts) {
37
- for (const jobId of conflict.jobIds) {
38
- const set = conflictsByJob.get(jobId) ?? new Set();
39
- for (const other of conflict.jobIds)
40
- if (other !== jobId)
41
- set.add(other);
42
- conflictsByJob.set(jobId, set);
43
- }
44
- }
45
- const indexed = entries.map((entry) => ({
46
- ...entry,
47
- conflictingJobIds: Array.from(conflictsByJob.get(entry.jobId) ?? []).sort()
48
- }));
49
- const byDisposition = groupJobIdsBy(indexed, (entry) => entry.disposition);
50
- const byPath = groupJobIdsByMany(indexed, (entry) => entry.changedPaths);
51
- const byRegion = groupJobIdsByMany(indexed, (entry) => entry.changedRegions);
52
- return {
53
- kind: 'frontier.swarm.merge-index',
54
- version: 1,
55
- id: input.id ?? 'swarm-merge-index:' + stableHash([input.runId, input.planId, indexed, conflicts, generatedAt]),
56
- ...(input.runId ? { runId: input.runId } : {}),
57
- ...(input.planId ? { planId: input.planId } : {}),
58
- generatedAt,
59
- entries: indexed,
60
- conflicts,
61
- byDisposition,
62
- byPath,
63
- byRegion,
64
- summary: {
65
- entryCount: indexed.length,
66
- readyToApplyCount: indexed.filter((entry) => entry.disposition === 'auto-mergeable' && entry.autoMergeable && !entry.conflictingJobIds.length).length,
67
- needsHumanPortCount: indexed.filter((entry) => entry.disposition === 'needs-port').length,
68
- failedEvidenceCount: indexed.filter((entry) => entry.disposition === 'rejected' || entry.disposition === 'blocked' || entry.ownershipViolations.length > 0).length,
69
- staleAgainstHeadCount: indexed.filter((entry) => entry.staleAgainstHead || entry.disposition === 'stale-against-head').length,
70
- discoveryOnlyCount: indexed.filter((entry) => entry.disposition === 'discovery-only').length,
71
- conflictCount: conflicts.length,
72
- conflictedJobCount: conflictsByJob.size
73
- },
74
- ...(toJsonObject(input.metadata) ? { metadata: toJsonObject(input.metadata) } : {})
75
- };
76
- }
77
- function mergeIndexConflictKeys(bundle) {
78
- return bundle.changedRegions.length
79
- ? bundle.changedRegions.map((region) => `region:${region}`).sort()
80
- : bundle.changedPaths.map((file) => `path:${file}`).sort();
81
- }
82
- function createMergeIndexConflicts(entries) {
83
- const conflicts = [];
84
- for (let leftIndex = 0; leftIndex < entries.length; leftIndex += 1) {
85
- for (let rightIndex = leftIndex + 1; rightIndex < entries.length; rightIndex += 1) {
86
- const left = entries[leftIndex];
87
- const right = entries[rightIndex];
88
- if (!left || !right)
89
- continue;
90
- const keys = pairConflictKeys(left, right);
91
- for (const key of keys) {
92
- const kind = key.startsWith('region:') ? 'region' : 'path';
93
- const value = key.slice(key.indexOf(':') + 1);
94
- conflicts.push({
95
- jobIds: [left.jobId, right.jobId].sort(),
96
- key,
97
- kind,
98
- ...(kind === 'region' ? { region: value } : { path: value })
99
- });
100
- }
101
- }
102
- }
103
- const deduped = new Map();
104
- for (const conflict of conflicts)
105
- deduped.set(`${conflict.key}:${conflict.jobIds.join(',')}`, conflict);
106
- return Array.from(deduped.values()).sort((left, right) => left.key.localeCompare(right.key) || left.jobIds.join(',').localeCompare(right.jobIds.join(',')));
107
- }
108
- function pairConflictKeys(left, right) {
109
- if (left.changedRegions.length > 0 && right.changedRegions.length > 0) {
110
- const rightRegions = new Set(right.changedRegions);
111
- return left.changedRegions.filter((region) => rightRegions.has(region)).map((region) => `region:${region}`).sort();
112
- }
113
- const rightPaths = new Set(right.changedPaths);
114
- return left.changedPaths.filter((file) => rightPaths.has(file)).map((file) => `path:${file}`).sort();
115
- }
116
- function groupJobIdsBy(items, key) {
117
- const out = {};
118
- for (const item of items)
119
- out[key(item)] = uniqueStrings([...(out[key(item)] ?? []), item.jobId]);
120
- return out;
121
- }
122
- function groupJobIdsByMany(items, key) {
123
- const out = {};
124
- for (const item of items) {
125
- for (const value of key(item))
126
- out[value] = uniqueStrings([...(out[value] ?? []), item.jobId]);
127
- }
128
- return out;
129
- }
130
- //# sourceMappingURL=merge-index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-index.js","sourceRoot":"","sources":["../src/merge-index.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import type { FrontierSwarmArtifact, FrontierSwarmArtifactInput, FrontierSwarmBudgetDecision, FrontierSwarmJobResult, FrontierSwarmMergeGroup, FrontierSwarmMergeIndexEntry, FrontierSwarmReviewAssignment, FrontierSwarmRiskLevel } from './types.js';
2
- import type { FrontierSwarmJob } from './plan.js';
3
- export declare function normalizeArtifact(input: FrontierSwarmArtifactInput): FrontierSwarmArtifact;
4
- export declare function reviewReason(job: FrontierSwarmJob, result: FrontierSwarmJobResult | undefined, budget: FrontierSwarmBudgetDecision | undefined, sampleSalt: string): FrontierSwarmReviewAssignment['reason'] | undefined;
5
- export declare function selectReviewers(pool: readonly string[], required: number, salt: string): string[];
6
- export declare function conflictMap(results: readonly FrontierSwarmJobResult[]): Map<string, Set<string>>;
7
- export declare function groupMergeReadyJobs(ready: readonly string[], results: readonly FrontierSwarmJobResult[]): FrontierSwarmMergeGroup[];
8
- export declare function patchStackKey(entry: FrontierSwarmMergeIndexEntry): string;
9
- export declare function riskRank(risk: FrontierSwarmRiskLevel): number;
10
- export declare function deterministicUnitInterval(value: unknown): number;
11
- //# sourceMappingURL=merge-plan-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-plan-helpers.d.ts","sourceRoot":"","sources":["../src/merge-plan-helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACvP,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,0BAA0B,GAAG,qBAAqB,CAU1F;AACD,wBAAgB,YAAY,CAC1B,GAAG,EAAE,gBAAgB,EACrB,MAAM,EAAE,sBAAsB,GAAG,SAAS,EAC1C,MAAM,EAAE,2BAA2B,GAAG,SAAS,EAC/C,UAAU,EAAE,MAAM,GACjB,6BAA6B,CAAC,QAAQ,CAAC,GAAG,SAAS,CAOrD;AACD,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAIjG;AACD,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,sBAAsB,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAgBhG;AACD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,sBAAsB,EAAE,GAAG,uBAAuB,EAAE,CAUnI;AACD,wBAAgB,aAAa,CAAC,KAAK,EAAE,4BAA4B,GAAG,MAAM,CAKzE;AACD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAM7D;AACD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGhE"}
@@ -1,97 +0,0 @@
1
- import { positiveNumber, stableHash, toJsonObject, uniqueStrings } from './internal.js';
2
- export function normalizeArtifact(input) {
3
- return {
4
- jobId: normalizeId(input.jobId, 'artifact job id'),
5
- path: normalizeId(input.path, 'artifact path'),
6
- kind: input.kind ?? 'artifact',
7
- ...(positiveNumber(input.bytes) ? { bytes: Math.floor(input.bytes) } : {}),
8
- ...(input.hash ? { hash: input.hash } : {}),
9
- ...(input.producedAt !== undefined ? { producedAt: input.producedAt } : {}),
10
- ...(toJsonObject(input.metadata) ? { metadata: toJsonObject(input.metadata) } : {})
11
- };
12
- }
13
- export function reviewReason(job, result, budget, sampleSalt) {
14
- if (result?.ownershipViolations.length)
15
- return 'violations';
16
- if (result?.status === 'failed' || result?.exitCode !== undefined && result.exitCode !== 0)
17
- return 'failed';
18
- if (budget && !budget.ok)
19
- return 'budget';
20
- if (job.review.alwaysReview)
21
- return 'always-review';
22
- if (job.review.sampleRate > 0 && deterministicUnitInterval([sampleSalt, job.id]) < job.review.sampleRate)
23
- return 'sampled';
24
- return undefined;
25
- }
26
- export function selectReviewers(pool, required, salt) {
27
- if (required <= 0 || pool.length === 0)
28
- return [];
29
- const sorted = [...uniqueStrings(pool)].sort((left, right) => stableHash([salt, left]).localeCompare(stableHash([salt, right])));
30
- return sorted.slice(0, Math.min(required, sorted.length));
31
- }
32
- export function conflictMap(results) {
33
- const conflicts = new Map();
34
- for (let leftIndex = 0; leftIndex < results.length; leftIndex += 1) {
35
- for (let rightIndex = leftIndex + 1; rightIndex < results.length; rightIndex += 1) {
36
- const left = results[leftIndex];
37
- const right = results[rightIndex];
38
- if (!left || !right || pairConflictKeys(left, right).length === 0)
39
- continue;
40
- const leftConflicts = conflicts.get(left.jobId) ?? new Set();
41
- const rightConflicts = conflicts.get(right.jobId) ?? new Set();
42
- leftConflicts.add(right.jobId);
43
- rightConflicts.add(left.jobId);
44
- conflicts.set(left.jobId, leftConflicts);
45
- conflicts.set(right.jobId, rightConflicts);
46
- }
47
- }
48
- return conflicts;
49
- }
50
- export function groupMergeReadyJobs(ready, results) {
51
- const byJob = new Map(results.map((result) => [result.jobId, result]));
52
- return ready.map((jobId) => {
53
- const changedPaths = [...(byJob.get(jobId)?.changedPaths ?? [])].sort();
54
- return {
55
- id: 'merge-group:' + stableHash([jobId, changedPaths]),
56
- jobIds: [jobId],
57
- changedPaths
58
- };
59
- });
60
- }
61
- export function patchStackKey(entry) {
62
- const lane = entry.lane ?? 'unassigned';
63
- if (entry.changedRegions.length)
64
- return `${lane}:${entry.changedRegions[0]}`;
65
- const firstPath = entry.changedPaths[0] ?? 'evidence-only';
66
- return `${lane}:${firstPath.split('/').slice(0, 2).join('/') || firstPath}`;
67
- }
68
- export function riskRank(risk) {
69
- if (risk === 'low')
70
- return 0;
71
- if (risk === 'medium')
72
- return 1;
73
- if (risk === 'unknown')
74
- return 2;
75
- if (risk === 'high')
76
- return 3;
77
- return 4;
78
- }
79
- export function deterministicUnitInterval(value) {
80
- const hex = stableHash(value).split(':')[1] ?? '0';
81
- return parseInt(hex, 16) / 0xffffffff;
82
- }
83
- function normalizeId(value, label) {
84
- const id = String(value || '').trim();
85
- if (!id)
86
- throw new Error(`Missing ${label}`);
87
- return id;
88
- }
89
- function pairConflictKeys(left, right) {
90
- if (left.changedRegions.length > 0 && right.changedRegions.length > 0) {
91
- const rightRegions = new Set(right.changedRegions);
92
- return left.changedRegions.filter((region) => rightRegions.has(region)).map((region) => `region:${region}`).sort();
93
- }
94
- const rightPaths = new Set(right.changedPaths);
95
- return left.changedPaths.filter((file) => rightPaths.has(file)).map((file) => `path:${file}`).sort();
96
- }
97
- //# sourceMappingURL=merge-plan-helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-plan-helpers.js","sourceRoot":"","sources":["../src/merge-plan-helpers.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import type { FrontierSwarmDecomposeInput, FrontierSwarmMergePlan, FrontierSwarmMergePlanInput, FrontierSwarmReviewPlan, FrontierSwarmReviewPlanInput, FrontierSwarmTaskInput } from './types.js';
2
- import type { JsonValue } from '@shapeshift-labs/frontier';
3
- export declare function createSwarmReviewPlan(input: FrontierSwarmReviewPlanInput): FrontierSwarmReviewPlan;
4
- export declare function createSwarmMergePlan(input: FrontierSwarmMergePlanInput): FrontierSwarmMergePlan;
5
- export declare function decomposeSwarmFeature(input: FrontierSwarmDecomposeInput): FrontierSwarmTaskInput[];
6
- export declare function encodeSwarmJsonl(records: readonly unknown[]): string;
7
- export declare function decodeSwarmJsonl(jsonl: string): JsonValue[];
8
- //# sourceMappingURL=merge-plans-runtime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-plans-runtime.d.ts","sourceRoot":"","sources":["../src/merge-plans-runtime.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,2BAA2B,EAA6B,sBAAsB,EAAE,2BAA2B,EAAiC,uBAAuB,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC5P,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,4BAA4B,GAAG,uBAAuB,CAgClG;AACD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,2BAA2B,GAAG,sBAAsB,CA8B/F;AACD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,2BAA2B,GAAG,sBAAsB,EAAE,CAmBlG;AACD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CAEpE;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,CAE3D"}