@shapeshift-labs/frontier-swarm 0.5.19 → 0.5.21

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 +118 -131
  2. package/benchmarks/package-bench.mjs +294 -20
  3. package/dist/index.d.ts +4087 -41
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +8189 -40
  6. package/dist/index.js.map +1 -1
  7. package/package.json +4 -6
  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 -295
  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 -240
  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
package/dist/scheduler.js DELETED
@@ -1,213 +0,0 @@
1
- import { cloneJsonValue, countBy, positiveNumber, stableHash, toJsonObject } from './internal.js';
2
- export const FRONTIER_SWARM_SCHEDULE_KIND = 'frontier.swarm.schedule';
3
- export const FRONTIER_SWARM_SCHEDULE_VERSION = 1;
4
- export const FRONTIER_SWARM_SCHEDULER_RECOMMENDATIONS_KIND = 'frontier.swarm.scheduler-recommendations';
5
- export const FRONTIER_SWARM_SCHEDULER_RECOMMENDATIONS_VERSION = 1;
6
- export function createSwarmSchedule(input) {
7
- const plan = 'plan' in input ? input.plan : input;
8
- const run = 'plan' in input ? input.run : undefined;
9
- const createdAt = 'plan' in input ? input.now ?? Date.now() : Date.now();
10
- const limits = mergeScheduleLimits(plan.limits, 'plan' in input ? input : {});
11
- const resultsByJob = new Map((run?.results ?? []).map((result) => [result.jobId, result]));
12
- const completed = new Set();
13
- const failed = new Set();
14
- for (const result of resultsByJob.values()) {
15
- if (result.status === 'completed' || result.status === 'verified')
16
- completed.add(result.jobId);
17
- if (result.status === 'failed' || result.exitCode !== undefined && result.exitCode !== 0)
18
- failed.add(result.jobId);
19
- }
20
- const runningJobs = (run?.jobs ?? plan.jobs)
21
- .filter((job) => job.status === 'running')
22
- .map((job) => ({
23
- jobId: job.id,
24
- lane: job.lane,
25
- compute: job.compute.id,
26
- concurrencyKey: job.concurrencyKey,
27
- capabilities: [...job.capabilities],
28
- ...(job.resourceRequirements ? { resourceRequirements: cloneJsonValue(job.resourceRequirements) } : {})
29
- }));
30
- const runningByLane = countBy(runningJobs.map((job) => job.lane));
31
- const runningByKey = countBy(runningJobs.map((job) => job.concurrencyKey));
32
- const runningByCompute = countBy(runningJobs.map((job) => job.compute));
33
- const runningByResource = resourceUsageFromScheduled(runningJobs);
34
- const ready = [];
35
- const blocked = [];
36
- const sortedJobs = [...plan.jobs].sort((left, right) => left.priority - right.priority || left.id.localeCompare(right.id));
37
- for (const job of sortedJobs) {
38
- if (completed.has(job.id) || failed.has(job.id) || runningJobs.some((running) => running.jobId === job.id))
39
- continue;
40
- const dependencyIds = plan.graph.dependenciesByJobId[job.id] ?? [];
41
- const waitingFor = dependencyIds.filter((dep) => !completed.has(dep));
42
- const reasons = [];
43
- if (waitingFor.length)
44
- reasons.push('waiting-for-dependencies');
45
- const laneMax = limits.maxLaneConcurrency[job.lane] ?? Number.POSITIVE_INFINITY;
46
- const keyMax = limits.maxConcurrencyKeyConcurrency[job.concurrencyKey] ?? Number.POSITIVE_INFINITY;
47
- const computeMax = limits.maxComputeConcurrency[job.compute.id] ?? job.compute.maxConcurrency ?? Number.POSITIVE_INFINITY;
48
- if ((runningByLane[job.lane] ?? 0) >= laneMax)
49
- reasons.push('lane-capacity');
50
- if ((runningByKey[job.concurrencyKey] ?? 0) >= keyMax)
51
- reasons.push('concurrency-key-capacity');
52
- if ((runningByCompute[job.compute.id] ?? 0) >= computeMax)
53
- reasons.push('compute-capacity');
54
- const scheduled = scheduleJob(job, dependencyIds);
55
- for (const resource of resourceQuotaViolations(scheduled, runningByResource, limits.resourceQuotas)) {
56
- reasons.push(`resource-capacity:${resource}`);
57
- }
58
- if (reasons.length) {
59
- blocked.push({ ...scheduled, reasons, waitingFor });
60
- continue;
61
- }
62
- if (limits.maxReadyJobs !== undefined && ready.length >= limits.maxReadyJobs) {
63
- blocked.push({ ...scheduled, reasons: ['ready-capacity'], waitingFor: [] });
64
- continue;
65
- }
66
- ready.push(scheduled);
67
- runningByLane[job.lane] = (runningByLane[job.lane] ?? 0) + 1;
68
- runningByKey[job.concurrencyKey] = (runningByKey[job.concurrencyKey] ?? 0) + 1;
69
- runningByCompute[job.compute.id] = (runningByCompute[job.compute.id] ?? 0) + 1;
70
- addResourceUsage(runningByResource, scheduled);
71
- }
72
- return {
73
- kind: FRONTIER_SWARM_SCHEDULE_KIND,
74
- version: FRONTIER_SWARM_SCHEDULE_VERSION,
75
- id: 'swarm-schedule:' + stableHash([plan.id, run?.id, ready.map((job) => job.jobId), blocked.map((job) => [job.jobId, job.reasons]), createdAt]),
76
- planId: plan.id,
77
- ...(run ? { runId: run.id } : {}),
78
- createdAt,
79
- ready,
80
- blocked,
81
- running: runningJobs,
82
- completed: Array.from(completed).sort(),
83
- failed: Array.from(failed).sort(),
84
- summary: {
85
- jobCount: plan.jobs.length,
86
- readyCount: ready.length,
87
- blockedCount: blocked.length,
88
- runningCount: runningJobs.length,
89
- completedCount: completed.size,
90
- failedCount: failed.size
91
- }
92
- };
93
- }
94
- export function createSwarmSchedulerRecommendations(input) {
95
- const generatedAt = input.generatedAt ?? Date.now();
96
- const recommendations = [];
97
- const blockedByReason = new Map();
98
- for (const job of input.schedule.blocked) {
99
- for (const reason of job.reasons)
100
- blockedByReason.set(reason, [...(blockedByReason.get(reason) ?? []), job]);
101
- }
102
- for (const [reason, jobs] of blockedByReason) {
103
- const resource = reason.startsWith('resource-capacity:') ? reason.slice('resource-capacity:'.length) : undefined;
104
- recommendations.push({
105
- id: 'swarm-scheduler-recommendation:' + stableHash([input.schedule.id, reason, jobs.map((job) => job.jobId), generatedAt]),
106
- reason,
107
- jobIds: jobs.map((job) => job.jobId).sort(),
108
- ...(resource ? { resource } : {}),
109
- ...(jobs[0]?.lane ? { lane: jobs[0].lane } : {}),
110
- action: schedulerActionForReason(reason),
111
- priority: schedulerPriorityForReason(reason)
112
- });
113
- }
114
- for (const conflict of input.mergeIndex?.conflicts ?? []) {
115
- recommendations.push({
116
- id: 'swarm-scheduler-recommendation:' + stableHash([input.schedule.id, conflict.key, conflict.jobIds, generatedAt]),
117
- reason: `merge-conflict:${conflict.kind}`,
118
- jobIds: [...conflict.jobIds],
119
- action: 'serialize-conflicting-surface-or-split-ownership',
120
- priority: 15
121
- });
122
- }
123
- return {
124
- kind: FRONTIER_SWARM_SCHEDULER_RECOMMENDATIONS_KIND,
125
- version: FRONTIER_SWARM_SCHEDULER_RECOMMENDATIONS_VERSION,
126
- id: input.id ?? 'swarm-scheduler-recommendations:' + stableHash([input.schedule.id, recommendations, generatedAt]),
127
- scheduleId: input.schedule.id,
128
- generatedAt,
129
- recommendations: recommendations.sort((left, right) => left.priority - right.priority || left.id.localeCompare(right.id)),
130
- summary: { recommendationCount: recommendations.length },
131
- ...(toJsonObject(input.metadata) ? { metadata: toJsonObject(input.metadata) } : {})
132
- };
133
- }
134
- function mergeScheduleLimits(base, override) {
135
- return {
136
- maxReadyJobs: positiveNumber(override.maxReadyJobs) ? Math.floor(override.maxReadyJobs) : base.maxReadyJobs,
137
- maxLaneConcurrency: { ...base.maxLaneConcurrency, ...(override.maxLaneConcurrency ?? {}) },
138
- maxConcurrencyKeyConcurrency: { ...base.maxConcurrencyKeyConcurrency, ...(override.maxConcurrencyKeyConcurrency ?? {}) },
139
- maxComputeConcurrency: { ...base.maxComputeConcurrency, ...(override.maxComputeConcurrency ?? {}) },
140
- resourceQuotas: { ...base.resourceQuotas, ...normalizeResourceQuotas(override.resourceQuotas ?? {}) }
141
- };
142
- }
143
- function scheduleJob(job, dependsOn = job.dependsOn) {
144
- return {
145
- jobId: job.id,
146
- taskId: job.taskId,
147
- lane: job.lane,
148
- compute: job.compute.id,
149
- concurrencyKey: job.concurrencyKey,
150
- priority: job.priority,
151
- dependsOn: [...dependsOn],
152
- capabilities: [...job.capabilities],
153
- ...(job.resourceRequirements ? { resourceRequirements: cloneJsonValue(job.resourceRequirements) } : {})
154
- };
155
- }
156
- function normalizeResourceQuotas(input) {
157
- const quotas = {};
158
- for (const [resource, value] of Object.entries(input)) {
159
- if (positiveNumber(value))
160
- quotas[resource] = value;
161
- }
162
- return quotas;
163
- }
164
- function resourceUsageFromScheduled(jobs) {
165
- const usage = {};
166
- for (const job of jobs)
167
- addResourceUsage(usage, job);
168
- return usage;
169
- }
170
- function addResourceUsage(usage, job) {
171
- for (const [resource, amount] of Object.entries(job.resourceRequirements?.resources ?? {})) {
172
- usage[resource] = (usage[resource] ?? 0) + amount;
173
- }
174
- if (job.resourceRequirements?.browser?.required) {
175
- if (job.resourceRequirements.resources.browser === undefined)
176
- usage.browser = (usage.browser ?? 0) + 1;
177
- if (job.resourceRequirements.resources['browser-port'] === undefined)
178
- usage['browser-port'] = (usage['browser-port'] ?? 0) + 1;
179
- }
180
- }
181
- function resourceQuotaViolations(job, usage, quotas) {
182
- const next = { ...usage };
183
- addResourceUsage(next, job);
184
- return Object.entries(quotas)
185
- .filter(([resource, quota]) => (next[resource] ?? 0) > quota)
186
- .map(([resource]) => resource)
187
- .sort();
188
- }
189
- function schedulerActionForReason(reason) {
190
- if (reason.startsWith('resource-capacity:'))
191
- return 'lower-concurrency-or-add-resource-pool';
192
- if (reason === 'lane-capacity')
193
- return 'increase-lane-capacity-or-split-lane';
194
- if (reason === 'compute-capacity')
195
- return 'increase-compute-capacity-or-use-another-compute';
196
- if (reason === 'concurrency-key-capacity')
197
- return 'serialize-or-split-concurrency-key';
198
- if (reason === 'waiting-for-dependencies')
199
- return 'prioritize-dependency-chain';
200
- if (reason === 'ready-capacity')
201
- return 'raise-ready-window-or-drain-ready-jobs';
202
- return 'review-scheduler-blocker';
203
- }
204
- function schedulerPriorityForReason(reason) {
205
- if (reason.startsWith('resource-capacity:'))
206
- return 10;
207
- if (reason === 'waiting-for-dependencies')
208
- return 20;
209
- if (reason === 'ready-capacity')
210
- return 25;
211
- return 30;
212
- }
213
- //# sourceMappingURL=scheduler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { FrontierSwarmSemanticImportSummary } from './index.js';
2
- export declare function normalizeSemanticImportSummary(input: unknown): FrontierSwarmSemanticImportSummary | undefined;
3
- //# sourceMappingURL=semantic-normalization.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semantic-normalization.d.ts","sourceRoot":"","sources":["../src/semantic-normalization.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAKV,kCAAkC,EAInC,MAAM,YAAY,CAAC;AAEpB,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,kCAAkC,GAAG,SAAS,CA0B7G"}
@@ -1,195 +0,0 @@
1
- import { nonNegativeCount, normalizeCounterRecord, stringArray } from './coercion.js';
2
- import { toJsonObject, uniqueStrings } from './internal.js';
3
- export function normalizeSemanticImportSummary(input) {
4
- const object = toJsonObject(input);
5
- if (!object)
6
- return undefined;
7
- const metadata = toJsonObject(object.metadata);
8
- return {
9
- total: nonNegativeCount(object.total),
10
- selected: nonNegativeCount(object.selected),
11
- eligible: nonNegativeCount(object.eligible),
12
- omitted: nonNegativeCount(object.omitted),
13
- imported: nonNegativeCount(object.imported),
14
- skipped: nonNegativeCount(object.skipped),
15
- errors: nonNegativeCount(object.errors),
16
- sourceMapCount: nonNegativeCount(object.sourceMapCount),
17
- sourceMapMappingCount: nonNegativeCount(object.sourceMapMappingCount),
18
- lossCount: nonNegativeCount(object.lossCount),
19
- lossesBySeverity: normalizeCounterRecord(object.lossesBySeverity),
20
- semanticIndex: normalizeSemanticIndexSummary(object.semanticIndex),
21
- dependencies: normalizeSemanticDependencySummary(object.dependencies),
22
- semanticSidecars: normalizeSemanticSidecarSummary(object.semanticSidecars),
23
- proofSpec: normalizeProofSpecSummary(object.proofSpec),
24
- paradigmSemantics: normalizeParadigmSemanticsSummary(object.paradigmSemantics),
25
- sourceProjections: normalizeSourceProjectionSummary(object.sourceProjections),
26
- nativeCompiles: normalizeNativeCompileSummary(object.nativeCompiles),
27
- readiness: normalizeCounterRecord(object.readiness),
28
- ...(metadata ? { metadata } : {})
29
- };
30
- }
31
- const paradigmSemanticsSummaryGroups = [
32
- 'bindingScopes',
33
- 'bindings',
34
- 'patterns',
35
- 'typeConstraints',
36
- 'evaluationModels',
37
- 'memoryLocations',
38
- 'effectRegions',
39
- 'controlRegions',
40
- 'logicPrograms',
41
- 'actorSystems',
42
- 'stackEffects',
43
- 'arrayShapes',
44
- 'numericKernels',
45
- 'dataflowNetworks',
46
- 'clockModels',
47
- 'objectModels',
48
- 'macroExpansions',
49
- 'reflectionBoundaries',
50
- 'loweringRecords'
51
- ];
52
- function normalizeParadigmSemanticsSummary(input) {
53
- const object = toJsonObject(input);
54
- const counts = Object.fromEntries(paradigmSemanticsSummaryGroups.map((group) => [
55
- group,
56
- nonNegativeCount(object?.[group])
57
- ]));
58
- const total = nonNegativeCount(object?.total) || Object.values(counts).reduce((sum, count) => sum + count, 0);
59
- const byGroup = normalizeCounterRecord(object?.byGroup);
60
- const byKind = normalizeCounterRecord(object?.byKind);
61
- const hasRuntimeSemantics = object?.hasRuntimeSemantics === true
62
- || counts.evaluationModels > 0
63
- || counts.memoryLocations > 0
64
- || counts.effectRegions > 0
65
- || counts.controlRegions > 0
66
- || counts.actorSystems > 0
67
- || counts.clockModels > 0;
68
- const hasLogicSemantics = object?.hasLogicSemantics === true || counts.logicPrograms > 0;
69
- const hasStackSemantics = object?.hasStackSemantics === true || counts.stackEffects > 0;
70
- const hasArraySemantics = object?.hasArraySemantics === true || counts.arrayShapes > 0 || counts.numericKernels > 0;
71
- const hasMacroOrReflection = object?.hasMacroOrReflection === true || counts.macroExpansions > 0 || counts.reflectionBoundaries > 0;
72
- const hasLowering = object?.hasLowering === true || counts.loweringRecords > 0;
73
- return {
74
- total,
75
- ids: uniqueStrings(stringArray(object?.ids)),
76
- groups: uniqueStrings(stringArray(object?.groups)),
77
- kinds: uniqueStrings(stringArray(object?.kinds)),
78
- evidence: nonNegativeCount(object?.evidence),
79
- ...counts,
80
- byGroup,
81
- byKind,
82
- hasRuntimeSemantics,
83
- hasLogicSemantics,
84
- hasStackSemantics,
85
- hasArraySemantics,
86
- hasMacroOrReflection,
87
- hasLowering,
88
- empty: object?.empty === true || total === 0
89
- };
90
- }
91
- function normalizeProofSpecSummary(input) {
92
- const object = toJsonObject(input);
93
- const total = nonNegativeCount(object?.total);
94
- return {
95
- total,
96
- ids: uniqueStrings(stringArray(object?.ids)),
97
- contracts: nonNegativeCount(object?.contracts),
98
- refinements: nonNegativeCount(object?.refinements),
99
- invariants: nonNegativeCount(object?.invariants),
100
- termination: nonNegativeCount(object?.termination),
101
- temporal: nonNegativeCount(object?.temporal),
102
- obligations: nonNegativeCount(object?.obligations),
103
- artifacts: nonNegativeCount(object?.artifacts),
104
- assumptions: nonNegativeCount(object?.assumptions),
105
- evidence: nonNegativeCount(object?.evidence),
106
- discharged: nonNegativeCount(object?.discharged),
107
- failed: nonNegativeCount(object?.failed),
108
- open: nonNegativeCount(object?.open),
109
- unknown: nonNegativeCount(object?.unknown),
110
- stale: nonNegativeCount(object?.stale),
111
- assumed: nonNegativeCount(object?.assumed),
112
- contractKinds: uniqueStrings(stringArray(object?.contractKinds)),
113
- artifactKinds: uniqueStrings(stringArray(object?.artifactKinds)),
114
- byStatus: normalizeCounterRecord(object?.byStatus),
115
- byContractKind: normalizeCounterRecord(object?.byContractKind),
116
- byArtifactKind: normalizeCounterRecord(object?.byArtifactKind),
117
- empty: object?.empty === true || total === 0
118
- };
119
- }
120
- function normalizeSemanticIndexSummary(input) {
121
- const object = toJsonObject(input);
122
- return {
123
- documents: nonNegativeCount(object?.documents),
124
- symbols: nonNegativeCount(object?.symbols),
125
- occurrences: nonNegativeCount(object?.occurrences),
126
- relations: nonNegativeCount(object?.relations),
127
- facts: nonNegativeCount(object?.facts)
128
- };
129
- }
130
- function normalizeSemanticDependencySummary(input) {
131
- const object = toJsonObject(input);
132
- const byPredicate = normalizeCounterRecord(object?.byPredicate);
133
- const namedTotal = [
134
- 'calls',
135
- 'uses',
136
- 'references',
137
- 'imports',
138
- 'depends',
139
- 'extends',
140
- 'implements',
141
- 'includes',
142
- 'requires'
143
- ].reduce((sum, key) => sum + nonNegativeCount(object?.[key]), 0);
144
- return {
145
- total: nonNegativeCount(object?.total) || Object.values(byPredicate).reduce((sum, count) => sum + count, 0) || namedTotal,
146
- calls: nonNegativeCount(object?.calls),
147
- uses: nonNegativeCount(object?.uses),
148
- references: nonNegativeCount(object?.references),
149
- imports: nonNegativeCount(object?.imports),
150
- depends: nonNegativeCount(object?.depends),
151
- extends: nonNegativeCount(object?.extends),
152
- implements: nonNegativeCount(object?.implements),
153
- includes: nonNegativeCount(object?.includes),
154
- requires: nonNegativeCount(object?.requires),
155
- byPredicate,
156
- predicates: uniqueStrings(stringArray(object?.predicates)),
157
- ids: uniqueStrings(stringArray(object?.ids)),
158
- sourceSymbolIds: uniqueStrings(stringArray(object?.sourceSymbolIds)),
159
- targetSymbolIds: uniqueStrings(stringArray(object?.targetSymbolIds))
160
- };
161
- }
162
- function normalizeSemanticSidecarSummary(input) {
163
- const object = toJsonObject(input);
164
- return {
165
- total: nonNegativeCount(object?.total),
166
- symbols: nonNegativeCount(object?.symbols),
167
- ownershipRegions: nonNegativeCount(object?.ownershipRegions),
168
- patchHints: nonNegativeCount(object?.patchHints),
169
- empty: nonNegativeCount(object?.empty)
170
- };
171
- }
172
- function normalizeSourceProjectionSummary(input) {
173
- const object = toJsonObject(input);
174
- return {
175
- total: nonNegativeCount(object?.total),
176
- preserved: nonNegativeCount(object?.preserved),
177
- stubs: nonNegativeCount(object?.stubs),
178
- ready: nonNegativeCount(object?.ready),
179
- needsReview: nonNegativeCount(object?.needsReview),
180
- blocked: nonNegativeCount(object?.blocked)
181
- };
182
- }
183
- function normalizeNativeCompileSummary(input) {
184
- const object = toJsonObject(input);
185
- return {
186
- total: nonNegativeCount(object?.total),
187
- emitted: nonNegativeCount(object?.emitted),
188
- preserved: nonNegativeCount(object?.preserved),
189
- targetStubs: nonNegativeCount(object?.targetStubs),
190
- ready: nonNegativeCount(object?.ready),
191
- needsReview: nonNegativeCount(object?.needsReview),
192
- blocked: nonNegativeCount(object?.blocked)
193
- };
194
- }
195
- //# sourceMappingURL=semantic-normalization.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semantic-normalization.js","sourceRoot":"","sources":["../src/semantic-normalization.ts"],"names":[],"mappings":"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"}