prefect 3.6.13__py3-none-any.whl → 3.6.13.dev2__py3-none-any.whl

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 (220) hide show
  1. prefect/_build_info.py +3 -3
  2. prefect/_internal/compatibility/blocks.py +0 -18
  3. prefect/client/schemas/filters.py +0 -24
  4. prefect/flow_engine.py +10 -192
  5. prefect/flows.py +2 -61
  6. prefect/results.py +21 -262
  7. prefect/runner/runner.py +82 -29
  8. prefect/runner/storage.py +2 -3
  9. prefect/server/schemas/filters.py +0 -45
  10. prefect/server/ui-v2/assets/{artifact-card-CUEaRDGw.js → artifact-card-C8JEQRHl.js} +2 -2
  11. prefect/server/ui-v2/assets/{artifact-card-CUEaRDGw.js.map → artifact-card-C8JEQRHl.js.map} +1 -1
  12. prefect/server/ui-v2/assets/{artifact._id-Ca6VCUS0.js → artifact._id-67V8kTg9.js} +2 -2
  13. prefect/server/ui-v2/assets/{artifact._id-Ca6VCUS0.js.map → artifact._id-67V8kTg9.js.map} +1 -1
  14. prefect/server/ui-v2/assets/{automation-wizard-z26pICBl.js → automation-wizard-DuxZ47Nn.js} +2 -2
  15. prefect/server/ui-v2/assets/{automation-wizard-z26pICBl.js.map → automation-wizard-DuxZ47Nn.js.map} +1 -1
  16. prefect/server/ui-v2/assets/{automation._id-DuodjY5t.js → automation._id-D8S8r4Ji.js} +2 -2
  17. prefect/server/ui-v2/assets/{automation._id-DuodjY5t.js.map → automation._id-D8S8r4Ji.js.map} +1 -1
  18. prefect/server/ui-v2/assets/{automation_._id.edit-CcuJhc-y.js → automation_._id.edit-C1fOM0Hx.js} +2 -2
  19. prefect/server/ui-v2/assets/{automation_._id.edit-CcuJhc-y.js.map → automation_._id.edit-C1fOM0Hx.js.map} +1 -1
  20. prefect/server/ui-v2/assets/{automations-header-CgOWwuc6.js → automations-header-DrijTNGi.js} +2 -2
  21. prefect/server/ui-v2/assets/{automations-header-CgOWwuc6.js.map → automations-header-DrijTNGi.js.map} +1 -1
  22. prefect/server/ui-v2/assets/{base-job-template-form-section-DN9HyjM5.js → base-job-template-form-section-BDkqOkpe.js} +2 -2
  23. prefect/server/ui-v2/assets/{base-job-template-form-section-DN9HyjM5.js.map → base-job-template-form-section-BDkqOkpe.js.map} +1 -1
  24. prefect/server/ui-v2/assets/{block-type-details-rrToxL5r.js → block-type-details-CrFHWH5D.js} +2 -2
  25. prefect/server/ui-v2/assets/{block-type-details-rrToxL5r.js.map → block-type-details-CrFHWH5D.js.map} +1 -1
  26. prefect/server/ui-v2/assets/block-type-logo-WQNm0PzP.js +2 -0
  27. prefect/server/ui-v2/assets/{block-type-logo-DURScH8H.js.map → block-type-logo-WQNm0PzP.js.map} +1 -1
  28. prefect/server/ui-v2/assets/{block._id-Bue6lnrN.js → block._id-C3gN1Ae8.js} +2 -2
  29. prefect/server/ui-v2/assets/{block._id-Bue6lnrN.js.map → block._id-C3gN1Ae8.js.map} +1 -1
  30. prefect/server/ui-v2/assets/{block_._id.edit-QY0OzN_b.js → block_._id.edit-DzPuSvat.js} +2 -2
  31. prefect/server/ui-v2/assets/{block_._id.edit-QY0OzN_b.js.map → block_._id.edit-DzPuSvat.js.map} +1 -1
  32. prefect/server/ui-v2/assets/{catalog-CGjRGWv6.js → catalog-T-7MqsyE.js} +2 -2
  33. prefect/server/ui-v2/assets/{catalog-CGjRGWv6.js.map → catalog-T-7MqsyE.js.map} +1 -1
  34. prefect/server/ui-v2/assets/{catalog_._slug-BMFNZhEb.js → catalog_._slug-DMOI61fc.js} +2 -2
  35. prefect/server/ui-v2/assets/{catalog_._slug-BMFNZhEb.js.map → catalog_._slug-DMOI61fc.js.map} +1 -1
  36. prefect/server/ui-v2/assets/{catalog_._slug_.create-CuFA3kUC.js → catalog_._slug_.create-l9bGUPi-.js} +2 -2
  37. prefect/server/ui-v2/assets/{catalog_._slug_.create-CuFA3kUC.js.map → catalog_._slug_.create-l9bGUPi-.js.map} +1 -1
  38. prefect/server/ui-v2/assets/{collapsible-Ell2FjrX.js → collapsible-DM-Ze5-Y.js} +2 -2
  39. prefect/server/ui-v2/assets/{collapsible-Ell2FjrX.js.map → collapsible-DM-Ze5-Y.js.map} +1 -1
  40. prefect/server/ui-v2/assets/{concurrency-limit._id-Rr1ysUct.js → concurrency-limit._id-BHEt9viF.js} +2 -2
  41. prefect/server/ui-v2/assets/{concurrency-limit._id-Rr1ysUct.js.map → concurrency-limit._id-BHEt9viF.js.map} +1 -1
  42. prefect/server/ui-v2/assets/{create-ewA3uq_h.js → create-BMxUOyN5.js} +2 -2
  43. prefect/server/ui-v2/assets/{create-ewA3uq_h.js.map → create-BMxUOyN5.js.map} +1 -1
  44. prefect/server/ui-v2/assets/{create-CQK8-uO1.js → create-Cq-EAHVk.js} +2 -2
  45. prefect/server/ui-v2/assets/{create-CQK8-uO1.js.map → create-Cq-EAHVk.js.map} +1 -1
  46. prefect/server/ui-v2/assets/{data-table-Bx1uYX_M.js → data-table-Bw8TZx9D.js} +2 -2
  47. prefect/server/ui-v2/assets/{data-table-Bx1uYX_M.js.map → data-table-Bw8TZx9D.js.map} +1 -1
  48. prefect/server/ui-v2/assets/{delete-confirmation-dialog-CqKsUEj_.js → delete-confirmation-dialog-CTdWZlGM.js} +2 -2
  49. prefect/server/ui-v2/assets/{delete-confirmation-dialog-CqKsUEj_.js.map → delete-confirmation-dialog-CTdWZlGM.js.map} +1 -1
  50. prefect/server/ui-v2/assets/{deployment-action-header-Bz5COdER.js → deployment-action-header-BObYqmI_.js} +2 -2
  51. prefect/server/ui-v2/assets/{deployment-action-header-Bz5COdER.js.map → deployment-action-header-BObYqmI_.js.map} +1 -1
  52. prefect/server/ui-v2/assets/{deployment-form-CrlZlNoj.js → deployment-form-CntyhRrK.js} +3 -3
  53. prefect/server/ui-v2/assets/{deployment-form-CrlZlNoj.js.map → deployment-form-CntyhRrK.js.map} +1 -1
  54. prefect/server/ui-v2/assets/{deployment-links-D9ZR_vmp.js → deployment-links-DBUSCaxB.js} +2 -2
  55. prefect/server/ui-v2/assets/{deployment-links-D9ZR_vmp.js.map → deployment-links-DBUSCaxB.js.map} +1 -1
  56. prefect/server/ui-v2/assets/{deployment._id-DvHhx-qN.js → deployment._id-BXanVFA8.js} +2 -2
  57. prefect/server/ui-v2/assets/{deployment._id-DvHhx-qN.js.map → deployment._id-BXanVFA8.js.map} +1 -1
  58. prefect/server/ui-v2/assets/{deployment._id-BV0rSqba.js → deployment._id-Q5cvHMX9.js} +2 -2
  59. prefect/server/ui-v2/assets/{deployment._id-BV0rSqba.js.map → deployment._id-Q5cvHMX9.js.map} +1 -1
  60. prefect/server/ui-v2/assets/deployment_._id.duplicate-DB-4hHHc.js +2 -0
  61. prefect/server/ui-v2/assets/{deployment_._id.duplicate-BrEOenqP.js.map → deployment_._id.duplicate-DB-4hHHc.js.map} +1 -1
  62. prefect/server/ui-v2/assets/deployment_._id.edit-CWf1RIGy.js +2 -0
  63. prefect/server/ui-v2/assets/{deployment_._id.edit-BbYKPK42.js.map → deployment_._id.edit-CWf1RIGy.js.map} +1 -1
  64. prefect/server/ui-v2/assets/{deployment_._id.run-Dv7S_MJR.js → deployment_._id.run-CoHGXFoM.js} +2 -2
  65. prefect/server/ui-v2/assets/{deployment_._id.run-Dv7S_MJR.js.map → deployment_._id.run-CoHGXFoM.js.map} +1 -1
  66. prefect/server/ui-v2/assets/{dropdown-menu-e0Fqb6aw.js → dropdown-menu-CT-s-V7d.js} +2 -2
  67. prefect/server/ui-v2/assets/{dropdown-menu-e0Fqb6aw.js.map → dropdown-menu-CT-s-V7d.js.map} +1 -1
  68. prefect/server/ui-v2/assets/{event._eventDate._eventId-Cp4UmGqq.js → event._eventDate._eventId-BITo_GYL.js} +2 -2
  69. prefect/server/ui-v2/assets/{event._eventDate._eventId-Cp4UmGqq.js.map → event._eventDate._eventId-BITo_GYL.js.map} +1 -1
  70. prefect/server/ui-v2/assets/flow-run-graph-DxIl6fzW.js +2 -0
  71. prefect/server/ui-v2/assets/{flow-run-graph-BrqoR3E2.js.map → flow-run-graph-DxIl6fzW.js.map} +1 -1
  72. prefect/server/ui-v2/assets/{flow-run._id-BOp38Pbq.js → flow-run._id-Bbm9OpDi.js} +2 -2
  73. prefect/server/ui-v2/assets/{flow-run._id-BOp38Pbq.js.map → flow-run._id-Bbm9OpDi.js.map} +1 -1
  74. prefect/server/ui-v2/assets/{flow-run._id-DJnTDEN_.js → flow-run._id-BtSgRDtA.js} +2 -2
  75. prefect/server/ui-v2/assets/{flow-run._id-DJnTDEN_.js.map → flow-run._id-BtSgRDtA.js.map} +1 -1
  76. prefect/server/ui-v2/assets/flow-run._id-DJuMECRh.js +4 -0
  77. prefect/server/ui-v2/assets/flow-run._id-DJuMECRh.js.map +1 -0
  78. prefect/server/ui-v2/assets/{flow-runs-pagination-Bq2ZUzM6.js → flow-runs-pagination-LrU9Aio8.js} +2 -2
  79. prefect/server/ui-v2/assets/{flow-runs-pagination-Bq2ZUzM6.js.map → flow-runs-pagination-LrU9Aio8.js.map} +1 -1
  80. prefect/server/ui-v2/assets/{flow._id-eCBL95rg.js → flow._id-BJBRokk4.js} +2 -2
  81. prefect/server/ui-v2/assets/{flow._id-eCBL95rg.js.map → flow._id-BJBRokk4.js.map} +1 -1
  82. prefect/server/ui-v2/assets/{form-DNerk3LS.js → form-CVSlEnl8.js} +2 -2
  83. prefect/server/ui-v2/assets/{form-DNerk3LS.js.map → form-CVSlEnl8.js.map} +1 -1
  84. prefect/server/ui-v2/assets/{header-DwagHBlF.js → header-4plZZheZ.js} +2 -2
  85. prefect/server/ui-v2/assets/{header-DwagHBlF.js.map → header-4plZZheZ.js.map} +1 -1
  86. prefect/server/ui-v2/assets/{header-huSvwxKI.js → header-9rXZ4r39.js} +2 -2
  87. prefect/server/ui-v2/assets/{header-huSvwxKI.js.map → header-9rXZ4r39.js.map} +1 -1
  88. prefect/server/ui-v2/assets/{header-B0ejRncu.js → header-D3uM8_xM.js} +2 -2
  89. prefect/server/ui-v2/assets/{header-B0ejRncu.js.map → header-D3uM8_xM.js.map} +1 -1
  90. prefect/server/ui-v2/assets/{index-DI2DC5gd.js → index-6OsEYhIi.js} +2 -2
  91. prefect/server/ui-v2/assets/{index-DI2DC5gd.js.map → index-6OsEYhIi.js.map} +1 -1
  92. prefect/server/ui-v2/assets/{index-BzN9bQeM.js → index-B7xsJ-QH.js} +2 -2
  93. prefect/server/ui-v2/assets/{index-BzN9bQeM.js.map → index-B7xsJ-QH.js.map} +1 -1
  94. prefect/server/ui-v2/assets/{index-CnIJUujl.js → index-BeoNC2tJ.js} +2 -2
  95. prefect/server/ui-v2/assets/{index-CnIJUujl.js.map → index-BeoNC2tJ.js.map} +1 -1
  96. prefect/server/ui-v2/assets/{index-CTnoa3Ho.js → index-BfJLUM7N.js} +2 -2
  97. prefect/server/ui-v2/assets/{index-CTnoa3Ho.js.map → index-BfJLUM7N.js.map} +1 -1
  98. prefect/server/ui-v2/assets/{index-CWkbSdxY.js → index-Bj0OOguP.js} +2 -2
  99. prefect/server/ui-v2/assets/{index-CWkbSdxY.js.map → index-Bj0OOguP.js.map} +1 -1
  100. prefect/server/ui-v2/assets/{index-CBhi1P9g.js → index-BlpD74iH.js} +2 -2
  101. prefect/server/ui-v2/assets/{index-CBhi1P9g.js.map → index-BlpD74iH.js.map} +1 -1
  102. prefect/server/ui-v2/assets/{index-D5RdrxkU.js → index-BvSl3DKP.js} +8 -8
  103. prefect/server/ui-v2/assets/index-BvSl3DKP.js.map +1 -0
  104. prefect/server/ui-v2/assets/{index-BU4yZRd3.js → index-CDwJvjUM.js} +2 -2
  105. prefect/server/ui-v2/assets/{index-BU4yZRd3.js.map → index-CDwJvjUM.js.map} +1 -1
  106. prefect/server/ui-v2/assets/{index-CRDz4nhM.js → index-CDyLkbVG.js} +2 -2
  107. prefect/server/ui-v2/assets/{index-CRDz4nhM.js.map → index-CDyLkbVG.js.map} +1 -1
  108. prefect/server/ui-v2/assets/{index-Cutg_A1j.js → index-ChIrfjIW.js} +2 -2
  109. prefect/server/ui-v2/assets/{index-Cutg_A1j.js.map → index-ChIrfjIW.js.map} +1 -1
  110. prefect/server/ui-v2/assets/{index-BhALpenO.js → index-CzCSgCK-.js} +2 -2
  111. prefect/server/ui-v2/assets/{index-BhALpenO.js.map → index-CzCSgCK-.js.map} +1 -1
  112. prefect/server/ui-v2/assets/{index-Dg_duvDx.js → index-D5v9S-lB.js} +2 -2
  113. prefect/server/ui-v2/assets/{index-Dg_duvDx.js.map → index-D5v9S-lB.js.map} +1 -1
  114. prefect/server/ui-v2/assets/{index-DDiyFpIV.js → index-D6GJ4go1.js} +2 -2
  115. prefect/server/ui-v2/assets/{index-DDiyFpIV.js.map → index-D6GJ4go1.js.map} +1 -1
  116. prefect/server/ui-v2/assets/{index-dSUEBAqg.js → index-DJyKqsFO.js} +2 -2
  117. prefect/server/ui-v2/assets/{index-dSUEBAqg.js.map → index-DJyKqsFO.js.map} +1 -1
  118. prefect/server/ui-v2/assets/{index-BO3SOwdV.js → index-DODEq1Pi.js} +2 -2
  119. prefect/server/ui-v2/assets/{index-BO3SOwdV.js.map → index-DODEq1Pi.js.map} +1 -1
  120. prefect/server/ui-v2/assets/{index-Dspw5HFj.js → index-DicK6p3K.js} +2 -2
  121. prefect/server/ui-v2/assets/{index-Dspw5HFj.js.map → index-DicK6p3K.js.map} +1 -1
  122. prefect/server/ui-v2/assets/{index-VOOLxiSE.js → index-DqCPbST9.js} +2 -2
  123. prefect/server/ui-v2/assets/{index-VOOLxiSE.js.map → index-DqCPbST9.js.map} +1 -1
  124. prefect/server/ui-v2/assets/{index-BTPE3vs7.js → index-DxPoKag8.js} +2 -2
  125. prefect/server/ui-v2/assets/{index-BTPE3vs7.js.map → index-DxPoKag8.js.map} +1 -1
  126. prefect/server/ui-v2/assets/{index-Wfs7Cjew.js → index-h9-QgNjZ.js} +2 -2
  127. prefect/server/ui-v2/assets/{index-Wfs7Cjew.js.map → index-h9-QgNjZ.js.map} +1 -1
  128. prefect/server/ui-v2/assets/{index-uvH5a3zO.js → index-tBdv6kBF.js} +2 -2
  129. prefect/server/ui-v2/assets/{index-uvH5a3zO.js.map → index-tBdv6kBF.js.map} +1 -1
  130. prefect/server/ui-v2/assets/{index-CgOsOj5t.js → index-udb79rgq.js} +2 -2
  131. prefect/server/ui-v2/assets/{index-CgOsOj5t.js.map → index-udb79rgq.js.map} +1 -1
  132. prefect/server/ui-v2/assets/{json-input-gXz7BuJj.js → json-input-Dt1icmrn.js} +2 -2
  133. prefect/server/ui-v2/assets/{json-input-gXz7BuJj.js.map → json-input-Dt1icmrn.js.map} +1 -1
  134. prefect/server/ui-v2/assets/{key._key-CJPbLXwU.js → key._key-Cyh5MBX_.js} +2 -2
  135. prefect/server/ui-v2/assets/{key._key-CJPbLXwU.js.map → key._key-Cyh5MBX_.js.map} +1 -1
  136. prefect/server/ui-v2/assets/{lazy-markdown-wPid80zf.js → lazy-markdown-BwIwKFRF.js} +2 -2
  137. prefect/server/ui-v2/assets/{lazy-markdown-wPid80zf.js.map → lazy-markdown-BwIwKFRF.js.map} +1 -1
  138. prefect/server/ui-v2/assets/{login-DC63bGXK.js → login-DKXFVSwk.js} +2 -2
  139. prefect/server/ui-v2/assets/{login-DC63bGXK.js.map → login-DKXFVSwk.js.map} +1 -1
  140. prefect/server/ui-v2/assets/{markdown-input-BhqrU6Eo.js → markdown-input-Dp0mBlkV.js} +2 -2
  141. prefect/server/ui-v2/assets/{markdown-input-BhqrU6Eo.js.map → markdown-input-Dp0mBlkV.js.map} +1 -1
  142. prefect/server/ui-v2/assets/{python-example-snippet-3jtXWQZN.js → python-example-snippet-BYwPjHI5.js} +3 -3
  143. prefect/server/ui-v2/assets/{python-example-snippet-3jtXWQZN.js.map → python-example-snippet-BYwPjHI5.js.map} +1 -1
  144. prefect/server/ui-v2/assets/{python-input-ZVi-v324.js → python-input-y26XMqXw.js} +2 -2
  145. prefect/server/ui-v2/assets/{python-input-ZVi-v324.js.map → python-input-y26XMqXw.js.map} +1 -1
  146. prefect/server/ui-v2/assets/{radio-group-BBMLpHGc.js → radio-group-D0van45v.js} +2 -2
  147. prefect/server/ui-v2/assets/{radio-group-BBMLpHGc.js.map → radio-group-D0van45v.js.map} +1 -1
  148. prefect/server/ui-v2/assets/{route-error-state-BJXl8qkX.js → route-error-state-CGGpuCGN.js} +2 -2
  149. prefect/server/ui-v2/assets/{route-error-state-BJXl8qkX.js.map → route-error-state-CGGpuCGN.js.map} +1 -1
  150. prefect/server/ui-v2/assets/{schema-form-BEqYjsM-.js → schema-form-2tg5SXM4.js} +2 -2
  151. prefect/server/ui-v2/assets/{schema-form-BEqYjsM-.js.map → schema-form-2tg5SXM4.js.map} +1 -1
  152. prefect/server/ui-v2/assets/{schema-form-input-string-format-datetime-l3xt3PWf.js → schema-form-input-string-format-datetime-CZt6AJ4z.js} +4 -4
  153. prefect/server/ui-v2/assets/{schema-form-input-string-format-datetime-l3xt3PWf.js.map → schema-form-input-string-format-datetime-CZt6AJ4z.js.map} +1 -1
  154. prefect/server/ui-v2/assets/{settings-txD0dR5Q.js → settings-DDUadk_N.js} +2 -2
  155. prefect/server/ui-v2/assets/{settings-txD0dR5Q.js.map → settings-DDUadk_N.js.map} +1 -1
  156. prefect/server/ui-v2/assets/{sort-filter-DHPFdKZ2.js → sort-filter-D9p3cPx9.js} +2 -2
  157. prefect/server/ui-v2/assets/{sort-filter-DHPFdKZ2.js.map → sort-filter-D9p3cPx9.js.map} +1 -1
  158. prefect/server/ui-v2/assets/{table-ULfpXJXB.js → table-vo9Do8sA.js} +2 -2
  159. prefect/server/ui-v2/assets/{table-ULfpXJXB.js.map → table-vo9Do8sA.js.map} +1 -1
  160. prefect/server/ui-v2/assets/{tags-input-BLzMOTDb.js → tags-input-Ci2JQ-k3.js} +2 -2
  161. prefect/server/ui-v2/assets/{tags-input-BLzMOTDb.js.map → tags-input-Ci2JQ-k3.js.map} +1 -1
  162. prefect/server/ui-v2/assets/{task-run-concurrency-limits-reset-dialog-BpeKHk7g.js → task-run-concurrency-limits-reset-dialog-CJzPc2gw.js} +2 -2
  163. prefect/server/ui-v2/assets/{task-run-concurrency-limits-reset-dialog-BpeKHk7g.js.map → task-run-concurrency-limits-reset-dialog-CJzPc2gw.js.map} +1 -1
  164. prefect/server/ui-v2/assets/{task-run._id-CkOl9MJs.js → task-run._id-CjevSs79.js} +2 -2
  165. prefect/server/ui-v2/assets/{task-run._id-CkOl9MJs.js.map → task-run._id-CjevSs79.js.map} +1 -1
  166. prefect/server/ui-v2/assets/{task-run._id-udkz1lhh.js → task-run._id-D8QKG5UZ.js} +2 -2
  167. prefect/server/ui-v2/assets/{task-run._id-udkz1lhh.js.map → task-run._id-D8QKG5UZ.js.map} +1 -1
  168. prefect/server/ui-v2/assets/{task-runs-pagination-B7D5K_FM.js → task-runs-pagination-CifoSGct.js} +2 -2
  169. prefect/server/ui-v2/assets/{task-runs-pagination-B7D5K_FM.js.map → task-runs-pagination-CifoSGct.js.map} +1 -1
  170. prefect/server/ui-v2/assets/{textarea-C4bdj7Jk.js → textarea-BAtfAxtV.js} +2 -2
  171. prefect/server/ui-v2/assets/{textarea-C4bdj7Jk.js.map → textarea-BAtfAxtV.js.map} +1 -1
  172. prefect/server/ui-v2/assets/{timezone-select-AdlSRQxZ.js → timezone-select-QlQTZSsF.js} +2 -2
  173. prefect/server/ui-v2/assets/{timezone-select-AdlSRQxZ.js.map → timezone-select-QlQTZSsF.js.map} +1 -1
  174. prefect/server/ui-v2/assets/{toggle-group-C-vxYz4l.js → toggle-group-BJN1vjEh.js} +2 -2
  175. prefect/server/ui-v2/assets/{toggle-group-C-vxYz4l.js.map → toggle-group-BJN1vjEh.js.map} +1 -1
  176. prefect/server/ui-v2/assets/{use-delete-automation-confirmation-dialog-Cqhaqtqe.js → use-delete-automation-confirmation-dialog-eOWJYPkD.js} +2 -2
  177. prefect/server/ui-v2/assets/{use-delete-automation-confirmation-dialog-Cqhaqtqe.js.map → use-delete-automation-confirmation-dialog-eOWJYPkD.js.map} +1 -1
  178. prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-GjNhFxZe.js → use-delete-block-document-confirmation-dialog-BTwSeHRM.js} +2 -2
  179. prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-GjNhFxZe.js.map → use-delete-block-document-confirmation-dialog-BTwSeHRM.js.map} +1 -1
  180. prefect/server/ui-v2/assets/{use-flow-runs-selected-rows-DfwmswyR.js → use-flow-runs-selected-rows-BL_Gv9CC.js} +2 -2
  181. prefect/server/ui-v2/assets/{use-flow-runs-selected-rows-DfwmswyR.js.map → use-flow-runs-selected-rows-BL_Gv9CC.js.map} +1 -1
  182. prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-BEBpG_5J.js → use-get-artifacts-flow-task-runs-TSCoomjQ.js} +2 -2
  183. prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-BEBpG_5J.js.map → use-get-artifacts-flow-task-runs-TSCoomjQ.js.map} +1 -1
  184. prefect/server/ui-v2/assets/{use-quick-run-BYBRcDwC.js → use-quick-run-BMnCkwSv.js} +2 -2
  185. prefect/server/ui-v2/assets/{use-quick-run-BYBRcDwC.js.map → use-quick-run-BMnCkwSv.js.map} +1 -1
  186. prefect/server/ui-v2/assets/{use-stepper-Bk97vOTm.js → use-stepper-C1wm66U2.js} +2 -2
  187. prefect/server/ui-v2/assets/{use-stepper-Bk97vOTm.js.map → use-stepper-C1wm66U2.js.map} +1 -1
  188. prefect/server/ui-v2/assets/{utilities-BQwGFLk5.js → utilities-DxRXxFOF.js} +2 -2
  189. prefect/server/ui-v2/assets/{utilities-BQwGFLk5.js.map → utilities-DxRXxFOF.js.map} +1 -1
  190. prefect/server/ui-v2/assets/{work-pool-filter-Ddhp_M-L.js → work-pool-filter-PudrkZYj.js} +2 -2
  191. prefect/server/ui-v2/assets/{work-pool-filter-Ddhp_M-L.js.map → work-pool-filter-PudrkZYj.js.map} +1 -1
  192. prefect/server/ui-v2/assets/{work-pool-queue-toggle-DX3eV3R_.js → work-pool-queue-toggle-BAOrV_0R.js} +2 -2
  193. prefect/server/ui-v2/assets/{work-pool-queue-toggle-DX3eV3R_.js.map → work-pool-queue-toggle-BAOrV_0R.js.map} +1 -1
  194. prefect/server/ui-v2/assets/{work-pool._workPoolName-BaRIsXBX.js → work-pool._workPoolName-BOM3849e.js} +2 -2
  195. prefect/server/ui-v2/assets/{work-pool._workPoolName-BaRIsXBX.js.map → work-pool._workPoolName-BOM3849e.js.map} +1 -1
  196. prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-dhS_Xz32.js → work-pool_._workPoolName.edit-CIhcG6yr.js} +2 -2
  197. prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-dhS_Xz32.js.map → work-pool_._workPoolName.edit-CIhcG6yr.js.map} +1 -1
  198. prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-BlstL9Se.js → work-pool_._workPoolName.queue._workQueueName-CjoM77tu.js} +2 -2
  199. prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-BlstL9Se.js.map → work-pool_._workPoolName.queue._workQueueName-CjoM77tu.js.map} +1 -1
  200. prefect/server/ui-v2/assets/{work-queue-icon-text-_Ez8e2dw.js → work-queue-icon-text-CP4yX3uM.js} +2 -2
  201. prefect/server/ui-v2/assets/{work-queue-icon-text-_Ez8e2dw.js.map → work-queue-icon-text-CP4yX3uM.js.map} +1 -1
  202. prefect/server/ui-v2/index.html +1 -1
  203. prefect/settings/models/flows.py +1 -14
  204. prefect/settings/models/runner.py +6 -16
  205. prefect/task_engine.py +3 -1
  206. prefect/task_worker.py +1 -1
  207. prefect/tasks.py +2 -2
  208. prefect/testing/fixtures.py +5 -23
  209. {prefect-3.6.13.dist-info → prefect-3.6.13.dev2.dist-info}/METADATA +1 -1
  210. {prefect-3.6.13.dist-info → prefect-3.6.13.dev2.dist-info}/RECORD +213 -213
  211. prefect/server/ui-v2/assets/block-type-logo-DURScH8H.js +0 -2
  212. prefect/server/ui-v2/assets/deployment_._id.duplicate-BrEOenqP.js +0 -2
  213. prefect/server/ui-v2/assets/deployment_._id.edit-BbYKPK42.js +0 -2
  214. prefect/server/ui-v2/assets/flow-run-graph-BrqoR3E2.js +0 -2
  215. prefect/server/ui-v2/assets/flow-run._id-D_wY_rBe.js +0 -4
  216. prefect/server/ui-v2/assets/flow-run._id-D_wY_rBe.js.map +0 -1
  217. prefect/server/ui-v2/assets/index-D5RdrxkU.js.map +0 -1
  218. {prefect-3.6.13.dist-info → prefect-3.6.13.dev2.dist-info}/WHEEL +0 -0
  219. {prefect-3.6.13.dist-info → prefect-3.6.13.dev2.dist-info}/entry_points.txt +0 -0
  220. {prefect-3.6.13.dist-info → prefect-3.6.13.dev2.dist-info}/licenses/LICENSE +0 -0
@@ -1,2 +1,2 @@
1
- import{f as g,j as e,p as F}from"./vendor-tanstack-BK8oseNA.js";import{dx as B,C,o as S,i as m,p as l,q as p,y as d,B as P,g as J,h as i,bs as u,bB as x,bD as E,dy as L,b_ as W}from"./index-D5RdrxkU.js";import{o as _,r as R,n as I,s as U,u as $,c as D}from"./vendor-forms-DxqqmhL5.js";import{a as O}from"./zod-DgSl2Nua.js";import{F as Q,b,c as j,d as h,e as y,a as k}from"./form-DNerk3LS.js";import{T as V}from"./textarea-C4bdj7Jk.js";import{B as q}from"./base-job-template-form-section-DN9HyjM5.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-CznP1SOq.js";import"./vendor-recharts-D4imLXNl.js";import"./vendor-date-7GxEwcQM.js";import"./schema-form-input-string-format-datetime-l3xt3PWf.js";import"./use-debounce-callback-ClAx-Wwx.js";import"./toggle-group-C-vxYz4l.js";import"./timezone-select-AdlSRQxZ.js";import"./dropdown-menu-e0Fqb6aw.js";import"./schema-form-BEqYjsM-.js";const G=_({description:U().nullable().optional(),concurrencyLimit:I().min(0).nullable().optional(),baseJobTemplate:R($()).optional()}),H=({workPool:s})=>{const a=g(),{updateWorkPool:v,isPending:t}=B(),r=D({resolver:O(G),defaultValues:{description:s.description??"",concurrencyLimit:s.concurrency_limit??null,baseJobTemplate:s.base_job_template}}),w=r.watch("baseJobTemplate"),f=s.type!=="prefect-agent",N=()=>{a.history.back()},T=o=>{v({name:s.name,workPool:{description:o.description||null,concurrency_limit:o.concurrencyLimit,base_job_template:o.baseJobTemplate}},{onSuccess:()=>{d.success("Work pool updated"),a.navigate({to:"/work-pools/work-pool/$workPoolName",params:{workPoolName:s.name}})},onError:n=>{d.error(`Failed to update work pool: ${n instanceof Error?n.message:"Unknown error"}`)}})};return e.jsx(Q,{...r,children:e.jsxs("form",{onSubmit:o=>{r.handleSubmit(T)(o)},className:"space-y-6",children:[e.jsx(C,{children:e.jsxs(S,{className:"pt-6 space-y-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"work-pool-name",children:"Name"}),e.jsx(l,{id:"work-pool-name",value:s.name,disabled:!0})]}),e.jsx(b,{control:r.control,name:"description",render:({field:o})=>e.jsxs(j,{children:[e.jsx(h,{children:"Description (Optional)"}),e.jsx(y,{children:e.jsx(V,{...o,value:o.value??"",rows:7,placeholder:"Enter a description for your work pool"})}),e.jsx(k,{})]})}),e.jsx(b,{control:r.control,name:"concurrencyLimit",render:({field:o})=>e.jsxs(j,{children:[e.jsx(h,{children:"Flow Run Concurrency (Optional)"}),e.jsx(y,{children:e.jsx(l,{...o,type:"number",min:0,placeholder:"Unlimited",value:o.value??"",onChange:n=>{const c=n.target.value;o.onChange(c===""?null:Number(c))}})}),e.jsx(k,{})]})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"work-pool-type",children:"Type"}),e.jsx(l,{id:"work-pool-type",value:s.type,disabled:!0})]})]})}),f&&e.jsx(q,{baseJobTemplate:w,onBaseJobTemplateChange:o=>{r.setValue("baseJobTemplate",o)}}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(p,{type:"button",variant:"outline",onClick:N,disabled:t,children:"Cancel"}),e.jsx(p,{type:"submit",disabled:t,children:t?"Saving...":"Save"})]})]})})},M=({workPool:s})=>e.jsx("header",{className:"mb-6",children:e.jsx(P,{children:e.jsxs(J,{children:[e.jsx(i,{children:e.jsx(u,{to:"/work-pools",className:"text-xl font-semibold",children:"Work Pools"})}),e.jsx(x,{}),e.jsx(i,{children:e.jsx(u,{to:"/work-pools/work-pool/$workPoolName",params:{workPoolName:s.name},className:"text-xl font-semibold",children:s.name})}),e.jsx(x,{}),e.jsx(i,{className:"text-xl font-semibold",children:e.jsx(E,{children:"Edit"})})]})})});function pe(){const{workPoolName:s}=L.useParams(),{data:a}=F(W(s));return e.jsxs("div",{className:"container max-w-4xl py-6",children:[e.jsx(M,{workPool:a}),e.jsx(H,{workPool:a})]})}export{pe as component};
2
- //# sourceMappingURL=work-pool_._workPoolName.edit-dhS_Xz32.js.map
1
+ import{f as g,j as e,p as F}from"./vendor-tanstack-BK8oseNA.js";import{dx as B,C,o as S,i as m,p as l,q as p,y as d,B as P,g as J,h as i,bs as u,bB as x,bD as E,dy as L,b_ as W}from"./index-BvSl3DKP.js";import{o as _,r as R,n as I,s as U,u as $,c as D}from"./vendor-forms-DxqqmhL5.js";import{a as O}from"./zod-DgSl2Nua.js";import{F as Q,b,c as j,d as h,e as y,a as k}from"./form-CVSlEnl8.js";import{T as V}from"./textarea-BAtfAxtV.js";import{B as q}from"./base-job-template-form-section-BDkqOkpe.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-CznP1SOq.js";import"./vendor-recharts-D4imLXNl.js";import"./vendor-date-7GxEwcQM.js";import"./schema-form-input-string-format-datetime-CZt6AJ4z.js";import"./use-debounce-callback-ClAx-Wwx.js";import"./toggle-group-BJN1vjEh.js";import"./timezone-select-QlQTZSsF.js";import"./dropdown-menu-CT-s-V7d.js";import"./schema-form-2tg5SXM4.js";const G=_({description:U().nullable().optional(),concurrencyLimit:I().min(0).nullable().optional(),baseJobTemplate:R($()).optional()}),H=({workPool:s})=>{const a=g(),{updateWorkPool:v,isPending:t}=B(),r=D({resolver:O(G),defaultValues:{description:s.description??"",concurrencyLimit:s.concurrency_limit??null,baseJobTemplate:s.base_job_template}}),w=r.watch("baseJobTemplate"),f=s.type!=="prefect-agent",N=()=>{a.history.back()},T=o=>{v({name:s.name,workPool:{description:o.description||null,concurrency_limit:o.concurrencyLimit,base_job_template:o.baseJobTemplate}},{onSuccess:()=>{d.success("Work pool updated"),a.navigate({to:"/work-pools/work-pool/$workPoolName",params:{workPoolName:s.name}})},onError:n=>{d.error(`Failed to update work pool: ${n instanceof Error?n.message:"Unknown error"}`)}})};return e.jsx(Q,{...r,children:e.jsxs("form",{onSubmit:o=>{r.handleSubmit(T)(o)},className:"space-y-6",children:[e.jsx(C,{children:e.jsxs(S,{className:"pt-6 space-y-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"work-pool-name",children:"Name"}),e.jsx(l,{id:"work-pool-name",value:s.name,disabled:!0})]}),e.jsx(b,{control:r.control,name:"description",render:({field:o})=>e.jsxs(j,{children:[e.jsx(h,{children:"Description (Optional)"}),e.jsx(y,{children:e.jsx(V,{...o,value:o.value??"",rows:7,placeholder:"Enter a description for your work pool"})}),e.jsx(k,{})]})}),e.jsx(b,{control:r.control,name:"concurrencyLimit",render:({field:o})=>e.jsxs(j,{children:[e.jsx(h,{children:"Flow Run Concurrency (Optional)"}),e.jsx(y,{children:e.jsx(l,{...o,type:"number",min:0,placeholder:"Unlimited",value:o.value??"",onChange:n=>{const c=n.target.value;o.onChange(c===""?null:Number(c))}})}),e.jsx(k,{})]})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"work-pool-type",children:"Type"}),e.jsx(l,{id:"work-pool-type",value:s.type,disabled:!0})]})]})}),f&&e.jsx(q,{baseJobTemplate:w,onBaseJobTemplateChange:o=>{r.setValue("baseJobTemplate",o)}}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(p,{type:"button",variant:"outline",onClick:N,disabled:t,children:"Cancel"}),e.jsx(p,{type:"submit",disabled:t,children:t?"Saving...":"Save"})]})]})})},M=({workPool:s})=>e.jsx("header",{className:"mb-6",children:e.jsx(P,{children:e.jsxs(J,{children:[e.jsx(i,{children:e.jsx(u,{to:"/work-pools",className:"text-xl font-semibold",children:"Work Pools"})}),e.jsx(x,{}),e.jsx(i,{children:e.jsx(u,{to:"/work-pools/work-pool/$workPoolName",params:{workPoolName:s.name},className:"text-xl font-semibold",children:s.name})}),e.jsx(x,{}),e.jsx(i,{className:"text-xl font-semibold",children:e.jsx(E,{children:"Edit"})})]})})});function pe(){const{workPoolName:s}=L.useParams(),{data:a}=F(W(s));return e.jsxs("div",{className:"container max-w-4xl py-6",children:[e.jsx(M,{workPool:a}),e.jsx(H,{workPool:a})]})}export{pe as component};
2
+ //# sourceMappingURL=work-pool_._workPoolName.edit-CIhcG6yr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"work-pool_._workPoolName.edit-dhS_Xz32.js","sources":["../../src/components/work-pools/edit/schema.ts","../../src/components/work-pools/edit/work-pool-edit-form.tsx","../../src/components/work-pools/edit/work-pool-edit-page-header.tsx","../../src/routes/work-pools/work-pool_.$workPoolName.edit.tsx?tsr-split=component"],"sourcesContent":["import { z } from \"zod\";\nimport type { WorkerBaseJobTemplate } from \"@/components/work-pools/types\";\n\nexport type { WorkerBaseJobTemplate };\n\nexport const workPoolEditSchema = z.object({\n\tdescription: z.string().nullable().optional(),\n\tconcurrencyLimit: z.number().min(0).nullable().optional(),\n\tbaseJobTemplate: z.record(z.unknown()).optional(),\n});\n\nexport type WorkPoolEditFormValues = z.infer<typeof workPoolEditSchema>;\n","import { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useRouter } from \"@tanstack/react-router\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport { useUpdateWorkPool, type WorkPool } from \"@/api/work-pools\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card, CardContent } from \"@/components/ui/card\";\nimport {\n\tForm,\n\tFormControl,\n\tFormField,\n\tFormItem,\n\tFormLabel,\n\tFormMessage,\n} from \"@/components/ui/form\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport { BaseJobTemplateFormSection } from \"../create/infrastructure-configuration-step/base-job-template-form-section\";\nimport {\n\ttype WorkerBaseJobTemplate,\n\ttype WorkPoolEditFormValues,\n\tworkPoolEditSchema,\n} from \"./schema\";\n\ntype WorkPoolEditFormProps = {\n\tworkPool: WorkPool;\n};\n\nexport const WorkPoolEditForm = ({ workPool }: WorkPoolEditFormProps) => {\n\tconst router = useRouter();\n\tconst { updateWorkPool, isPending } = useUpdateWorkPool();\n\n\tconst form = useForm<WorkPoolEditFormValues>({\n\t\tresolver: zodResolver(workPoolEditSchema),\n\t\tdefaultValues: {\n\t\t\tdescription: workPool.description ?? \"\",\n\t\t\tconcurrencyLimit: workPool.concurrency_limit ?? null,\n\t\t\tbaseJobTemplate: workPool.base_job_template as Record<string, unknown>,\n\t\t},\n\t});\n\n\tconst baseJobTemplate = form.watch(\"baseJobTemplate\") as\n\t\t| WorkerBaseJobTemplate\n\t\t| undefined;\n\tconst showBaseJobTemplateSection = workPool.type !== \"prefect-agent\";\n\n\tconst handleCancel = () => {\n\t\trouter.history.back();\n\t};\n\n\tconst handleSubmit = (data: WorkPoolEditFormValues) => {\n\t\tupdateWorkPool(\n\t\t\t{\n\t\t\t\tname: workPool.name,\n\t\t\t\tworkPool: {\n\t\t\t\t\tdescription: data.description || null,\n\t\t\t\t\tconcurrency_limit: data.concurrencyLimit,\n\t\t\t\t\tbase_job_template: data.baseJobTemplate,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tonSuccess: () => {\n\t\t\t\t\ttoast.success(\"Work pool updated\");\n\t\t\t\t\tvoid router.navigate({\n\t\t\t\t\t\tto: \"/work-pools/work-pool/$workPoolName\",\n\t\t\t\t\t\tparams: { workPoolName: workPool.name },\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tonError: (error) => {\n\t\t\t\t\ttoast.error(\n\t\t\t\t\t\t`Failed to update work pool: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t};\n\n\treturn (\n\t\t<Form {...form}>\n\t\t\t<form\n\t\t\t\tonSubmit={(e) => void form.handleSubmit(handleSubmit)(e)}\n\t\t\t\tclassName=\"space-y-6\"\n\t\t\t>\n\t\t\t\t<Card>\n\t\t\t\t\t<CardContent className=\"pt-6 space-y-6\">\n\t\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t\t<Label htmlFor=\"work-pool-name\">Name</Label>\n\t\t\t\t\t\t\t<Input id=\"work-pool-name\" value={workPool.name} disabled />\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\t\tname=\"description\"\n\t\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t\t<FormLabel>Description (Optional)</FormLabel>\n\t\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t\t<Textarea\n\t\t\t\t\t\t\t\t\t\t\t{...field}\n\t\t\t\t\t\t\t\t\t\t\tvalue={field.value ?? \"\"}\n\t\t\t\t\t\t\t\t\t\t\trows={7}\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Enter a description for your work pool\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\t\tname=\"concurrencyLimit\"\n\t\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t\t<FormLabel>Flow Run Concurrency (Optional)</FormLabel>\n\t\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\t\t{...field}\n\t\t\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Unlimited\"\n\t\t\t\t\t\t\t\t\t\t\tvalue={field.value ?? \"\"}\n\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\tconst value = e.target.value;\n\t\t\t\t\t\t\t\t\t\t\t\tfield.onChange(value === \"\" ? null : Number(value));\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t\t<Label htmlFor=\"work-pool-type\">Type</Label>\n\t\t\t\t\t\t\t<Input id=\"work-pool-type\" value={workPool.type} disabled />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</CardContent>\n\t\t\t\t</Card>\n\n\t\t\t\t{showBaseJobTemplateSection && (\n\t\t\t\t\t<BaseJobTemplateFormSection\n\t\t\t\t\t\tbaseJobTemplate={baseJobTemplate}\n\t\t\t\t\t\tonBaseJobTemplateChange={(value) => {\n\t\t\t\t\t\t\tform.setValue(\"baseJobTemplate\", value);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"flex justify-end gap-2\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\tonClick={handleCancel}\n\t\t\t\t\t\tdisabled={isPending}\n\t\t\t\t\t>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button type=\"submit\" disabled={isPending}>\n\t\t\t\t\t\t{isPending ? \"Saving...\" : \"Save\"}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</Form>\n\t);\n};\n","import type { WorkPool } from \"@/api/work-pools\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\n\ntype WorkPoolEditPageHeaderProps = {\n\tworkPool: WorkPool;\n};\n\nexport const WorkPoolEditPageHeader = ({\n\tworkPool,\n}: WorkPoolEditPageHeaderProps) => {\n\treturn (\n\t\t<header className=\"mb-6\">\n\t\t\t<Breadcrumb>\n\t\t\t\t<BreadcrumbList>\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink to=\"/work-pools\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\t\tWork Pools\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\t\tto=\"/work-pools/work-pool/$workPoolName\"\n\t\t\t\t\t\t\tparams={{ workPoolName: workPool.name }}\n\t\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{workPool.name}\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t\t<BreadcrumbPage>Edit</BreadcrumbPage>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t</BreadcrumbList>\n\t\t\t</Breadcrumb>\n\t\t</header>\n\t);\n};\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { buildGetWorkPoolQuery } from \"@/api/work-pools/work-pools\";\nimport {\n\tWorkPoolEditForm,\n\tWorkPoolEditPageHeader,\n} from \"@/components/work-pools/edit\";\n\nexport const Route = createFileRoute(\n\t\"/work-pools/work-pool_/$workPoolName/edit\",\n)({\n\tcomponent: RouteComponent,\n\tloader: async ({ context, params }) => {\n\t\tconst { workPoolName } = params;\n\t\treturn context.queryClient.ensureQueryData(\n\t\t\tbuildGetWorkPoolQuery(workPoolName),\n\t\t);\n\t},\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { workPoolName } = Route.useParams();\n\tconst { data: workPool } = useSuspenseQuery(\n\t\tbuildGetWorkPoolQuery(workPoolName),\n\t);\n\n\treturn (\n\t\t<div className=\"container max-w-4xl py-6\">\n\t\t\t<WorkPoolEditPageHeader workPool={workPool} />\n\t\t\t<WorkPoolEditForm workPool={workPool} />\n\t\t</div>\n\t);\n}\n"],"names":["workPoolEditSchema","z.object","z.string","z.number","z.record","z.unknown","WorkPoolEditForm","workPool","router","useRouter","updateWorkPool","isPending","useUpdateWorkPool","form","useForm","zodResolver","baseJobTemplate","showBaseJobTemplateSection","handleCancel","handleSubmit","data","toast","error","jsx","Form","jsxs","e","Card","CardContent","Label","Input","FormField","field","FormItem","FormLabel","FormControl","Textarea","FormMessage","value","BaseJobTemplateFormSection","Button","WorkPoolEditPageHeader","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","RouteComponent","workPoolName","Route","useParams","useSuspenseQuery","buildGetWorkPoolQuery"],"mappings":"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"}
1
+ {"version":3,"file":"work-pool_._workPoolName.edit-CIhcG6yr.js","sources":["../../src/components/work-pools/edit/schema.ts","../../src/components/work-pools/edit/work-pool-edit-form.tsx","../../src/components/work-pools/edit/work-pool-edit-page-header.tsx","../../src/routes/work-pools/work-pool_.$workPoolName.edit.tsx?tsr-split=component"],"sourcesContent":["import { z } from \"zod\";\nimport type { WorkerBaseJobTemplate } from \"@/components/work-pools/types\";\n\nexport type { WorkerBaseJobTemplate };\n\nexport const workPoolEditSchema = z.object({\n\tdescription: z.string().nullable().optional(),\n\tconcurrencyLimit: z.number().min(0).nullable().optional(),\n\tbaseJobTemplate: z.record(z.unknown()).optional(),\n});\n\nexport type WorkPoolEditFormValues = z.infer<typeof workPoolEditSchema>;\n","import { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useRouter } from \"@tanstack/react-router\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport { useUpdateWorkPool, type WorkPool } from \"@/api/work-pools\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card, CardContent } from \"@/components/ui/card\";\nimport {\n\tForm,\n\tFormControl,\n\tFormField,\n\tFormItem,\n\tFormLabel,\n\tFormMessage,\n} from \"@/components/ui/form\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport { BaseJobTemplateFormSection } from \"../create/infrastructure-configuration-step/base-job-template-form-section\";\nimport {\n\ttype WorkerBaseJobTemplate,\n\ttype WorkPoolEditFormValues,\n\tworkPoolEditSchema,\n} from \"./schema\";\n\ntype WorkPoolEditFormProps = {\n\tworkPool: WorkPool;\n};\n\nexport const WorkPoolEditForm = ({ workPool }: WorkPoolEditFormProps) => {\n\tconst router = useRouter();\n\tconst { updateWorkPool, isPending } = useUpdateWorkPool();\n\n\tconst form = useForm<WorkPoolEditFormValues>({\n\t\tresolver: zodResolver(workPoolEditSchema),\n\t\tdefaultValues: {\n\t\t\tdescription: workPool.description ?? \"\",\n\t\t\tconcurrencyLimit: workPool.concurrency_limit ?? null,\n\t\t\tbaseJobTemplate: workPool.base_job_template as Record<string, unknown>,\n\t\t},\n\t});\n\n\tconst baseJobTemplate = form.watch(\"baseJobTemplate\") as\n\t\t| WorkerBaseJobTemplate\n\t\t| undefined;\n\tconst showBaseJobTemplateSection = workPool.type !== \"prefect-agent\";\n\n\tconst handleCancel = () => {\n\t\trouter.history.back();\n\t};\n\n\tconst handleSubmit = (data: WorkPoolEditFormValues) => {\n\t\tupdateWorkPool(\n\t\t\t{\n\t\t\t\tname: workPool.name,\n\t\t\t\tworkPool: {\n\t\t\t\t\tdescription: data.description || null,\n\t\t\t\t\tconcurrency_limit: data.concurrencyLimit,\n\t\t\t\t\tbase_job_template: data.baseJobTemplate,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tonSuccess: () => {\n\t\t\t\t\ttoast.success(\"Work pool updated\");\n\t\t\t\t\tvoid router.navigate({\n\t\t\t\t\t\tto: \"/work-pools/work-pool/$workPoolName\",\n\t\t\t\t\t\tparams: { workPoolName: workPool.name },\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tonError: (error) => {\n\t\t\t\t\ttoast.error(\n\t\t\t\t\t\t`Failed to update work pool: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t};\n\n\treturn (\n\t\t<Form {...form}>\n\t\t\t<form\n\t\t\t\tonSubmit={(e) => void form.handleSubmit(handleSubmit)(e)}\n\t\t\t\tclassName=\"space-y-6\"\n\t\t\t>\n\t\t\t\t<Card>\n\t\t\t\t\t<CardContent className=\"pt-6 space-y-6\">\n\t\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t\t<Label htmlFor=\"work-pool-name\">Name</Label>\n\t\t\t\t\t\t\t<Input id=\"work-pool-name\" value={workPool.name} disabled />\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\t\tname=\"description\"\n\t\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t\t<FormLabel>Description (Optional)</FormLabel>\n\t\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t\t<Textarea\n\t\t\t\t\t\t\t\t\t\t\t{...field}\n\t\t\t\t\t\t\t\t\t\t\tvalue={field.value ?? \"\"}\n\t\t\t\t\t\t\t\t\t\t\trows={7}\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Enter a description for your work pool\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\tcontrol={form.control}\n\t\t\t\t\t\t\tname=\"concurrencyLimit\"\n\t\t\t\t\t\t\trender={({ field }) => (\n\t\t\t\t\t\t\t\t<FormItem>\n\t\t\t\t\t\t\t\t\t<FormLabel>Flow Run Concurrency (Optional)</FormLabel>\n\t\t\t\t\t\t\t\t\t<FormControl>\n\t\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\t\t{...field}\n\t\t\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Unlimited\"\n\t\t\t\t\t\t\t\t\t\t\tvalue={field.value ?? \"\"}\n\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\tconst value = e.target.value;\n\t\t\t\t\t\t\t\t\t\t\t\tfield.onChange(value === \"\" ? null : Number(value));\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t\t<FormMessage />\n\t\t\t\t\t\t\t\t</FormItem>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t\t<Label htmlFor=\"work-pool-type\">Type</Label>\n\t\t\t\t\t\t\t<Input id=\"work-pool-type\" value={workPool.type} disabled />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</CardContent>\n\t\t\t\t</Card>\n\n\t\t\t\t{showBaseJobTemplateSection && (\n\t\t\t\t\t<BaseJobTemplateFormSection\n\t\t\t\t\t\tbaseJobTemplate={baseJobTemplate}\n\t\t\t\t\t\tonBaseJobTemplateChange={(value) => {\n\t\t\t\t\t\t\tform.setValue(\"baseJobTemplate\", value);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"flex justify-end gap-2\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\tonClick={handleCancel}\n\t\t\t\t\t\tdisabled={isPending}\n\t\t\t\t\t>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button type=\"submit\" disabled={isPending}>\n\t\t\t\t\t\t{isPending ? \"Saving...\" : \"Save\"}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</Form>\n\t);\n};\n","import type { WorkPool } from \"@/api/work-pools\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\n\ntype WorkPoolEditPageHeaderProps = {\n\tworkPool: WorkPool;\n};\n\nexport const WorkPoolEditPageHeader = ({\n\tworkPool,\n}: WorkPoolEditPageHeaderProps) => {\n\treturn (\n\t\t<header className=\"mb-6\">\n\t\t\t<Breadcrumb>\n\t\t\t\t<BreadcrumbList>\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink to=\"/work-pools\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\t\tWork Pools\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\t\tto=\"/work-pools/work-pool/$workPoolName\"\n\t\t\t\t\t\t\tparams={{ workPoolName: workPool.name }}\n\t\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{workPool.name}\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbSeparator />\n\n\t\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t\t<BreadcrumbPage>Edit</BreadcrumbPage>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t</BreadcrumbList>\n\t\t\t</Breadcrumb>\n\t\t</header>\n\t);\n};\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { buildGetWorkPoolQuery } from \"@/api/work-pools/work-pools\";\nimport {\n\tWorkPoolEditForm,\n\tWorkPoolEditPageHeader,\n} from \"@/components/work-pools/edit\";\n\nexport const Route = createFileRoute(\n\t\"/work-pools/work-pool_/$workPoolName/edit\",\n)({\n\tcomponent: RouteComponent,\n\tloader: async ({ context, params }) => {\n\t\tconst { workPoolName } = params;\n\t\treturn context.queryClient.ensureQueryData(\n\t\t\tbuildGetWorkPoolQuery(workPoolName),\n\t\t);\n\t},\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { workPoolName } = Route.useParams();\n\tconst { data: workPool } = useSuspenseQuery(\n\t\tbuildGetWorkPoolQuery(workPoolName),\n\t);\n\n\treturn (\n\t\t<div className=\"container max-w-4xl py-6\">\n\t\t\t<WorkPoolEditPageHeader workPool={workPool} />\n\t\t\t<WorkPoolEditForm workPool={workPool} />\n\t\t</div>\n\t);\n}\n"],"names":["workPoolEditSchema","z.object","z.string","z.number","z.record","z.unknown","WorkPoolEditForm","workPool","router","useRouter","updateWorkPool","isPending","useUpdateWorkPool","form","useForm","zodResolver","baseJobTemplate","showBaseJobTemplateSection","handleCancel","handleSubmit","data","toast","error","jsx","Form","jsxs","e","Card","CardContent","Label","Input","FormField","field","FormItem","FormLabel","FormControl","Textarea","FormMessage","value","BaseJobTemplateFormSection","Button","WorkPoolEditPageHeader","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","RouteComponent","workPoolName","Route","useParams","useSuspenseQuery","buildGetWorkPoolQuery"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{j as e,r as t,s as g,m as z,p as K}from"./vendor-tanstack-BK8oseNA.js";import{aW as y,bK as H,bM as T,B as X,g as Y,h as S,bs as Q,bB as D,bD as $,bN as G,aE as P,aC as W,ab as L,O as J,dP as k,dQ as Z,dR as q,c0 as ee,c1 as se,c2 as ae,aw as le,ax as ne,ay as te,az as C,b5 as o}from"./index-D5RdrxkU.js";import{W as oe,a as re,b as ie}from"./work-pool-queue-toggle-DX3eV3R_.js";import{S as ce,a as E,F as V}from"./flow-runs-pagination-Bq2ZUzM6.js";import{o as de,e as ue}from"./vendor-forms-DxqqmhL5.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-CznP1SOq.js";import"./vendor-recharts-D4imLXNl.js";import"./vendor-date-7GxEwcQM.js";import"./dropdown-menu-e0Fqb6aw.js";import"./zod-DgSl2Nua.js";import"./form-DNerk3LS.js";import"./textarea-C4bdj7Jk.js";import"./delete-confirmation-dialog-CqKsUEj_.js";const b=()=>e.jsx("dd",{className:"text-muted-foreground text-sm",children:"None"}),A=({children:s})=>e.jsx("dt",{className:"text-sm text-muted-foreground",children:s}),h=({children:s,className:a})=>e.jsx("dd",{className:y("text-sm",a),children:s});function me({workPoolName:s,queue:a}){const i=[{field:"Work Pool",ComponentValue:()=>e.jsx(h,{children:s})},{field:"Status",ComponentValue:()=>e.jsx("dd",{children:e.jsx(oe,{status:a.status||"NOT_READY"})})},{field:"Last Polled",ComponentValue:()=>a.last_polled?e.jsx(h,{children:e.jsx(T,{date:a.last_polled})}):e.jsx(h,{className:"text-muted-foreground",children:"Never"})},{field:"Description",ComponentValue:()=>a.description?e.jsx(h,{children:a.description}):null},{field:"Priority",ComponentValue:()=>a.priority!==null&&a.priority!==void 0?e.jsx(h,{children:String(a.priority)}):e.jsx(b,{})}].filter(({ComponentValue:n})=>n()!==null);return e.jsx("div",{children:e.jsx("ul",{className:"flex flex-col gap-3",children:i.map(({field:n,ComponentValue:u})=>e.jsx("li",{children:e.jsxs("dl",{children:[e.jsx(A,{children:n}),e.jsx(u,{})]})},n))})})}function xe({queue:s}){const a=[{field:"Work Queue ID",ComponentValue:()=>s.id?e.jsx(h,{children:s.id}):e.jsx(b,{})},{field:"Flow Run Concurrency",ComponentValue:()=>e.jsx(h,{children:s.concurrency_limit!==null&&s.concurrency_limit!==void 0?String(s.concurrency_limit):"Unlimited"})},{field:"Created",ComponentValue:()=>s.created?e.jsx(h,{children:e.jsx(T,{date:s.created})}):e.jsx(b,{})},{field:"Last Updated",ComponentValue:()=>s.updated?e.jsx(h,{children:e.jsx(T,{date:s.updated})}):e.jsx(b,{})}];return e.jsx("div",{children:e.jsx("ul",{className:"flex flex-col gap-3",children:a.map(({field:i,ComponentValue:n})=>e.jsx("li",{children:e.jsxs("dl",{children:[e.jsx(A,{children:i}),e.jsx(n,{})]})},i))})})}function M({workPoolName:s,queue:a,alternate:i=!1,className:n}){const u=i?"space-y-4":"space-y-6";return e.jsxs("div",{className:y(u,n),children:[e.jsx(me,{workPoolName:s,queue:a}),e.jsx(H,{}),e.jsx(xe,{queue:a})]})}const pe=({workPoolName:s,queue:a,onUpdate:i,className:n})=>e.jsxs("header",{className:y("flex mb-4 flex-row items-center justify-between",n),children:[e.jsx(X,{className:n,children:e.jsxs(Y,{children:[e.jsx(S,{children:e.jsx(Q,{to:"/work-pools",className:"text-xl font-semibold",children:"Work Pools"})}),e.jsx(D,{}),e.jsx(S,{children:e.jsx(Q,{to:"/work-pools/work-pool/$workPoolName",params:{workPoolName:s},className:"text-xl font-semibold",children:s})}),e.jsx(D,{}),e.jsx(S,{className:"text-xl font-semibold",children:e.jsx($,{children:a.name})})]})}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(re,{queue:a,onUpdate:i}),e.jsx(ie,{queue:a,onUpdate:i})]})]}),he=({workPoolName:s,queue:a,className:i})=>{const[n,u]=t.useState({limit:10,page:1}),[m,w]=t.useState(""),[r,j]=t.useState(new Set),d=G(m,500),N=t.useMemo(()=>{const l={page:n.page,limit:n.limit,sort:"START_TIME_DESC",work_pools:{operator:"and_",name:{any_:[s]}},work_pool_queues:{operator:"and_",name:{any_:[a.name]}}};if(d.trim()&&(l.flow_runs={operator:"and_",name:{like_:d.trim()}}),r.size>0){const c={state:{operator:"and_",name:{any_:Array.from(r)}}};l.flow_runs?l.flow_runs={...l.flow_runs,...c}:l.flow_runs={operator:"and_",...c}}return l},[s,a.name,n,d,r]),v=t.useMemo(()=>{const l={work_pools:{operator:"and_",name:{any_:[s]}},work_pool_queues:{operator:"and_",name:{any_:[a.name]}}};if(d.trim()&&(l.flow_runs={operator:"and_",name:{like_:d.trim()}}),r.size>0){const c={state:{operator:"and_",name:{any_:Array.from(r)}}};l.flow_runs?l.flow_runs={...l.flow_runs,...c}:l.flow_runs={operator:"and_",...c}}return l},[s,a.name,d,r]),{data:x}=g(P(N)),{data:f}=g(W(v)),p=t.useMemo(()=>[...new Set((x?.results??[]).map(l=>l.flow_id))],[x?.results]),{data:_}=g(L({flows:{operator:"and_",id:{any_:p}},offset:0,sort:"NAME_ASC"},{enabled:p.length>0})),R=t.useMemo(()=>{if(!x?.results)return[];const l=new Map(_?.map(c=>[c.id,c])??[]);return x.results.map(c=>{const F=l.get(c.flow_id);return F?{...c,flow:F}:null}).filter(c=>c!==null)},[x?.results,_]),B=t.useCallback(l=>{w(l.target.value),u(c=>({...c,page:1}))},[]),U=t.useCallback(l=>{u(l)},[]),I=t.useCallback(l=>{j(l),u(c=>({...c,page:1}))},[]),O=t.useCallback(()=>{w(""),j(new Set),u(l=>({...l,page:1}))},[]);return!x||f===void 0?e.jsx("div",{className:i,children:e.jsx("div",{className:"text-muted-foreground text-center py-8",children:"Loading flow runs..."})}):e.jsxs("div",{className:i,children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 mb-6",children:[e.jsx("div",{className:"flex-1",children:e.jsx(J,{placeholder:"Search flow runs by name...",value:m,onChange:B,debounceMs:500})}),e.jsx("div",{className:"w-full sm:w-64",children:e.jsx(ce,{selectedFilters:r,onSelectFilter:I})})]}),e.jsx(E,{flowRuns:R,onClearFilters:R.length===0?O:void 0}),x.pages>1&&e.jsx("div",{className:"mt-6",children:e.jsx(V,{count:f,pages:x.pages,pagination:n,onChangePagination:U})})]})},fe=({workPoolName:s,queue:a,className:i})=>{const[n,u]=t.useState({limit:5,page:1}),m=t.useMemo(()=>({page:n.page,limit:n.limit,sort:"EXPECTED_START_TIME_ASC",work_pools:{operator:"and_",name:{any_:[s]}},work_pool_queues:{operator:"and_",name:{any_:[a.name]}},flow_runs:{operator:"and_",state:{operator:"and_",name:{any_:["Scheduled"]}}}}),[s,a.name,n]),w=t.useMemo(()=>({work_pools:{operator:"and_",name:{any_:[s]}},work_pool_queues:{operator:"and_",name:{any_:[a.name]}},flow_runs:{operator:"and_",state:{operator:"and_",name:{any_:["Scheduled"]}}}}),[s,a.name]),{data:r}=g(P(m)),{data:j}=g(W(w)),d=t.useMemo(()=>[...new Set((r?.results??[]).map(f=>f.flow_id))],[r?.results]),{data:N}=g(L({flows:{operator:"and_",id:{any_:d}},offset:0,sort:"NAME_ASC"},{enabled:d.length>0})),v=t.useMemo(()=>{if(!r?.results)return[];const f=new Map(N?.map(p=>[p.id,p])??[]);return r.results.map(p=>{const _=f.get(p.flow_id);return _?{...p,flow:_}:null}).filter(p=>p!==null)},[r?.results,N]),x=t.useCallback(f=>{u(f)},[]);return!r||j===void 0?e.jsx("div",{className:i,children:e.jsx("div",{className:"text-muted-foreground text-center py-8",children:"Loading upcoming runs..."})}):e.jsxs("div",{className:i,children:[e.jsx(E,{flowRuns:v}),r.pages>1&&e.jsx("div",{className:"mt-6",children:e.jsx(V,{count:j,pages:r.pages,pagination:n,onChangePagination:x})})]})};de({queueTab:ue(["Details","Upcoming Runs","Runs"]).default("Upcoming Runs")});function je(){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx(o,{className:"h-4 w-48"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{className:"h-3 w-16"}),e.jsx(o,{className:"h-6 w-24"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{className:"h-3 w-20"}),e.jsx(o,{className:"h-6 w-32"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{className:"h-3 w-24"}),e.jsx(o,{className:"h-6 w-28"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{className:"h-3 w-18"}),e.jsx(o,{className:"h-6 w-36"})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(o,{className:"h-5 w-40"}),e.jsx("div",{className:"space-y-2",children:e.jsx(o,{className:"h-32 w-full"})})]})]})}function we(){return e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(o,{className:"h-24 w-full"}),e.jsx(o,{className:"h-24 w-full"}),e.jsx(o,{className:"h-24 w-full"})]})}function ge(){return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsx("div",{className:"flex-1",children:e.jsx(o,{className:"h-9 w-full"})}),e.jsx("div",{className:"w-full sm:w-64",children:e.jsx(o,{className:"h-9 w-full"})})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(o,{className:"h-24 w-full"}),e.jsx(o,{className:"h-24 w-full"}),e.jsx(o,{className:"h-24 w-full"})]})]})}function Pe(){const{workPoolName:s,workQueueName:a}=k.useParams(),{queueTab:i}=k.useSearch(),n=k.useNavigate(),u=z(),{data:m}=K(Z(s,a)),w=t.useMemo(()=>[{id:"Details",label:"Details",hiddenOnDesktop:!0},{id:"Upcoming Runs",label:"Upcoming Runs",hiddenOnDesktop:!1},{id:"Runs",label:"Runs",hiddenOnDesktop:!1}],[]),r=t.useCallback(d=>{n({to:".",search:{queueTab:d}})},[n]),j=t.useCallback(()=>{u.invalidateQueries({queryKey:q.detail(s,a)})},[u,s,a]);return e.jsx(ee,{children:e.jsxs(se,{children:[e.jsx(ae,{children:e.jsx(pe,{workPoolName:s,queue:m,onUpdate:j})}),e.jsxs("div",{className:"flex flex-col xl:flex-row xl:gap-8",children:[e.jsx("div",{className:"flex-1",children:e.jsxs(le,{value:i,onValueChange:r,children:[e.jsx(ne,{className:"flex w-full overflow-x-auto scrollbar-none",children:w.map(d=>e.jsx(te,{value:d.id,className:y("whitespace-nowrap flex-shrink-0",d.hiddenOnDesktop?"xl:hidden":""),children:d.label},d.id))}),e.jsx(C,{value:"Details",className:"space-y-0",children:e.jsx(t.Suspense,{fallback:e.jsx(je,{}),children:e.jsx(M,{workPoolName:s,queue:m})})}),e.jsx(C,{value:"Upcoming Runs",className:"space-y-0",children:e.jsx(t.Suspense,{fallback:e.jsx(we,{}),children:e.jsx(fe,{workPoolName:s,queue:m})})}),e.jsx(C,{value:"Runs",className:"space-y-0",children:e.jsx(t.Suspense,{fallback:e.jsx(ge,{}),children:e.jsx(he,{workPoolName:s,queue:m})})})]})}),e.jsx("aside",{className:"w-full xl:w-80 xl:shrink-0 hidden xl:block",children:e.jsx("div",{className:"sticky top-8",children:e.jsx(M,{workPoolName:s,queue:m,alternate:!0})})})]})]})})}export{Pe as component};
2
- //# sourceMappingURL=work-pool_._workPoolName.queue._workQueueName-BlstL9Se.js.map
1
+ import{j as e,r as t,s as g,m as z,p as K}from"./vendor-tanstack-BK8oseNA.js";import{aW as y,bK as H,bM as T,B as X,g as Y,h as S,bs as Q,bB as D,bD as $,bN as G,aE as P,aC as W,ab as L,O as J,dP as k,dQ as Z,dR as q,c0 as ee,c1 as se,c2 as ae,aw as le,ax as ne,ay as te,az as C,b5 as o}from"./index-BvSl3DKP.js";import{W as oe,a as re,b as ie}from"./work-pool-queue-toggle-BAOrV_0R.js";import{S as ce,a as E,F as V}from"./flow-runs-pagination-LrU9Aio8.js";import{o as de,e as ue}from"./vendor-forms-DxqqmhL5.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-CznP1SOq.js";import"./vendor-recharts-D4imLXNl.js";import"./vendor-date-7GxEwcQM.js";import"./dropdown-menu-CT-s-V7d.js";import"./zod-DgSl2Nua.js";import"./form-CVSlEnl8.js";import"./textarea-BAtfAxtV.js";import"./delete-confirmation-dialog-CTdWZlGM.js";const b=()=>e.jsx("dd",{className:"text-muted-foreground text-sm",children:"None"}),A=({children:s})=>e.jsx("dt",{className:"text-sm text-muted-foreground",children:s}),h=({children:s,className:a})=>e.jsx("dd",{className:y("text-sm",a),children:s});function me({workPoolName:s,queue:a}){const i=[{field:"Work Pool",ComponentValue:()=>e.jsx(h,{children:s})},{field:"Status",ComponentValue:()=>e.jsx("dd",{children:e.jsx(oe,{status:a.status||"NOT_READY"})})},{field:"Last Polled",ComponentValue:()=>a.last_polled?e.jsx(h,{children:e.jsx(T,{date:a.last_polled})}):e.jsx(h,{className:"text-muted-foreground",children:"Never"})},{field:"Description",ComponentValue:()=>a.description?e.jsx(h,{children:a.description}):null},{field:"Priority",ComponentValue:()=>a.priority!==null&&a.priority!==void 0?e.jsx(h,{children:String(a.priority)}):e.jsx(b,{})}].filter(({ComponentValue:n})=>n()!==null);return e.jsx("div",{children:e.jsx("ul",{className:"flex flex-col gap-3",children:i.map(({field:n,ComponentValue:u})=>e.jsx("li",{children:e.jsxs("dl",{children:[e.jsx(A,{children:n}),e.jsx(u,{})]})},n))})})}function xe({queue:s}){const a=[{field:"Work Queue ID",ComponentValue:()=>s.id?e.jsx(h,{children:s.id}):e.jsx(b,{})},{field:"Flow Run Concurrency",ComponentValue:()=>e.jsx(h,{children:s.concurrency_limit!==null&&s.concurrency_limit!==void 0?String(s.concurrency_limit):"Unlimited"})},{field:"Created",ComponentValue:()=>s.created?e.jsx(h,{children:e.jsx(T,{date:s.created})}):e.jsx(b,{})},{field:"Last Updated",ComponentValue:()=>s.updated?e.jsx(h,{children:e.jsx(T,{date:s.updated})}):e.jsx(b,{})}];return e.jsx("div",{children:e.jsx("ul",{className:"flex flex-col gap-3",children:a.map(({field:i,ComponentValue:n})=>e.jsx("li",{children:e.jsxs("dl",{children:[e.jsx(A,{children:i}),e.jsx(n,{})]})},i))})})}function M({workPoolName:s,queue:a,alternate:i=!1,className:n}){const u=i?"space-y-4":"space-y-6";return e.jsxs("div",{className:y(u,n),children:[e.jsx(me,{workPoolName:s,queue:a}),e.jsx(H,{}),e.jsx(xe,{queue:a})]})}const pe=({workPoolName:s,queue:a,onUpdate:i,className:n})=>e.jsxs("header",{className:y("flex mb-4 flex-row items-center justify-between",n),children:[e.jsx(X,{className:n,children:e.jsxs(Y,{children:[e.jsx(S,{children:e.jsx(Q,{to:"/work-pools",className:"text-xl font-semibold",children:"Work Pools"})}),e.jsx(D,{}),e.jsx(S,{children:e.jsx(Q,{to:"/work-pools/work-pool/$workPoolName",params:{workPoolName:s},className:"text-xl font-semibold",children:s})}),e.jsx(D,{}),e.jsx(S,{className:"text-xl font-semibold",children:e.jsx($,{children:a.name})})]})}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(re,{queue:a,onUpdate:i}),e.jsx(ie,{queue:a,onUpdate:i})]})]}),he=({workPoolName:s,queue:a,className:i})=>{const[n,u]=t.useState({limit:10,page:1}),[m,w]=t.useState(""),[r,j]=t.useState(new Set),d=G(m,500),N=t.useMemo(()=>{const l={page:n.page,limit:n.limit,sort:"START_TIME_DESC",work_pools:{operator:"and_",name:{any_:[s]}},work_pool_queues:{operator:"and_",name:{any_:[a.name]}}};if(d.trim()&&(l.flow_runs={operator:"and_",name:{like_:d.trim()}}),r.size>0){const c={state:{operator:"and_",name:{any_:Array.from(r)}}};l.flow_runs?l.flow_runs={...l.flow_runs,...c}:l.flow_runs={operator:"and_",...c}}return l},[s,a.name,n,d,r]),v=t.useMemo(()=>{const l={work_pools:{operator:"and_",name:{any_:[s]}},work_pool_queues:{operator:"and_",name:{any_:[a.name]}}};if(d.trim()&&(l.flow_runs={operator:"and_",name:{like_:d.trim()}}),r.size>0){const c={state:{operator:"and_",name:{any_:Array.from(r)}}};l.flow_runs?l.flow_runs={...l.flow_runs,...c}:l.flow_runs={operator:"and_",...c}}return l},[s,a.name,d,r]),{data:x}=g(P(N)),{data:f}=g(W(v)),p=t.useMemo(()=>[...new Set((x?.results??[]).map(l=>l.flow_id))],[x?.results]),{data:_}=g(L({flows:{operator:"and_",id:{any_:p}},offset:0,sort:"NAME_ASC"},{enabled:p.length>0})),R=t.useMemo(()=>{if(!x?.results)return[];const l=new Map(_?.map(c=>[c.id,c])??[]);return x.results.map(c=>{const F=l.get(c.flow_id);return F?{...c,flow:F}:null}).filter(c=>c!==null)},[x?.results,_]),B=t.useCallback(l=>{w(l.target.value),u(c=>({...c,page:1}))},[]),U=t.useCallback(l=>{u(l)},[]),I=t.useCallback(l=>{j(l),u(c=>({...c,page:1}))},[]),O=t.useCallback(()=>{w(""),j(new Set),u(l=>({...l,page:1}))},[]);return!x||f===void 0?e.jsx("div",{className:i,children:e.jsx("div",{className:"text-muted-foreground text-center py-8",children:"Loading flow runs..."})}):e.jsxs("div",{className:i,children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 mb-6",children:[e.jsx("div",{className:"flex-1",children:e.jsx(J,{placeholder:"Search flow runs by name...",value:m,onChange:B,debounceMs:500})}),e.jsx("div",{className:"w-full sm:w-64",children:e.jsx(ce,{selectedFilters:r,onSelectFilter:I})})]}),e.jsx(E,{flowRuns:R,onClearFilters:R.length===0?O:void 0}),x.pages>1&&e.jsx("div",{className:"mt-6",children:e.jsx(V,{count:f,pages:x.pages,pagination:n,onChangePagination:U})})]})},fe=({workPoolName:s,queue:a,className:i})=>{const[n,u]=t.useState({limit:5,page:1}),m=t.useMemo(()=>({page:n.page,limit:n.limit,sort:"EXPECTED_START_TIME_ASC",work_pools:{operator:"and_",name:{any_:[s]}},work_pool_queues:{operator:"and_",name:{any_:[a.name]}},flow_runs:{operator:"and_",state:{operator:"and_",name:{any_:["Scheduled"]}}}}),[s,a.name,n]),w=t.useMemo(()=>({work_pools:{operator:"and_",name:{any_:[s]}},work_pool_queues:{operator:"and_",name:{any_:[a.name]}},flow_runs:{operator:"and_",state:{operator:"and_",name:{any_:["Scheduled"]}}}}),[s,a.name]),{data:r}=g(P(m)),{data:j}=g(W(w)),d=t.useMemo(()=>[...new Set((r?.results??[]).map(f=>f.flow_id))],[r?.results]),{data:N}=g(L({flows:{operator:"and_",id:{any_:d}},offset:0,sort:"NAME_ASC"},{enabled:d.length>0})),v=t.useMemo(()=>{if(!r?.results)return[];const f=new Map(N?.map(p=>[p.id,p])??[]);return r.results.map(p=>{const _=f.get(p.flow_id);return _?{...p,flow:_}:null}).filter(p=>p!==null)},[r?.results,N]),x=t.useCallback(f=>{u(f)},[]);return!r||j===void 0?e.jsx("div",{className:i,children:e.jsx("div",{className:"text-muted-foreground text-center py-8",children:"Loading upcoming runs..."})}):e.jsxs("div",{className:i,children:[e.jsx(E,{flowRuns:v}),r.pages>1&&e.jsx("div",{className:"mt-6",children:e.jsx(V,{count:j,pages:r.pages,pagination:n,onChangePagination:x})})]})};de({queueTab:ue(["Details","Upcoming Runs","Runs"]).default("Upcoming Runs")});function je(){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx(o,{className:"h-4 w-48"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{className:"h-3 w-16"}),e.jsx(o,{className:"h-6 w-24"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{className:"h-3 w-20"}),e.jsx(o,{className:"h-6 w-32"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{className:"h-3 w-24"}),e.jsx(o,{className:"h-6 w-28"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{className:"h-3 w-18"}),e.jsx(o,{className:"h-6 w-36"})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(o,{className:"h-5 w-40"}),e.jsx("div",{className:"space-y-2",children:e.jsx(o,{className:"h-32 w-full"})})]})]})}function we(){return e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(o,{className:"h-24 w-full"}),e.jsx(o,{className:"h-24 w-full"}),e.jsx(o,{className:"h-24 w-full"})]})}function ge(){return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsx("div",{className:"flex-1",children:e.jsx(o,{className:"h-9 w-full"})}),e.jsx("div",{className:"w-full sm:w-64",children:e.jsx(o,{className:"h-9 w-full"})})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(o,{className:"h-24 w-full"}),e.jsx(o,{className:"h-24 w-full"}),e.jsx(o,{className:"h-24 w-full"})]})]})}function Pe(){const{workPoolName:s,workQueueName:a}=k.useParams(),{queueTab:i}=k.useSearch(),n=k.useNavigate(),u=z(),{data:m}=K(Z(s,a)),w=t.useMemo(()=>[{id:"Details",label:"Details",hiddenOnDesktop:!0},{id:"Upcoming Runs",label:"Upcoming Runs",hiddenOnDesktop:!1},{id:"Runs",label:"Runs",hiddenOnDesktop:!1}],[]),r=t.useCallback(d=>{n({to:".",search:{queueTab:d}})},[n]),j=t.useCallback(()=>{u.invalidateQueries({queryKey:q.detail(s,a)})},[u,s,a]);return e.jsx(ee,{children:e.jsxs(se,{children:[e.jsx(ae,{children:e.jsx(pe,{workPoolName:s,queue:m,onUpdate:j})}),e.jsxs("div",{className:"flex flex-col xl:flex-row xl:gap-8",children:[e.jsx("div",{className:"flex-1",children:e.jsxs(le,{value:i,onValueChange:r,children:[e.jsx(ne,{className:"flex w-full overflow-x-auto scrollbar-none",children:w.map(d=>e.jsx(te,{value:d.id,className:y("whitespace-nowrap flex-shrink-0",d.hiddenOnDesktop?"xl:hidden":""),children:d.label},d.id))}),e.jsx(C,{value:"Details",className:"space-y-0",children:e.jsx(t.Suspense,{fallback:e.jsx(je,{}),children:e.jsx(M,{workPoolName:s,queue:m})})}),e.jsx(C,{value:"Upcoming Runs",className:"space-y-0",children:e.jsx(t.Suspense,{fallback:e.jsx(we,{}),children:e.jsx(fe,{workPoolName:s,queue:m})})}),e.jsx(C,{value:"Runs",className:"space-y-0",children:e.jsx(t.Suspense,{fallback:e.jsx(ge,{}),children:e.jsx(he,{workPoolName:s,queue:m})})})]})}),e.jsx("aside",{className:"w-full xl:w-80 xl:shrink-0 hidden xl:block",children:e.jsx("div",{className:"sticky top-8",children:e.jsx(M,{workPoolName:s,queue:m,alternate:!0})})})]})]})})}export{Pe as component};
2
+ //# sourceMappingURL=work-pool_._workPoolName.queue._workQueueName-CjoM77tu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"work-pool_._workPoolName.queue._workQueueName-BlstL9Se.js","sources":["../../src/components/work-pools/work-pool-queue-details/work-pool-queue-details.tsx","../../src/components/work-pools/work-pool-queue-page-header/work-pool-queue-page-header.tsx","../../src/components/work-pools/work-pool-queue-runs-tab/work-pool-queue-runs-tab.tsx","../../src/components/work-pools/work-pool-queue-upcoming-runs-tab/work-pool-queue-upcoming-runs-tab.tsx","../../src/routes/work-pools/work-pool_.$workPoolName.queue.$workQueueName.tsx?tsr-split=component"],"sourcesContent":["import type { WorkPoolQueue } from \"@/api/work-pool-queues\";\nimport { FormattedDate } from \"@/components/ui/formatted-date\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { WorkPoolQueueStatusBadge } from \"@/components/work-pools/work-pool-queue-status-badge\";\nimport { cn } from \"@/utils\";\n\ntype WorkPoolQueueDetailsProps = {\n\tworkPoolName: string;\n\tqueue: WorkPoolQueue;\n\talternate?: boolean;\n\tclassName?: string;\n};\n\n// Helper components for field display\nconst None = () => <dd className=\"text-muted-foreground text-sm\">None</dd>;\nconst FieldLabel = ({ children }: { children: React.ReactNode }) => (\n\t<dt className=\"text-sm text-muted-foreground\">{children}</dt>\n);\nconst FieldValue = ({\n\tchildren,\n\tclassName,\n}: {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}) => <dd className={cn(\"text-sm\", className)}>{children}</dd>;\n\n// Basic Info Section Component\nfunction BasicInfoSection({\n\tworkPoolName,\n\tqueue,\n}: {\n\tworkPoolName: string;\n\tqueue: WorkPoolQueue;\n}) {\n\tconst fields = [\n\t\t{\n\t\t\tfield: \"Work Pool\",\n\t\t\tComponentValue: () => <FieldValue>{workPoolName}</FieldValue>,\n\t\t},\n\t\t{\n\t\t\tfield: \"Status\",\n\t\t\tComponentValue: () => (\n\t\t\t\t<dd>\n\t\t\t\t\t<WorkPoolQueueStatusBadge status={queue.status || \"NOT_READY\"} />\n\t\t\t\t</dd>\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tfield: \"Last Polled\",\n\t\t\tComponentValue: () =>\n\t\t\t\tqueue.last_polled ? (\n\t\t\t\t\t<FieldValue>\n\t\t\t\t\t\t<FormattedDate date={queue.last_polled} />\n\t\t\t\t\t</FieldValue>\n\t\t\t\t) : (\n\t\t\t\t\t<FieldValue className=\"text-muted-foreground\">Never</FieldValue>\n\t\t\t\t),\n\t\t},\n\t\t{\n\t\t\tfield: \"Description\",\n\t\t\tComponentValue: () =>\n\t\t\t\tqueue.description ? <FieldValue>{queue.description}</FieldValue> : null,\n\t\t},\n\t\t{\n\t\t\tfield: \"Priority\",\n\t\t\tComponentValue: () =>\n\t\t\t\tqueue.priority !== null && queue.priority !== undefined ? (\n\t\t\t\t\t<FieldValue>{String(queue.priority)}</FieldValue>\n\t\t\t\t) : (\n\t\t\t\t\t<None />\n\t\t\t\t),\n\t\t},\n\t].filter(({ ComponentValue }) => ComponentValue() !== null);\n\n\treturn (\n\t\t<div>\n\t\t\t<ul className=\"flex flex-col gap-3\">\n\t\t\t\t{fields.map(({ field, ComponentValue }) => (\n\t\t\t\t\t<li key={field}>\n\t\t\t\t\t\t<dl>\n\t\t\t\t\t\t\t<FieldLabel>{field}</FieldLabel>\n\t\t\t\t\t\t\t<ComponentValue />\n\t\t\t\t\t\t</dl>\n\t\t\t\t\t</li>\n\t\t\t\t))}\n\t\t\t</ul>\n\t\t</div>\n\t);\n}\n\n// Meta Info Section Component\nfunction MetaInfoSection({ queue }: { queue: WorkPoolQueue }) {\n\tconst fields = [\n\t\t{\n\t\t\tfield: \"Work Queue ID\",\n\t\t\tComponentValue: () =>\n\t\t\t\tqueue.id ? <FieldValue>{queue.id}</FieldValue> : <None />,\n\t\t},\n\t\t{\n\t\t\tfield: \"Flow Run Concurrency\",\n\t\t\tComponentValue: () => (\n\t\t\t\t<FieldValue>\n\t\t\t\t\t{queue.concurrency_limit !== null &&\n\t\t\t\t\tqueue.concurrency_limit !== undefined\n\t\t\t\t\t\t? String(queue.concurrency_limit)\n\t\t\t\t\t\t: \"Unlimited\"}\n\t\t\t\t</FieldValue>\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tfield: \"Created\",\n\t\t\tComponentValue: () =>\n\t\t\t\tqueue.created ? (\n\t\t\t\t\t<FieldValue>\n\t\t\t\t\t\t<FormattedDate date={queue.created} />\n\t\t\t\t\t</FieldValue>\n\t\t\t\t) : (\n\t\t\t\t\t<None />\n\t\t\t\t),\n\t\t},\n\t\t{\n\t\t\tfield: \"Last Updated\",\n\t\t\tComponentValue: () =>\n\t\t\t\tqueue.updated ? (\n\t\t\t\t\t<FieldValue>\n\t\t\t\t\t\t<FormattedDate date={queue.updated} />\n\t\t\t\t\t</FieldValue>\n\t\t\t\t) : (\n\t\t\t\t\t<None />\n\t\t\t\t),\n\t\t},\n\t];\n\n\treturn (\n\t\t<div>\n\t\t\t<ul className=\"flex flex-col gap-3\">\n\t\t\t\t{fields.map(({ field, ComponentValue }) => (\n\t\t\t\t\t<li key={field}>\n\t\t\t\t\t\t<dl>\n\t\t\t\t\t\t\t<FieldLabel>{field}</FieldLabel>\n\t\t\t\t\t\t\t<ComponentValue />\n\t\t\t\t\t\t</dl>\n\t\t\t\t\t</li>\n\t\t\t\t))}\n\t\t\t</ul>\n\t\t</div>\n\t);\n}\n\nexport function WorkPoolQueueDetails({\n\tworkPoolName,\n\tqueue,\n\talternate = false,\n\tclassName,\n}: WorkPoolQueueDetailsProps) {\n\tconst spacing = alternate ? \"space-y-4\" : \"space-y-6\";\n\n\treturn (\n\t\t<div className={cn(spacing, className)}>\n\t\t\t<BasicInfoSection workPoolName={workPoolName} queue={queue} />\n\t\t\t<Separator />\n\t\t\t<MetaInfoSection queue={queue} />\n\t\t</div>\n\t);\n}\n","import type { WorkPoolQueue } from \"@/api/work-pool-queues\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { cn } from \"@/utils\";\nimport { WorkPoolQueueMenu } from \"../work-pool-queue-menu\";\nimport { WorkPoolQueueToggle } from \"../work-pool-queue-toggle\";\n\nexport type WorkPoolQueuePageHeaderProps = {\n\tworkPoolName: string;\n\tqueue: WorkPoolQueue;\n\tonUpdate?: () => void;\n\tclassName?: string;\n};\n\nexport const WorkPoolQueuePageHeader = ({\n\tworkPoolName,\n\tqueue,\n\tonUpdate,\n\tclassName,\n}: WorkPoolQueuePageHeaderProps) => {\n\treturn (\n\t\t<header\n\t\t\tclassName={cn(\n\t\t\t\t\"flex mb-4 flex-row items-center justify-between\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Breadcrumb className={className}>\n\t\t\t\t<BreadcrumbList>\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink to=\"/work-pools\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\t\tWork Pools\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbSeparator />\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\t\tto=\"/work-pools/work-pool/$workPoolName\"\n\t\t\t\t\t\t\tparams={{ workPoolName }}\n\t\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{workPoolName}\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbSeparator />\n\t\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t\t<BreadcrumbPage>{queue.name}</BreadcrumbPage>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t</BreadcrumbList>\n\t\t\t</Breadcrumb>\n\t\t\t<div className=\"flex items-center space-x-2\">\n\t\t\t\t<WorkPoolQueueToggle queue={queue} onUpdate={onUpdate} />\n\t\t\t\t<WorkPoolQueueMenu queue={queue} onUpdate={onUpdate} />\n\t\t\t</div>\n\t\t</header>\n\t);\n};\n","import { useQuery } from \"@tanstack/react-query\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n\tbuildCountFlowRunsQuery,\n\tbuildPaginateFlowRunsQuery,\n\ttype FlowRunsCountFilter,\n\ttype FlowRunsPaginateFilter,\n\ttype FlowRunWithFlow,\n} from \"@/api/flow-runs\";\nimport { buildListFlowsQuery, type Flow } from \"@/api/flows\";\nimport type { WorkPoolQueue } from \"@/api/work-pool-queues\";\nimport { FlowRunsList } from \"@/components/flow-runs/flow-runs-list\";\nimport { StateFilter } from \"@/components/flow-runs/flow-runs-list/flow-runs-filters/state-filter\";\nimport type { FlowRunState } from \"@/components/flow-runs/flow-runs-list/flow-runs-filters/state-filters.constants\";\nimport {\n\tFlowRunsPagination,\n\ttype PaginationState,\n} from \"@/components/flow-runs/flow-runs-list/flow-runs-pagination\";\nimport { SearchInput } from \"@/components/ui/input\";\nimport useDebounce from \"@/hooks/use-debounce\";\n\ntype WorkPoolQueueRunsTabProps = {\n\tworkPoolName: string;\n\tqueue: WorkPoolQueue;\n\tclassName?: string;\n};\n\nexport const WorkPoolQueueRunsTab = ({\n\tworkPoolName,\n\tqueue,\n\tclassName,\n}: WorkPoolQueueRunsTabProps) => {\n\tconst [pagination, setPagination] = useState<PaginationState>({\n\t\tlimit: 10,\n\t\tpage: 1,\n\t});\n\tconst [searchTerm, setSearchTerm] = useState(\"\");\n\tconst [selectedStates, setSelectedStates] = useState<Set<FlowRunState>>(\n\t\tnew Set(),\n\t);\n\n\t// Debounce the search term to avoid too many API calls\n\tconst debouncedSearchTerm = useDebounce(searchTerm, 500);\n\n\tconst filter: FlowRunsPaginateFilter = useMemo(() => {\n\t\tconst baseFilter: FlowRunsPaginateFilter = {\n\t\t\tpage: pagination.page,\n\t\t\tlimit: pagination.limit,\n\t\t\tsort: \"START_TIME_DESC\",\n\t\t\twork_pools: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { any_: [workPoolName] },\n\t\t\t},\n\t\t\twork_pool_queues: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { any_: [queue.name] },\n\t\t\t},\n\t\t};\n\n\t\t// Add search filter if search term exists\n\t\tif (debouncedSearchTerm.trim()) {\n\t\t\tbaseFilter.flow_runs = {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { like_: debouncedSearchTerm.trim() },\n\t\t\t};\n\t\t}\n\n\t\t// Add state filter if states are selected\n\t\tif (selectedStates.size > 0) {\n\t\t\tconst stateFilter = {\n\t\t\t\tstate: {\n\t\t\t\t\toperator: \"and_\" as const,\n\t\t\t\t\tname: { any_: Array.from(selectedStates) },\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tif (baseFilter.flow_runs) {\n\t\t\t\t// Merge with existing flow_runs filter\n\t\t\t\tbaseFilter.flow_runs = {\n\t\t\t\t\t...baseFilter.flow_runs,\n\t\t\t\t\t...stateFilter,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tbaseFilter.flow_runs = {\n\t\t\t\t\toperator: \"and_\",\n\t\t\t\t\t...stateFilter,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn baseFilter;\n\t}, [\n\t\tworkPoolName,\n\t\tqueue.name,\n\t\tpagination,\n\t\tdebouncedSearchTerm,\n\t\tselectedStates,\n\t]);\n\n\tconst countFilter: FlowRunsCountFilter = useMemo(() => {\n\t\tconst baseCountFilter: FlowRunsCountFilter = {\n\t\t\twork_pools: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { any_: [workPoolName] },\n\t\t\t},\n\t\t\twork_pool_queues: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { any_: [queue.name] },\n\t\t\t},\n\t\t};\n\n\t\t// Add search filter to count if search term exists\n\t\tif (debouncedSearchTerm.trim()) {\n\t\t\tbaseCountFilter.flow_runs = {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { like_: debouncedSearchTerm.trim() },\n\t\t\t};\n\t\t}\n\n\t\t// Add state filter to count if states are selected\n\t\tif (selectedStates.size > 0) {\n\t\t\tconst stateFilter = {\n\t\t\t\tstate: {\n\t\t\t\t\toperator: \"and_\" as const,\n\t\t\t\t\tname: { any_: Array.from(selectedStates) },\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tif (baseCountFilter.flow_runs) {\n\t\t\t\t// Merge with existing flow_runs filter\n\t\t\t\tbaseCountFilter.flow_runs = {\n\t\t\t\t\t...baseCountFilter.flow_runs,\n\t\t\t\t\t...stateFilter,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tbaseCountFilter.flow_runs = {\n\t\t\t\t\toperator: \"and_\",\n\t\t\t\t\t...stateFilter,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn baseCountFilter;\n\t}, [workPoolName, queue.name, debouncedSearchTerm, selectedStates]);\n\n\t// Fetch paginated flow runs data\n\tconst { data: paginatedData } = useQuery(buildPaginateFlowRunsQuery(filter));\n\n\t// Fetch total count for pagination\n\tconst { data: totalCount } = useQuery(buildCountFlowRunsQuery(countFilter));\n\n\t// Get unique flow IDs for fetching flow details\n\tconst flowIds = useMemo(\n\t\t() => [\n\t\t\t...new Set(\n\t\t\t\t(paginatedData?.results ?? []).map((flowRun) => flowRun.flow_id),\n\t\t\t),\n\t\t],\n\t\t[paginatedData?.results],\n\t);\n\n\t// Fetch flow details\n\tconst { data: flows } = useQuery(\n\t\tbuildListFlowsQuery(\n\t\t\t{\n\t\t\t\tflows: {\n\t\t\t\t\toperator: \"and_\",\n\t\t\t\t\tid: { any_: flowIds },\n\t\t\t\t},\n\t\t\t\toffset: 0,\n\t\t\t\tsort: \"NAME_ASC\",\n\t\t\t},\n\t\t\t{ enabled: flowIds.length > 0 },\n\t\t),\n\t);\n\n\t// Combine flow runs with their corresponding flows\n\tconst flowRunsWithFlows = useMemo(() => {\n\t\tif (!paginatedData?.results) return [];\n\t\tconst flowMap = new Map(flows?.map((flow: Flow) => [flow.id, flow]) ?? []);\n\t\treturn paginatedData.results\n\t\t\t.map((flowRun) => {\n\t\t\t\tconst flow = flowMap.get(flowRun.flow_id);\n\t\t\t\tif (!flow) return null;\n\t\t\t\treturn {\n\t\t\t\t\t...flowRun,\n\t\t\t\t\tflow,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.filter((flowRun) => flowRun !== null) as FlowRunWithFlow[];\n\t}, [paginatedData?.results, flows]);\n\n\tconst handleSearchChange = useCallback(\n\t\t(event: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\tsetSearchTerm(event.target.value);\n\t\t\t// Reset to first page when searching\n\t\t\tsetPagination((prev) => ({ ...prev, page: 1 }));\n\t\t},\n\t\t[],\n\t);\n\n\tconst handlePaginationChange = useCallback(\n\t\t(newPagination: PaginationState) => {\n\t\t\tsetPagination(newPagination);\n\t\t},\n\t\t[],\n\t);\n\n\tconst handleStateFilterChange = useCallback(\n\t\t(newSelectedStates: Set<FlowRunState>) => {\n\t\t\tsetSelectedStates(newSelectedStates);\n\t\t\t// Reset to first page when filtering\n\t\t\tsetPagination((prev) => ({ ...prev, page: 1 }));\n\t\t},\n\t\t[],\n\t);\n\n\tconst handleClearFilters = useCallback(() => {\n\t\tsetSearchTerm(\"\");\n\t\tsetSelectedStates(new Set());\n\t\tsetPagination((prev) => ({ ...prev, page: 1 }));\n\t}, []);\n\n\t// Show loading only on initial load, not on pagination/filtering changes\n\tif (!paginatedData || totalCount === undefined) {\n\t\treturn (\n\t\t\t<div className={className}>\n\t\t\t\t<div className=\"text-muted-foreground text-center py-8\">\n\t\t\t\t\tLoading flow runs...\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={className}>\n\t\t\t{/* Search and Filter Controls */}\n\t\t\t<div className=\"flex flex-col sm:flex-row gap-4 mb-6\">\n\t\t\t\t<div className=\"flex-1\">\n\t\t\t\t\t<SearchInput\n\t\t\t\t\t\tplaceholder=\"Search flow runs by name...\"\n\t\t\t\t\t\tvalue={searchTerm}\n\t\t\t\t\t\tonChange={handleSearchChange}\n\t\t\t\t\t\tdebounceMs={500}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"w-full sm:w-64\">\n\t\t\t\t\t<StateFilter\n\t\t\t\t\t\tselectedFilters={selectedStates}\n\t\t\t\t\t\tonSelectFilter={handleStateFilterChange}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Flow Runs List */}\n\t\t\t<FlowRunsList\n\t\t\t\tflowRuns={flowRunsWithFlows}\n\t\t\t\tonClearFilters={\n\t\t\t\t\tflowRunsWithFlows.length === 0 ? handleClearFilters : undefined\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t{/* Pagination Controls */}\n\t\t\t{paginatedData.pages > 1 && (\n\t\t\t\t<div className=\"mt-6\">\n\t\t\t\t\t<FlowRunsPagination\n\t\t\t\t\t\tcount={totalCount}\n\t\t\t\t\t\tpages={paginatedData.pages}\n\t\t\t\t\t\tpagination={pagination}\n\t\t\t\t\t\tonChangePagination={handlePaginationChange}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { useQuery } from \"@tanstack/react-query\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n\tbuildCountFlowRunsQuery,\n\tbuildPaginateFlowRunsQuery,\n\ttype FlowRunsCountFilter,\n\ttype FlowRunsPaginateFilter,\n\ttype FlowRunWithFlow,\n} from \"@/api/flow-runs\";\nimport { buildListFlowsQuery, type Flow } from \"@/api/flows\";\nimport type { WorkPoolQueue } from \"@/api/work-pool-queues\";\nimport { FlowRunsList } from \"@/components/flow-runs/flow-runs-list\";\nimport {\n\tFlowRunsPagination,\n\ttype PaginationState,\n} from \"@/components/flow-runs/flow-runs-list/flow-runs-pagination\";\n\ntype WorkPoolQueueUpcomingRunsTabProps = {\n\tworkPoolName: string;\n\tqueue: WorkPoolQueue;\n\tclassName?: string;\n};\n\nexport const WorkPoolQueueUpcomingRunsTab = ({\n\tworkPoolName,\n\tqueue,\n\tclassName,\n}: WorkPoolQueueUpcomingRunsTabProps) => {\n\tconst [pagination, setPagination] = useState<PaginationState>({\n\t\tlimit: 5,\n\t\tpage: 1,\n\t});\n\n\tconst filter: FlowRunsPaginateFilter = useMemo(\n\t\t() => ({\n\t\t\tpage: pagination.page,\n\t\t\tlimit: pagination.limit,\n\t\t\tsort: \"EXPECTED_START_TIME_ASC\",\n\t\t\twork_pools: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { any_: [workPoolName] },\n\t\t\t},\n\t\t\twork_pool_queues: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { any_: [queue.name] },\n\t\t\t},\n\t\t\tflow_runs: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tstate: {\n\t\t\t\t\toperator: \"and_\",\n\t\t\t\t\tname: { any_: [\"Scheduled\"] },\n\t\t\t\t},\n\t\t\t},\n\t\t}),\n\t\t[workPoolName, queue.name, pagination],\n\t);\n\n\tconst countFilter: FlowRunsCountFilter = useMemo(\n\t\t() => ({\n\t\t\twork_pools: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { any_: [workPoolName] },\n\t\t\t},\n\t\t\twork_pool_queues: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { any_: [queue.name] },\n\t\t\t},\n\t\t\tflow_runs: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tstate: {\n\t\t\t\t\toperator: \"and_\",\n\t\t\t\t\tname: { any_: [\"Scheduled\"] },\n\t\t\t\t},\n\t\t\t},\n\t\t}),\n\t\t[workPoolName, queue.name],\n\t);\n\n\tconst { data: paginatedData } = useQuery(buildPaginateFlowRunsQuery(filter));\n\n\tconst { data: totalCount } = useQuery(buildCountFlowRunsQuery(countFilter));\n\n\tconst flowIds = useMemo(\n\t\t() => [\n\t\t\t...new Set(\n\t\t\t\t(paginatedData?.results ?? []).map((flowRun) => flowRun.flow_id),\n\t\t\t),\n\t\t],\n\t\t[paginatedData?.results],\n\t);\n\n\tconst { data: flows } = useQuery(\n\t\tbuildListFlowsQuery(\n\t\t\t{\n\t\t\t\tflows: {\n\t\t\t\t\toperator: \"and_\",\n\t\t\t\t\tid: { any_: flowIds },\n\t\t\t\t},\n\t\t\t\toffset: 0,\n\t\t\t\tsort: \"NAME_ASC\",\n\t\t\t},\n\t\t\t{ enabled: flowIds.length > 0 },\n\t\t),\n\t);\n\n\tconst flowRunsWithFlows = useMemo(() => {\n\t\tif (!paginatedData?.results) return [];\n\t\tconst flowMap = new Map(flows?.map((flow: Flow) => [flow.id, flow]) ?? []);\n\t\treturn paginatedData.results\n\t\t\t.map((flowRun) => {\n\t\t\t\tconst flow = flowMap.get(flowRun.flow_id);\n\t\t\t\tif (!flow) return null;\n\t\t\t\treturn {\n\t\t\t\t\t...flowRun,\n\t\t\t\t\tflow,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.filter((flowRun) => flowRun !== null) as FlowRunWithFlow[];\n\t}, [paginatedData?.results, flows]);\n\n\tconst handlePaginationChange = useCallback(\n\t\t(newPagination: PaginationState) => {\n\t\t\tsetPagination(newPagination);\n\t\t},\n\t\t[],\n\t);\n\n\tif (!paginatedData || totalCount === undefined) {\n\t\treturn (\n\t\t\t<div className={className}>\n\t\t\t\t<div className=\"text-muted-foreground text-center py-8\">\n\t\t\t\t\tLoading upcoming runs...\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={className}>\n\t\t\t<FlowRunsList flowRuns={flowRunsWithFlows} />\n\n\t\t\t{paginatedData.pages > 1 && (\n\t\t\t\t<div className=\"mt-6\">\n\t\t\t\t\t<FlowRunsPagination\n\t\t\t\t\t\tcount={totalCount}\n\t\t\t\t\t\tpages={paginatedData.pages}\n\t\t\t\t\t\tpagination={pagination}\n\t\t\t\t\t\tonChangePagination={handlePaginationChange}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { useQueryClient, useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { zodValidator } from \"@tanstack/zod-adapter\";\nimport { Suspense, useCallback, useMemo } from \"react\";\nimport { z } from \"zod\";\nimport {\n\tbuildWorkPoolQueueDetailsQuery,\n\tworkPoolQueuesQueryKeyFactory,\n} from \"@/api/work-pool-queues\";\nimport {\n\tLayoutWell,\n\tLayoutWellContent,\n\tLayoutWellHeader,\n} from \"@/components/ui/layout-well\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\nimport { WorkPoolQueueDetails } from \"@/components/work-pools/work-pool-queue-details\";\nimport { WorkPoolQueuePageHeader } from \"@/components/work-pools/work-pool-queue-page-header\";\nimport { WorkPoolQueueRunsTab } from \"@/components/work-pools/work-pool-queue-runs-tab\";\nimport { WorkPoolQueueUpcomingRunsTab } from \"@/components/work-pools/work-pool-queue-upcoming-runs-tab\";\nimport { cn } from \"@/utils\";\n\nconst searchParams = z.object({\n\tqueueTab: z\n\t\t.enum([\"Details\", \"Upcoming Runs\", \"Runs\"])\n\t\t.default(\"Upcoming Runs\"),\n});\n\ntype SearchParams = z.infer<typeof searchParams>;\n\nfunction DetailsTabSkeleton() {\n\treturn (\n\t\t<div className=\"space-y-6\">\n\t\t\t<div className=\"space-y-4\">\n\t\t\t\t<Skeleton className=\"h-4 w-48\" />\n\t\t\t\t<div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t<Skeleton className=\"h-3 w-16\" />\n\t\t\t\t\t\t<Skeleton className=\"h-6 w-24\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t<Skeleton className=\"h-3 w-20\" />\n\t\t\t\t\t\t<Skeleton className=\"h-6 w-32\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t<Skeleton className=\"h-3 w-24\" />\n\t\t\t\t\t\t<Skeleton className=\"h-6 w-28\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t<Skeleton className=\"h-3 w-18\" />\n\t\t\t\t\t\t<Skeleton className=\"h-6 w-36\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"space-y-3\">\n\t\t\t\t<Skeleton className=\"h-5 w-40\" />\n\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t<Skeleton className=\"h-32 w-full\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction UpcomingRunsTabSkeleton() {\n\treturn (\n\t\t<div className=\"flex flex-col gap-2\">\n\t\t\t<Skeleton className=\"h-24 w-full\" />\n\t\t\t<Skeleton className=\"h-24 w-full\" />\n\t\t\t<Skeleton className=\"h-24 w-full\" />\n\t\t</div>\n\t);\n}\n\nfunction RunsTabSkeleton() {\n\treturn (\n\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t<div className=\"flex flex-col sm:flex-row gap-4\">\n\t\t\t\t<div className=\"flex-1\">\n\t\t\t\t\t<Skeleton className=\"h-9 w-full\" />\n\t\t\t\t</div>\n\t\t\t\t<div className=\"w-full sm:w-64\">\n\t\t\t\t\t<Skeleton className=\"h-9 w-full\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"flex flex-col gap-2\">\n\t\t\t\t<Skeleton className=\"h-24 w-full\" />\n\t\t\t\t<Skeleton className=\"h-24 w-full\" />\n\t\t\t\t<Skeleton className=\"h-24 w-full\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport const Route = createFileRoute(\n\t\"/work-pools/work-pool_/$workPoolName/queue/$workQueueName\",\n)({\n\tvalidateSearch: zodValidator(searchParams),\n\tcomponent: RouteComponent,\n\tloader: async ({ params, context: { queryClient } }) => {\n\t\t// Critical data - must await\n\t\tconst queue = await queryClient.ensureQueryData(\n\t\t\tbuildWorkPoolQueueDetailsQuery(params.workPoolName, params.workQueueName),\n\t\t);\n\n\t\treturn { queue };\n\t},\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { workPoolName, workQueueName } = Route.useParams();\n\tconst { queueTab } = Route.useSearch();\n\tconst navigate = Route.useNavigate();\n\tconst queryClient = useQueryClient();\n\n\tconst { data: queue } = useSuspenseQuery(\n\t\tbuildWorkPoolQueueDetailsQuery(workPoolName, workQueueName),\n\t);\n\n\tconst tabs = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tid: \"Details\",\n\t\t\t\tlabel: \"Details\",\n\t\t\t\thiddenOnDesktop: true, // Hide on xl screens and above\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"Upcoming Runs\",\n\t\t\t\tlabel: \"Upcoming Runs\",\n\t\t\t\thiddenOnDesktop: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"Runs\",\n\t\t\t\tlabel: \"Runs\",\n\t\t\t\thiddenOnDesktop: false,\n\t\t\t},\n\t\t],\n\t\t[],\n\t);\n\n\tconst handleTabChange = useCallback(\n\t\t(newTab: string) => {\n\t\t\tvoid navigate({\n\t\t\t\tto: \".\",\n\t\t\t\tsearch: { queueTab: newTab as SearchParams[\"queueTab\"] },\n\t\t\t});\n\t\t},\n\t\t[navigate],\n\t);\n\n\tconst handleQueueUpdate = useCallback(() => {\n\t\t// Refresh queue data\n\t\tvoid queryClient.invalidateQueries({\n\t\t\tqueryKey: workPoolQueuesQueryKeyFactory.detail(\n\t\t\t\tworkPoolName,\n\t\t\t\tworkQueueName,\n\t\t\t),\n\t\t});\n\t}, [queryClient, workPoolName, workQueueName]);\n\n\treturn (\n\t\t<LayoutWell>\n\t\t\t<LayoutWellContent>\n\t\t\t\t<LayoutWellHeader>\n\t\t\t\t\t<WorkPoolQueuePageHeader\n\t\t\t\t\t\tworkPoolName={workPoolName}\n\t\t\t\t\t\tqueue={queue}\n\t\t\t\t\t\tonUpdate={handleQueueUpdate}\n\t\t\t\t\t/>\n\t\t\t\t</LayoutWellHeader>\n\n\t\t\t\t<div className=\"flex flex-col xl:flex-row xl:gap-8\">\n\t\t\t\t\t<div className=\"flex-1\">\n\t\t\t\t\t\t<Tabs value={queueTab} onValueChange={handleTabChange}>\n\t\t\t\t\t\t\t<TabsList className=\"flex w-full overflow-x-auto scrollbar-none\">\n\t\t\t\t\t\t\t\t{tabs.map((tabItem) => (\n\t\t\t\t\t\t\t\t\t<TabsTrigger\n\t\t\t\t\t\t\t\t\t\tkey={tabItem.id}\n\t\t\t\t\t\t\t\t\t\tvalue={tabItem.id}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\"whitespace-nowrap flex-shrink-0\",\n\t\t\t\t\t\t\t\t\t\t\ttabItem.hiddenOnDesktop ? \"xl:hidden\" : \"\",\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{tabItem.label}\n\t\t\t\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</TabsList>\n\n\t\t\t\t\t\t\t<TabsContent value=\"Details\" className=\"space-y-0\">\n\t\t\t\t\t\t\t\t<Suspense fallback={<DetailsTabSkeleton />}>\n\t\t\t\t\t\t\t\t\t<WorkPoolQueueDetails\n\t\t\t\t\t\t\t\t\t\tworkPoolName={workPoolName}\n\t\t\t\t\t\t\t\t\t\tqueue={queue}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Suspense>\n\t\t\t\t\t\t\t</TabsContent>\n\n\t\t\t\t\t\t\t<TabsContent value=\"Upcoming Runs\" className=\"space-y-0\">\n\t\t\t\t\t\t\t\t<Suspense fallback={<UpcomingRunsTabSkeleton />}>\n\t\t\t\t\t\t\t\t\t<WorkPoolQueueUpcomingRunsTab\n\t\t\t\t\t\t\t\t\t\tworkPoolName={workPoolName}\n\t\t\t\t\t\t\t\t\t\tqueue={queue}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Suspense>\n\t\t\t\t\t\t\t</TabsContent>\n\n\t\t\t\t\t\t\t<TabsContent value=\"Runs\" className=\"space-y-0\">\n\t\t\t\t\t\t\t\t<Suspense fallback={<RunsTabSkeleton />}>\n\t\t\t\t\t\t\t\t\t<WorkPoolQueueRunsTab\n\t\t\t\t\t\t\t\t\t\tworkPoolName={workPoolName}\n\t\t\t\t\t\t\t\t\t\tqueue={queue}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Suspense>\n\t\t\t\t\t\t\t</TabsContent>\n\t\t\t\t\t\t</Tabs>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<aside className=\"w-full xl:w-80 xl:shrink-0 hidden xl:block\">\n\t\t\t\t\t\t<div className=\"sticky top-8\">\n\t\t\t\t\t\t\t<WorkPoolQueueDetails\n\t\t\t\t\t\t\t\tworkPoolName={workPoolName}\n\t\t\t\t\t\t\t\tqueue={queue}\n\t\t\t\t\t\t\t\talternate\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</aside>\n\t\t\t\t</div>\n\t\t\t</LayoutWellContent>\n\t\t</LayoutWell>\n\t);\n}\n"],"names":["None","jsx","FieldLabel","children","FieldValue","className","cn","BasicInfoSection","workPoolName","queue","fields","WorkPoolQueueStatusBadge","FormattedDate","ComponentValue","field","MetaInfoSection","WorkPoolQueueDetails","alternate","spacing","Separator","WorkPoolQueuePageHeader","onUpdate","jsxs","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","WorkPoolQueueToggle","WorkPoolQueueMenu","WorkPoolQueueRunsTab","pagination","setPagination","useState","searchTerm","setSearchTerm","selectedStates","setSelectedStates","debouncedSearchTerm","useDebounce","filter","useMemo","baseFilter","stateFilter","countFilter","baseCountFilter","paginatedData","useQuery","buildPaginateFlowRunsQuery","totalCount","buildCountFlowRunsQuery","flowIds","flowRun","flows","buildListFlowsQuery","flowRunsWithFlows","flowMap","flow","handleSearchChange","useCallback","event","prev","handlePaginationChange","newPagination","handleStateFilterChange","newSelectedStates","handleClearFilters","SearchInput","StateFilter","FlowRunsList","FlowRunsPagination","WorkPoolQueueUpcomingRunsTab","z","queueTab","default","DetailsTabSkeleton","Skeleton","UpcomingRunsTabSkeleton","RunsTabSkeleton","RouteComponent","workQueueName","Route","useParams","useSearch","navigate","useNavigate","queryClient","useQueryClient","data","useSuspenseQuery","buildWorkPoolQueueDetailsQuery","tabs","id","label","hiddenOnDesktop","handleTabChange","newTab","to","search","handleQueueUpdate","invalidateQueries","queryKey","workPoolQueuesQueryKeyFactory","detail","LayoutWell","LayoutWellContent","LayoutWellHeader","Tabs","TabsList","map","TabsTrigger","tabItem","TabsContent","Suspense"],"mappings":"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"}
1
+ {"version":3,"file":"work-pool_._workPoolName.queue._workQueueName-CjoM77tu.js","sources":["../../src/components/work-pools/work-pool-queue-details/work-pool-queue-details.tsx","../../src/components/work-pools/work-pool-queue-page-header/work-pool-queue-page-header.tsx","../../src/components/work-pools/work-pool-queue-runs-tab/work-pool-queue-runs-tab.tsx","../../src/components/work-pools/work-pool-queue-upcoming-runs-tab/work-pool-queue-upcoming-runs-tab.tsx","../../src/routes/work-pools/work-pool_.$workPoolName.queue.$workQueueName.tsx?tsr-split=component"],"sourcesContent":["import type { WorkPoolQueue } from \"@/api/work-pool-queues\";\nimport { FormattedDate } from \"@/components/ui/formatted-date\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { WorkPoolQueueStatusBadge } from \"@/components/work-pools/work-pool-queue-status-badge\";\nimport { cn } from \"@/utils\";\n\ntype WorkPoolQueueDetailsProps = {\n\tworkPoolName: string;\n\tqueue: WorkPoolQueue;\n\talternate?: boolean;\n\tclassName?: string;\n};\n\n// Helper components for field display\nconst None = () => <dd className=\"text-muted-foreground text-sm\">None</dd>;\nconst FieldLabel = ({ children }: { children: React.ReactNode }) => (\n\t<dt className=\"text-sm text-muted-foreground\">{children}</dt>\n);\nconst FieldValue = ({\n\tchildren,\n\tclassName,\n}: {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}) => <dd className={cn(\"text-sm\", className)}>{children}</dd>;\n\n// Basic Info Section Component\nfunction BasicInfoSection({\n\tworkPoolName,\n\tqueue,\n}: {\n\tworkPoolName: string;\n\tqueue: WorkPoolQueue;\n}) {\n\tconst fields = [\n\t\t{\n\t\t\tfield: \"Work Pool\",\n\t\t\tComponentValue: () => <FieldValue>{workPoolName}</FieldValue>,\n\t\t},\n\t\t{\n\t\t\tfield: \"Status\",\n\t\t\tComponentValue: () => (\n\t\t\t\t<dd>\n\t\t\t\t\t<WorkPoolQueueStatusBadge status={queue.status || \"NOT_READY\"} />\n\t\t\t\t</dd>\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tfield: \"Last Polled\",\n\t\t\tComponentValue: () =>\n\t\t\t\tqueue.last_polled ? (\n\t\t\t\t\t<FieldValue>\n\t\t\t\t\t\t<FormattedDate date={queue.last_polled} />\n\t\t\t\t\t</FieldValue>\n\t\t\t\t) : (\n\t\t\t\t\t<FieldValue className=\"text-muted-foreground\">Never</FieldValue>\n\t\t\t\t),\n\t\t},\n\t\t{\n\t\t\tfield: \"Description\",\n\t\t\tComponentValue: () =>\n\t\t\t\tqueue.description ? <FieldValue>{queue.description}</FieldValue> : null,\n\t\t},\n\t\t{\n\t\t\tfield: \"Priority\",\n\t\t\tComponentValue: () =>\n\t\t\t\tqueue.priority !== null && queue.priority !== undefined ? (\n\t\t\t\t\t<FieldValue>{String(queue.priority)}</FieldValue>\n\t\t\t\t) : (\n\t\t\t\t\t<None />\n\t\t\t\t),\n\t\t},\n\t].filter(({ ComponentValue }) => ComponentValue() !== null);\n\n\treturn (\n\t\t<div>\n\t\t\t<ul className=\"flex flex-col gap-3\">\n\t\t\t\t{fields.map(({ field, ComponentValue }) => (\n\t\t\t\t\t<li key={field}>\n\t\t\t\t\t\t<dl>\n\t\t\t\t\t\t\t<FieldLabel>{field}</FieldLabel>\n\t\t\t\t\t\t\t<ComponentValue />\n\t\t\t\t\t\t</dl>\n\t\t\t\t\t</li>\n\t\t\t\t))}\n\t\t\t</ul>\n\t\t</div>\n\t);\n}\n\n// Meta Info Section Component\nfunction MetaInfoSection({ queue }: { queue: WorkPoolQueue }) {\n\tconst fields = [\n\t\t{\n\t\t\tfield: \"Work Queue ID\",\n\t\t\tComponentValue: () =>\n\t\t\t\tqueue.id ? <FieldValue>{queue.id}</FieldValue> : <None />,\n\t\t},\n\t\t{\n\t\t\tfield: \"Flow Run Concurrency\",\n\t\t\tComponentValue: () => (\n\t\t\t\t<FieldValue>\n\t\t\t\t\t{queue.concurrency_limit !== null &&\n\t\t\t\t\tqueue.concurrency_limit !== undefined\n\t\t\t\t\t\t? String(queue.concurrency_limit)\n\t\t\t\t\t\t: \"Unlimited\"}\n\t\t\t\t</FieldValue>\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tfield: \"Created\",\n\t\t\tComponentValue: () =>\n\t\t\t\tqueue.created ? (\n\t\t\t\t\t<FieldValue>\n\t\t\t\t\t\t<FormattedDate date={queue.created} />\n\t\t\t\t\t</FieldValue>\n\t\t\t\t) : (\n\t\t\t\t\t<None />\n\t\t\t\t),\n\t\t},\n\t\t{\n\t\t\tfield: \"Last Updated\",\n\t\t\tComponentValue: () =>\n\t\t\t\tqueue.updated ? (\n\t\t\t\t\t<FieldValue>\n\t\t\t\t\t\t<FormattedDate date={queue.updated} />\n\t\t\t\t\t</FieldValue>\n\t\t\t\t) : (\n\t\t\t\t\t<None />\n\t\t\t\t),\n\t\t},\n\t];\n\n\treturn (\n\t\t<div>\n\t\t\t<ul className=\"flex flex-col gap-3\">\n\t\t\t\t{fields.map(({ field, ComponentValue }) => (\n\t\t\t\t\t<li key={field}>\n\t\t\t\t\t\t<dl>\n\t\t\t\t\t\t\t<FieldLabel>{field}</FieldLabel>\n\t\t\t\t\t\t\t<ComponentValue />\n\t\t\t\t\t\t</dl>\n\t\t\t\t\t</li>\n\t\t\t\t))}\n\t\t\t</ul>\n\t\t</div>\n\t);\n}\n\nexport function WorkPoolQueueDetails({\n\tworkPoolName,\n\tqueue,\n\talternate = false,\n\tclassName,\n}: WorkPoolQueueDetailsProps) {\n\tconst spacing = alternate ? \"space-y-4\" : \"space-y-6\";\n\n\treturn (\n\t\t<div className={cn(spacing, className)}>\n\t\t\t<BasicInfoSection workPoolName={workPoolName} queue={queue} />\n\t\t\t<Separator />\n\t\t\t<MetaInfoSection queue={queue} />\n\t\t</div>\n\t);\n}\n","import type { WorkPoolQueue } from \"@/api/work-pool-queues\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { cn } from \"@/utils\";\nimport { WorkPoolQueueMenu } from \"../work-pool-queue-menu\";\nimport { WorkPoolQueueToggle } from \"../work-pool-queue-toggle\";\n\nexport type WorkPoolQueuePageHeaderProps = {\n\tworkPoolName: string;\n\tqueue: WorkPoolQueue;\n\tonUpdate?: () => void;\n\tclassName?: string;\n};\n\nexport const WorkPoolQueuePageHeader = ({\n\tworkPoolName,\n\tqueue,\n\tonUpdate,\n\tclassName,\n}: WorkPoolQueuePageHeaderProps) => {\n\treturn (\n\t\t<header\n\t\t\tclassName={cn(\n\t\t\t\t\"flex mb-4 flex-row items-center justify-between\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Breadcrumb className={className}>\n\t\t\t\t<BreadcrumbList>\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink to=\"/work-pools\" className=\"text-xl font-semibold\">\n\t\t\t\t\t\t\tWork Pools\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbSeparator />\n\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\t\tto=\"/work-pools/work-pool/$workPoolName\"\n\t\t\t\t\t\t\tparams={{ workPoolName }}\n\t\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{workPoolName}\n\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t<BreadcrumbSeparator />\n\t\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t\t<BreadcrumbPage>{queue.name}</BreadcrumbPage>\n\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t</BreadcrumbList>\n\t\t\t</Breadcrumb>\n\t\t\t<div className=\"flex items-center space-x-2\">\n\t\t\t\t<WorkPoolQueueToggle queue={queue} onUpdate={onUpdate} />\n\t\t\t\t<WorkPoolQueueMenu queue={queue} onUpdate={onUpdate} />\n\t\t\t</div>\n\t\t</header>\n\t);\n};\n","import { useQuery } from \"@tanstack/react-query\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n\tbuildCountFlowRunsQuery,\n\tbuildPaginateFlowRunsQuery,\n\ttype FlowRunsCountFilter,\n\ttype FlowRunsPaginateFilter,\n\ttype FlowRunWithFlow,\n} from \"@/api/flow-runs\";\nimport { buildListFlowsQuery, type Flow } from \"@/api/flows\";\nimport type { WorkPoolQueue } from \"@/api/work-pool-queues\";\nimport { FlowRunsList } from \"@/components/flow-runs/flow-runs-list\";\nimport { StateFilter } from \"@/components/flow-runs/flow-runs-list/flow-runs-filters/state-filter\";\nimport type { FlowRunState } from \"@/components/flow-runs/flow-runs-list/flow-runs-filters/state-filters.constants\";\nimport {\n\tFlowRunsPagination,\n\ttype PaginationState,\n} from \"@/components/flow-runs/flow-runs-list/flow-runs-pagination\";\nimport { SearchInput } from \"@/components/ui/input\";\nimport useDebounce from \"@/hooks/use-debounce\";\n\ntype WorkPoolQueueRunsTabProps = {\n\tworkPoolName: string;\n\tqueue: WorkPoolQueue;\n\tclassName?: string;\n};\n\nexport const WorkPoolQueueRunsTab = ({\n\tworkPoolName,\n\tqueue,\n\tclassName,\n}: WorkPoolQueueRunsTabProps) => {\n\tconst [pagination, setPagination] = useState<PaginationState>({\n\t\tlimit: 10,\n\t\tpage: 1,\n\t});\n\tconst [searchTerm, setSearchTerm] = useState(\"\");\n\tconst [selectedStates, setSelectedStates] = useState<Set<FlowRunState>>(\n\t\tnew Set(),\n\t);\n\n\t// Debounce the search term to avoid too many API calls\n\tconst debouncedSearchTerm = useDebounce(searchTerm, 500);\n\n\tconst filter: FlowRunsPaginateFilter = useMemo(() => {\n\t\tconst baseFilter: FlowRunsPaginateFilter = {\n\t\t\tpage: pagination.page,\n\t\t\tlimit: pagination.limit,\n\t\t\tsort: \"START_TIME_DESC\",\n\t\t\twork_pools: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { any_: [workPoolName] },\n\t\t\t},\n\t\t\twork_pool_queues: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { any_: [queue.name] },\n\t\t\t},\n\t\t};\n\n\t\t// Add search filter if search term exists\n\t\tif (debouncedSearchTerm.trim()) {\n\t\t\tbaseFilter.flow_runs = {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { like_: debouncedSearchTerm.trim() },\n\t\t\t};\n\t\t}\n\n\t\t// Add state filter if states are selected\n\t\tif (selectedStates.size > 0) {\n\t\t\tconst stateFilter = {\n\t\t\t\tstate: {\n\t\t\t\t\toperator: \"and_\" as const,\n\t\t\t\t\tname: { any_: Array.from(selectedStates) },\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tif (baseFilter.flow_runs) {\n\t\t\t\t// Merge with existing flow_runs filter\n\t\t\t\tbaseFilter.flow_runs = {\n\t\t\t\t\t...baseFilter.flow_runs,\n\t\t\t\t\t...stateFilter,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tbaseFilter.flow_runs = {\n\t\t\t\t\toperator: \"and_\",\n\t\t\t\t\t...stateFilter,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn baseFilter;\n\t}, [\n\t\tworkPoolName,\n\t\tqueue.name,\n\t\tpagination,\n\t\tdebouncedSearchTerm,\n\t\tselectedStates,\n\t]);\n\n\tconst countFilter: FlowRunsCountFilter = useMemo(() => {\n\t\tconst baseCountFilter: FlowRunsCountFilter = {\n\t\t\twork_pools: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { any_: [workPoolName] },\n\t\t\t},\n\t\t\twork_pool_queues: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { any_: [queue.name] },\n\t\t\t},\n\t\t};\n\n\t\t// Add search filter to count if search term exists\n\t\tif (debouncedSearchTerm.trim()) {\n\t\t\tbaseCountFilter.flow_runs = {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { like_: debouncedSearchTerm.trim() },\n\t\t\t};\n\t\t}\n\n\t\t// Add state filter to count if states are selected\n\t\tif (selectedStates.size > 0) {\n\t\t\tconst stateFilter = {\n\t\t\t\tstate: {\n\t\t\t\t\toperator: \"and_\" as const,\n\t\t\t\t\tname: { any_: Array.from(selectedStates) },\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tif (baseCountFilter.flow_runs) {\n\t\t\t\t// Merge with existing flow_runs filter\n\t\t\t\tbaseCountFilter.flow_runs = {\n\t\t\t\t\t...baseCountFilter.flow_runs,\n\t\t\t\t\t...stateFilter,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tbaseCountFilter.flow_runs = {\n\t\t\t\t\toperator: \"and_\",\n\t\t\t\t\t...stateFilter,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn baseCountFilter;\n\t}, [workPoolName, queue.name, debouncedSearchTerm, selectedStates]);\n\n\t// Fetch paginated flow runs data\n\tconst { data: paginatedData } = useQuery(buildPaginateFlowRunsQuery(filter));\n\n\t// Fetch total count for pagination\n\tconst { data: totalCount } = useQuery(buildCountFlowRunsQuery(countFilter));\n\n\t// Get unique flow IDs for fetching flow details\n\tconst flowIds = useMemo(\n\t\t() => [\n\t\t\t...new Set(\n\t\t\t\t(paginatedData?.results ?? []).map((flowRun) => flowRun.flow_id),\n\t\t\t),\n\t\t],\n\t\t[paginatedData?.results],\n\t);\n\n\t// Fetch flow details\n\tconst { data: flows } = useQuery(\n\t\tbuildListFlowsQuery(\n\t\t\t{\n\t\t\t\tflows: {\n\t\t\t\t\toperator: \"and_\",\n\t\t\t\t\tid: { any_: flowIds },\n\t\t\t\t},\n\t\t\t\toffset: 0,\n\t\t\t\tsort: \"NAME_ASC\",\n\t\t\t},\n\t\t\t{ enabled: flowIds.length > 0 },\n\t\t),\n\t);\n\n\t// Combine flow runs with their corresponding flows\n\tconst flowRunsWithFlows = useMemo(() => {\n\t\tif (!paginatedData?.results) return [];\n\t\tconst flowMap = new Map(flows?.map((flow: Flow) => [flow.id, flow]) ?? []);\n\t\treturn paginatedData.results\n\t\t\t.map((flowRun) => {\n\t\t\t\tconst flow = flowMap.get(flowRun.flow_id);\n\t\t\t\tif (!flow) return null;\n\t\t\t\treturn {\n\t\t\t\t\t...flowRun,\n\t\t\t\t\tflow,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.filter((flowRun) => flowRun !== null) as FlowRunWithFlow[];\n\t}, [paginatedData?.results, flows]);\n\n\tconst handleSearchChange = useCallback(\n\t\t(event: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\tsetSearchTerm(event.target.value);\n\t\t\t// Reset to first page when searching\n\t\t\tsetPagination((prev) => ({ ...prev, page: 1 }));\n\t\t},\n\t\t[],\n\t);\n\n\tconst handlePaginationChange = useCallback(\n\t\t(newPagination: PaginationState) => {\n\t\t\tsetPagination(newPagination);\n\t\t},\n\t\t[],\n\t);\n\n\tconst handleStateFilterChange = useCallback(\n\t\t(newSelectedStates: Set<FlowRunState>) => {\n\t\t\tsetSelectedStates(newSelectedStates);\n\t\t\t// Reset to first page when filtering\n\t\t\tsetPagination((prev) => ({ ...prev, page: 1 }));\n\t\t},\n\t\t[],\n\t);\n\n\tconst handleClearFilters = useCallback(() => {\n\t\tsetSearchTerm(\"\");\n\t\tsetSelectedStates(new Set());\n\t\tsetPagination((prev) => ({ ...prev, page: 1 }));\n\t}, []);\n\n\t// Show loading only on initial load, not on pagination/filtering changes\n\tif (!paginatedData || totalCount === undefined) {\n\t\treturn (\n\t\t\t<div className={className}>\n\t\t\t\t<div className=\"text-muted-foreground text-center py-8\">\n\t\t\t\t\tLoading flow runs...\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={className}>\n\t\t\t{/* Search and Filter Controls */}\n\t\t\t<div className=\"flex flex-col sm:flex-row gap-4 mb-6\">\n\t\t\t\t<div className=\"flex-1\">\n\t\t\t\t\t<SearchInput\n\t\t\t\t\t\tplaceholder=\"Search flow runs by name...\"\n\t\t\t\t\t\tvalue={searchTerm}\n\t\t\t\t\t\tonChange={handleSearchChange}\n\t\t\t\t\t\tdebounceMs={500}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"w-full sm:w-64\">\n\t\t\t\t\t<StateFilter\n\t\t\t\t\t\tselectedFilters={selectedStates}\n\t\t\t\t\t\tonSelectFilter={handleStateFilterChange}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Flow Runs List */}\n\t\t\t<FlowRunsList\n\t\t\t\tflowRuns={flowRunsWithFlows}\n\t\t\t\tonClearFilters={\n\t\t\t\t\tflowRunsWithFlows.length === 0 ? handleClearFilters : undefined\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t{/* Pagination Controls */}\n\t\t\t{paginatedData.pages > 1 && (\n\t\t\t\t<div className=\"mt-6\">\n\t\t\t\t\t<FlowRunsPagination\n\t\t\t\t\t\tcount={totalCount}\n\t\t\t\t\t\tpages={paginatedData.pages}\n\t\t\t\t\t\tpagination={pagination}\n\t\t\t\t\t\tonChangePagination={handlePaginationChange}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { useQuery } from \"@tanstack/react-query\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n\tbuildCountFlowRunsQuery,\n\tbuildPaginateFlowRunsQuery,\n\ttype FlowRunsCountFilter,\n\ttype FlowRunsPaginateFilter,\n\ttype FlowRunWithFlow,\n} from \"@/api/flow-runs\";\nimport { buildListFlowsQuery, type Flow } from \"@/api/flows\";\nimport type { WorkPoolQueue } from \"@/api/work-pool-queues\";\nimport { FlowRunsList } from \"@/components/flow-runs/flow-runs-list\";\nimport {\n\tFlowRunsPagination,\n\ttype PaginationState,\n} from \"@/components/flow-runs/flow-runs-list/flow-runs-pagination\";\n\ntype WorkPoolQueueUpcomingRunsTabProps = {\n\tworkPoolName: string;\n\tqueue: WorkPoolQueue;\n\tclassName?: string;\n};\n\nexport const WorkPoolQueueUpcomingRunsTab = ({\n\tworkPoolName,\n\tqueue,\n\tclassName,\n}: WorkPoolQueueUpcomingRunsTabProps) => {\n\tconst [pagination, setPagination] = useState<PaginationState>({\n\t\tlimit: 5,\n\t\tpage: 1,\n\t});\n\n\tconst filter: FlowRunsPaginateFilter = useMemo(\n\t\t() => ({\n\t\t\tpage: pagination.page,\n\t\t\tlimit: pagination.limit,\n\t\t\tsort: \"EXPECTED_START_TIME_ASC\",\n\t\t\twork_pools: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { any_: [workPoolName] },\n\t\t\t},\n\t\t\twork_pool_queues: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { any_: [queue.name] },\n\t\t\t},\n\t\t\tflow_runs: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tstate: {\n\t\t\t\t\toperator: \"and_\",\n\t\t\t\t\tname: { any_: [\"Scheduled\"] },\n\t\t\t\t},\n\t\t\t},\n\t\t}),\n\t\t[workPoolName, queue.name, pagination],\n\t);\n\n\tconst countFilter: FlowRunsCountFilter = useMemo(\n\t\t() => ({\n\t\t\twork_pools: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { any_: [workPoolName] },\n\t\t\t},\n\t\t\twork_pool_queues: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tname: { any_: [queue.name] },\n\t\t\t},\n\t\t\tflow_runs: {\n\t\t\t\toperator: \"and_\",\n\t\t\t\tstate: {\n\t\t\t\t\toperator: \"and_\",\n\t\t\t\t\tname: { any_: [\"Scheduled\"] },\n\t\t\t\t},\n\t\t\t},\n\t\t}),\n\t\t[workPoolName, queue.name],\n\t);\n\n\tconst { data: paginatedData } = useQuery(buildPaginateFlowRunsQuery(filter));\n\n\tconst { data: totalCount } = useQuery(buildCountFlowRunsQuery(countFilter));\n\n\tconst flowIds = useMemo(\n\t\t() => [\n\t\t\t...new Set(\n\t\t\t\t(paginatedData?.results ?? []).map((flowRun) => flowRun.flow_id),\n\t\t\t),\n\t\t],\n\t\t[paginatedData?.results],\n\t);\n\n\tconst { data: flows } = useQuery(\n\t\tbuildListFlowsQuery(\n\t\t\t{\n\t\t\t\tflows: {\n\t\t\t\t\toperator: \"and_\",\n\t\t\t\t\tid: { any_: flowIds },\n\t\t\t\t},\n\t\t\t\toffset: 0,\n\t\t\t\tsort: \"NAME_ASC\",\n\t\t\t},\n\t\t\t{ enabled: flowIds.length > 0 },\n\t\t),\n\t);\n\n\tconst flowRunsWithFlows = useMemo(() => {\n\t\tif (!paginatedData?.results) return [];\n\t\tconst flowMap = new Map(flows?.map((flow: Flow) => [flow.id, flow]) ?? []);\n\t\treturn paginatedData.results\n\t\t\t.map((flowRun) => {\n\t\t\t\tconst flow = flowMap.get(flowRun.flow_id);\n\t\t\t\tif (!flow) return null;\n\t\t\t\treturn {\n\t\t\t\t\t...flowRun,\n\t\t\t\t\tflow,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.filter((flowRun) => flowRun !== null) as FlowRunWithFlow[];\n\t}, [paginatedData?.results, flows]);\n\n\tconst handlePaginationChange = useCallback(\n\t\t(newPagination: PaginationState) => {\n\t\t\tsetPagination(newPagination);\n\t\t},\n\t\t[],\n\t);\n\n\tif (!paginatedData || totalCount === undefined) {\n\t\treturn (\n\t\t\t<div className={className}>\n\t\t\t\t<div className=\"text-muted-foreground text-center py-8\">\n\t\t\t\t\tLoading upcoming runs...\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={className}>\n\t\t\t<FlowRunsList flowRuns={flowRunsWithFlows} />\n\n\t\t\t{paginatedData.pages > 1 && (\n\t\t\t\t<div className=\"mt-6\">\n\t\t\t\t\t<FlowRunsPagination\n\t\t\t\t\t\tcount={totalCount}\n\t\t\t\t\t\tpages={paginatedData.pages}\n\t\t\t\t\t\tpagination={pagination}\n\t\t\t\t\t\tonChangePagination={handlePaginationChange}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { useQueryClient, useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { zodValidator } from \"@tanstack/zod-adapter\";\nimport { Suspense, useCallback, useMemo } from \"react\";\nimport { z } from \"zod\";\nimport {\n\tbuildWorkPoolQueueDetailsQuery,\n\tworkPoolQueuesQueryKeyFactory,\n} from \"@/api/work-pool-queues\";\nimport {\n\tLayoutWell,\n\tLayoutWellContent,\n\tLayoutWellHeader,\n} from \"@/components/ui/layout-well\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\nimport { WorkPoolQueueDetails } from \"@/components/work-pools/work-pool-queue-details\";\nimport { WorkPoolQueuePageHeader } from \"@/components/work-pools/work-pool-queue-page-header\";\nimport { WorkPoolQueueRunsTab } from \"@/components/work-pools/work-pool-queue-runs-tab\";\nimport { WorkPoolQueueUpcomingRunsTab } from \"@/components/work-pools/work-pool-queue-upcoming-runs-tab\";\nimport { cn } from \"@/utils\";\n\nconst searchParams = z.object({\n\tqueueTab: z\n\t\t.enum([\"Details\", \"Upcoming Runs\", \"Runs\"])\n\t\t.default(\"Upcoming Runs\"),\n});\n\ntype SearchParams = z.infer<typeof searchParams>;\n\nfunction DetailsTabSkeleton() {\n\treturn (\n\t\t<div className=\"space-y-6\">\n\t\t\t<div className=\"space-y-4\">\n\t\t\t\t<Skeleton className=\"h-4 w-48\" />\n\t\t\t\t<div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t<Skeleton className=\"h-3 w-16\" />\n\t\t\t\t\t\t<Skeleton className=\"h-6 w-24\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t<Skeleton className=\"h-3 w-20\" />\n\t\t\t\t\t\t<Skeleton className=\"h-6 w-32\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t<Skeleton className=\"h-3 w-24\" />\n\t\t\t\t\t\t<Skeleton className=\"h-6 w-28\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t<Skeleton className=\"h-3 w-18\" />\n\t\t\t\t\t\t<Skeleton className=\"h-6 w-36\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"space-y-3\">\n\t\t\t\t<Skeleton className=\"h-5 w-40\" />\n\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t<Skeleton className=\"h-32 w-full\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction UpcomingRunsTabSkeleton() {\n\treturn (\n\t\t<div className=\"flex flex-col gap-2\">\n\t\t\t<Skeleton className=\"h-24 w-full\" />\n\t\t\t<Skeleton className=\"h-24 w-full\" />\n\t\t\t<Skeleton className=\"h-24 w-full\" />\n\t\t</div>\n\t);\n}\n\nfunction RunsTabSkeleton() {\n\treturn (\n\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t<div className=\"flex flex-col sm:flex-row gap-4\">\n\t\t\t\t<div className=\"flex-1\">\n\t\t\t\t\t<Skeleton className=\"h-9 w-full\" />\n\t\t\t\t</div>\n\t\t\t\t<div className=\"w-full sm:w-64\">\n\t\t\t\t\t<Skeleton className=\"h-9 w-full\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"flex flex-col gap-2\">\n\t\t\t\t<Skeleton className=\"h-24 w-full\" />\n\t\t\t\t<Skeleton className=\"h-24 w-full\" />\n\t\t\t\t<Skeleton className=\"h-24 w-full\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport const Route = createFileRoute(\n\t\"/work-pools/work-pool_/$workPoolName/queue/$workQueueName\",\n)({\n\tvalidateSearch: zodValidator(searchParams),\n\tcomponent: RouteComponent,\n\tloader: async ({ params, context: { queryClient } }) => {\n\t\t// Critical data - must await\n\t\tconst queue = await queryClient.ensureQueryData(\n\t\t\tbuildWorkPoolQueueDetailsQuery(params.workPoolName, params.workQueueName),\n\t\t);\n\n\t\treturn { queue };\n\t},\n\twrapInSuspense: true,\n});\n\nfunction RouteComponent() {\n\tconst { workPoolName, workQueueName } = Route.useParams();\n\tconst { queueTab } = Route.useSearch();\n\tconst navigate = Route.useNavigate();\n\tconst queryClient = useQueryClient();\n\n\tconst { data: queue } = useSuspenseQuery(\n\t\tbuildWorkPoolQueueDetailsQuery(workPoolName, workQueueName),\n\t);\n\n\tconst tabs = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tid: \"Details\",\n\t\t\t\tlabel: \"Details\",\n\t\t\t\thiddenOnDesktop: true, // Hide on xl screens and above\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"Upcoming Runs\",\n\t\t\t\tlabel: \"Upcoming Runs\",\n\t\t\t\thiddenOnDesktop: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"Runs\",\n\t\t\t\tlabel: \"Runs\",\n\t\t\t\thiddenOnDesktop: false,\n\t\t\t},\n\t\t],\n\t\t[],\n\t);\n\n\tconst handleTabChange = useCallback(\n\t\t(newTab: string) => {\n\t\t\tvoid navigate({\n\t\t\t\tto: \".\",\n\t\t\t\tsearch: { queueTab: newTab as SearchParams[\"queueTab\"] },\n\t\t\t});\n\t\t},\n\t\t[navigate],\n\t);\n\n\tconst handleQueueUpdate = useCallback(() => {\n\t\t// Refresh queue data\n\t\tvoid queryClient.invalidateQueries({\n\t\t\tqueryKey: workPoolQueuesQueryKeyFactory.detail(\n\t\t\t\tworkPoolName,\n\t\t\t\tworkQueueName,\n\t\t\t),\n\t\t});\n\t}, [queryClient, workPoolName, workQueueName]);\n\n\treturn (\n\t\t<LayoutWell>\n\t\t\t<LayoutWellContent>\n\t\t\t\t<LayoutWellHeader>\n\t\t\t\t\t<WorkPoolQueuePageHeader\n\t\t\t\t\t\tworkPoolName={workPoolName}\n\t\t\t\t\t\tqueue={queue}\n\t\t\t\t\t\tonUpdate={handleQueueUpdate}\n\t\t\t\t\t/>\n\t\t\t\t</LayoutWellHeader>\n\n\t\t\t\t<div className=\"flex flex-col xl:flex-row xl:gap-8\">\n\t\t\t\t\t<div className=\"flex-1\">\n\t\t\t\t\t\t<Tabs value={queueTab} onValueChange={handleTabChange}>\n\t\t\t\t\t\t\t<TabsList className=\"flex w-full overflow-x-auto scrollbar-none\">\n\t\t\t\t\t\t\t\t{tabs.map((tabItem) => (\n\t\t\t\t\t\t\t\t\t<TabsTrigger\n\t\t\t\t\t\t\t\t\t\tkey={tabItem.id}\n\t\t\t\t\t\t\t\t\t\tvalue={tabItem.id}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\"whitespace-nowrap flex-shrink-0\",\n\t\t\t\t\t\t\t\t\t\t\ttabItem.hiddenOnDesktop ? \"xl:hidden\" : \"\",\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{tabItem.label}\n\t\t\t\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</TabsList>\n\n\t\t\t\t\t\t\t<TabsContent value=\"Details\" className=\"space-y-0\">\n\t\t\t\t\t\t\t\t<Suspense fallback={<DetailsTabSkeleton />}>\n\t\t\t\t\t\t\t\t\t<WorkPoolQueueDetails\n\t\t\t\t\t\t\t\t\t\tworkPoolName={workPoolName}\n\t\t\t\t\t\t\t\t\t\tqueue={queue}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Suspense>\n\t\t\t\t\t\t\t</TabsContent>\n\n\t\t\t\t\t\t\t<TabsContent value=\"Upcoming Runs\" className=\"space-y-0\">\n\t\t\t\t\t\t\t\t<Suspense fallback={<UpcomingRunsTabSkeleton />}>\n\t\t\t\t\t\t\t\t\t<WorkPoolQueueUpcomingRunsTab\n\t\t\t\t\t\t\t\t\t\tworkPoolName={workPoolName}\n\t\t\t\t\t\t\t\t\t\tqueue={queue}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Suspense>\n\t\t\t\t\t\t\t</TabsContent>\n\n\t\t\t\t\t\t\t<TabsContent value=\"Runs\" className=\"space-y-0\">\n\t\t\t\t\t\t\t\t<Suspense fallback={<RunsTabSkeleton />}>\n\t\t\t\t\t\t\t\t\t<WorkPoolQueueRunsTab\n\t\t\t\t\t\t\t\t\t\tworkPoolName={workPoolName}\n\t\t\t\t\t\t\t\t\t\tqueue={queue}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Suspense>\n\t\t\t\t\t\t\t</TabsContent>\n\t\t\t\t\t\t</Tabs>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<aside className=\"w-full xl:w-80 xl:shrink-0 hidden xl:block\">\n\t\t\t\t\t\t<div className=\"sticky top-8\">\n\t\t\t\t\t\t\t<WorkPoolQueueDetails\n\t\t\t\t\t\t\t\tworkPoolName={workPoolName}\n\t\t\t\t\t\t\t\tqueue={queue}\n\t\t\t\t\t\t\t\talternate\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</aside>\n\t\t\t\t</div>\n\t\t\t</LayoutWellContent>\n\t\t</LayoutWell>\n\t);\n}\n"],"names":["None","jsx","FieldLabel","children","FieldValue","className","cn","BasicInfoSection","workPoolName","queue","fields","WorkPoolQueueStatusBadge","FormattedDate","ComponentValue","field","MetaInfoSection","WorkPoolQueueDetails","alternate","spacing","Separator","WorkPoolQueuePageHeader","onUpdate","jsxs","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","WorkPoolQueueToggle","WorkPoolQueueMenu","WorkPoolQueueRunsTab","pagination","setPagination","useState","searchTerm","setSearchTerm","selectedStates","setSelectedStates","debouncedSearchTerm","useDebounce","filter","useMemo","baseFilter","stateFilter","countFilter","baseCountFilter","paginatedData","useQuery","buildPaginateFlowRunsQuery","totalCount","buildCountFlowRunsQuery","flowIds","flowRun","flows","buildListFlowsQuery","flowRunsWithFlows","flowMap","flow","handleSearchChange","useCallback","event","prev","handlePaginationChange","newPagination","handleStateFilterChange","newSelectedStates","handleClearFilters","SearchInput","StateFilter","FlowRunsList","FlowRunsPagination","WorkPoolQueueUpcomingRunsTab","z","queueTab","default","DetailsTabSkeleton","Skeleton","UpcomingRunsTabSkeleton","RunsTabSkeleton","RouteComponent","workQueueName","Route","useParams","useSearch","navigate","useNavigate","queryClient","useQueryClient","data","useSuspenseQuery","buildWorkPoolQueueDetailsQuery","tabs","id","label","hiddenOnDesktop","handleTabChange","newTab","to","search","handleQueueUpdate","invalidateQueries","queryKey","workPoolQueuesQueryKeyFactory","detail","LayoutWell","LayoutWellContent","LayoutWellHeader","Tabs","TabsList","map","TabsTrigger","tabItem","TabsContent","Suspense"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{j as s,r as i,p as x,L as n}from"./vendor-tanstack-BK8oseNA.js";import{b5 as m,ao as d,I as c,db as p}from"./index-D5RdrxkU.js";import{a as f}from"./index-Cutg_A1j.js";const Q=({flowId:e})=>s.jsx(i.Suspense,{fallback:s.jsx(m,{className:"h-4 w-full"}),children:s.jsx(j,{flowId:e})}),j=({flowId:e})=>{const{data:a}=x(d(e));return s.jsxs("div",{className:"flex items-center gap-1 text-xs",children:["Flow",s.jsxs(n,{to:"/flows/flow/$id",params:{id:a.id},className:"flex items-center gap-1",children:[s.jsx(c,{id:"Workflow",className:"size-4"}),a.name]})]})},I=({workPoolName:e})=>s.jsxs("div",{className:"flex items-center gap-1 text-xs",children:["Work Pool",s.jsxs(n,{to:"/work-pools/work-pool/$workPoolName",params:{workPoolName:e},className:"flex items-center gap-1",children:[s.jsx(c,{id:"Cpu",className:"size-4"}),e]})]}),L=({workPoolName:e,workQueueName:a,showLabel:o=!1,showStatus:l=!1,className:r,iconSize:t})=>s.jsx(i.Suspense,{fallback:s.jsx(m,{className:"h-4 w-full"}),children:s.jsx(k,{workPoolName:e,workQueueName:a,showLabel:o,showStatus:l,className:r,iconSize:t})}),k=({workPoolName:e,workQueueName:a,showLabel:o,showStatus:l,className:r,iconSize:t})=>{const{data:u}=x(p(e,a));return s.jsx(w,{workQueue:u,workPoolName:e,showLabel:o,showStatus:l,className:r,iconSize:t})},w=({workQueue:e,workPoolName:a,showLabel:o=!1,showStatus:l=!1,className:r,iconSize:t})=>s.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[o&&s.jsx("span",{children:"Work Queue"}),s.jsxs(n,{to:"/work-pools/work-pool/$workPoolName/queue/$workQueueName",params:{workPoolName:a,workQueueName:e.name},className:r??"flex items-center gap-1",children:[s.jsx(c,{id:"ListOrdered",size:t,className:t?void 0:"size-4"}),e.name]}),l&&e.status&&s.jsx(f,{status:e.status})]});export{Q as F,L as W,I as a};
2
- //# sourceMappingURL=work-queue-icon-text-_Ez8e2dw.js.map
1
+ import{j as s,r as i,p as x,L as n}from"./vendor-tanstack-BK8oseNA.js";import{b5 as m,ao as d,I as c,da as p}from"./index-BvSl3DKP.js";import{a as f}from"./index-ChIrfjIW.js";const Q=({flowId:e})=>s.jsx(i.Suspense,{fallback:s.jsx(m,{className:"h-4 w-full"}),children:s.jsx(j,{flowId:e})}),j=({flowId:e})=>{const{data:a}=x(d(e));return s.jsxs("div",{className:"flex items-center gap-1 text-xs",children:["Flow",s.jsxs(n,{to:"/flows/flow/$id",params:{id:a.id},className:"flex items-center gap-1",children:[s.jsx(c,{id:"Workflow",className:"size-4"}),a.name]})]})},I=({workPoolName:e})=>s.jsxs("div",{className:"flex items-center gap-1 text-xs",children:["Work Pool",s.jsxs(n,{to:"/work-pools/work-pool/$workPoolName",params:{workPoolName:e},className:"flex items-center gap-1",children:[s.jsx(c,{id:"Cpu",className:"size-4"}),e]})]}),L=({workPoolName:e,workQueueName:a,showLabel:o=!1,showStatus:l=!1,className:r,iconSize:t})=>s.jsx(i.Suspense,{fallback:s.jsx(m,{className:"h-4 w-full"}),children:s.jsx(k,{workPoolName:e,workQueueName:a,showLabel:o,showStatus:l,className:r,iconSize:t})}),k=({workPoolName:e,workQueueName:a,showLabel:o,showStatus:l,className:r,iconSize:t})=>{const{data:u}=x(p(e,a));return s.jsx(w,{workQueue:u,workPoolName:e,showLabel:o,showStatus:l,className:r,iconSize:t})},w=({workQueue:e,workPoolName:a,showLabel:o=!1,showStatus:l=!1,className:r,iconSize:t})=>s.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[o&&s.jsx("span",{children:"Work Queue"}),s.jsxs(n,{to:"/work-pools/work-pool/$workPoolName/queue/$workQueueName",params:{workPoolName:a,workQueueName:e.name},className:r??"flex items-center gap-1",children:[s.jsx(c,{id:"ListOrdered",size:t,className:t?void 0:"size-4"}),e.name]}),l&&e.status&&s.jsx(f,{status:e.status})]});export{Q as F,L as W,I as a};
2
+ //# sourceMappingURL=work-queue-icon-text-CP4yX3uM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"work-queue-icon-text-_Ez8e2dw.js","sources":["../../src/components/flows/flow-link.tsx","../../src/components/work-pools/work-pool-link.tsx","../../src/components/work-pools/work-queue-icon-text/work-queue-icon-text.tsx"],"sourcesContent":["import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { Link } from \"@tanstack/react-router\";\nimport { Suspense } from \"react\";\nimport { buildFLowDetailsQuery } from \"@/api/flows\";\nimport { Icon } from \"@/components/ui/icons\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\n\ntype FlowLinkProps = {\n\tflowId: string;\n};\n\nexport const FlowLink = ({ flowId }: FlowLinkProps) => {\n\treturn (\n\t\t<Suspense fallback={<Skeleton className=\"h-4 w-full\" />}>\n\t\t\t<FlowLinkImplementation flowId={flowId} />\n\t\t</Suspense>\n\t);\n};\n\nconst FlowLinkImplementation = ({ flowId }: FlowLinkProps) => {\n\tconst { data: flow } = useSuspenseQuery(buildFLowDetailsQuery(flowId));\n\n\treturn (\n\t\t<div className=\"flex items-center gap-1 text-xs\">\n\t\t\tFlow\n\t\t\t<Link\n\t\t\t\tto=\"/flows/flow/$id\"\n\t\t\t\tparams={{ id: flow.id }}\n\t\t\t\tclassName=\"flex items-center gap-1\"\n\t\t\t>\n\t\t\t\t<Icon id=\"Workflow\" className=\"size-4\" />\n\t\t\t\t{flow.name}\n\t\t\t</Link>\n\t\t</div>\n\t);\n};\n","import { Link } from \"@tanstack/react-router\";\nimport { Icon } from \"@/components/ui/icons\";\n\ntype WorkPoolLinkProps = {\n\tworkPoolName: string;\n};\n\nexport const WorkPoolLink = ({ workPoolName }: WorkPoolLinkProps) => {\n\treturn (\n\t\t<div className=\"flex items-center gap-1 text-xs\">\n\t\t\tWork Pool\n\t\t\t<Link\n\t\t\t\tto=\"/work-pools/work-pool/$workPoolName\"\n\t\t\t\tparams={{ workPoolName }}\n\t\t\t\tclassName=\"flex items-center gap-1\"\n\t\t\t>\n\t\t\t\t<Icon id=\"Cpu\" className=\"size-4\" />\n\t\t\t\t{workPoolName}\n\t\t\t</Link>\n\t\t</div>\n\t);\n};\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { Link } from \"@tanstack/react-router\";\nimport { Suspense } from \"react\";\nimport { buildWorkQueueDetailsQuery, type WorkQueue } from \"@/api/work-queues\";\nimport { Icon } from \"@/components/ui/icons\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { StatusIcon } from \"@/components/ui/status-badge\";\n\ntype WorkQueueIconTextBaseProps = {\n\tworkPoolName: string;\n\tworkQueueName: string;\n\tshowLabel?: boolean;\n\tshowStatus?: boolean;\n\tclassName?: string;\n\ticonSize?: number;\n};\n\ntype WorkQueueIconTextProps = WorkQueueIconTextBaseProps;\n\nexport const WorkQueueIconText = ({\n\tworkPoolName,\n\tworkQueueName,\n\tshowLabel = false,\n\tshowStatus = false,\n\tclassName,\n\ticonSize,\n}: WorkQueueIconTextProps) => (\n\t<Suspense fallback={<Skeleton className=\"h-4 w-full\" />}>\n\t\t<WorkQueueIconTextFetched\n\t\t\tworkPoolName={workPoolName}\n\t\t\tworkQueueName={workQueueName}\n\t\t\tshowLabel={showLabel}\n\t\t\tshowStatus={showStatus}\n\t\t\tclassName={className}\n\t\t\ticonSize={iconSize}\n\t\t/>\n\t</Suspense>\n);\n\nconst WorkQueueIconTextFetched = ({\n\tworkPoolName,\n\tworkQueueName,\n\tshowLabel,\n\tshowStatus,\n\tclassName,\n\ticonSize,\n}: WorkQueueIconTextBaseProps) => {\n\tconst { data: workQueue } = useSuspenseQuery(\n\t\tbuildWorkQueueDetailsQuery(workPoolName, workQueueName),\n\t);\n\n\treturn (\n\t\t<WorkQueueIconTextPresentational\n\t\t\tworkQueue={workQueue}\n\t\t\tworkPoolName={workPoolName}\n\t\t\tshowLabel={showLabel}\n\t\t\tshowStatus={showStatus}\n\t\t\tclassName={className}\n\t\t\ticonSize={iconSize}\n\t\t/>\n\t);\n};\n\ntype WorkQueueIconTextPresentationalProps = {\n\tworkQueue: WorkQueue;\n\tworkPoolName: string;\n\tshowLabel?: boolean;\n\tshowStatus?: boolean;\n\tclassName?: string;\n\ticonSize?: number;\n};\n\nconst WorkQueueIconTextPresentational = ({\n\tworkQueue,\n\tworkPoolName,\n\tshowLabel = false,\n\tshowStatus = false,\n\tclassName,\n\ticonSize,\n}: WorkQueueIconTextPresentationalProps) => {\n\treturn (\n\t\t<div className=\"flex items-center gap-1 text-xs\">\n\t\t\t{showLabel && <span>Work Queue</span>}\n\t\t\t<Link\n\t\t\t\tto=\"/work-pools/work-pool/$workPoolName/queue/$workQueueName\"\n\t\t\t\tparams={{ workPoolName, workQueueName: workQueue.name }}\n\t\t\t\tclassName={className ?? \"flex items-center gap-1\"}\n\t\t\t>\n\t\t\t\t<Icon\n\t\t\t\t\tid=\"ListOrdered\"\n\t\t\t\t\tsize={iconSize}\n\t\t\t\t\tclassName={iconSize ? undefined : \"size-4\"}\n\t\t\t\t/>\n\t\t\t\t{workQueue.name}\n\t\t\t</Link>\n\t\t\t{showStatus && workQueue.status && (\n\t\t\t\t<StatusIcon status={workQueue.status} />\n\t\t\t)}\n\t\t</div>\n\t);\n};\n"],"names":["FlowLink","flowId","jsx","Suspense","Skeleton","FlowLinkImplementation","flow","useSuspenseQuery","buildFLowDetailsQuery","jsxs","Link","Icon","WorkPoolLink","workPoolName","WorkQueueIconText","workQueueName","showLabel","showStatus","className","iconSize","WorkQueueIconTextFetched","workQueue","buildWorkQueueDetailsQuery","WorkQueueIconTextPresentational","StatusIcon"],"mappings":"+KAWO,MAAMA,EAAW,CAAC,CAAE,OAAAC,KAEzBC,EAAAA,IAACC,EAAAA,SAAA,CAAS,SAAUD,EAAAA,IAACE,EAAA,CAAS,UAAU,YAAA,CAAa,EACpD,SAAAF,EAAAA,IAACG,EAAA,CAAuB,OAAAJ,CAAA,CAAgB,EACzC,EAIII,EAAyB,CAAC,CAAE,OAAAJ,KAA4B,CAC7D,KAAM,CAAE,KAAMK,CAAA,EAASC,EAAiBC,EAAsBP,CAAM,CAAC,EAErE,OACCQ,EAAAA,KAAC,MAAA,CAAI,UAAU,kCAAkC,SAAA,CAAA,OAEhDA,EAAAA,KAACC,EAAA,CACA,GAAG,kBACH,OAAQ,CAAE,GAAIJ,EAAK,EAAA,EACnB,UAAU,0BAEV,SAAA,CAAAJ,EAAAA,IAACS,EAAA,CAAK,GAAG,WAAW,UAAU,SAAS,EACtCL,EAAK,IAAA,CAAA,CAAA,CACP,EACD,CAEF,EC5BaM,EAAe,CAAC,CAAE,aAAAC,KAE7BJ,EAAAA,KAAC,MAAA,CAAI,UAAU,kCAAkC,SAAA,CAAA,YAEhDA,EAAAA,KAACC,EAAA,CACA,GAAG,sCACH,OAAQ,CAAE,aAAAG,CAAA,EACV,UAAU,0BAEV,SAAA,CAAAX,EAAAA,IAACS,EAAA,CAAK,GAAG,MAAM,UAAU,SAAS,EACjCE,CAAA,CAAA,CAAA,CACF,EACD,ECAWC,EAAoB,CAAC,CACjC,aAAAD,EACA,cAAAE,EACA,UAAAC,EAAY,GACZ,WAAAC,EAAa,GACb,UAAAC,EACA,SAAAC,CACD,UACEhB,EAAAA,SAAA,CAAS,eAAWC,EAAA,CAAS,UAAU,aAAa,EACpD,SAAAF,EAAAA,IAACkB,EAAA,CACA,aAAAP,EACA,cAAAE,EACA,UAAAC,EACA,WAAAC,EACA,UAAAC,EACA,SAAAC,CAAA,CACD,CAAA,CACD,EAGKC,EAA2B,CAAC,CACjC,aAAAP,EACA,cAAAE,EACA,UAAAC,EACA,WAAAC,EACA,UAAAC,EACA,SAAAC,CACD,IAAkC,CACjC,KAAM,CAAE,KAAME,CAAA,EAAcd,EAC3Be,EAA2BT,EAAcE,CAAa,CAAA,EAGvD,OACCb,EAAAA,IAACqB,EAAA,CACA,UAAAF,EACA,aAAAR,EACA,UAAAG,EACA,WAAAC,EACA,UAAAC,EACA,SAAAC,CAAA,CAAA,CAGH,EAWMI,EAAkC,CAAC,CACxC,UAAAF,EACA,aAAAR,EACA,UAAAG,EAAY,GACZ,WAAAC,EAAa,GACb,UAAAC,EACA,SAAAC,CACD,IAEEV,EAAAA,KAAC,MAAA,CAAI,UAAU,kCACb,SAAA,CAAAO,GAAad,EAAAA,IAAC,QAAK,SAAA,YAAA,CAAU,EAC9BO,EAAAA,KAACC,EAAA,CACA,GAAG,2DACH,OAAQ,CAAE,aAAAG,EAAc,cAAeQ,EAAU,IAAA,EACjD,UAAWH,GAAa,0BAExB,SAAA,CAAAhB,EAAAA,IAACS,EAAA,CACA,GAAG,cACH,KAAMQ,EACN,UAAWA,EAAW,OAAY,QAAA,CAAA,EAElCE,EAAU,IAAA,CAAA,CAAA,EAEXJ,GAAcI,EAAU,cACvBG,EAAA,CAAW,OAAQH,EAAU,MAAA,CAAQ,CAAA,EAExC"}
1
+ {"version":3,"file":"work-queue-icon-text-CP4yX3uM.js","sources":["../../src/components/flows/flow-link.tsx","../../src/components/work-pools/work-pool-link.tsx","../../src/components/work-pools/work-queue-icon-text/work-queue-icon-text.tsx"],"sourcesContent":["import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { Link } from \"@tanstack/react-router\";\nimport { Suspense } from \"react\";\nimport { buildFLowDetailsQuery } from \"@/api/flows\";\nimport { Icon } from \"@/components/ui/icons\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\n\ntype FlowLinkProps = {\n\tflowId: string;\n};\n\nexport const FlowLink = ({ flowId }: FlowLinkProps) => {\n\treturn (\n\t\t<Suspense fallback={<Skeleton className=\"h-4 w-full\" />}>\n\t\t\t<FlowLinkImplementation flowId={flowId} />\n\t\t</Suspense>\n\t);\n};\n\nconst FlowLinkImplementation = ({ flowId }: FlowLinkProps) => {\n\tconst { data: flow } = useSuspenseQuery(buildFLowDetailsQuery(flowId));\n\n\treturn (\n\t\t<div className=\"flex items-center gap-1 text-xs\">\n\t\t\tFlow\n\t\t\t<Link\n\t\t\t\tto=\"/flows/flow/$id\"\n\t\t\t\tparams={{ id: flow.id }}\n\t\t\t\tclassName=\"flex items-center gap-1\"\n\t\t\t>\n\t\t\t\t<Icon id=\"Workflow\" className=\"size-4\" />\n\t\t\t\t{flow.name}\n\t\t\t</Link>\n\t\t</div>\n\t);\n};\n","import { Link } from \"@tanstack/react-router\";\nimport { Icon } from \"@/components/ui/icons\";\n\ntype WorkPoolLinkProps = {\n\tworkPoolName: string;\n};\n\nexport const WorkPoolLink = ({ workPoolName }: WorkPoolLinkProps) => {\n\treturn (\n\t\t<div className=\"flex items-center gap-1 text-xs\">\n\t\t\tWork Pool\n\t\t\t<Link\n\t\t\t\tto=\"/work-pools/work-pool/$workPoolName\"\n\t\t\t\tparams={{ workPoolName }}\n\t\t\t\tclassName=\"flex items-center gap-1\"\n\t\t\t>\n\t\t\t\t<Icon id=\"Cpu\" className=\"size-4\" />\n\t\t\t\t{workPoolName}\n\t\t\t</Link>\n\t\t</div>\n\t);\n};\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { Link } from \"@tanstack/react-router\";\nimport { Suspense } from \"react\";\nimport { buildWorkQueueDetailsQuery, type WorkQueue } from \"@/api/work-queues\";\nimport { Icon } from \"@/components/ui/icons\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { StatusIcon } from \"@/components/ui/status-badge\";\n\ntype WorkQueueIconTextBaseProps = {\n\tworkPoolName: string;\n\tworkQueueName: string;\n\tshowLabel?: boolean;\n\tshowStatus?: boolean;\n\tclassName?: string;\n\ticonSize?: number;\n};\n\ntype WorkQueueIconTextProps = WorkQueueIconTextBaseProps;\n\nexport const WorkQueueIconText = ({\n\tworkPoolName,\n\tworkQueueName,\n\tshowLabel = false,\n\tshowStatus = false,\n\tclassName,\n\ticonSize,\n}: WorkQueueIconTextProps) => (\n\t<Suspense fallback={<Skeleton className=\"h-4 w-full\" />}>\n\t\t<WorkQueueIconTextFetched\n\t\t\tworkPoolName={workPoolName}\n\t\t\tworkQueueName={workQueueName}\n\t\t\tshowLabel={showLabel}\n\t\t\tshowStatus={showStatus}\n\t\t\tclassName={className}\n\t\t\ticonSize={iconSize}\n\t\t/>\n\t</Suspense>\n);\n\nconst WorkQueueIconTextFetched = ({\n\tworkPoolName,\n\tworkQueueName,\n\tshowLabel,\n\tshowStatus,\n\tclassName,\n\ticonSize,\n}: WorkQueueIconTextBaseProps) => {\n\tconst { data: workQueue } = useSuspenseQuery(\n\t\tbuildWorkQueueDetailsQuery(workPoolName, workQueueName),\n\t);\n\n\treturn (\n\t\t<WorkQueueIconTextPresentational\n\t\t\tworkQueue={workQueue}\n\t\t\tworkPoolName={workPoolName}\n\t\t\tshowLabel={showLabel}\n\t\t\tshowStatus={showStatus}\n\t\t\tclassName={className}\n\t\t\ticonSize={iconSize}\n\t\t/>\n\t);\n};\n\ntype WorkQueueIconTextPresentationalProps = {\n\tworkQueue: WorkQueue;\n\tworkPoolName: string;\n\tshowLabel?: boolean;\n\tshowStatus?: boolean;\n\tclassName?: string;\n\ticonSize?: number;\n};\n\nconst WorkQueueIconTextPresentational = ({\n\tworkQueue,\n\tworkPoolName,\n\tshowLabel = false,\n\tshowStatus = false,\n\tclassName,\n\ticonSize,\n}: WorkQueueIconTextPresentationalProps) => {\n\treturn (\n\t\t<div className=\"flex items-center gap-1 text-xs\">\n\t\t\t{showLabel && <span>Work Queue</span>}\n\t\t\t<Link\n\t\t\t\tto=\"/work-pools/work-pool/$workPoolName/queue/$workQueueName\"\n\t\t\t\tparams={{ workPoolName, workQueueName: workQueue.name }}\n\t\t\t\tclassName={className ?? \"flex items-center gap-1\"}\n\t\t\t>\n\t\t\t\t<Icon\n\t\t\t\t\tid=\"ListOrdered\"\n\t\t\t\t\tsize={iconSize}\n\t\t\t\t\tclassName={iconSize ? undefined : \"size-4\"}\n\t\t\t\t/>\n\t\t\t\t{workQueue.name}\n\t\t\t</Link>\n\t\t\t{showStatus && workQueue.status && (\n\t\t\t\t<StatusIcon status={workQueue.status} />\n\t\t\t)}\n\t\t</div>\n\t);\n};\n"],"names":["FlowLink","flowId","jsx","Suspense","Skeleton","FlowLinkImplementation","flow","useSuspenseQuery","buildFLowDetailsQuery","jsxs","Link","Icon","WorkPoolLink","workPoolName","WorkQueueIconText","workQueueName","showLabel","showStatus","className","iconSize","WorkQueueIconTextFetched","workQueue","buildWorkQueueDetailsQuery","WorkQueueIconTextPresentational","StatusIcon"],"mappings":"+KAWO,MAAMA,EAAW,CAAC,CAAE,OAAAC,KAEzBC,EAAAA,IAACC,EAAAA,SAAA,CAAS,SAAUD,EAAAA,IAACE,EAAA,CAAS,UAAU,YAAA,CAAa,EACpD,SAAAF,EAAAA,IAACG,EAAA,CAAuB,OAAAJ,CAAA,CAAgB,EACzC,EAIII,EAAyB,CAAC,CAAE,OAAAJ,KAA4B,CAC7D,KAAM,CAAE,KAAMK,CAAA,EAASC,EAAiBC,EAAsBP,CAAM,CAAC,EAErE,OACCQ,EAAAA,KAAC,MAAA,CAAI,UAAU,kCAAkC,SAAA,CAAA,OAEhDA,EAAAA,KAACC,EAAA,CACA,GAAG,kBACH,OAAQ,CAAE,GAAIJ,EAAK,EAAA,EACnB,UAAU,0BAEV,SAAA,CAAAJ,EAAAA,IAACS,EAAA,CAAK,GAAG,WAAW,UAAU,SAAS,EACtCL,EAAK,IAAA,CAAA,CAAA,CACP,EACD,CAEF,EC5BaM,EAAe,CAAC,CAAE,aAAAC,KAE7BJ,EAAAA,KAAC,MAAA,CAAI,UAAU,kCAAkC,SAAA,CAAA,YAEhDA,EAAAA,KAACC,EAAA,CACA,GAAG,sCACH,OAAQ,CAAE,aAAAG,CAAA,EACV,UAAU,0BAEV,SAAA,CAAAX,EAAAA,IAACS,EAAA,CAAK,GAAG,MAAM,UAAU,SAAS,EACjCE,CAAA,CAAA,CAAA,CACF,EACD,ECAWC,EAAoB,CAAC,CACjC,aAAAD,EACA,cAAAE,EACA,UAAAC,EAAY,GACZ,WAAAC,EAAa,GACb,UAAAC,EACA,SAAAC,CACD,UACEhB,EAAAA,SAAA,CAAS,eAAWC,EAAA,CAAS,UAAU,aAAa,EACpD,SAAAF,EAAAA,IAACkB,EAAA,CACA,aAAAP,EACA,cAAAE,EACA,UAAAC,EACA,WAAAC,EACA,UAAAC,EACA,SAAAC,CAAA,CACD,CAAA,CACD,EAGKC,EAA2B,CAAC,CACjC,aAAAP,EACA,cAAAE,EACA,UAAAC,EACA,WAAAC,EACA,UAAAC,EACA,SAAAC,CACD,IAAkC,CACjC,KAAM,CAAE,KAAME,CAAA,EAAcd,EAC3Be,EAA2BT,EAAcE,CAAa,CAAA,EAGvD,OACCb,EAAAA,IAACqB,EAAA,CACA,UAAAF,EACA,aAAAR,EACA,UAAAG,EACA,WAAAC,EACA,UAAAC,EACA,SAAAC,CAAA,CAAA,CAGH,EAWMI,EAAkC,CAAC,CACxC,UAAAF,EACA,aAAAR,EACA,UAAAG,EAAY,GACZ,WAAAC,EAAa,GACb,UAAAC,EACA,SAAAC,CACD,IAEEV,EAAAA,KAAC,MAAA,CAAI,UAAU,kCACb,SAAA,CAAAO,GAAad,EAAAA,IAAC,QAAK,SAAA,YAAA,CAAU,EAC9BO,EAAAA,KAACC,EAAA,CACA,GAAG,2DACH,OAAQ,CAAE,aAAAG,EAAc,cAAeQ,EAAU,IAAA,EACjD,UAAWH,GAAa,0BAExB,SAAA,CAAAhB,EAAAA,IAACS,EAAA,CACA,GAAG,cACH,KAAMQ,EACN,UAAWA,EAAW,OAAY,QAAA,CAAA,EAElCE,EAAU,IAAA,CAAA,CAAA,EAEXJ,GAAcI,EAAU,cACvBG,EAAA,CAAW,OAAQH,EAAU,MAAA,CAAQ,CAAA,EAExC"}
@@ -21,7 +21,7 @@
21
21
 
22
22
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
23
23
  <title>Prefect Server</title>
24
- <script type="module" crossorigin src="/PREFECT_UI_SERVE_BASE_REPLACE_PLACEHOLDER/assets/index-D5RdrxkU.js"></script>
24
+ <script type="module" crossorigin src="/PREFECT_UI_SERVE_BASE_REPLACE_PLACEHOLDER/assets/index-BvSl3DKP.js"></script>
25
25
  <link rel="modulepreload" crossorigin href="/PREFECT_UI_SERVE_BASE_REPLACE_PLACEHOLDER/assets/vendor-react-Bce9NwRC.js">
26
26
  <link rel="modulepreload" crossorigin href="/PREFECT_UI_SERVE_BASE_REPLACE_PLACEHOLDER/assets/vendor-tanstack-BK8oseNA.js">
27
27
  <link rel="modulepreload" crossorigin href="/PREFECT_UI_SERVE_BASE_REPLACE_PLACEHOLDER/assets/vendor-radix-CznP1SOq.js">
@@ -1,4 +1,4 @@
1
- from typing import ClassVar, Optional, Union
1
+ from typing import ClassVar, Union
2
2
 
3
3
  from pydantic import AliasChoices, AliasPath, Field
4
4
  from pydantic_settings import SettingsConfigDict
@@ -13,19 +13,6 @@ class FlowsSettings(PrefectBaseSettings):
13
13
 
14
14
  model_config: ClassVar[SettingsConfigDict] = build_settings_config(("flows",))
15
15
 
16
- heartbeat_frequency: Optional[int] = Field(
17
- default=None,
18
- description="Number of seconds between flow run heartbeats. "
19
- "Heartbeats are used to detect crashed flow runs.",
20
- ge=30,
21
- validation_alias=AliasChoices(
22
- AliasPath("heartbeat_frequency"),
23
- "prefect_flows_heartbeat_frequency",
24
- # Legacy alias for backwards compatibility
25
- "prefect_runner_heartbeat_frequency",
26
- ),
27
- )
28
-
29
16
  default_retries: int = Field(
30
17
  default=0,
31
18
  ge=0,
@@ -1,4 +1,3 @@
1
- import warnings
2
1
  from typing import ClassVar, Optional
3
2
 
4
3
  from pydantic import Field
@@ -60,22 +59,13 @@ class RunnerSettings(PrefectBaseSettings):
60
59
  description="Number of seconds a runner should wait between queries for scheduled work.",
61
60
  )
62
61
 
62
+ heartbeat_frequency: Optional[int] = Field(
63
+ default=None,
64
+ description="Number of seconds a runner should wait between heartbeats for flow runs.",
65
+ ge=30,
66
+ )
67
+
63
68
  server: RunnerServerSettings = Field(
64
69
  default_factory=RunnerServerSettings,
65
70
  description="Settings for controlling runner server behavior",
66
71
  )
67
-
68
- # handle deprecated fields
69
-
70
- @property
71
- def heartbeat_frequency(self) -> Optional[int]:
72
- """Deprecated: Use flows.heartbeat_frequency instead."""
73
- from prefect.settings.context import get_current_settings
74
-
75
- warnings.warn(
76
- "`runner.heartbeat_frequency` has been moved to `flows.heartbeat_frequency`. "
77
- "Use `PREFECT_FLOWS_HEARTBEAT_FREQUENCY` instead of `PREFECT_RUNNER_HEARTBEAT_FREQUENCY`.",
78
- DeprecationWarning,
79
- stacklevel=2,
80
- )
81
- return get_current_settings().flows.heartbeat_frequency
prefect/task_engine.py CHANGED
@@ -1395,7 +1395,9 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
1395
1395
  log_prints=log_prints,
1396
1396
  task_run=self.task_run,
1397
1397
  parameters=self.parameters,
1398
- result_store=await get_result_store().aupdate_for_task(self.task),
1398
+ result_store=await get_result_store().update_for_task(
1399
+ self.task, _sync=False
1400
+ ),
1399
1401
  client=client,
1400
1402
  persist_result=persist_result,
1401
1403
  )
prefect/task_worker.py CHANGED
@@ -334,7 +334,7 @@ class TaskWorker:
334
334
  task.persist_result = True
335
335
  store = await ResultStore(
336
336
  result_storage=await get_or_create_default_task_scheduling_storage()
337
- ).aupdate_for_task(task)
337
+ ).update_for_task(task)
338
338
  try:
339
339
  run_data: dict[str, Any] = await read_parameters(store, parameters_id)
340
340
  parameters = run_data.get("parameters", {})
prefect/tasks.py CHANGED
@@ -919,7 +919,7 @@ class Task(Generic[P, R]):
919
919
 
920
920
  store = await ResultStore(
921
921
  result_storage=await get_or_create_default_task_scheduling_storage()
922
- ).aupdate_for_task(self)
922
+ ).update_for_task(self)
923
923
  context = serialize_context()
924
924
  data: dict[str, Any] = {"context": context}
925
925
  if parameters:
@@ -1024,7 +1024,7 @@ class Task(Generic[P, R]):
1024
1024
 
1025
1025
  store = await ResultStore(
1026
1026
  result_storage=await get_or_create_default_task_scheduling_storage()
1027
- ).aupdate_for_task(self)
1027
+ ).update_for_task(self)
1028
1028
  context = serialize_context()
1029
1029
  data: dict[str, Any] = {"context": context}
1030
1030
  if parameters:
@@ -22,7 +22,6 @@ from websockets.asyncio.server import (
22
22
  )
23
23
  from websockets.exceptions import ConnectionClosed
24
24
 
25
- from prefect._internal.compatibility.async_dispatch import async_dispatch
26
25
  from prefect.events import Event
27
26
  from prefect.events.clients import (
28
27
  AssertingEventsClient,
@@ -40,7 +39,7 @@ from prefect.settings import (
40
39
  temporary_settings,
41
40
  )
42
41
  from prefect.types._datetime import DateTime, now
43
- from prefect.utilities.asyncutils import run_coro_as_sync
42
+ from prefect.utilities.asyncutils import sync_compatible
44
43
  from prefect.utilities.processutils import open_process
45
44
 
46
45
 
@@ -441,7 +440,8 @@ async def events_pipeline(
441
440
  asserting_events_worker: EventsWorker,
442
441
  ) -> AsyncGenerator[EventsPipeline, None]:
443
442
  class AssertingEventsPipeline(EventsPipeline):
444
- async def aprocess_events(
443
+ @sync_compatible
444
+ async def process_events(
445
445
  self,
446
446
  dequeue_events: bool = True,
447
447
  min_events: int = 0,
@@ -469,21 +469,6 @@ async def events_pipeline(
469
469
  messages = self.events_to_messages(events)
470
470
  await self.process_messages(messages)
471
471
 
472
- @async_dispatch(aprocess_events)
473
- def process_events(
474
- self,
475
- dequeue_events: bool = True,
476
- min_events: int = 0,
477
- timeout: int = 10,
478
- ):
479
- return run_coro_as_sync(
480
- self.aprocess_events(
481
- dequeue_events=dequeue_events,
482
- min_events=min_events,
483
- timeout=timeout,
484
- )
485
- )
486
-
487
472
  yield AssertingEventsPipeline()
488
473
 
489
474
 
@@ -492,17 +477,14 @@ async def emitting_events_pipeline(
492
477
  asserting_and_emitting_events_worker: EventsWorker,
493
478
  ) -> AsyncGenerator[EventsPipeline, None]:
494
479
  class AssertingAndEmittingEventsPipeline(EventsPipeline):
495
- async def aprocess_events(self):
480
+ @sync_compatible
481
+ async def process_events(self):
496
482
  asserting_and_emitting_events_worker.wait_until_empty()
497
483
  events = asserting_and_emitting_events_worker._client.pop_events()
498
484
 
499
485
  messages = self.events_to_messages(events)
500
486
  await self.process_messages(messages)
501
487
 
502
- @async_dispatch(aprocess_events)
503
- def process_events(self):
504
- return run_coro_as_sync(self.aprocess_events())
505
-
506
488
  yield AssertingAndEmittingEventsPipeline()
507
489
 
508
490