@shapeshift-labs/frontier-swarm-codex 0.5.117 → 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 +1 -1
@@ -0,0 +1,115 @@
1
+ import { normalizeMetricKey } from './query-values.js';
2
+ export function aggregateHealthStatus(statusCounts, total) {
3
+ if ((statusCounts.failed ?? 0) > 0)
4
+ return 'failed';
5
+ if ((statusCounts.blocked ?? 0) > 0)
6
+ return 'blocked';
7
+ if ((statusCounts.warning ?? 0) > 0)
8
+ return 'warning';
9
+ if ((statusCounts.running ?? 0) > 0)
10
+ return 'running';
11
+ if ((statusCounts.unknown ?? 0) === total && total > 0)
12
+ return 'unknown';
13
+ return 'healthy';
14
+ }
15
+ export function healthMatches(actual, value) {
16
+ const wanted = normalizeMetricKey(value);
17
+ if (wanted === actual)
18
+ return true;
19
+ if (wanted === 'ok')
20
+ return actual === 'healthy';
21
+ if (wanted === 'warn')
22
+ return actual === 'warning';
23
+ if (wanted === 'failure')
24
+ return actual === 'failed';
25
+ if (wanted === 'unhealthy' || wanted === 'attention')
26
+ return actual === 'warning' || actual === 'failed' || actual === 'blocked';
27
+ return false;
28
+ }
29
+ export function pressureMatches(budget, job, value) {
30
+ const wanted = normalizeMetricKey(value);
31
+ const warning = budget.status === 'warning' || budget.warnings.length > 0;
32
+ const failed = budget.status === 'failed' || budget.errors.length > 0;
33
+ if (wanted === 'context')
34
+ return budget.hasBudget;
35
+ if (wanted === 'context-warning' || wanted === 'warning' || wanted === 'warn')
36
+ return warning;
37
+ if (wanted === 'context-failed' || wanted === 'failed' || wanted === 'failure')
38
+ return failed;
39
+ if (wanted === 'token' || wanted === 'tokens' || wanted === 'actual-usage')
40
+ return budget.actualInputTokens > 0 || budget.estimatedInputTokens > 0;
41
+ if (wanted === 'uncached')
42
+ return budget.uncachedInputTokens > 0;
43
+ if (wanted === 'prompt')
44
+ return budget.promptBytes > 0;
45
+ if (wanted === 'high')
46
+ return warning || failed || budget.uncachedInputTokens > 0;
47
+ if (wanted === 'time' || wanted === 'running')
48
+ return job.liveness === 'running' || job.status === 'running';
49
+ if (wanted === 'none')
50
+ return !budget.hasBudget && job.liveness !== 'running' && job.status !== 'running';
51
+ return warning && budget.warnings.some((entry) => normalizeMetricKey(entry).includes(wanted));
52
+ }
53
+ export function semanticReadinessMatches(actual, value) {
54
+ const wanted = normalizeMetricKey(value);
55
+ if (wanted === actual)
56
+ return true;
57
+ if (wanted === 'ready')
58
+ return actual === 'clean' || actual === 'candidate';
59
+ if (wanted === 'attention')
60
+ return actual === 'review-required' || actual === 'needs-port' || actual === 'stale' || actual === 'blocked';
61
+ if (wanted === 'review')
62
+ return actual === 'review-required';
63
+ return false;
64
+ }
65
+ export function cleanupMatches(signal, value) {
66
+ const wanted = normalizeMetricKey(value);
67
+ if (wanted === signal.status)
68
+ return true;
69
+ if (wanted === 'attention' || wanted === 'cleanup' || wanted === 'cleanup-needed')
70
+ return signal.status !== 'clean';
71
+ if (wanted === 'ignored-changed-paths' || wanted === 'ignored-paths')
72
+ return signal.ignoredChangedPathCount > 0;
73
+ if (wanted === 'generated-changed-paths' || wanted === 'generated-paths' || wanted === 'build-output')
74
+ return signal.generatedChangedPathCount > 0;
75
+ if (wanted === 'quarantine' || wanted === 'quarantined-changes')
76
+ return signal.quarantinedChangedPathCount > 0;
77
+ if (wanted === 'observed')
78
+ return signal.observedChangedPathCount > 0;
79
+ if (wanted === 'reported')
80
+ return signal.reportedChangedPathCount > 0;
81
+ return false;
82
+ }
83
+ export function ownershipMatches(signal, value) {
84
+ const wanted = normalizeMetricKey(value);
85
+ if (wanted === signal.status)
86
+ return true;
87
+ if (wanted === 'attention' || wanted === 'violation' || wanted === 'violations')
88
+ return signal.violationCount > 0;
89
+ if (wanted === 'source' || wanted === 'source-violation' || wanted === 'source-violations' || wanted === 'strict-write-isolation')
90
+ return signal.sourceViolationCount > 0;
91
+ if (wanted === 'ignored' || wanted === 'ignored-violation' || wanted === 'ignored-violations')
92
+ return signal.ignoredViolationCount > 0;
93
+ return false;
94
+ }
95
+ export function aggregateCleanupStatus(statusCounts, total) {
96
+ if ((statusCounts.quarantined ?? 0) > 0)
97
+ return 'quarantined';
98
+ if ((statusCounts.generated ?? 0) > 0)
99
+ return 'generated';
100
+ if ((statusCounts.ignored ?? 0) > 0)
101
+ return 'ignored';
102
+ if (total > 0)
103
+ return 'clean';
104
+ return 'clean';
105
+ }
106
+ export function aggregateOwnershipStatus(statusCounts, total) {
107
+ if ((statusCounts.violation ?? 0) > 0)
108
+ return 'violation';
109
+ if ((statusCounts.ignored ?? 0) > 0)
110
+ return 'ignored';
111
+ if (total > 0)
112
+ return 'clean';
113
+ return 'clean';
114
+ }
115
+ //# sourceMappingURL=query-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-status.js","sourceRoot":"","sources":["../src/query-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,283 @@
1
+ export declare function queryHealthSummary(jobs: Record<string, unknown>[]): {
2
+ status: import("./query-signal-types.ts").QueryHealthStatus;
3
+ jobCount: number;
4
+ statusCounts: Record<string, number>;
5
+ healthyJobCount: number;
6
+ warningJobCount: number;
7
+ failedJobCount: number;
8
+ blockedJobCount: number;
9
+ runningJobCount: number;
10
+ unknownJobCount: number;
11
+ readyToApplyJobCount: number;
12
+ needsHumanPortJobCount: number;
13
+ staleJobCount: number;
14
+ failedEvidenceJobCount: number;
15
+ testsFailedJobCount: number;
16
+ contextWarningJobCount: number;
17
+ contextFailedJobCount: number;
18
+ semanticBlockedJobCount: number;
19
+ terminalJobCount: number;
20
+ completionRatio: number;
21
+ failureRatio: number;
22
+ warningJobIds: string[];
23
+ failedJobIds: string[];
24
+ blockedJobIds: string[];
25
+ runningJobIds: string[];
26
+ };
27
+ export declare function queryPressureSummary(jobs: Record<string, unknown>[], evidenceRows: Record<string, unknown>[]): {
28
+ jobCount: number;
29
+ contextBudgetJobCount: number;
30
+ contextWarningJobCount: number;
31
+ contextFailedJobCount: number;
32
+ actualUsageJobCount: number;
33
+ tokenTotals: {
34
+ promptBytes: number;
35
+ estimatedInputTokens: number;
36
+ actualInputTokens: number;
37
+ cachedInputTokens: number;
38
+ uncachedInputTokens: number;
39
+ outputTokens: number;
40
+ cacheHitRatio: number;
41
+ uncachedRatio: number;
42
+ };
43
+ tokenMax: {
44
+ promptBytes: number;
45
+ estimatedInputTokens: number;
46
+ actualInputTokens: number;
47
+ cachedInputTokens: number;
48
+ uncachedInputTokens: number;
49
+ outputTokens: number;
50
+ };
51
+ time: {
52
+ oldestGeneratedAt?: number | undefined;
53
+ newestGeneratedAt?: number | undefined;
54
+ generatedAtSpanMs?: number | undefined;
55
+ runningJobCount: number;
56
+ finishedJobCount: number;
57
+ generatedAtCount: number;
58
+ };
59
+ evidence: {
60
+ contextBudgetEntryCount: number;
61
+ contextWarningEntryCount: number;
62
+ contextFailedEntryCount: number;
63
+ actualUsageEntryCount: number;
64
+ };
65
+ warnings: string[];
66
+ errors: string[];
67
+ };
68
+ export declare function querySemanticReadinessSummary(jobs: Record<string, unknown>[]): {
69
+ jobCount: number;
70
+ statusCounts: Record<string, number>;
71
+ statuses: string[];
72
+ cleanJobCount: number;
73
+ candidateJobCount: number;
74
+ reviewRequiredJobCount: number;
75
+ needsPortJobCount: number;
76
+ staleJobCount: number;
77
+ blockedJobCount: number;
78
+ unknownJobCount: number;
79
+ expectedSatisfiedJobCount: number;
80
+ expectedUnsatisfiedJobCount: number;
81
+ universalAstReadyJobCount: number;
82
+ proofSpecReadyJobCount: number;
83
+ lineageReviewJobCount: number;
84
+ warningJobCount: number;
85
+ warnings: string[];
86
+ reasonCodes: string[];
87
+ };
88
+ export declare function queryCleanupSummary(jobs: Record<string, unknown>[], evidenceRows: Record<string, unknown>[]): {
89
+ jobCount: number;
90
+ status: import("./query-signal-types.ts").QueryCleanupStatus;
91
+ statusCounts: Record<string, number>;
92
+ statuses: string[];
93
+ cleanupJobCount: number;
94
+ ignoredChangedPathJobCount: number;
95
+ ignoredChangedPathCount: number;
96
+ generatedChangedPathJobCount: number;
97
+ generatedChangedPathCount: number;
98
+ quarantinedJobCount: number;
99
+ quarantinedChangedPathCount: number;
100
+ observedChangedPathCount: number;
101
+ reportedChangedPathCount: number;
102
+ evidenceCleanupEntryCount: number;
103
+ evidenceQuarantinedEntryCount: number;
104
+ ignoredChangedPathReasonCounts: Record<string, number>;
105
+ jobIds: string[];
106
+ quarantinedJobIds: string[];
107
+ };
108
+ export declare function queryOwnershipSummary(jobs: Record<string, unknown>[], evidenceRows: Record<string, unknown>[]): {
109
+ jobCount: number;
110
+ status: import("./query-signal-types.ts").QueryOwnershipStatus;
111
+ statusCounts: Record<string, number>;
112
+ statuses: string[];
113
+ violationJobCount: number;
114
+ violationCount: number;
115
+ sourceViolationJobCount: number;
116
+ sourceViolationCount: number;
117
+ ignoredViolationJobCount: number;
118
+ ignoredViolationCount: number;
119
+ strictWriteIsolationFailedJobCount: number;
120
+ evidenceViolationEntryCount: number;
121
+ evidenceSourceViolationEntryCount: number;
122
+ jobIds: string[];
123
+ sourceViolationJobIds: string[];
124
+ };
125
+ export declare function queryableCounts(jobs: Record<string, unknown>[], evidenceRows: Record<string, unknown>[], landedJobIds: Set<string>, dashboard: Record<string, unknown>, collection: Record<string, unknown>, compactDashboard: Record<string, unknown>): {
126
+ runHealth: {
127
+ status: import("./query-signal-types.ts").QueryHealthStatus;
128
+ jobCount: number;
129
+ statusCounts: Record<string, number>;
130
+ healthyJobCount: number;
131
+ warningJobCount: number;
132
+ failedJobCount: number;
133
+ blockedJobCount: number;
134
+ runningJobCount: number;
135
+ unknownJobCount: number;
136
+ readyToApplyJobCount: number;
137
+ needsHumanPortJobCount: number;
138
+ staleJobCount: number;
139
+ failedEvidenceJobCount: number;
140
+ testsFailedJobCount: number;
141
+ contextWarningJobCount: number;
142
+ contextFailedJobCount: number;
143
+ semanticBlockedJobCount: number;
144
+ terminalJobCount: number;
145
+ completionRatio: number;
146
+ failureRatio: number;
147
+ warningJobIds: string[];
148
+ failedJobIds: string[];
149
+ blockedJobIds: string[];
150
+ runningJobIds: string[];
151
+ };
152
+ landed: {
153
+ total: number;
154
+ collectionJobCount: number;
155
+ landed: number;
156
+ applied: number;
157
+ committed: number;
158
+ skipped: number;
159
+ failed: number;
160
+ landedRatio: number;
161
+ collectionLandedRatio: number;
162
+ matchedJobCount: number;
163
+ matchedLandedJobCount: number;
164
+ matchedUnlandedJobCount: number;
165
+ matchedLandedRatio: number;
166
+ landedJobIds: string[];
167
+ matchedLandedJobIds: string[];
168
+ failedJobIds: string[];
169
+ };
170
+ context: {
171
+ jobCount: number;
172
+ contextBudgetJobCount: number;
173
+ contextWarningJobCount: number;
174
+ contextFailedJobCount: number;
175
+ actualUsageJobCount: number;
176
+ tokenTotals: {
177
+ promptBytes: number;
178
+ estimatedInputTokens: number;
179
+ actualInputTokens: number;
180
+ cachedInputTokens: number;
181
+ uncachedInputTokens: number;
182
+ outputTokens: number;
183
+ cacheHitRatio: number;
184
+ uncachedRatio: number;
185
+ };
186
+ tokenMax: {
187
+ promptBytes: number;
188
+ estimatedInputTokens: number;
189
+ actualInputTokens: number;
190
+ cachedInputTokens: number;
191
+ uncachedInputTokens: number;
192
+ outputTokens: number;
193
+ };
194
+ time: {
195
+ oldestGeneratedAt?: number | undefined;
196
+ newestGeneratedAt?: number | undefined;
197
+ generatedAtSpanMs?: number | undefined;
198
+ runningJobCount: number;
199
+ finishedJobCount: number;
200
+ generatedAtCount: number;
201
+ };
202
+ evidence: {
203
+ contextBudgetEntryCount: number;
204
+ contextWarningEntryCount: number;
205
+ contextFailedEntryCount: number;
206
+ actualUsageEntryCount: number;
207
+ };
208
+ warnings: string[];
209
+ errors: string[];
210
+ };
211
+ semantic: {
212
+ readiness: {
213
+ jobCount: number;
214
+ statusCounts: Record<string, number>;
215
+ statuses: string[];
216
+ cleanJobCount: number;
217
+ candidateJobCount: number;
218
+ reviewRequiredJobCount: number;
219
+ needsPortJobCount: number;
220
+ staleJobCount: number;
221
+ blockedJobCount: number;
222
+ unknownJobCount: number;
223
+ expectedSatisfiedJobCount: number;
224
+ expectedUnsatisfiedJobCount: number;
225
+ universalAstReadyJobCount: number;
226
+ proofSpecReadyJobCount: number;
227
+ lineageReviewJobCount: number;
228
+ warningJobCount: number;
229
+ warnings: string[];
230
+ reasonCodes: string[];
231
+ };
232
+ editAdmission: {
233
+ statusCounts: Record<string, number>;
234
+ statuses: string[];
235
+ autoMergeCandidateCount: number;
236
+ cleanEligibleCount: number;
237
+ };
238
+ editProjection: import("./query-semantic-edit.js").SemanticEditProjectionQuerySummary;
239
+ editReplay: import("./query-semantic-edit-replay.js").SemanticEditReplayQuerySummary;
240
+ editScriptAdmission: {
241
+ autoMergeCandidateCount: number;
242
+ cleanEligibleCandidateCount: number;
243
+ };
244
+ };
245
+ cleanup: {
246
+ jobCount: number;
247
+ status: import("./query-signal-types.ts").QueryCleanupStatus;
248
+ statusCounts: Record<string, number>;
249
+ statuses: string[];
250
+ cleanupJobCount: number;
251
+ ignoredChangedPathJobCount: number;
252
+ ignoredChangedPathCount: number;
253
+ generatedChangedPathJobCount: number;
254
+ generatedChangedPathCount: number;
255
+ quarantinedJobCount: number;
256
+ quarantinedChangedPathCount: number;
257
+ observedChangedPathCount: number;
258
+ reportedChangedPathCount: number;
259
+ evidenceCleanupEntryCount: number;
260
+ evidenceQuarantinedEntryCount: number;
261
+ ignoredChangedPathReasonCounts: Record<string, number>;
262
+ jobIds: string[];
263
+ quarantinedJobIds: string[];
264
+ };
265
+ ownership: {
266
+ jobCount: number;
267
+ status: import("./query-signal-types.ts").QueryOwnershipStatus;
268
+ statusCounts: Record<string, number>;
269
+ statuses: string[];
270
+ violationJobCount: number;
271
+ violationCount: number;
272
+ sourceViolationJobCount: number;
273
+ sourceViolationCount: number;
274
+ ignoredViolationJobCount: number;
275
+ ignoredViolationCount: number;
276
+ strictWriteIsolationFailedJobCount: number;
277
+ evidenceViolationEntryCount: number;
278
+ evidenceSourceViolationEntryCount: number;
279
+ jobIds: string[];
280
+ sourceViolationJobIds: string[];
281
+ };
282
+ };
283
+ //# sourceMappingURL=query-summaries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-summaries.d.ts","sourceRoot":"","sources":["../src/query-summaries.ts"],"names":[],"mappings":"AAiBA,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;EAqCjE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiD5G;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;;;;;;;;;;;;;;;;;;;EA0B5E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;;;;;;;;;;;;;;;;;;;EA2B3G;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;;;;;;;;;;;;;;;;EAwB7G;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACvC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EACzB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgB1C"}
@@ -0,0 +1,195 @@
1
+ import { nonNegativeNumber, readStringArray, uniqueStrings } from './common.js';
2
+ import { semanticEditAdmissionSummary, semanticEditProjectionSummary, semanticEditScriptAdmissionSummary } from './query-semantic-edit.js';
3
+ import { semanticEditReplaySummary } from './query-semantic-edit-replay.js';
4
+ import { queryLandedSummary } from './query-landed.js';
5
+ import { evidenceCleanupSignal, evidenceContextBudget, evidenceOwnershipSignal, jobCleanupSignal, jobContextBudget, jobHealth, jobOwnershipSignal, jobSemanticReadinessStatus } from './query-signals.js';
6
+ import { aggregateCleanupStatus, aggregateHealthStatus, aggregateOwnershipStatus } from './query-status.js';
7
+ import { incrementCount, jobIds, maxMetric, mergeCountRecords, ratio, sumMetric, testsPassed } from './query-values.js';
8
+ export function queryHealthSummary(jobs) {
9
+ const statusCounts = jobs.reduce((out, job) => {
10
+ incrementCount(out, jobHealth(job));
11
+ return out;
12
+ }, {});
13
+ const readyToApplyJobs = jobs.filter((job) => job.disposition === 'auto-mergeable' || job.admissionStatus === 'ready-to-apply');
14
+ const terminalJobs = jobs.filter((job) => job.liveness === 'finished' || ['completed', 'failed', 'blocked'].includes(String(job.status ?? '')));
15
+ const failedJobs = jobs.filter((job) => jobHealth(job) === 'failed');
16
+ const blockedJobs = jobs.filter((job) => jobHealth(job) === 'blocked');
17
+ const warningJobs = jobs.filter((job) => jobHealth(job) === 'warning');
18
+ const runningJobs = jobs.filter((job) => jobHealth(job) === 'running');
19
+ return {
20
+ status: aggregateHealthStatus(statusCounts, jobs.length),
21
+ jobCount: jobs.length,
22
+ statusCounts,
23
+ healthyJobCount: statusCounts.healthy ?? 0,
24
+ warningJobCount: warningJobs.length,
25
+ failedJobCount: failedJobs.length,
26
+ blockedJobCount: blockedJobs.length,
27
+ runningJobCount: runningJobs.length,
28
+ unknownJobCount: statusCounts.unknown ?? 0,
29
+ readyToApplyJobCount: readyToApplyJobs.length,
30
+ needsHumanPortJobCount: jobs.filter((job) => job.disposition === 'needs-port').length,
31
+ staleJobCount: jobs.filter((job) => Boolean(job.staleAgainstHead) || job.disposition === 'stale-against-head').length,
32
+ failedEvidenceJobCount: jobs.filter((job) => job.disposition === 'failed-evidence').length,
33
+ testsFailedJobCount: jobs.filter((job) => !testsPassed(job)).length,
34
+ contextWarningJobCount: jobs.filter((job) => jobContextBudget(job).status === 'warning').length,
35
+ contextFailedJobCount: jobs.filter((job) => jobContextBudget(job).status === 'failed').length,
36
+ semanticBlockedJobCount: jobs.filter((job) => jobSemanticReadinessStatus(job) === 'blocked').length,
37
+ terminalJobCount: terminalJobs.length,
38
+ completionRatio: ratio(terminalJobs.length, jobs.length),
39
+ failureRatio: ratio(failedJobs.length + blockedJobs.length, jobs.length),
40
+ warningJobIds: jobIds(warningJobs),
41
+ failedJobIds: jobIds(failedJobs),
42
+ blockedJobIds: jobIds(blockedJobs),
43
+ runningJobIds: jobIds(runningJobs)
44
+ };
45
+ }
46
+ export function queryPressureSummary(jobs, evidenceRows) {
47
+ const budgets = jobs.map((job) => jobContextBudget(job));
48
+ const contextBudgets = budgets.filter((budget) => budget.hasBudget);
49
+ const warningBudgets = budgets.filter((budget) => budget.status === 'warning' || budget.warnings.length > 0);
50
+ const failedBudgets = budgets.filter((budget) => budget.status === 'failed' || budget.errors.length > 0);
51
+ const generatedAt = jobs.map((job) => nonNegativeNumber(job.generatedAt)).filter((value) => value > 0);
52
+ const evidenceBudgets = evidenceRows.map((entry) => evidenceContextBudget(entry)).filter((budget) => budget.hasBudget);
53
+ const actualInputTokens = sumMetric(budgets, (budget) => budget.actualInputTokens);
54
+ const cachedInputTokens = sumMetric(budgets, (budget) => budget.cachedInputTokens);
55
+ const uncachedInputTokens = sumMetric(budgets, (budget) => budget.uncachedInputTokens);
56
+ return {
57
+ jobCount: jobs.length,
58
+ contextBudgetJobCount: contextBudgets.length,
59
+ contextWarningJobCount: warningBudgets.length,
60
+ contextFailedJobCount: failedBudgets.length,
61
+ actualUsageJobCount: budgets.filter((budget) => budget.actualInputTokens > 0).length,
62
+ tokenTotals: {
63
+ promptBytes: sumMetric(budgets, (budget) => budget.promptBytes),
64
+ estimatedInputTokens: sumMetric(budgets, (budget) => budget.estimatedInputTokens),
65
+ actualInputTokens,
66
+ cachedInputTokens,
67
+ uncachedInputTokens,
68
+ outputTokens: sumMetric(budgets, (budget) => budget.outputTokens),
69
+ cacheHitRatio: ratio(cachedInputTokens, actualInputTokens),
70
+ uncachedRatio: ratio(uncachedInputTokens, actualInputTokens)
71
+ },
72
+ tokenMax: {
73
+ promptBytes: maxMetric(budgets, (budget) => budget.promptBytes),
74
+ estimatedInputTokens: maxMetric(budgets, (budget) => budget.estimatedInputTokens),
75
+ actualInputTokens: maxMetric(budgets, (budget) => budget.actualInputTokens),
76
+ cachedInputTokens: maxMetric(budgets, (budget) => budget.cachedInputTokens),
77
+ uncachedInputTokens: maxMetric(budgets, (budget) => budget.uncachedInputTokens),
78
+ outputTokens: maxMetric(budgets, (budget) => budget.outputTokens)
79
+ },
80
+ time: {
81
+ runningJobCount: jobs.filter((job) => job.liveness === 'running' || job.status === 'running').length,
82
+ finishedJobCount: jobs.filter((job) => job.liveness === 'finished' || job.status === 'completed').length,
83
+ generatedAtCount: generatedAt.length,
84
+ ...(generatedAt.length ? { oldestGeneratedAt: Math.min(...generatedAt), newestGeneratedAt: Math.max(...generatedAt), generatedAtSpanMs: Math.max(...generatedAt) - Math.min(...generatedAt) } : {})
85
+ },
86
+ evidence: {
87
+ contextBudgetEntryCount: evidenceBudgets.length,
88
+ contextWarningEntryCount: evidenceBudgets.filter((budget) => budget.status === 'warning' || budget.warnings.length > 0).length,
89
+ contextFailedEntryCount: evidenceBudgets.filter((budget) => budget.status === 'failed' || budget.errors.length > 0).length,
90
+ actualUsageEntryCount: evidenceBudgets.filter((budget) => budget.actualInputTokens > 0).length
91
+ },
92
+ warnings: uniqueStrings(budgets.flatMap((budget) => budget.warnings)),
93
+ errors: uniqueStrings(budgets.flatMap((budget) => budget.errors))
94
+ };
95
+ }
96
+ export function querySemanticReadinessSummary(jobs) {
97
+ const statusCounts = jobs.reduce((out, job) => {
98
+ incrementCount(out, jobSemanticReadinessStatus(job));
99
+ return out;
100
+ }, {});
101
+ const qualities = jobs.map((job) => isRecord(job.semanticImportQuality) ? job.semanticImportQuality : {});
102
+ return {
103
+ jobCount: jobs.length,
104
+ statusCounts,
105
+ statuses: Object.keys(statusCounts).sort(),
106
+ cleanJobCount: statusCounts.clean ?? 0,
107
+ candidateJobCount: statusCounts.candidate ?? 0,
108
+ reviewRequiredJobCount: statusCounts['review-required'] ?? 0,
109
+ needsPortJobCount: statusCounts['needs-port'] ?? 0,
110
+ staleJobCount: statusCounts.stale ?? 0,
111
+ blockedJobCount: statusCounts.blocked ?? 0,
112
+ unknownJobCount: statusCounts.unknown ?? 0,
113
+ expectedSatisfiedJobCount: qualities.filter((quality) => quality.expected === true && quality.expectedSatisfied === true).length,
114
+ expectedUnsatisfiedJobCount: qualities.filter((quality) => quality.expected === true && quality.expectedSatisfied === false).length,
115
+ universalAstReadyJobCount: qualities.filter((quality) => nonNegativeNumber(quality.universalAstLayers) > 0).length,
116
+ proofSpecReadyJobCount: qualities.filter((quality) => nonNegativeNumber(quality.proofSpecObligations) > 0 && nonNegativeNumber(quality.proofSpecFailedObligations) === 0).length,
117
+ lineageReviewJobCount: qualities.filter((quality) => nonNegativeNumber(quality.semanticLineageNeedsReview) > 0).length,
118
+ warningJobCount: qualities.filter((quality) => readStringArray(quality.warnings).length > 0).length,
119
+ warnings: uniqueStrings(qualities.flatMap((quality) => readStringArray(quality.warnings))),
120
+ reasonCodes: uniqueStrings(qualities.flatMap((quality) => readStringArray(quality.semanticLineageReasonCodes)))
121
+ };
122
+ }
123
+ export function queryCleanupSummary(jobs, evidenceRows) {
124
+ const signals = jobs.map((job) => jobCleanupSignal(job));
125
+ const evidenceSignals = evidenceRows.map((entry) => evidenceCleanupSignal(entry));
126
+ const statusCounts = signals.reduce((out, signal) => {
127
+ incrementCount(out, signal.status);
128
+ return out;
129
+ }, {});
130
+ return {
131
+ jobCount: jobs.length,
132
+ status: aggregateCleanupStatus(statusCounts, jobs.length),
133
+ statusCounts,
134
+ statuses: Object.keys(statusCounts).sort(),
135
+ cleanupJobCount: signals.filter((signal) => signal.status !== 'clean').length,
136
+ ignoredChangedPathJobCount: signals.filter((signal) => signal.ignoredChangedPathCount > 0).length,
137
+ ignoredChangedPathCount: sumMetric(signals, (signal) => signal.ignoredChangedPathCount),
138
+ generatedChangedPathJobCount: signals.filter((signal) => signal.generatedChangedPathCount > 0).length,
139
+ generatedChangedPathCount: sumMetric(signals, (signal) => signal.generatedChangedPathCount),
140
+ quarantinedJobCount: signals.filter((signal) => signal.quarantinedChangedPathCount > 0).length,
141
+ quarantinedChangedPathCount: sumMetric(signals, (signal) => signal.quarantinedChangedPathCount),
142
+ observedChangedPathCount: sumMetric(signals, (signal) => signal.observedChangedPathCount),
143
+ reportedChangedPathCount: sumMetric(signals, (signal) => signal.reportedChangedPathCount),
144
+ evidenceCleanupEntryCount: evidenceSignals.filter((signal) => signal.status !== 'clean').length,
145
+ evidenceQuarantinedEntryCount: evidenceSignals.filter((signal) => signal.quarantinedChangedPathCount > 0).length,
146
+ ignoredChangedPathReasonCounts: mergeCountRecords(signals.map((signal) => signal.ignoredChangedPathReasonCounts)),
147
+ jobIds: jobIds(jobs.filter((job) => jobCleanupSignal(job).status !== 'clean')),
148
+ quarantinedJobIds: jobIds(jobs.filter((job) => jobCleanupSignal(job).quarantinedChangedPathCount > 0))
149
+ };
150
+ }
151
+ export function queryOwnershipSummary(jobs, evidenceRows) {
152
+ const signals = jobs.map((job) => jobOwnershipSignal(job));
153
+ const evidenceSignals = evidenceRows.map((entry) => evidenceOwnershipSignal(entry));
154
+ const statusCounts = signals.reduce((out, signal) => {
155
+ incrementCount(out, signal.status);
156
+ return out;
157
+ }, {});
158
+ return {
159
+ jobCount: jobs.length,
160
+ status: aggregateOwnershipStatus(statusCounts, jobs.length),
161
+ statusCounts,
162
+ statuses: Object.keys(statusCounts).sort(),
163
+ violationJobCount: signals.filter((signal) => signal.violationCount > 0).length,
164
+ violationCount: sumMetric(signals, (signal) => signal.violationCount),
165
+ sourceViolationJobCount: signals.filter((signal) => signal.sourceViolationCount > 0).length,
166
+ sourceViolationCount: sumMetric(signals, (signal) => signal.sourceViolationCount),
167
+ ignoredViolationJobCount: signals.filter((signal) => signal.ignoredViolationCount > 0).length,
168
+ ignoredViolationCount: sumMetric(signals, (signal) => signal.ignoredViolationCount),
169
+ strictWriteIsolationFailedJobCount: signals.filter((signal) => signal.sourceViolationCount > 0).length,
170
+ evidenceViolationEntryCount: evidenceSignals.filter((signal) => signal.violationCount > 0).length,
171
+ evidenceSourceViolationEntryCount: evidenceSignals.filter((signal) => signal.sourceViolationCount > 0).length,
172
+ jobIds: jobIds(jobs.filter((job) => jobOwnershipSignal(job).violationCount > 0)),
173
+ sourceViolationJobIds: jobIds(jobs.filter((job) => jobOwnershipSignal(job).sourceViolationCount > 0))
174
+ };
175
+ }
176
+ export function queryableCounts(jobs, evidenceRows, landedJobIds, dashboard, collection, compactDashboard) {
177
+ return {
178
+ runHealth: queryHealthSummary(jobs),
179
+ landed: queryLandedSummary(jobs, landedJobIds, dashboard, collection, compactDashboard),
180
+ context: queryPressureSummary(jobs, evidenceRows),
181
+ semantic: {
182
+ readiness: querySemanticReadinessSummary(jobs),
183
+ editAdmission: semanticEditAdmissionSummary(jobs),
184
+ editProjection: semanticEditProjectionSummary(jobs),
185
+ editReplay: semanticEditReplaySummary(jobs),
186
+ editScriptAdmission: semanticEditScriptAdmissionSummary(jobs)
187
+ },
188
+ cleanup: queryCleanupSummary(jobs, evidenceRows),
189
+ ownership: queryOwnershipSummary(jobs, evidenceRows)
190
+ };
191
+ }
192
+ function isRecord(value) {
193
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
194
+ }
195
+ //# sourceMappingURL=query-summaries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-summaries.js","sourceRoot":"","sources":["../src/query-summaries.ts"],"names":[],"mappings":"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"}