@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,138 +0,0 @@
1
- import type { JsonObject } from '@shapeshift-labs/frontier';
2
- import type { FrontierSwarmAdaptiveObservationInput } from './adaptive-load-types.js';
3
- import type { FRONTIER_SWARM_STRATEGY_TOURNAMENT_COMPARISON_KIND, FRONTIER_SWARM_STRATEGY_TOURNAMENT_COMPARISON_VERSION, FRONTIER_SWARM_STRATEGY_TOURNAMENT_HISTORY_KIND, FRONTIER_SWARM_STRATEGY_TOURNAMENT_HISTORY_VERSION, FRONTIER_SWARM_TOURNAMENT_ADAPTIVE_FEEDBACK_KIND, FRONTIER_SWARM_TOURNAMENT_ADAPTIVE_FEEDBACK_VERSION } from './constants.js';
4
- import type { FrontierSwarmContextualBanditPolicyInput, FrontierSwarmContextualBanditRecommendations } from './tournament-bandit-types.js';
5
- import type { FrontierSwarmStrategyTournament } from './tournament-types.js';
6
- export type FrontierSwarmTournamentTrendStatus = 'new' | 'removed' | 'regressed' | 'improved' | 'stable';
7
- export interface FrontierSwarmStrategyTournamentHistoryInput {
8
- id?: string;
9
- tournaments?: readonly FrontierSwarmStrategyTournament[];
10
- generatedAt?: number;
11
- metadata?: unknown;
12
- }
13
- export interface FrontierSwarmStrategyTournamentHistoryEntry {
14
- strategyId: string;
15
- tournamentIds: string[];
16
- runCount: number;
17
- matchCount: number;
18
- verifiedCount: number;
19
- rejectedCount: number;
20
- undefinedCount: number;
21
- averageScore: number;
22
- bestScore: number;
23
- worstScore: number;
24
- firstScore: number;
25
- latestScore: number;
26
- scoreDelta: number;
27
- latestRank?: number;
28
- lanes: string[];
29
- concurrencyKeys: string[];
30
- tags: string[];
31
- evidencePaths: string[];
32
- outcomeCounts: Record<string, number>;
33
- }
34
- export interface FrontierSwarmStrategyTournamentHistory {
35
- kind: typeof FRONTIER_SWARM_STRATEGY_TOURNAMENT_HISTORY_KIND;
36
- version: typeof FRONTIER_SWARM_STRATEGY_TOURNAMENT_HISTORY_VERSION;
37
- id: string;
38
- generatedAt: number;
39
- tournamentIds: string[];
40
- entries: FrontierSwarmStrategyTournamentHistoryEntry[];
41
- byStrategy: Record<string, FrontierSwarmStrategyTournamentHistoryEntry>;
42
- summary: {
43
- tournamentCount: number;
44
- strategyCount: number;
45
- matchCount: number;
46
- verifiedCount: number;
47
- rejectedCount: number;
48
- undefinedCount: number;
49
- topStrategyId?: string;
50
- topAverageScore?: number;
51
- regressedCount: number;
52
- improvedCount: number;
53
- };
54
- metadata?: JsonObject;
55
- }
56
- export interface FrontierSwarmStrategyTournamentComparisonInput {
57
- id?: string;
58
- baseline: FrontierSwarmStrategyTournament;
59
- current: FrontierSwarmStrategyTournament;
60
- scoreThreshold?: number;
61
- generatedAt?: number;
62
- metadata?: unknown;
63
- }
64
- export interface FrontierSwarmStrategyTournamentComparisonEntry {
65
- strategyId: string;
66
- status: FrontierSwarmTournamentTrendStatus;
67
- baselineRank?: number;
68
- currentRank?: number;
69
- rankDelta?: number;
70
- baselineScore?: number;
71
- currentScore?: number;
72
- scoreDelta: number;
73
- baselineMatchCount: number;
74
- currentMatchCount: number;
75
- baselineVerifiedCount: number;
76
- currentVerifiedCount: number;
77
- reasons: string[];
78
- }
79
- export interface FrontierSwarmStrategyTournamentComparison {
80
- kind: typeof FRONTIER_SWARM_STRATEGY_TOURNAMENT_COMPARISON_KIND;
81
- version: typeof FRONTIER_SWARM_STRATEGY_TOURNAMENT_COMPARISON_VERSION;
82
- id: string;
83
- baselineId: string;
84
- currentId: string;
85
- generatedAt: number;
86
- entries: FrontierSwarmStrategyTournamentComparisonEntry[];
87
- summary: {
88
- strategyCount: number;
89
- newCount: number;
90
- removedCount: number;
91
- regressedCount: number;
92
- improvedCount: number;
93
- stableCount: number;
94
- largestRegression?: number;
95
- largestImprovement?: number;
96
- };
97
- metadata?: JsonObject;
98
- }
99
- export interface FrontierSwarmTournamentAdaptiveFeedbackInput {
100
- id?: string;
101
- tournament?: FrontierSwarmStrategyTournament;
102
- history?: FrontierSwarmStrategyTournamentHistory;
103
- comparison?: FrontierSwarmStrategyTournamentComparison;
104
- scoreFloor?: number;
105
- regressionThreshold?: number;
106
- banditPolicy?: false | FrontierSwarmContextualBanditPolicyInput;
107
- includeBanditObservations?: boolean;
108
- generatedAt?: number;
109
- metadata?: unknown;
110
- }
111
- export interface FrontierSwarmTournamentAdaptiveRecommendation {
112
- action: 'increase' | 'decrease' | 'hold' | 'observe' | string;
113
- target: 'strategy' | 'lane' | 'max-ready-jobs' | string;
114
- key?: string;
115
- reason: string;
116
- score?: number;
117
- }
118
- export interface FrontierSwarmTournamentAdaptiveFeedback {
119
- kind: typeof FRONTIER_SWARM_TOURNAMENT_ADAPTIVE_FEEDBACK_KIND;
120
- version: typeof FRONTIER_SWARM_TOURNAMENT_ADAPTIVE_FEEDBACK_VERSION;
121
- id: string;
122
- tournamentId?: string;
123
- historyId?: string;
124
- comparisonId?: string;
125
- generatedAt: number;
126
- bandit?: FrontierSwarmContextualBanditRecommendations;
127
- observations: FrontierSwarmAdaptiveObservationInput[];
128
- recommendations: FrontierSwarmTournamentAdaptiveRecommendation[];
129
- summary: {
130
- observationCount: number;
131
- recommendationCount: number;
132
- reduceSignals: number;
133
- increaseSignals: number;
134
- holdSignals: number;
135
- };
136
- metadata?: JsonObject;
137
- }
138
- //# sourceMappingURL=tournament-history-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tournament-history-types.d.ts","sourceRoot":"","sources":["../src/tournament-history-types.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tournament-history-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tournament-history-types.js","sourceRoot":"","sources":["../src/tournament-history-types.ts"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
1
- import type { FrontierSwarmStrategyTournamentComparison, FrontierSwarmStrategyTournamentComparisonInput, FrontierSwarmStrategyTournamentHistory, FrontierSwarmStrategyTournamentHistoryInput, FrontierSwarmTournamentAdaptiveFeedback, FrontierSwarmTournamentAdaptiveFeedbackInput } from './tournament-history-types.js';
2
- export declare function createSwarmStrategyTournamentHistory(input?: FrontierSwarmStrategyTournamentHistoryInput): FrontierSwarmStrategyTournamentHistory;
3
- export declare function compareSwarmStrategyTournaments(input: FrontierSwarmStrategyTournamentComparisonInput): FrontierSwarmStrategyTournamentComparison;
4
- export declare function createSwarmTournamentAdaptiveFeedback(input?: FrontierSwarmTournamentAdaptiveFeedbackInput): FrontierSwarmTournamentAdaptiveFeedback;
5
- //# sourceMappingURL=tournament-history.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tournament-history.d.ts","sourceRoot":"","sources":["../src/tournament-history.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,yCAAyC,EAEzC,8CAA8C,EAC9C,sCAAsC,EAEtC,2CAA2C,EAC3C,uCAAuC,EACvC,4CAA4C,EAE7C,MAAM,+BAA+B,CAAC;AAEvC,wBAAgB,oCAAoC,CAClD,KAAK,GAAE,2CAAgD,GACtD,sCAAsC,CA0BxC;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,8CAA8C,GACpD,yCAAyC,CA8B3C;AAED,wBAAgB,qCAAqC,CACnD,KAAK,GAAE,4CAAiD,GACvD,uCAAuC,CA8CzC"}
@@ -1,210 +0,0 @@
1
- import { stableHash, toJsonObject, uniqueStrings } from './internal.js';
2
- import { FRONTIER_SWARM_STRATEGY_TOURNAMENT_COMPARISON_KIND, FRONTIER_SWARM_STRATEGY_TOURNAMENT_COMPARISON_VERSION, FRONTIER_SWARM_STRATEGY_TOURNAMENT_HISTORY_KIND, FRONTIER_SWARM_STRATEGY_TOURNAMENT_HISTORY_VERSION, FRONTIER_SWARM_TOURNAMENT_ADAPTIVE_FEEDBACK_KIND, FRONTIER_SWARM_TOURNAMENT_ADAPTIVE_FEEDBACK_VERSION } from './constants.js';
3
- import { round2 } from './tournament-scoring.js';
4
- import { createTournamentAdaptiveObservations, strategyContextById, tournamentRecommendationAction } from './tournament-adaptive-feedback.js';
5
- import { createSwarmContextualBanditRecommendations } from './tournament-bandit.js';
6
- export function createSwarmStrategyTournamentHistory(input = {}) {
7
- const generatedAt = input.generatedAt ?? Date.now();
8
- const tournaments = [...(input.tournaments ?? [])].sort((left, right) => left.generatedAt - right.generatedAt || left.id.localeCompare(right.id));
9
- const entries = summarizeHistoryEntries(tournaments);
10
- const top = entries[0];
11
- return {
12
- kind: FRONTIER_SWARM_STRATEGY_TOURNAMENT_HISTORY_KIND,
13
- version: FRONTIER_SWARM_STRATEGY_TOURNAMENT_HISTORY_VERSION,
14
- id: input.id ?? 'swarm-strategy-history:' + stableHash(tournaments.map((tournament) => tournament.id)),
15
- generatedAt,
16
- tournamentIds: tournaments.map((tournament) => tournament.id),
17
- entries,
18
- byStrategy: Object.fromEntries(entries.map((entry) => [entry.strategyId, entry])),
19
- summary: {
20
- tournamentCount: tournaments.length,
21
- strategyCount: entries.length,
22
- matchCount: entries.reduce((sum, entry) => sum + entry.matchCount, 0),
23
- verifiedCount: entries.reduce((sum, entry) => sum + entry.verifiedCount, 0),
24
- rejectedCount: entries.reduce((sum, entry) => sum + entry.rejectedCount, 0),
25
- undefinedCount: entries.reduce((sum, entry) => sum + entry.undefinedCount, 0),
26
- ...(top ? { topStrategyId: top.strategyId, topAverageScore: top.averageScore } : {}),
27
- regressedCount: entries.filter((entry) => entry.scoreDelta < 0).length,
28
- improvedCount: entries.filter((entry) => entry.scoreDelta > 0).length
29
- },
30
- ...(toJsonObject(input.metadata) ? { metadata: toJsonObject(input.metadata) } : {})
31
- };
32
- }
33
- export function compareSwarmStrategyTournaments(input) {
34
- const generatedAt = input.generatedAt ?? Date.now();
35
- const threshold = Math.max(0, input.scoreThreshold ?? 5);
36
- const baseline = new Map(input.baseline.standings.map((standing) => [standing.strategyId, standing]));
37
- const current = new Map(input.current.standings.map((standing) => [standing.strategyId, standing]));
38
- const ids = uniqueStrings([...baseline.keys(), ...current.keys()]).sort();
39
- const entries = ids.map((strategyId) => compareStanding(strategyId, baseline.get(strategyId), current.get(strategyId), threshold))
40
- .sort(compareComparisonEntries);
41
- const regressions = entries.map((entry) => entry.scoreDelta).filter((score) => score < 0);
42
- const improvements = entries.map((entry) => entry.scoreDelta).filter((score) => score > 0);
43
- return {
44
- kind: FRONTIER_SWARM_STRATEGY_TOURNAMENT_COMPARISON_KIND,
45
- version: FRONTIER_SWARM_STRATEGY_TOURNAMENT_COMPARISON_VERSION,
46
- id: input.id ?? 'swarm-strategy-comparison:' + stableHash([input.baseline.id, input.current.id, threshold]),
47
- baselineId: input.baseline.id,
48
- currentId: input.current.id,
49
- generatedAt,
50
- entries,
51
- summary: {
52
- strategyCount: entries.length,
53
- newCount: entries.filter((entry) => entry.status === 'new').length,
54
- removedCount: entries.filter((entry) => entry.status === 'removed').length,
55
- regressedCount: entries.filter((entry) => entry.status === 'regressed').length,
56
- improvedCount: entries.filter((entry) => entry.status === 'improved').length,
57
- stableCount: entries.filter((entry) => entry.status === 'stable').length,
58
- ...(regressions.length ? { largestRegression: Math.min(...regressions) } : {}),
59
- ...(improvements.length ? { largestImprovement: Math.max(...improvements) } : {})
60
- },
61
- ...(toJsonObject(input.metadata) ? { metadata: toJsonObject(input.metadata) } : {})
62
- };
63
- }
64
- export function createSwarmTournamentAdaptiveFeedback(input = {}) {
65
- const generatedAt = input.generatedAt ?? Date.now();
66
- const bandit = input.banditPolicy === false ? undefined : createSwarmContextualBanditRecommendations({
67
- tournament: input.tournament,
68
- history: input.history,
69
- policy: input.banditPolicy,
70
- generatedAt
71
- });
72
- const observations = createTournamentAdaptiveObservations({
73
- tournament: input.tournament,
74
- history: input.history,
75
- comparison: input.comparison,
76
- generatedAt,
77
- scoreFloor: input.scoreFloor ?? 40,
78
- regressionThreshold: input.regressionThreshold ?? 5
79
- }).concat(input.includeBanditObservations === false ? [] : banditObservations(bandit?.recommendations, generatedAt));
80
- const recommendations = [
81
- ...observations.map((observation) => ({
82
- action: tournamentRecommendationAction(observation.kind),
83
- target: observation.concurrencyKey ? 'concurrency-key' : observation.lane ? 'lane' : observation.jobId ? 'strategy' : 'max-ready-jobs',
84
- key: observation.concurrencyKey ?? observation.lane ?? observation.jobId,
85
- reason: observation.reasons?.[0] ?? observation.reason ?? observation.kind,
86
- score: observation.value
87
- })),
88
- ...(bandit?.recommendations ?? []).map(banditRecommendation)
89
- ];
90
- return {
91
- kind: FRONTIER_SWARM_TOURNAMENT_ADAPTIVE_FEEDBACK_KIND,
92
- version: FRONTIER_SWARM_TOURNAMENT_ADAPTIVE_FEEDBACK_VERSION,
93
- id: input.id ?? 'swarm-tournament-feedback:' + stableHash([input.tournament?.id, input.history?.id, input.comparison?.id, generatedAt]),
94
- ...(input.tournament ? { tournamentId: input.tournament.id } : {}),
95
- ...(input.history ? { historyId: input.history.id } : {}),
96
- ...(input.comparison ? { comparisonId: input.comparison.id } : {}),
97
- generatedAt,
98
- ...(bandit ? { bandit } : {}),
99
- observations,
100
- recommendations,
101
- summary: {
102
- observationCount: observations.length,
103
- recommendationCount: recommendations.length,
104
- reduceSignals: recommendations.filter((entry) => entry.action === 'decrease').length,
105
- increaseSignals: recommendations.filter((entry) => entry.action === 'increase').length,
106
- holdSignals: recommendations.filter((entry) => entry.action === 'hold').length
107
- },
108
- ...(toJsonObject(input.metadata) ? { metadata: toJsonObject(input.metadata) } : {})
109
- };
110
- }
111
- function banditRecommendation(entry) {
112
- return {
113
- action: entry.action === 'promote' ? 'increase' : entry.action === 'demote' ? 'decrease' : entry.action === 'explore' ? 'observe' : 'hold',
114
- target: entry.target,
115
- key: entry.key,
116
- reason: `bandit ${entry.action}: ${entry.reasonCodes.join(', ')}`,
117
- score: entry.score
118
- };
119
- }
120
- function banditObservations(entries = [], generatedAt) {
121
- return entries.filter((entry) => entry.action === 'promote' || entry.action === 'demote').map((entry) => ({
122
- kind: entry.action === 'promote' ? 'healthy-throughput' : 'strategy-underperforming',
123
- severity: entry.action === 'promote' ? 'info' : 'warning',
124
- at: generatedAt,
125
- value: entry.score,
126
- ...(entry.target === 'strategy' ? { jobId: entry.key } : {}),
127
- ...(entry.target === 'lane' ? { lane: entry.key } : {}),
128
- ...(entry.target === 'concurrency-key' ? { concurrencyKey: entry.key } : {}),
129
- reason: `bandit ${entry.action}: ${entry.reasonCodes.join(', ')}`,
130
- metadata: { source: 'contextual-bandit', recommendationId: entry.id, target: entry.target, key: entry.key }
131
- }));
132
- }
133
- function summarizeHistoryEntries(tournaments) {
134
- const strategies = new Map();
135
- const contextsByTournament = new Map(tournaments.map((tournament) => [tournament.id, strategyContextById(tournament)]));
136
- for (const tournament of tournaments)
137
- for (const strategy of tournament.strategies)
138
- strategies.set(strategy.id, strategy);
139
- return uniqueStrings(tournaments.flatMap((tournament) => tournament.standings.map((standing) => standing.strategyId))).map((strategyId) => {
140
- const standings = tournaments.map((tournament) => ({ tournament, standing: tournament.standings.find((entry) => entry.strategyId === strategyId) })).filter((entry) => !!entry.standing);
141
- const contexts = standings.map((entry) => contextsByTournament.get(entry.tournament.id)?.get(strategyId)).filter((entry) => !!entry);
142
- return historyEntry(strategyId, standings, strategies.get(strategyId), contexts);
143
- }).sort((left, right) => right.averageScore - left.averageScore || left.strategyId.localeCompare(right.strategyId));
144
- }
145
- function historyEntry(strategyId, standings, strategy, contexts) {
146
- const scores = standings.map((entry) => entry.standing.score);
147
- const first = standings[0]?.standing;
148
- const latest = standings[standings.length - 1]?.standing;
149
- const outcomes = mergeOutcomeCounts(contexts.map((entry) => entry.outcomeCounts));
150
- return {
151
- strategyId,
152
- tournamentIds: standings.map((entry) => entry.tournament.id),
153
- runCount: standings.length,
154
- matchCount: standings.reduce((sum, entry) => sum + entry.standing.matchCount, 0),
155
- verifiedCount: standings.reduce((sum, entry) => sum + entry.standing.verifiedCount, 0),
156
- rejectedCount: standings.reduce((sum, entry) => sum + entry.standing.rejectedCount, 0),
157
- undefinedCount: standings.reduce((sum, entry) => sum + entry.standing.undefinedCount, 0),
158
- averageScore: round2(scores.reduce((sum, score) => sum + score, 0) / Math.max(1, scores.length)),
159
- bestScore: scores.length ? Math.max(...scores) : 0,
160
- worstScore: scores.length ? Math.min(...scores) : 0,
161
- firstScore: first?.score ?? 0,
162
- latestScore: latest?.score ?? 0,
163
- scoreDelta: round2((latest?.score ?? 0) - (first?.score ?? 0)),
164
- ...(latest ? { latestRank: latest.rank } : {}),
165
- lanes: uniqueStrings([...contexts.flatMap((entry) => entry.lanes), strategy?.lane]),
166
- concurrencyKeys: uniqueStrings(contexts.flatMap((entry) => entry.concurrencyKeys)),
167
- tags: uniqueStrings([...(strategy?.tags ?? []), ...contexts.flatMap((entry) => entry.tags)]),
168
- evidencePaths: uniqueStrings(standings.flatMap((entry) => entry.standing.evidencePaths)),
169
- outcomeCounts: outcomes
170
- };
171
- }
172
- function compareStanding(strategyId, baseline, current, threshold) {
173
- const scoreDelta = round2((current?.score ?? 0) - (baseline?.score ?? 0));
174
- const status = !baseline ? 'new' : !current ? 'removed' : scoreDelta <= -threshold ? 'regressed' : scoreDelta >= threshold ? 'improved' : 'stable';
175
- const rankDelta = baseline && current ? baseline.rank - current.rank : undefined;
176
- return {
177
- strategyId,
178
- status,
179
- ...(baseline ? { baselineRank: baseline.rank, baselineScore: baseline.score } : {}),
180
- ...(current ? { currentRank: current.rank, currentScore: current.score } : {}),
181
- ...(rankDelta !== undefined ? { rankDelta } : {}),
182
- scoreDelta,
183
- baselineMatchCount: baseline?.matchCount ?? 0,
184
- currentMatchCount: current?.matchCount ?? 0,
185
- baselineVerifiedCount: baseline?.verifiedCount ?? 0,
186
- currentVerifiedCount: current?.verifiedCount ?? 0,
187
- reasons: comparisonReasons(status, scoreDelta, rankDelta)
188
- };
189
- }
190
- function comparisonReasons(status, scoreDelta, rankDelta) {
191
- return uniqueStrings([
192
- status,
193
- scoreDelta ? `score delta ${scoreDelta}` : undefined,
194
- rankDelta ? `rank delta ${rankDelta}` : undefined
195
- ]);
196
- }
197
- function compareComparisonEntries(left, right) {
198
- return statusRank(left.status) - statusRank(right.status) || left.scoreDelta - right.scoreDelta || left.strategyId.localeCompare(right.strategyId);
199
- }
200
- function statusRank(status) {
201
- return { regressed: 0, removed: 1, new: 2, improved: 3, stable: 4 }[status] ?? 5;
202
- }
203
- function mergeOutcomeCounts(records) {
204
- const out = {};
205
- for (const record of records)
206
- for (const [key, value] of Object.entries(record))
207
- out[key] = (out[key] ?? 0) + value;
208
- return Object.fromEntries(Object.entries(out).sort(([left], [right]) => left.localeCompare(right)));
209
- }
210
- //# sourceMappingURL=tournament-history.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tournament-history.js","sourceRoot":"","sources":["../src/tournament-history.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { FrontierSwarmMergeBundle, FrontierSwarmMergeIndexEntry } from './merge-types.js';
2
- import type { FrontierSwarmMergeTournamentInput, FrontierSwarmPayoffVector, FrontierSwarmStrategyTournament } from './tournament-types.js';
3
- export declare function createSwarmMergePayoffVector(bundle: FrontierSwarmMergeBundle, entry?: FrontierSwarmMergeIndexEntry, options?: {
4
- strategyId?: string;
5
- }): FrontierSwarmPayoffVector;
6
- export declare function createSwarmMergeTournament(input: FrontierSwarmMergeTournamentInput): FrontierSwarmStrategyTournament;
7
- //# sourceMappingURL=tournament-merge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tournament-merge.d.ts","sourceRoot":"","sources":["../src/tournament-merge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,wBAAwB,EACxB,4BAA4B,EAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,iCAAiC,EACjC,yBAAyB,EAEzB,+BAA+B,EAEhC,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,wBAAwB,EAChC,KAAK,CAAC,EAAE,4BAA4B,EACpC,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACpC,yBAAyB,CAmD3B;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,iCAAiC,GAAG,+BAA+B,CAmBpH"}
@@ -1,172 +0,0 @@
1
- import { stableHash, toJsonObject } from './internal.js';
2
- import { createSwarmPayoffVector, createSwarmStrategyTournament } from './tournament-runtime.js';
3
- export function createSwarmMergePayoffVector(bundle, entry, options = {}) {
4
- const changedPaths = entry?.changedPaths ?? bundle.changedPaths;
5
- const changedRegions = entry?.changedRegions ?? bundle.changedRegions;
6
- const conflictCount = entry?.conflictingJobIds.length ?? 0;
7
- const semanticCoverage = semanticCoverageScore(bundle);
8
- const traceEvidence = Math.min(1, bundle.traceShards.length / 3);
9
- const evidence = Math.min(1, (bundle.evidencePaths.length + bundle.commandsPassed.length + bundle.traceShards.length) / 6);
10
- const failed = bundle.commandsFailed.length;
11
- const strategyId = options.strategyId ?? bundle.jobId;
12
- return createSwarmPayoffVector({
13
- strategyId,
14
- gameId: 'merge-admission',
15
- matchId: bundle.id,
16
- outcome: outcomeForMergeBundle(bundle, entry),
17
- components: {
18
- correctness: failed === 0 && bundle.status !== 'failed' ? 1 : 0,
19
- evidence,
20
- mergeCleanliness: conflictCount === 0 && bundle.ownershipViolations.length === 0 && !bundle.staleAgainstHead ? 1 : 0,
21
- semanticCoverage,
22
- traceEvidence,
23
- reviewCost: { value: Math.min(1, (changedPaths.length + changedRegions.length * 2) / 20), direction: 'minimize', weight: 0.7 }
24
- },
25
- penalties: {
26
- stale: bundle.staleAgainstHead ? 0.45 : 0,
27
- conflicts: Math.min(0.5, conflictCount * 0.1),
28
- failedCommands: Math.min(0.5, failed * 0.15),
29
- ownership: Math.min(0.5, bundle.ownershipViolations.length * 0.2)
30
- },
31
- costs: {
32
- review: changedPaths.length + changedRegions.length * 2,
33
- resource: bundle.traceShards.length + bundle.commandsPassed.length + failed
34
- },
35
- certificate: bundle.commandsPassed.length || bundle.traceShards.length ? {
36
- strategyId,
37
- gameId: 'merge-admission',
38
- commands: bundle.commandsPassed.map((command) => command.name),
39
- traceRefs: bundle.traceShards.flatMap((shard) => shard.referenceEvidence.map((evidenceRef) => evidenceRef.path).filter((path) => !!path)),
40
- evidencePaths: bundle.evidencePaths,
41
- replayable: bundle.commandsPassed.length > 0
42
- } : undefined,
43
- evidencePaths: bundle.evidencePaths,
44
- tags: [bundle.lane, bundle.disposition, bundle.mergeReadiness].filter((tag) => !!tag),
45
- metadata: toJsonObject({
46
- bundleId: bundle.id,
47
- jobId: bundle.jobId,
48
- patchPath: bundle.patchPath,
49
- patchHash: bundle.patchHash,
50
- riskLevel: bundle.riskLevel,
51
- entry
52
- })
53
- });
54
- }
55
- export function createSwarmMergeTournament(input) {
56
- const entriesByJob = new Map((input.mergeIndex?.entries ?? []).map((entry) => [entry.jobId, entry]));
57
- const gameId = input.gameId ?? 'merge-admission';
58
- const strategies = mergeTournamentStrategies(input.bundles, input.strategyMode);
59
- const strategyByJob = new Map(input.bundles.map((bundle) => [bundle.jobId, strategyForBundle(bundle, input.strategyMode)]));
60
- const matches = input.bundles.map((bundle) => {
61
- const strategy = strategyByJob.get(bundle.jobId) ?? strategyForBundle(bundle, input.strategyMode);
62
- const payoff = createSwarmMergePayoffVector(bundle, entriesByJob.get(bundle.jobId), { strategyId: strategy.id });
63
- return { id: bundle.id, strategyId: strategy.id, gameId, payoff: { ...payoff, gameId }, metadata: { jobId: bundle.jobId } };
64
- });
65
- return createSwarmStrategyTournament({
66
- id: input.id ?? 'swarm-merge-tournament:' + stableHash([input.bundles.map((bundle) => bundle.id), input.mergeIndex?.id, input.generatedAt]),
67
- title: input.title ?? 'Swarm Merge Tournament',
68
- strategies,
69
- games: [{ id: gameId, objective: 'Rank merge bundles by acceptance evidence and review cost' }],
70
- matches,
71
- generatedAt: input.generatedAt,
72
- metadata: input.metadata
73
- });
74
- }
75
- function outcomeForMergeBundle(bundle, entry) {
76
- if (bundle.commit)
77
- return 'landed';
78
- if (bundle.staleAgainstHead || entry?.staleAgainstHead)
79
- return 'stale';
80
- if (bundle.status === 'blocked')
81
- return 'blocked';
82
- if (bundle.status === 'failed' || bundle.commandsFailed.length > 0 || bundle.disposition === 'rejected')
83
- return 'rejected';
84
- if (isNoisyBundle(bundle))
85
- return 'noisy';
86
- if (bundle.disposition === 'auto-mergeable' || bundle.mergeReadiness === 'verified-patch')
87
- return 'verified';
88
- if (bundle.disposition === 'needs-port' || bundle.mergeReadiness === 'patch-candidate')
89
- return 'candidate';
90
- if (bundle.disposition === 'discovery-only')
91
- return 'discovery';
92
- return 'undefined';
93
- }
94
- function mergeTournamentStrategies(bundles, mode) {
95
- const byId = new Map();
96
- for (const bundle of bundles) {
97
- const strategy = strategyForBundle(bundle, mode);
98
- const existing = byId.get(strategy.id);
99
- byId.set(strategy.id, existing ? { ...existing, tags: uniqueTags(existing.tags, strategy.tags) } : strategy);
100
- }
101
- return Array.from(byId.values());
102
- }
103
- function strategyForBundle(bundle, mode) {
104
- const concurrencyKey = bundleConcurrencyKey(bundle);
105
- if (mode !== 'style')
106
- return {
107
- id: bundle.jobId,
108
- title: bundle.title ?? bundle.jobId,
109
- lane: bundle.lane,
110
- tags: [bundle.disposition, bundle.mergeReadiness, bundle.riskLevel],
111
- ...(concurrencyKey ? { metadata: { concurrencyKey } } : {})
112
- };
113
- const metadata = toRecord(bundle.metadata);
114
- const explicit = toRecord(metadata.tournamentStrategy);
115
- const promptStyle = stringValue(explicit.promptStyle) ?? stringValue(metadata.promptStyle) ?? 'codex-default';
116
- const workspaceStyle = stringValue(explicit.workspaceStyle) ?? stringValue(metadata.workspaceStyle) ?? stringValue(metadata.workspaceMode) ?? 'unknown-workspace';
117
- const evidenceStyle = stringValue(explicit.evidenceStyle) ?? stringValue(metadata.evidenceStyle) ?? evidenceStyleForBundle(bundle);
118
- const id = stringValue(explicit.id) ?? stringValue(metadata.strategyId) ?? `style:${promptStyle}:${workspaceStyle}:${evidenceStyle}`;
119
- return {
120
- id,
121
- title: stringValue(explicit.title) ?? id,
122
- family: 'style',
123
- lane: bundle.lane,
124
- tags: [promptStyle, workspaceStyle, evidenceStyle, bundle.disposition, bundle.mergeReadiness],
125
- metadata: { promptStyle, workspaceStyle, evidenceStyle, ...(concurrencyKey ? { concurrencyKey } : {}) }
126
- };
127
- }
128
- function bundleConcurrencyKey(bundle) {
129
- const metadata = toRecord(bundle.metadata);
130
- const explicit = toRecord(metadata.tournamentStrategy);
131
- const adaptive = toRecord(metadata.adaptive);
132
- return stringValue(explicit.concurrencyKey)
133
- ?? stringValue(metadata.concurrencyKey)
134
- ?? stringValue(metadata.adaptiveConcurrencyKey)
135
- ?? stringValue(adaptive.concurrencyKey);
136
- }
137
- function evidenceStyleForBundle(bundle) {
138
- if (bundle.commandsPassed.length > 0 && bundle.commandsFailed.length === 0)
139
- return 'verified-evidence';
140
- if (bundle.evidencePaths.length > 0 || bundle.traceShards.length > 0)
141
- return 'structured-evidence';
142
- return 'missing-evidence';
143
- }
144
- function isNoisyBundle(bundle) {
145
- const metadata = toRecord(bundle.metadata);
146
- const logSummary = toRecord(metadata.logSummary);
147
- return stringValue(metadata.outputClass) === 'noisy'
148
- || (numberValue(metadata.outputBytes) ?? numberValue(logSummary.totalBytes) ?? 0) > 500000;
149
- }
150
- function semanticCoverageScore(bundle) {
151
- const semantic = bundle.semanticImport;
152
- if (!semantic)
153
- return 0;
154
- const symbols = semantic.semanticIndex.symbols;
155
- const regions = semantic.semanticSidecars.ownershipRegions;
156
- const dependencies = semantic.dependencies?.total ?? 0;
157
- const imported = semantic.imported;
158
- return Math.min(1, (symbols > 0 ? 0.3 : 0) + (regions > 0 ? 0.3 : 0) + (dependencies > 0 ? 0.2 : 0) + (imported > 0 ? 0.2 : 0));
159
- }
160
- function uniqueTags(left = [], right = []) {
161
- return Array.from(new Set([...left, ...right].filter((tag) => tag.length > 0))).sort();
162
- }
163
- function toRecord(value) {
164
- return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
165
- }
166
- function stringValue(value) {
167
- return typeof value === 'string' && value.length > 0 ? value : undefined;
168
- }
169
- function numberValue(value) {
170
- return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
171
- }
172
- //# sourceMappingURL=tournament-merge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tournament-merge.js","sourceRoot":"","sources":["../src/tournament-merge.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { FrontierSwarmPayoffVector, FrontierSwarmPayoffVectorInput, FrontierSwarmStrategy, FrontierSwarmStrategyGame, FrontierSwarmStrategyMatch, FrontierSwarmStrategyStanding, FrontierSwarmStrategyTournamentQuery } from './tournament-types.js';
2
- export declare function assertCompatibleId(label: string, expected: string | undefined, actual: string | undefined): void;
3
- export declare function countSwarmTournamentOutcomes(matches: readonly FrontierSwarmStrategyMatch[]): Record<string, number>;
4
- export declare function validateSwarmExistingPayoff(payoff: FrontierSwarmPayoffVector, strategyId: string | undefined, gameId: string | undefined): FrontierSwarmPayoffVector;
5
- export declare function rankSwarmStrategyStandings(matches: readonly FrontierSwarmStrategyMatch[], strategyIds: readonly string[]): FrontierSwarmStrategyStanding[];
6
- export declare function matchSwarmTournamentQuery(match: FrontierSwarmStrategyMatch, query: FrontierSwarmStrategyTournamentQuery, strategyById: Map<string, FrontierSwarmStrategy>, gameById: Map<string, FrontierSwarmStrategyGame>): boolean;
7
- export declare function groupSwarmTournamentMatchIds(matches: readonly FrontierSwarmStrategyMatch[], key: (match: FrontierSwarmStrategyMatch) => string, knownKeys?: readonly string[]): Record<string, string[]>;
8
- export declare function isSwarmPayoffVector(value: FrontierSwarmPayoffVector | FrontierSwarmPayoffVectorInput): value is FrontierSwarmPayoffVector;
9
- //# sourceMappingURL=tournament-runtime-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tournament-runtime-helpers.d.ts","sourceRoot":"","sources":["../src/tournament-runtime-helpers.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,yBAAyB,EACzB,8BAA8B,EAC9B,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,6BAA6B,EAC7B,oCAAoC,EACrC,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAEhH;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,SAAS,0BAA0B,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAInH;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,yBAAyB,EACjC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,yBAAyB,CAM3B;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,0BAA0B,EAAE,EAC9C,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,6BAA6B,EAAE,CAOjC;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,0BAA0B,EACjC,KAAK,EAAE,oCAAoC,EAC3C,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAChD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,GAC/C,OAAO,CAWT;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,SAAS,0BAA0B,EAAE,EAC9C,GAAG,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,MAAM,EAClD,SAAS,GAAE,SAAS,MAAM,EAAO,GAChC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAK1B;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,yBAAyB,GAAG,8BAA8B,GAAG,KAAK,IAAI,yBAAyB,CAIzI"}