@shapeshift-labs/frontier-swarm-codex 0.5.116 → 0.5.118

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 (387) hide show
  1. package/README.md +59 -3
  2. package/dist/apply.js +1 -1
  3. package/dist/apply.js.map +1 -1
  4. package/dist/calibration-feedback.d.ts.map +1 -1
  5. package/dist/calibration-feedback.js +57 -2
  6. package/dist/calibration-feedback.js.map +1 -1
  7. package/dist/cleanup.js +1 -0
  8. package/dist/cleanup.js.map +1 -1
  9. package/dist/cli-args.d.ts +72 -0
  10. package/dist/cli-args.d.ts.map +1 -0
  11. package/dist/cli-args.js +296 -0
  12. package/dist/cli-args.js.map +1 -0
  13. package/dist/cli-help.d.ts.map +1 -1
  14. package/dist/cli-help.js +14 -0
  15. package/dist/cli-help.js.map +1 -1
  16. package/dist/cli.js +58 -183
  17. package/dist/cli.js.map +1 -1
  18. package/dist/codex-adaptive-feedback.d.ts.map +1 -1
  19. package/dist/codex-adaptive-feedback.js +98 -3
  20. package/dist/codex-adaptive-feedback.js.map +1 -1
  21. package/dist/codex-executor.d.ts.map +1 -1
  22. package/dist/codex-executor.js +30 -3
  23. package/dist/codex-executor.js.map +1 -1
  24. package/dist/codex-prompt.d.ts.map +1 -1
  25. package/dist/codex-prompt.js +58 -0
  26. package/dist/codex-prompt.js.map +1 -1
  27. package/dist/codex-run-metadata.d.ts +34 -0
  28. package/dist/codex-run-metadata.d.ts.map +1 -0
  29. package/dist/codex-run-metadata.js +29 -0
  30. package/dist/codex-run-metadata.js.map +1 -0
  31. package/dist/codex-run-swarm.d.ts +4 -0
  32. package/dist/codex-run-swarm.d.ts.map +1 -0
  33. package/dist/codex-run-swarm.js +69 -0
  34. package/dist/codex-run-swarm.js.map +1 -0
  35. package/dist/codex-run.d.ts +3 -3
  36. package/dist/codex-run.d.ts.map +1 -1
  37. package/dist/codex-run.js +146 -133
  38. package/dist/codex-run.js.map +1 -1
  39. package/dist/codex-tournament-strategy.d.ts +10 -0
  40. package/dist/codex-tournament-strategy.d.ts.map +1 -1
  41. package/dist/codex-tournament-strategy.js +39 -0
  42. package/dist/codex-tournament-strategy.js.map +1 -1
  43. package/dist/codex-workspace-change-paths.d.ts +20 -0
  44. package/dist/codex-workspace-change-paths.d.ts.map +1 -0
  45. package/dist/codex-workspace-change-paths.js +215 -0
  46. package/dist/codex-workspace-change-paths.js.map +1 -0
  47. package/dist/codex-workspace-changes.d.ts +12 -12
  48. package/dist/codex-workspace-changes.d.ts.map +1 -1
  49. package/dist/codex-workspace-changes.js +19 -122
  50. package/dist/codex-workspace-changes.js.map +1 -1
  51. package/dist/codex-workspace-restore.d.ts +15 -0
  52. package/dist/codex-workspace-restore.d.ts.map +1 -0
  53. package/dist/codex-workspace-restore.js +66 -0
  54. package/dist/codex-workspace-restore.js.map +1 -0
  55. package/dist/codex-workspace-write-fence.d.ts +21 -0
  56. package/dist/codex-workspace-write-fence.d.ts.map +1 -0
  57. package/dist/codex-workspace-write-fence.js +155 -0
  58. package/dist/codex-workspace-write-fence.js.map +1 -0
  59. package/dist/codex-workspace.d.ts +5 -1
  60. package/dist/codex-workspace.d.ts.map +1 -1
  61. package/dist/codex-workspace.js +46 -2
  62. package/dist/codex-workspace.js.map +1 -1
  63. package/dist/collect-artifact-store.d.ts +14 -0
  64. package/dist/collect-artifact-store.d.ts.map +1 -0
  65. package/dist/collect-artifact-store.js +207 -0
  66. package/dist/collect-artifact-store.js.map +1 -0
  67. package/dist/collect-bundle-reasons.d.ts +18 -0
  68. package/dist/collect-bundle-reasons.d.ts.map +1 -0
  69. package/dist/collect-bundle-reasons.js +222 -0
  70. package/dist/collect-bundle-reasons.js.map +1 -0
  71. package/dist/collect-bundle-staleness.d.ts +10 -0
  72. package/dist/collect-bundle-staleness.d.ts.map +1 -0
  73. package/dist/collect-bundle-staleness.js +98 -0
  74. package/dist/collect-bundle-staleness.js.map +1 -0
  75. package/dist/collect-bundles.d.ts +8 -10
  76. package/dist/collect-bundles.d.ts.map +1 -1
  77. package/dist/collect-bundles.js +28 -115
  78. package/dist/collect-bundles.js.map +1 -1
  79. package/dist/collect-dashboard-quality.d.ts +5 -0
  80. package/dist/collect-dashboard-quality.d.ts.map +1 -0
  81. package/dist/collect-dashboard-quality.js +256 -0
  82. package/dist/collect-dashboard-quality.js.map +1 -0
  83. package/dist/collect-dashboard.d.ts +4 -3
  84. package/dist/collect-dashboard.d.ts.map +1 -1
  85. package/dist/collect-dashboard.js +37 -3
  86. package/dist/collect-dashboard.js.map +1 -1
  87. package/dist/collect-evidence.d.ts.map +1 -1
  88. package/dist/collect-evidence.js +13 -2
  89. package/dist/collect-evidence.js.map +1 -1
  90. package/dist/collect-finalize.d.ts +15 -0
  91. package/dist/collect-finalize.d.ts.map +1 -0
  92. package/dist/collect-finalize.js +75 -0
  93. package/dist/collect-finalize.js.map +1 -0
  94. package/dist/collect-landed.d.ts +7 -0
  95. package/dist/collect-landed.d.ts.map +1 -0
  96. package/dist/collect-landed.js +171 -0
  97. package/dist/collect-landed.js.map +1 -0
  98. package/dist/collect-noise.d.ts +6 -0
  99. package/dist/collect-noise.d.ts.map +1 -0
  100. package/dist/collect-noise.js +131 -0
  101. package/dist/collect-noise.js.map +1 -0
  102. package/dist/collect-overlaps.d.ts +3 -0
  103. package/dist/collect-overlaps.d.ts.map +1 -0
  104. package/dist/collect-overlaps.js +8 -0
  105. package/dist/collect-overlaps.js.map +1 -0
  106. package/dist/collect-pids.d.ts +4 -0
  107. package/dist/collect-pids.d.ts.map +1 -0
  108. package/dist/collect-pids.js +33 -0
  109. package/dist/collect-pids.js.map +1 -0
  110. package/dist/collect-setup.d.ts +4 -0
  111. package/dist/collect-setup.d.ts.map +1 -0
  112. package/dist/collect-setup.js +20 -0
  113. package/dist/collect-setup.js.map +1 -0
  114. package/dist/collect-terminal-state.d.ts +14 -0
  115. package/dist/collect-terminal-state.d.ts.map +1 -0
  116. package/dist/collect-terminal-state.js +113 -0
  117. package/dist/collect-terminal-state.js.map +1 -0
  118. package/dist/collect-workspace-only.d.ts +10 -0
  119. package/dist/collect-workspace-only.d.ts.map +1 -0
  120. package/dist/collect-workspace-only.js +289 -0
  121. package/dist/collect-workspace-only.js.map +1 -0
  122. package/dist/collect-workspace-proof.d.ts +3 -0
  123. package/dist/collect-workspace-proof.d.ts.map +1 -0
  124. package/dist/collect-workspace-proof.js +24 -0
  125. package/dist/collect-workspace-proof.js.map +1 -0
  126. package/dist/collect-workspace-recovery.d.ts +22 -0
  127. package/dist/collect-workspace-recovery.d.ts.map +1 -0
  128. package/dist/collect-workspace-recovery.js +94 -0
  129. package/dist/collect-workspace-recovery.js.map +1 -0
  130. package/dist/collect.d.ts +1 -2
  131. package/dist/collect.d.ts.map +1 -1
  132. package/dist/collect.js +125 -116
  133. package/dist/collect.js.map +1 -1
  134. package/dist/common.d.ts +5 -0
  135. package/dist/common.d.ts.map +1 -1
  136. package/dist/common.js +54 -1
  137. package/dist/common.js.map +1 -1
  138. package/dist/constants.d.ts +6 -0
  139. package/dist/constants.d.ts.map +1 -1
  140. package/dist/constants.js +6 -0
  141. package/dist/constants.js.map +1 -1
  142. package/dist/context-budget.d.ts.map +1 -1
  143. package/dist/context-budget.js +49 -6
  144. package/dist/context-budget.js.map +1 -1
  145. package/dist/continuation-adaptive-routing.d.ts +7 -0
  146. package/dist/continuation-adaptive-routing.d.ts.map +1 -0
  147. package/dist/continuation-adaptive-routing.js +129 -0
  148. package/dist/continuation-adaptive-routing.js.map +1 -0
  149. package/dist/continuation-child-backlogs.d.ts +11 -0
  150. package/dist/continuation-child-backlogs.d.ts.map +1 -0
  151. package/dist/continuation-child-backlogs.js +48 -0
  152. package/dist/continuation-child-backlogs.js.map +1 -0
  153. package/dist/continuation-feedback.d.ts +41 -0
  154. package/dist/continuation-feedback.d.ts.map +1 -0
  155. package/dist/continuation-feedback.js +294 -0
  156. package/dist/continuation-feedback.js.map +1 -0
  157. package/dist/continuation-human-actions.d.ts +15 -0
  158. package/dist/continuation-human-actions.d.ts.map +1 -0
  159. package/dist/continuation-human-actions.js +23 -0
  160. package/dist/continuation-human-actions.js.map +1 -0
  161. package/dist/continuation-job-routing-summary.d.ts +4 -0
  162. package/dist/continuation-job-routing-summary.d.ts.map +1 -0
  163. package/dist/continuation-job-routing-summary.js +47 -0
  164. package/dist/continuation-job-routing-summary.js.map +1 -0
  165. package/dist/continuation-task-source.d.ts +10 -0
  166. package/dist/continuation-task-source.d.ts.map +1 -0
  167. package/dist/continuation-task-source.js +11 -0
  168. package/dist/continuation-task-source.js.map +1 -0
  169. package/dist/continuation-terminal-outcomes.d.ts +27 -0
  170. package/dist/continuation-terminal-outcomes.d.ts.map +1 -0
  171. package/dist/continuation-terminal-outcomes.js +215 -0
  172. package/dist/continuation-terminal-outcomes.js.map +1 -0
  173. package/dist/continuation.d.ts +3 -0
  174. package/dist/continuation.d.ts.map +1 -0
  175. package/dist/continuation.js +266 -0
  176. package/dist/continuation.js.map +1 -0
  177. package/dist/dashboard-ui-constants.d.ts +6 -0
  178. package/dist/dashboard-ui-constants.d.ts.map +1 -0
  179. package/dist/dashboard-ui-constants.js +6 -0
  180. package/dist/dashboard-ui-constants.js.map +1 -0
  181. package/dist/dashboard-ui-health.d.ts +24 -0
  182. package/dist/dashboard-ui-health.d.ts.map +1 -0
  183. package/dist/dashboard-ui-health.js +175 -0
  184. package/dist/dashboard-ui-health.js.map +1 -0
  185. package/dist/dashboard-ui-human-actions.d.ts +3 -0
  186. package/dist/dashboard-ui-human-actions.d.ts.map +1 -0
  187. package/dist/dashboard-ui-human-actions.js +218 -0
  188. package/dist/dashboard-ui-human-actions.js.map +1 -0
  189. package/dist/dashboard-ui-jobs.d.ts +7 -0
  190. package/dist/dashboard-ui-jobs.d.ts.map +1 -0
  191. package/dist/dashboard-ui-jobs.js +232 -0
  192. package/dist/dashboard-ui-jobs.js.map +1 -0
  193. package/dist/dashboard-ui-lanes.d.ts +3 -0
  194. package/dist/dashboard-ui-lanes.d.ts.map +1 -0
  195. package/dist/dashboard-ui-lanes.js +17 -0
  196. package/dist/dashboard-ui-lanes.js.map +1 -0
  197. package/dist/dashboard-ui-metric-utils.d.ts +13 -0
  198. package/dist/dashboard-ui-metric-utils.d.ts.map +1 -0
  199. package/dist/dashboard-ui-metric-utils.js +52 -0
  200. package/dist/dashboard-ui-metric-utils.js.map +1 -0
  201. package/dist/dashboard-ui-quality.d.ts +4 -0
  202. package/dist/dashboard-ui-quality.d.ts.map +1 -0
  203. package/dist/dashboard-ui-quality.js +106 -0
  204. package/dist/dashboard-ui-quality.js.map +1 -0
  205. package/dist/dashboard-ui-semantic.d.ts +6 -0
  206. package/dist/dashboard-ui-semantic.d.ts.map +1 -0
  207. package/dist/dashboard-ui-semantic.js +84 -0
  208. package/dist/dashboard-ui-semantic.js.map +1 -0
  209. package/dist/dashboard-ui-sources.d.ts +9 -0
  210. package/dist/dashboard-ui-sources.d.ts.map +1 -0
  211. package/dist/dashboard-ui-sources.js +39 -0
  212. package/dist/dashboard-ui-sources.js.map +1 -0
  213. package/dist/dashboard-ui-steering.d.ts +4 -0
  214. package/dist/dashboard-ui-steering.d.ts.map +1 -0
  215. package/dist/dashboard-ui-steering.js +41 -0
  216. package/dist/dashboard-ui-steering.js.map +1 -0
  217. package/dist/dashboard-ui-summary.d.ts +6 -0
  218. package/dist/dashboard-ui-summary.d.ts.map +1 -0
  219. package/dist/dashboard-ui-summary.js +64 -0
  220. package/dist/dashboard-ui-summary.js.map +1 -0
  221. package/dist/dashboard-ui-time-series.d.ts +6 -0
  222. package/dist/dashboard-ui-time-series.d.ts.map +1 -0
  223. package/dist/dashboard-ui-time-series.js +191 -0
  224. package/dist/dashboard-ui-time-series.js.map +1 -0
  225. package/dist/dashboard-ui-types.d.ts +21 -0
  226. package/dist/dashboard-ui-types.d.ts.map +1 -0
  227. package/dist/dashboard-ui-types.js +2 -0
  228. package/dist/dashboard-ui-types.js.map +1 -0
  229. package/dist/dashboard-ui-values.d.ts +13 -0
  230. package/dist/dashboard-ui-values.d.ts.map +1 -0
  231. package/dist/dashboard-ui-values.js +57 -0
  232. package/dist/dashboard-ui-values.js.map +1 -0
  233. package/dist/dashboard-ui-workspace.d.ts +7 -0
  234. package/dist/dashboard-ui-workspace.d.ts.map +1 -0
  235. package/dist/dashboard-ui-workspace.js +131 -0
  236. package/dist/dashboard-ui-workspace.js.map +1 -0
  237. package/dist/dashboard-ui.d.ts +4 -0
  238. package/dist/dashboard-ui.d.ts.map +1 -0
  239. package/dist/dashboard-ui.js +139 -0
  240. package/dist/dashboard-ui.js.map +1 -0
  241. package/dist/dashboard.js +59 -3
  242. package/dist/dashboard.js.map +1 -1
  243. package/dist/human-actions.d.ts +46 -0
  244. package/dist/human-actions.d.ts.map +1 -0
  245. package/dist/human-actions.js +251 -0
  246. package/dist/human-actions.js.map +1 -0
  247. package/dist/index.d.ts +6 -6
  248. package/dist/index.d.ts.map +1 -1
  249. package/dist/index.js +5 -92
  250. package/dist/index.js.map +1 -1
  251. package/dist/model-pricing.d.ts +49 -0
  252. package/dist/model-pricing.d.ts.map +1 -0
  253. package/dist/model-pricing.js +159 -0
  254. package/dist/model-pricing.js.map +1 -0
  255. package/dist/patch-score-semantic.d.ts.map +1 -1
  256. package/dist/patch-score-semantic.js +34 -30
  257. package/dist/patch-score-semantic.js.map +1 -1
  258. package/dist/plan.d.ts +6 -0
  259. package/dist/plan.d.ts.map +1 -0
  260. package/dist/plan.js +191 -0
  261. package/dist/plan.js.map +1 -0
  262. package/dist/query-io.d.ts +8 -0
  263. package/dist/query-io.d.ts.map +1 -0
  264. package/dist/query-io.js +46 -0
  265. package/dist/query-io.js.map +1 -0
  266. package/dist/query-landed.d.ts +20 -0
  267. package/dist/query-landed.d.ts.map +1 -0
  268. package/dist/query-landed.js +64 -0
  269. package/dist/query-landed.js.map +1 -0
  270. package/dist/query-matchers.d.ts +6 -0
  271. package/dist/query-matchers.d.ts.map +1 -0
  272. package/dist/query-matchers.js +160 -0
  273. package/dist/query-matchers.js.map +1 -0
  274. package/dist/query-signal-types.d.ts +32 -0
  275. package/dist/query-signal-types.d.ts.map +1 -0
  276. package/dist/query-signal-types.js +2 -0
  277. package/dist/query-signal-types.js.map +1 -0
  278. package/dist/query-signals.d.ts +12 -0
  279. package/dist/query-signals.d.ts.map +1 -0
  280. package/dist/query-signals.js +207 -0
  281. package/dist/query-signals.js.map +1 -0
  282. package/dist/query-status.d.ts +10 -0
  283. package/dist/query-status.d.ts.map +1 -0
  284. package/dist/query-status.js +115 -0
  285. package/dist/query-status.js.map +1 -0
  286. package/dist/query-summaries.d.ts +283 -0
  287. package/dist/query-summaries.d.ts.map +1 -0
  288. package/dist/query-summaries.js +195 -0
  289. package/dist/query-summaries.js.map +1 -0
  290. package/dist/query-types.d.ts +45 -0
  291. package/dist/query-types.d.ts.map +1 -0
  292. package/dist/query-types.js +2 -0
  293. package/dist/query-types.js.map +1 -0
  294. package/dist/query-values.d.ts +15 -0
  295. package/dist/query-values.d.ts.map +1 -0
  296. package/dist/query-values.js +73 -0
  297. package/dist/query-values.js.map +1 -0
  298. package/dist/query.d.ts +344 -41
  299. package/dist/query.d.ts.map +1 -1
  300. package/dist/query.js +38 -157
  301. package/dist/query.js.map +1 -1
  302. package/dist/score-calibration.d.ts.map +1 -1
  303. package/dist/score-calibration.js +52 -3
  304. package/dist/score-calibration.js.map +1 -1
  305. package/dist/score.js +1 -1
  306. package/dist/score.js.map +1 -1
  307. package/dist/semantic-edit-admission.d.ts +3 -0
  308. package/dist/semantic-edit-admission.d.ts.map +1 -1
  309. package/dist/semantic-edit-admission.js +90 -11
  310. package/dist/semantic-edit-admission.js.map +1 -1
  311. package/dist/semantic-edit-clean-eligibility.d.ts.map +1 -1
  312. package/dist/semantic-edit-clean-eligibility.js +22 -4
  313. package/dist/semantic-edit-clean-eligibility.js.map +1 -1
  314. package/dist/semantic-edit-script.d.ts.map +1 -1
  315. package/dist/semantic-edit-script.js +26 -5
  316. package/dist/semantic-edit-script.js.map +1 -1
  317. package/dist/semantic-import-layers.d.ts +1 -1
  318. package/dist/semantic-import-layers.d.ts.map +1 -1
  319. package/dist/semantic-import-layers.js +22 -6
  320. package/dist/semantic-import-layers.js.map +1 -1
  321. package/dist/semantic-import-lineage-signals.d.ts +12 -0
  322. package/dist/semantic-import-lineage-signals.d.ts.map +1 -0
  323. package/dist/semantic-import-lineage-signals.js +126 -0
  324. package/dist/semantic-import-lineage-signals.js.map +1 -0
  325. package/dist/semantic-import-lineage.d.ts.map +1 -1
  326. package/dist/semantic-import-lineage.js +120 -18
  327. package/dist/semantic-import-lineage.js.map +1 -1
  328. package/dist/semantic-import-proof.d.ts.map +1 -1
  329. package/dist/semantic-import-proof.js +16 -0
  330. package/dist/semantic-import-proof.js.map +1 -1
  331. package/dist/semantic-import-quality.d.ts.map +1 -1
  332. package/dist/semantic-import-quality.js +8 -0
  333. package/dist/semantic-import-quality.js.map +1 -1
  334. package/dist/semantic-import-readiness.d.ts +15 -0
  335. package/dist/semantic-import-readiness.d.ts.map +1 -0
  336. package/dist/semantic-import-readiness.js +214 -0
  337. package/dist/semantic-import-readiness.js.map +1 -0
  338. package/dist/semantic-import-sidecar.d.ts.map +1 -1
  339. package/dist/semantic-import-sidecar.js +6 -37
  340. package/dist/semantic-import-sidecar.js.map +1 -1
  341. package/dist/semantic-import.d.ts +4 -2
  342. package/dist/semantic-import.d.ts.map +1 -1
  343. package/dist/semantic-import.js +27 -10
  344. package/dist/semantic-import.js.map +1 -1
  345. package/dist/tournament-bandit-view.d.ts +16 -13
  346. package/dist/tournament-bandit-view.d.ts.map +1 -1
  347. package/dist/tournament-bandit-view.js +23 -3
  348. package/dist/tournament-bandit-view.js.map +1 -1
  349. package/dist/tournament-query.d.ts +35 -39
  350. package/dist/tournament-query.d.ts.map +1 -1
  351. package/dist/tournament-query.js +32 -6
  352. package/dist/tournament-query.js.map +1 -1
  353. package/dist/types-collection-quality.d.ts +112 -0
  354. package/dist/types-collection-quality.d.ts.map +1 -0
  355. package/dist/types-collection-quality.js +2 -0
  356. package/dist/types-collection-quality.js.map +1 -0
  357. package/dist/types-collection-score.d.ts +112 -0
  358. package/dist/types-collection-score.d.ts.map +1 -0
  359. package/dist/types-collection-score.js +2 -0
  360. package/dist/types-collection-score.js.map +1 -0
  361. package/dist/types-collection.d.ts +107 -112
  362. package/dist/types-collection.d.ts.map +1 -1
  363. package/dist/types-continuation.d.ts +151 -0
  364. package/dist/types-continuation.d.ts.map +1 -0
  365. package/dist/types-continuation.js +2 -0
  366. package/dist/types-continuation.js.map +1 -0
  367. package/dist/types-dashboard-metrics.d.ts +241 -0
  368. package/dist/types-dashboard-metrics.d.ts.map +1 -0
  369. package/dist/types-dashboard-metrics.js +2 -0
  370. package/dist/types-dashboard-metrics.js.map +1 -0
  371. package/dist/types-dashboard.d.ts +277 -0
  372. package/dist/types-dashboard.d.ts.map +1 -0
  373. package/dist/types-dashboard.js +2 -0
  374. package/dist/types-dashboard.js.map +1 -0
  375. package/dist/types-evidence.d.ts +3 -0
  376. package/dist/types-evidence.d.ts.map +1 -1
  377. package/dist/types-run.d.ts +54 -1
  378. package/dist/types-run.d.ts.map +1 -1
  379. package/dist/types-score-calibration.d.ts +15 -0
  380. package/dist/types-score-calibration.d.ts.map +1 -1
  381. package/dist/types-semantic.d.ts +21 -12
  382. package/dist/types-semantic.d.ts.map +1 -1
  383. package/dist/types-workspace.d.ts +31 -1
  384. package/dist/types-workspace.d.ts.map +1 -1
  385. package/dist/types.d.ts +2 -0
  386. package/dist/types.d.ts.map +1 -1
  387. package/package.json +2 -2
@@ -0,0 +1,75 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { FRONTIER_SWARM_CODEX_COLLECTION_KIND, FRONTIER_SWARM_CODEX_COLLECTION_VERSION } from './constants.js';
4
+ import { isObject } from './common.js';
5
+ import { createBoundedCodexArtifactStore } from './collect-artifact-store.js';
6
+ export function createCodexCollectSummary(input) {
7
+ const summary = {
8
+ total: input.mergeRecordCount,
9
+ 'ready-to-apply': input.buckets['ready-to-apply'].length,
10
+ 'needs-human-port': input.buckets['needs-human-port'].length,
11
+ 'rerun-work': input.buckets['rerun-work'].length,
12
+ 'failed-evidence': input.buckets['failed-evidence'].length,
13
+ 'stale-against-head': input.buckets['stale-against-head'].length,
14
+ collectorGeneratedPatchCount: input.collectorGeneratedPatchCount
15
+ };
16
+ if (input.applyLedgerSummary) {
17
+ summary.landed = input.applyLedgerSummary.landed;
18
+ summary.landedJobIds = input.applyLedgerSummary.landedJobIds;
19
+ summary.applyLedger = input.applyLedgerSummary;
20
+ if (input.landedHealth)
21
+ summary.landedHealth = input.landedHealth;
22
+ }
23
+ return summary;
24
+ }
25
+ export function createCodexCollectResult(input) {
26
+ const landedHealth = input.landedHealth;
27
+ const summary = input.summary;
28
+ return {
29
+ kind: FRONTIER_SWARM_CODEX_COLLECTION_KIND,
30
+ version: FRONTIER_SWARM_CODEX_COLLECTION_VERSION,
31
+ ok: landedHealth
32
+ ? landedHealth.remainingFailedEvidenceCount === 0 && landedHealth.remainingStaleCount === 0
33
+ : summary['failed-evidence'] === 0 && summary['stale-against-head'] === 0 && summary['rerun-work'] === 0,
34
+ ...input
35
+ };
36
+ }
37
+ export async function persistCodexCollectResult(input) {
38
+ const { result } = input;
39
+ await fs.mkdir(result.outDir, { recursive: true });
40
+ const collectionPath = path.join(result.outDir, 'collection.json');
41
+ await fs.writeFile(collectionPath, JSON.stringify(result, null, 2) + '\n');
42
+ await writeResultArtifactFiles(result);
43
+ const artifactStorePostProcessing = await createBoundedCodexArtifactStore({
44
+ collection: result,
45
+ collectionPath,
46
+ mode: input.artifactStoreMode ?? 'full',
47
+ timeoutMs: input.artifactStoreTimeoutMs
48
+ });
49
+ if (artifactStorePostProcessing.artifactStore)
50
+ result.artifactStore = artifactStorePostProcessing.artifactStore;
51
+ result.artifactStoreStatus = artifactStorePostProcessing.status;
52
+ result.metadata = {
53
+ ...(isObject(result.metadata) ? result.metadata : {}),
54
+ collectExitGuard: artifactStorePostProcessing.status.guard
55
+ };
56
+ await fs.writeFile(collectionPath, JSON.stringify(result, null, 2) + '\n');
57
+ return result;
58
+ }
59
+ async function writeResultArtifactFiles(result) {
60
+ const writes = [
61
+ ['merge-index.json', result.mergeIndex],
62
+ ['queue-overlay.json', result.queueOverlay],
63
+ ['strategy-tournament.json', result.strategyTournament],
64
+ ['strategy-history.json', result.strategyHistory],
65
+ ['tournament-adaptive-feedback.json', result.tournamentAdaptiveFeedback],
66
+ ['evidence-index.json', result.evidenceIndex],
67
+ ['merge-admission.json', result.admission],
68
+ ['coordinator-query.json', result.dashboard],
69
+ ['compact-dashboard.json', result.compactDashboard],
70
+ ['queue-outcome-model.json', result.queueOutcomeModel],
71
+ ['terminal-state.json', result.terminalState]
72
+ ];
73
+ await Promise.all(writes.map(([file, value]) => fs.writeFile(path.join(result.outDir, file), JSON.stringify(value, null, 2) + '\n')));
74
+ }
75
+ //# sourceMappingURL=collect-finalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-finalize.js","sourceRoot":"","sources":["../src/collect-finalize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { FrontierSwarmCoordinatorDashboard } from '@shapeshift-labs/frontier-swarm';
2
+ import type { FrontierCodexApplyLedgerSummary, FrontierCodexCollectBucket, FrontierCodexCollectedBundle, FrontierCodexCollectQualitySignals, FrontierCodexLandedHealthSummary } from './index.js';
3
+ export declare function readApplyLedgerSummary(collectionDir: string): Promise<FrontierCodexApplyLedgerSummary | undefined>;
4
+ export declare function attachApplyLedgerSummary(dashboard: FrontierSwarmCoordinatorDashboard, compactDashboard: unknown, applyLedger: FrontierCodexApplyLedgerSummary): void;
5
+ export declare function createLandedHealthSummary(applyLedger: FrontierCodexApplyLedgerSummary, buckets: Record<FrontierCodexCollectBucket, FrontierCodexCollectedBundle[]>): FrontierCodexLandedHealthSummary;
6
+ export declare function attachLandedHealthSummary(dashboard: FrontierSwarmCoordinatorDashboard, compactDashboard: unknown, qualitySignals: FrontierCodexCollectQualitySignals, landedHealth: FrontierCodexLandedHealthSummary): void;
7
+ //# sourceMappingURL=collect-landed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-landed.d.ts","sourceRoot":"","sources":["../src/collect-landed.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;AAEzF,OAAO,KAAK,EACV,+BAA+B,EAE/B,0BAA0B,EAC1B,4BAA4B,EAC5B,kCAAkC,EAClC,gCAAgC,EACjC,MAAM,YAAY,CAAC;AAUpB,wBAAsB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,+BAA+B,GAAG,SAAS,CAAC,CAWxH;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,iCAAiC,EAC5C,gBAAgB,EAAE,OAAO,EACzB,WAAW,EAAE,+BAA+B,GAC3C,IAAI,CAWN;AAED,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,+BAA+B,EAC5C,OAAO,EAAE,MAAM,CAAC,0BAA0B,EAAE,4BAA4B,EAAE,CAAC,GAC1E,gCAAgC,CAsClC;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,iCAAiC,EAC5C,gBAAgB,EAAE,OAAO,EACzB,cAAc,EAAE,kCAAkC,EAClD,YAAY,EAAE,gCAAgC,GAC7C,IAAI,CAgCN"}
@@ -0,0 +1,171 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { isObject, pathExists, uniqueStrings } from './common.js';
4
+ const COLLECT_BUCKETS = [
5
+ 'ready-to-apply',
6
+ 'needs-human-port',
7
+ 'rerun-work',
8
+ 'failed-evidence',
9
+ 'stale-against-head'
10
+ ];
11
+ export async function readApplyLedgerSummary(collectionDir) {
12
+ const candidates = [
13
+ path.join(collectionDir, 'apply-ledger', 'apply-ledger.json'),
14
+ path.join(collectionDir, 'apply-ledger.json')
15
+ ];
16
+ for (const candidate of candidates) {
17
+ if (!await pathExists(candidate))
18
+ continue;
19
+ const ledger = JSON.parse(await fs.readFile(candidate, 'utf8'));
20
+ return summarizeApplyLedger(ledger, candidate);
21
+ }
22
+ return undefined;
23
+ }
24
+ export function attachApplyLedgerSummary(dashboard, compactDashboard, applyLedger) {
25
+ const mutableDashboard = dashboard;
26
+ const dashboardMetadata = mutableDashboard;
27
+ mutableDashboard.summary.applyLedger = applyLedger;
28
+ mutableDashboard.summary.applyLedgerLandedCount = applyLedger.landed;
29
+ mutableDashboard.summary.landedJobIds = applyLedger.landedJobIds;
30
+ dashboardMetadata.metadata = { ...(dashboardMetadata.metadata ?? {}), applyLedger };
31
+ const compact = compactDashboard;
32
+ compact.applyLedger = applyLedger;
33
+ compact.landedJobIds = applyLedger.landedJobIds;
34
+ compact.landedCount = applyLedger.landed;
35
+ }
36
+ export function createLandedHealthSummary(applyLedger, buckets) {
37
+ const landedJobSet = new Set(applyLedger.landedJobIds);
38
+ const bucketJobIds = collectBucketJobIds(buckets);
39
+ const landedBucketJobIds = mapBucketJobIds(bucketJobIds, (jobId) => landedJobSet.has(jobId));
40
+ const remainingBucketJobIds = mapBucketJobIds(bucketJobIds, (jobId) => !landedJobSet.has(jobId));
41
+ const reviewPressureJobIds = uniqueStrings([
42
+ ...remainingBucketJobIds['needs-human-port'],
43
+ ...remainingBucketJobIds['rerun-work'],
44
+ ...remainingBucketJobIds['failed-evidence'],
45
+ ...remainingBucketJobIds['stale-against-head']
46
+ ]);
47
+ return {
48
+ successfulOutputCount: applyLedger.landed,
49
+ appliedJobCount: applyLedger.appliedJobIds.length,
50
+ committedJobCount: applyLedger.committedJobIds.length,
51
+ failedApplyJobCount: applyLedger.failedJobIds.length,
52
+ landedJobIds: applyLedger.landedJobIds,
53
+ appliedJobIds: applyLedger.appliedJobIds,
54
+ committedJobIds: applyLedger.committedJobIds,
55
+ failedApplyJobIds: applyLedger.failedJobIds,
56
+ bucketCounts: countBucketJobIds(bucketJobIds),
57
+ landedBucketCounts: countBucketJobIds(landedBucketJobIds),
58
+ landedBucketJobIds,
59
+ remainingBucketCounts: countBucketJobIds(remainingBucketJobIds),
60
+ remainingBucketJobIds,
61
+ landedNeedsHumanReviewCount: landedBucketJobIds['needs-human-port'].length,
62
+ landedNeedsHumanReviewJobIds: landedBucketJobIds['needs-human-port'],
63
+ remainingNeedsHumanReviewCount: remainingBucketJobIds['needs-human-port'].length,
64
+ remainingNeedsHumanReviewJobIds: remainingBucketJobIds['needs-human-port'],
65
+ remainingFailedEvidenceCount: remainingBucketJobIds['failed-evidence'].length,
66
+ remainingFailedEvidenceJobIds: remainingBucketJobIds['failed-evidence'],
67
+ remainingStaleCount: remainingBucketJobIds['stale-against-head'].length,
68
+ remainingStaleJobIds: remainingBucketJobIds['stale-against-head'],
69
+ remainingReadyToApplyCount: remainingBucketJobIds['ready-to-apply'].length,
70
+ remainingReadyToApplyJobIds: remainingBucketJobIds['ready-to-apply'],
71
+ reviewPressureCount: reviewPressureJobIds.length,
72
+ reviewPressureJobIds
73
+ };
74
+ }
75
+ export function attachLandedHealthSummary(dashboard, compactDashboard, qualitySignals, landedHealth) {
76
+ const mutableDashboard = dashboard;
77
+ const dashboardMetadata = mutableDashboard;
78
+ qualitySignals.landed = landedHealth;
79
+ qualitySignals.needsPort = { ...qualitySignals.needsPort, landedJobCount: landedHealth.landedNeedsHumanReviewCount, landedJobIds: landedHealth.landedNeedsHumanReviewJobIds, remainingJobCount: landedHealth.remainingNeedsHumanReviewCount, remainingJobIds: landedHealth.remainingNeedsHumanReviewJobIds };
80
+ qualitySignals.failure = { ...qualitySignals.failure, landedJobCount: landedHealth.landedBucketCounts['failed-evidence'], landedJobIds: landedHealth.landedBucketJobIds['failed-evidence'], remainingJobCount: landedHealth.remainingFailedEvidenceCount, remainingJobIds: landedHealth.remainingFailedEvidenceJobIds };
81
+ qualitySignals.stale = { ...qualitySignals.stale, landedJobCount: landedHealth.landedBucketCounts['stale-against-head'], landedJobIds: landedHealth.landedBucketJobIds['stale-against-head'], remainingJobCount: landedHealth.remainingStaleCount, remainingJobIds: landedHealth.remainingStaleJobIds };
82
+ const summary = mutableDashboard.summary;
83
+ summary.collectionQualitySignals = qualitySignals;
84
+ summary.collectionLandedSuccessCount = landedHealth.successfulOutputCount;
85
+ summary.collectionLandedAppliedCount = landedHealth.appliedJobCount;
86
+ summary.collectionLandedCommittedCount = landedHealth.committedJobCount;
87
+ summary.collectionFailedApplyCount = landedHealth.failedApplyJobCount;
88
+ summary.collectionLandedNeedsHumanReviewCount = landedHealth.landedNeedsHumanReviewCount;
89
+ summary.collectionRemainingNeedsHumanReviewCount = landedHealth.remainingNeedsHumanReviewCount;
90
+ summary.collectionRemainingFailedEvidenceCount = landedHealth.remainingFailedEvidenceCount;
91
+ summary.collectionRemainingStaleCount = landedHealth.remainingStaleCount;
92
+ summary.collectionRemainingReadyToApplyCount = landedHealth.remainingReadyToApplyCount;
93
+ summary.collectionReviewPressureCount = landedHealth.reviewPressureCount;
94
+ summary.collectionReviewPressureJobIds = landedHealth.reviewPressureJobIds;
95
+ dashboardMetadata.metadata = { ...(dashboardMetadata.metadata ?? {}), landedHealth };
96
+ Object.assign(compactDashboard, {
97
+ landedHealth,
98
+ successfulOutputCount: landedHealth.successfulOutputCount,
99
+ landedNeedsHumanReviewCount: landedHealth.landedNeedsHumanReviewCount,
100
+ remainingNeedsHumanReviewCount: landedHealth.remainingNeedsHumanReviewCount,
101
+ remainingFailedEvidenceCount: landedHealth.remainingFailedEvidenceCount,
102
+ remainingStaleCount: landedHealth.remainingStaleCount,
103
+ remainingReadyToApplyCount: landedHealth.remainingReadyToApplyCount,
104
+ reviewPressureCount: landedHealth.reviewPressureCount,
105
+ reviewPressureJobIds: landedHealth.reviewPressureJobIds
106
+ });
107
+ }
108
+ function summarizeApplyLedger(ledger, ledgerPath) {
109
+ const entries = Array.isArray(ledger.entries) ? ledger.entries : [];
110
+ const summary = isObject(ledger.summary) ? ledger.summary : {};
111
+ const appliedJobIds = uniqueStrings(entries.filter((entry) => entry.status === 'applied').map((entry) => entry.jobId));
112
+ const committedJobIds = uniqueStrings(entries.filter((entry) => entry.status === 'committed').map((entry) => entry.jobId));
113
+ const landedJobIds = uniqueStrings([...appliedJobIds, ...committedJobIds]);
114
+ const failedJobIds = uniqueStrings(entries.filter((entry) => entry.status === 'failed').map((entry) => entry.jobId));
115
+ const statusCount = (status) => entries.filter((entry) => entry.status === status).length;
116
+ return {
117
+ path: ledgerPath,
118
+ ...(typeof ledger.generatedAt === 'number' ? { generatedAt: ledger.generatedAt } : {}),
119
+ ...(typeof ledger.dryRun === 'boolean' ? { dryRun: ledger.dryRun } : {}),
120
+ total: ledgerSummaryCount(summary, 'total', entries.length),
121
+ checked: ledgerSummaryCount(summary, 'checked', statusCount('checked')),
122
+ applied: ledgerSummaryCount(summary, 'applied', statusCount('applied')),
123
+ committed: ledgerSummaryCount(summary, 'committed', statusCount('committed')),
124
+ skipped: ledgerSummaryCount(summary, 'skipped', statusCount('skipped')),
125
+ failed: ledgerSummaryCount(summary, 'failed', statusCount('failed')),
126
+ landed: landedJobIds.length,
127
+ appliedJobIds,
128
+ committedJobIds,
129
+ landedJobIds,
130
+ failedJobIds,
131
+ landedEntries: entries.filter((entry) => entry.status === 'applied' || entry.status === 'committed').map((entry) => ({
132
+ jobId: entry.jobId,
133
+ status: entry.status,
134
+ bundlePath: entry.bundlePath,
135
+ ...(entry.patchPath ? { patchPath: entry.patchPath } : {}),
136
+ ...(entry.branchName ? { branchName: entry.branchName } : {}),
137
+ ...(entry.commit ? { commit: entry.commit } : {})
138
+ }))
139
+ };
140
+ }
141
+ function collectBucketJobIds(buckets) {
142
+ return {
143
+ 'ready-to-apply': buckets['ready-to-apply'].map((entry) => entry.jobId),
144
+ 'needs-human-port': buckets['needs-human-port'].map((entry) => entry.jobId),
145
+ 'rerun-work': buckets['rerun-work'].map((entry) => entry.jobId),
146
+ 'failed-evidence': buckets['failed-evidence'].map((entry) => entry.jobId),
147
+ 'stale-against-head': buckets['stale-against-head'].map((entry) => entry.jobId)
148
+ };
149
+ }
150
+ function mapBucketJobIds(jobIds, include) {
151
+ const out = { 'ready-to-apply': [], 'needs-human-port': [], 'rerun-work': [], 'failed-evidence': [], 'stale-against-head': [] };
152
+ for (const bucket of COLLECT_BUCKETS)
153
+ out[bucket] = jobIds[bucket].filter((jobId) => include(jobId, bucket));
154
+ return out;
155
+ }
156
+ function countBucketJobIds(jobIds) {
157
+ return {
158
+ 'ready-to-apply': jobIds['ready-to-apply'].length,
159
+ 'needs-human-port': jobIds['needs-human-port'].length,
160
+ 'rerun-work': jobIds['rerun-work'].length,
161
+ 'failed-evidence': jobIds['failed-evidence'].length,
162
+ 'stale-against-head': jobIds['stale-against-head'].length
163
+ };
164
+ }
165
+ function ledgerSummaryCount(summary, key, fallback) {
166
+ const value = Number(summary[key]);
167
+ if (Number.isFinite(value) && value >= 0)
168
+ return Math.floor(value);
169
+ return fallback;
170
+ }
171
+ //# sourceMappingURL=collect-landed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-landed.js","sourceRoot":"","sources":["../src/collect-landed.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { FrontierSwarmCoordinatorDashboard, FrontierSwarmMergeBundle, FrontierSwarmPatchStatus } from '@shapeshift-labs/frontier-swarm';
2
+ import type { FrontierCodexCollectionNoiseBreakdown, FrontierCodexCollectQualitySignals } from './index.js';
3
+ export declare function attachCollectionNoiseBreakdown(dashboard: FrontierSwarmCoordinatorDashboard, compactDashboard: unknown, qualitySignals: FrontierCodexCollectQualitySignals, noiseBreakdown: FrontierCodexCollectionNoiseBreakdown): void;
4
+ export declare function createCollectionNoiseBreakdown(bundles: readonly FrontierSwarmMergeBundle[]): FrontierCodexCollectionNoiseBreakdown;
5
+ export declare function normalizeCollectedReasons(bundleReasons: readonly string[], staleReasons: readonly string[], patchStatus: FrontierSwarmPatchStatus, staleAgainstHead: boolean, bundle: FrontierSwarmMergeBundle): string[];
6
+ //# sourceMappingURL=collect-noise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-noise.d.ts","sourceRoot":"","sources":["../src/collect-noise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iCAAiC,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAG7I,OAAO,KAAK,EAAE,qCAAqC,EAAE,kCAAkC,EAAE,MAAM,YAAY,CAAC;AAI5G,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,iCAAiC,EAC5C,gBAAgB,EAAE,OAAO,EACzB,cAAc,EAAE,kCAAkC,EAClD,cAAc,EAAE,qCAAqC,GACpD,IAAI,CA2BN;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,SAAS,wBAAwB,EAAE,GAAG,qCAAqC,CA6BlI;AAED,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,WAAW,EAAE,wBAAwB,EACrC,gBAAgB,EAAE,OAAO,EACzB,MAAM,EAAE,wBAAwB,GAC/B,MAAM,EAAE,CAOV"}
@@ -0,0 +1,131 @@
1
+ import { isObject, pathHasIgnoredSegment, uniqueStrings } from './common.js';
2
+ import { collectFailureReasonClasses, ignoredWorkspaceNoisePath, sourceOwnershipViolationsForReasons } from './collect-bundles.js';
3
+ const COLLECTION_NOISE_SAMPLE_LIMIT = 12;
4
+ export function attachCollectionNoiseBreakdown(dashboard, compactDashboard, qualitySignals, noiseBreakdown) {
5
+ const mutableDashboard = dashboard;
6
+ const dashboardMetadata = mutableDashboard;
7
+ qualitySignals.noiseBreakdown = noiseBreakdown;
8
+ const summary = mutableDashboard.summary;
9
+ summary.collectionNoiseBreakdown = noiseBreakdown;
10
+ summary.collectionQualitySignals = qualitySignals;
11
+ summary.collectionRestoredChangedPathSignalCount = noiseBreakdown.restored.pathCount;
12
+ summary.collectionRestoredChangedPathJobCount = noiseBreakdown.restored.jobCount;
13
+ summary.collectionGeneratedNoiseSignalCount = noiseBreakdown.generatedNoise.pathCount;
14
+ summary.collectionGeneratedNoiseJobCount = noiseBreakdown.generatedNoise.jobCount;
15
+ summary.collectionIgnoredWorkspaceNoiseSignalCount = noiseBreakdown.ignoredWorkspaceNoise.pathCount;
16
+ summary.collectionIgnoredWorkspaceNoiseJobCount = noiseBreakdown.ignoredWorkspaceNoise.jobCount;
17
+ summary.collectionSourceOwnershipViolationCount = noiseBreakdown.sourceOwnershipViolations.pathCount;
18
+ summary.collectionSourceOwnershipViolationJobCount = noiseBreakdown.sourceOwnershipViolations.jobCount;
19
+ dashboardMetadata.metadata = { ...(dashboardMetadata.metadata ?? {}), collectionNoiseBreakdown: noiseBreakdown };
20
+ Object.assign(compactDashboard, {
21
+ collectionNoiseBreakdown: noiseBreakdown,
22
+ restoredChangedPathCount: noiseBreakdown.restored.pathCount,
23
+ restoredChangedPathJobCount: noiseBreakdown.restored.jobCount,
24
+ generatedNoisePathCount: noiseBreakdown.generatedNoise.pathCount,
25
+ generatedNoiseJobCount: noiseBreakdown.generatedNoise.jobCount,
26
+ ignoredWorkspaceNoisePathCount: noiseBreakdown.ignoredWorkspaceNoise.pathCount,
27
+ ignoredWorkspaceNoiseJobCount: noiseBreakdown.ignoredWorkspaceNoise.jobCount,
28
+ sourceOwnershipViolationCount: noiseBreakdown.sourceOwnershipViolations.pathCount,
29
+ sourceOwnershipViolationJobCount: noiseBreakdown.sourceOwnershipViolations.jobCount
30
+ });
31
+ }
32
+ export function createCollectionNoiseBreakdown(bundles) {
33
+ const restored = [];
34
+ const quarantined = [];
35
+ const generatedNoise = [];
36
+ const ignoredWorkspaceNoise = [];
37
+ const sourceOwnershipViolations = [];
38
+ for (const bundle of bundles) {
39
+ const reasonClasses = bundleCollectReasonClasses(bundle);
40
+ const restoredPaths = bundleRestoredSourcePaths(bundle);
41
+ const quarantinedPaths = bundleQuarantinedChangedPaths(bundle);
42
+ const ownershipPaths = uniqueStrings(bundle.ownershipViolations);
43
+ const reasonGeneratedPaths = bundle.reasons.map((reason) => missingHeadBlobReasonPath(reason)).filter((entry) => Boolean(entry));
44
+ const candidatePaths = uniqueStrings([...restoredPaths, ...quarantinedPaths, ...ownershipPaths, ...reasonGeneratedPaths]);
45
+ const generatedPaths = candidatePaths.filter((entry) => generatedNoisePath(entry, bundle.reasons));
46
+ const ignoredPaths = candidatePaths.filter((entry) => ignoredWorkspaceNoisePath(entry) && !generatedNoisePath(entry, bundle.reasons));
47
+ const generatedReasonClasses = reasonClasses.filter(generatedNoiseReasonClass);
48
+ restored.push({ jobId: bundle.jobId, paths: restoredPaths, reasonClasses: reasonClasses.filter((entry) => entry === 'workspace.restore-disallowed-changes') });
49
+ quarantined.push({ jobId: bundle.jobId, paths: quarantinedPaths, reasonClasses: reasonClasses.filter((entry) => entry === 'workspace.quarantine') });
50
+ generatedNoise.push({ jobId: bundle.jobId, paths: generatedPaths, reasonClasses: generatedReasonClasses });
51
+ ignoredWorkspaceNoise.push({ jobId: bundle.jobId, paths: ignoredPaths, reasonClasses: ignoredPaths.length > 0 || generatedPaths.length === 0 && generatedReasonClasses.length === 0 ? reasonClasses.filter(ignoredWorkspaceNoiseReasonClass) : [] });
52
+ sourceOwnershipViolations.push({ jobId: bundle.jobId, paths: sourceOwnershipViolationsForReasons(ownershipPaths, bundle.reasons), reasonClasses: reasonClasses.filter((entry) => entry === 'ownership.source-violation') });
53
+ }
54
+ return {
55
+ restored: collectionNoiseSignal(restored),
56
+ quarantined: collectionNoiseSignal(quarantined),
57
+ generatedNoise: collectionNoiseSignal(generatedNoise),
58
+ ignoredWorkspaceNoise: collectionNoiseSignal(ignoredWorkspaceNoise),
59
+ sourceOwnershipViolations: collectionNoiseSignal(sourceOwnershipViolations)
60
+ };
61
+ }
62
+ export function normalizeCollectedReasons(bundleReasons, staleReasons, patchStatus, staleAgainstHead, bundle) {
63
+ const reasons = patchStatus === 'applies' ? [...bundleReasons] : uniqueStrings([...bundleReasons, ...staleReasons]);
64
+ const filtered = staleAgainstHead ? reasons : reasons.filter((reason) => reason !== 'stale-against-head');
65
+ if (!staleAgainstHead && (bundle.staleAgainstHead || bundle.disposition === 'stale-against-head') && patchStatus !== 'missing') {
66
+ filtered.push('stale-against-head cleared by patch freshness check');
67
+ }
68
+ return uniqueStrings(filtered);
69
+ }
70
+ function collectionNoiseSignal(entries) {
71
+ const activeEntries = entries.filter((entry) => entry.paths.length > 0 || entry.reasonClasses.length > 0);
72
+ const paths = uniqueStrings(activeEntries.flatMap((entry) => [...entry.paths]));
73
+ const reasonClasses = activeEntries.flatMap((entry) => [...entry.reasonClasses]);
74
+ const jobIds = uniqueStrings(activeEntries.map((entry) => entry.jobId));
75
+ return { jobCount: jobIds.length, pathCount: paths.length, paths: paths.slice(0, COLLECTION_NOISE_SAMPLE_LIMIT), jobIds: jobIds.slice(0, COLLECTION_NOISE_SAMPLE_LIMIT), reasonClasses: uniqueStrings(reasonClasses).slice(0, COLLECTION_NOISE_SAMPLE_LIMIT), reasonClassCounts: countCollectionNoiseStrings(reasonClasses) };
76
+ }
77
+ function countCollectionNoiseStrings(values) {
78
+ const counts = {};
79
+ for (const value of values)
80
+ counts[value] = (counts[value] ?? 0) + 1;
81
+ return counts;
82
+ }
83
+ function bundleCollectReasonClasses(bundle) {
84
+ const metadata = isObject(bundle.metadata) ? bundle.metadata : {};
85
+ const collect = isObject(metadata.collect) ? metadata.collect : {};
86
+ return uniqueStrings([...stringArray(collect.reasonClasses), ...collectFailureReasonClasses(bundle.reasons)]);
87
+ }
88
+ function bundleRestoredSourcePaths(bundle) {
89
+ const metadata = isObject(bundle.metadata) ? bundle.metadata : {};
90
+ return uniqueStrings(pathRecordArray(metadata.ownershipRestore));
91
+ }
92
+ function bundleQuarantinedChangedPaths(bundle) {
93
+ const metadata = isObject(bundle.metadata) ? bundle.metadata : {};
94
+ const quarantine = isObject(metadata.workspacePatchQuarantine) ? metadata.workspacePatchQuarantine : {};
95
+ const paths = stringArray(quarantine.quarantinedChangedPaths);
96
+ if (paths.length > 0)
97
+ return uniqueStrings(paths);
98
+ return bundle.reasons.includes('quarantined-disallowed-changes') ? uniqueStrings(bundle.ownershipViolations) : [];
99
+ }
100
+ function pathRecordArray(value) {
101
+ if (!Array.isArray(value))
102
+ return [];
103
+ return value.flatMap((entry) => typeof entry === 'string' ? [entry] : isObject(entry) && typeof entry.path === 'string' ? [entry.path] : []);
104
+ }
105
+ function stringArray(value) {
106
+ return Array.isArray(value) ? value.filter((entry) => typeof entry === 'string') : [];
107
+ }
108
+ function generatedNoiseReasonClass(reasonClass) {
109
+ return reasonClass.startsWith('generated.') || reasonClass.endsWith('.generated');
110
+ }
111
+ function ignoredWorkspaceNoiseReasonClass(reasonClass) {
112
+ return reasonClass === 'workspace.ignored-noise' || reasonClass.startsWith('workspace.ignored-noise.');
113
+ }
114
+ function generatedNoisePath(file, reasons) {
115
+ const normalized = file.replace(/\\/g, '/').toLowerCase();
116
+ return normalized.endsWith('.tsbuildinfo') || generatedWorkspaceSetupOwnershipPath(normalized, reasons) || pathHasIgnoredSegment(normalized, ['.next', '.nuxt', '.svelte-kit', '.turbo', '.vite', '.parcel-cache', 'coverage', 'dist', 'build', 'generated', 'target']);
117
+ }
118
+ function generatedWorkspaceSetupOwnershipPath(file, reasons) {
119
+ if (!reasons.some((reason) => generatedWorkspaceSetupReason(reason.toLowerCase())))
120
+ return false;
121
+ const normalized = file.replace(/\\/g, '/').toLowerCase();
122
+ return normalized === '.gitignore' || normalized === '.loomignore' || normalized === 'loom.json';
123
+ }
124
+ function generatedWorkspaceSetupReason(reason) {
125
+ return reason === 'generated_setup' || reason.includes('generated setup') || reason.includes('generated workspace setup');
126
+ }
127
+ function missingHeadBlobReasonPath(reason) {
128
+ const match = /^missing HEAD blob for (.+)$/i.exec(reason.trim());
129
+ return match?.[1]?.trim();
130
+ }
131
+ //# sourceMappingURL=collect-noise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-noise.js","sourceRoot":"","sources":["../src/collect-noise.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { FrontierSwarmCoordinatorDashboard } from '@shapeshift-labs/frontier-swarm';
2
+ export declare function attachSemanticPatchBundleOverlaps(dashboard: FrontierSwarmCoordinatorDashboard, compactDashboard: unknown, semanticPatchBundleOverlaps: unknown): void;
3
+ //# sourceMappingURL=collect-overlaps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-overlaps.d.ts","sourceRoot":"","sources":["../src/collect-overlaps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;AAEzF,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,iCAAiC,EAC5C,gBAAgB,EAAE,OAAO,EACzB,2BAA2B,EAAE,OAAO,GACnC,IAAI,CAMN"}
@@ -0,0 +1,8 @@
1
+ export function attachSemanticPatchBundleOverlaps(dashboard, compactDashboard, semanticPatchBundleOverlaps) {
2
+ const mutableDashboard = dashboard;
3
+ const dashboardMetadata = mutableDashboard;
4
+ mutableDashboard.summary.semanticPatchBundleOverlaps = semanticPatchBundleOverlaps;
5
+ dashboardMetadata.metadata = { ...(dashboardMetadata.metadata ?? {}), semanticPatchBundleOverlaps };
6
+ compactDashboard.semanticPatchBundleOverlaps = semanticPatchBundleOverlaps;
7
+ }
8
+ //# sourceMappingURL=collect-overlaps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-overlaps.js","sourceRoot":"","sources":["../src/collect-overlaps.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iCAAiC,CAC/C,SAA4C,EAC5C,gBAAyB,EACzB,2BAAoC;IAEpC,MAAM,gBAAgB,GAAG,SAAuF,CAAC;IACjH,MAAM,iBAAiB,GAAG,gBAAqE,CAAC;IAC/F,gBAAgB,CAAC,OAAmC,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;IAChH,iBAAiB,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC,iBAAiB,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,2BAA2B,EAAE,CAAC;IACnG,gBAA4C,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;AAC1G,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { FrontierSwarmCoordinatorProcessInput } from '@shapeshift-labs/frontier-swarm';
2
+ export declare function readCodexPidProcesses(file: string): Promise<FrontierSwarmCoordinatorProcessInput[]>;
3
+ export declare function resolveRunDirectory(runPath: string): Promise<string>;
4
+ //# sourceMappingURL=collect-pids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-pids.d.ts","sourceRoot":"","sources":["../src/collect-pids.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,iCAAiC,CAAC;AAE5F,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oCAAoC,EAAE,CAAC,CAWzG;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM1E"}
@@ -0,0 +1,33 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ export async function readCodexPidProcesses(file) {
4
+ const parsed = JSON.parse(await fs.readFile(file, 'utf8'));
5
+ return Promise.all((parsed.entries ?? []).map(async (entry) => ({
6
+ pid: entry.pid,
7
+ role: entry.role,
8
+ ...(entry.jobId ? { jobId: entry.jobId } : {}),
9
+ ...(entry.runId ? { runId: entry.runId } : {}),
10
+ status: await pidIsAlive(entry.pid) ? 'running' : 'missing',
11
+ startedAt: entry.startedAt,
12
+ ...(entry.command ? { command: entry.command } : {})
13
+ })));
14
+ }
15
+ export async function resolveRunDirectory(runPath) {
16
+ const absolute = path.resolve(runPath);
17
+ const stat = await fs.lstat(absolute).catch(() => undefined);
18
+ if (stat?.isDirectory())
19
+ return absolute;
20
+ if (path.basename(absolute) === 'swarm-results.json' || path.basename(absolute) === 'pids.json')
21
+ return path.dirname(absolute);
22
+ return path.dirname(absolute);
23
+ }
24
+ async function pidIsAlive(pid) {
25
+ try {
26
+ process.kill(pid, 0);
27
+ return true;
28
+ }
29
+ catch {
30
+ return false;
31
+ }
32
+ }
33
+ //# sourceMappingURL=collect-pids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-pids.js","sourceRoot":"","sources":["../src/collect-pids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAY;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAA8H,CAAC;IACxL,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9D,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,MAAM,EAAE,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC3D,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrD,CAAC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAe;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC7D,IAAI,IAAI,EAAE,WAAW,EAAE;QAAE,OAAO,QAAQ,CAAC;IACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,oBAAoB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/H,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,GAAW;IACnC,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { FrontierCodexCollectBucket, FrontierCodexCollectedBundle } from './index.js';
2
+ export declare const COLLECTED_OUTPUT_SEGMENTS: string[];
3
+ export declare function createEmptyCollectBuckets(): Record<FrontierCodexCollectBucket, FrontierCodexCollectedBundle[]>;
4
+ //# sourceMappingURL=collect-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-setup.d.ts","sourceRoot":"","sources":["../src/collect-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE3F,eAAO,MAAM,yBAAyB,UASrC,CAAC;AAEF,wBAAgB,yBAAyB,IAAI,MAAM,CAAC,0BAA0B,EAAE,4BAA4B,EAAE,CAAC,CAQ9G"}
@@ -0,0 +1,20 @@
1
+ export const COLLECTED_OUTPUT_SEGMENTS = [
2
+ 'collected',
3
+ 'patch-scores',
4
+ 'ready-to-apply',
5
+ 'needs-human-port',
6
+ 'rerun-work',
7
+ 'failed-evidence',
8
+ 'stale-against-head',
9
+ 'generated-by-collector'
10
+ ];
11
+ export function createEmptyCollectBuckets() {
12
+ return {
13
+ 'ready-to-apply': [],
14
+ 'needs-human-port': [],
15
+ 'rerun-work': [],
16
+ 'failed-evidence': [],
17
+ 'stale-against-head': []
18
+ };
19
+ }
20
+ //# sourceMappingURL=collect-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-setup.js","sourceRoot":"","sources":["../src/collect-setup.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,WAAW;IACX,cAAc;IACd,gBAAgB;IAChB,kBAAkB;IAClB,YAAY;IACZ,iBAAiB;IACjB,oBAAoB;IACpB,wBAAwB;CACzB,CAAC;AAEF,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,gBAAgB,EAAE,EAAE;QACpB,kBAAkB,EAAE,EAAE;QACtB,YAAY,EAAE,EAAE;QAChB,iBAAiB,EAAE,EAAE;QACrB,oBAAoB,EAAE,EAAE;KACzB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type FrontierSwarmQueueOutcomeModel, type FrontierSwarmTerminalStateReconciliation } from '@shapeshift-labs/frontier-swarm';
2
+ import type { FrontierCodexCollectBucket, FrontierCodexCollectedBundle, FrontierCodexLandedHealthSummary } from './types-collection.js';
3
+ export declare function createCodexCollectionQueueOutcomeModel(input: {
4
+ runId: string;
5
+ buckets: Record<FrontierCodexCollectBucket, FrontierCodexCollectedBundle[]>;
6
+ landedHealth?: FrontierCodexLandedHealthSummary;
7
+ generatedAt: number;
8
+ }): FrontierSwarmQueueOutcomeModel;
9
+ export declare function createCodexCollectionTerminalState(input: {
10
+ buckets: Record<FrontierCodexCollectBucket, FrontierCodexCollectedBundle[]>;
11
+ queueOutcomeModel: FrontierSwarmQueueOutcomeModel;
12
+ generatedAt: number;
13
+ }): FrontierSwarmTerminalStateReconciliation;
14
+ //# sourceMappingURL=collect-terminal-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-terminal-state.d.ts","sourceRoot":"","sources":["../src/collect-terminal-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,8BAA8B,EAEnC,KAAK,wCAAwC,EAC9C,MAAM,iCAAiC,CAAC;AAGzC,OAAO,KAAK,EACV,0BAA0B,EAC1B,4BAA4B,EAC5B,gCAAgC,EACjC,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,sCAAsC,CAAC,KAAK,EAAE;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,0BAA0B,EAAE,4BAA4B,EAAE,CAAC,CAAC;IAC5E,YAAY,CAAC,EAAE,gCAAgC,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,8BAA8B,CASjC;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,OAAO,EAAE,MAAM,CAAC,0BAA0B,EAAE,4BAA4B,EAAE,CAAC,CAAC;IAC5E,iBAAiB,EAAE,8BAA8B,CAAC;IAClD,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,wCAAwC,CAU3C"}