prefect 3.6.16.dev5__py3-none-any.whl → 3.6.16.dev7__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 (286) hide show
  1. prefect/_build_info.py +3 -3
  2. prefect/cli/__init__.py +1 -0
  3. prefect/cli/cloud/asset.py +135 -0
  4. prefect/server/ui-v2/assets/artifact-card-BnPKAfkY.js +2 -0
  5. prefect/server/ui-v2/assets/artifact-card-BnPKAfkY.js.map +1 -0
  6. prefect/server/ui-v2/assets/artifact._id-vDOuIuta.js +2 -0
  7. prefect/server/ui-v2/assets/artifact._id-vDOuIuta.js.map +1 -0
  8. prefect/server/ui-v2/assets/automation-wizard-RlOhF90R.js +2 -0
  9. prefect/server/ui-v2/assets/automation-wizard-RlOhF90R.js.map +1 -0
  10. prefect/server/ui-v2/assets/automation._id-CEHa-X0X.js +2 -0
  11. prefect/server/ui-v2/assets/{automation._id-CMiura1b.js.map → automation._id-CEHa-X0X.js.map} +1 -1
  12. prefect/server/ui-v2/assets/{automation_._id.edit-Cbfcwa-K.js → automation_._id.edit-BRWAsELa.js} +2 -2
  13. prefect/server/ui-v2/assets/{automation_._id.edit-Cbfcwa-K.js.map → automation_._id.edit-BRWAsELa.js.map} +1 -1
  14. prefect/server/ui-v2/assets/{automations-header-BxPCOE-0.js → automations-header-Dr6v5dPp.js} +2 -2
  15. prefect/server/ui-v2/assets/{automations-header-BxPCOE-0.js.map → automations-header-Dr6v5dPp.js.map} +1 -1
  16. prefect/server/ui-v2/assets/base-job-template-form-section-C8_R96gO.js +2 -0
  17. prefect/server/ui-v2/assets/base-job-template-form-section-C8_R96gO.js.map +1 -0
  18. prefect/server/ui-v2/assets/block-type-details-tAkUWqs1.js +2 -0
  19. prefect/server/ui-v2/assets/block-type-details-tAkUWqs1.js.map +1 -0
  20. prefect/server/ui-v2/assets/block-type-logo-scnMsyY5.js +2 -0
  21. prefect/server/ui-v2/assets/{block-type-logo-DuvU7goV.js.map → block-type-logo-scnMsyY5.js.map} +1 -1
  22. prefect/server/ui-v2/assets/block._id-BY42cyjR.js +2 -0
  23. prefect/server/ui-v2/assets/block._id-BY42cyjR.js.map +1 -0
  24. prefect/server/ui-v2/assets/{block_._id.edit-C4SmoQ4y.js → block_._id.edit-n2jwU5yr.js} +2 -2
  25. prefect/server/ui-v2/assets/{block_._id.edit-C4SmoQ4y.js.map → block_._id.edit-n2jwU5yr.js.map} +1 -1
  26. prefect/server/ui-v2/assets/catalog-5_GoCKpb.js +2 -0
  27. prefect/server/ui-v2/assets/catalog-5_GoCKpb.js.map +1 -0
  28. prefect/server/ui-v2/assets/catalog_._slug-sZvt0fDy.js +2 -0
  29. prefect/server/ui-v2/assets/catalog_._slug-sZvt0fDy.js.map +1 -0
  30. prefect/server/ui-v2/assets/{catalog_._slug_.create-CgKL4TS2.js → catalog_._slug_.create-rboQmoyW.js} +2 -2
  31. prefect/server/ui-v2/assets/{catalog_._slug_.create-CgKL4TS2.js.map → catalog_._slug_.create-rboQmoyW.js.map} +1 -1
  32. prefect/server/ui-v2/assets/{collapsible-DZbPzSgr.js → collapsible-Lk7MRvBH.js} +2 -2
  33. prefect/server/ui-v2/assets/{collapsible-DZbPzSgr.js.map → collapsible-Lk7MRvBH.js.map} +1 -1
  34. prefect/server/ui-v2/assets/concurrency-limit._id-D5i9zZJh.js +2 -0
  35. prefect/server/ui-v2/assets/concurrency-limit._id-D5i9zZJh.js.map +1 -0
  36. prefect/server/ui-v2/assets/create-CtsA2QIl.js +2 -0
  37. prefect/server/ui-v2/assets/{create-BrNwbpVu.js.map → create-CtsA2QIl.js.map} +1 -1
  38. prefect/server/ui-v2/assets/{create-DWgkh2HT.js → create-DJPAEZ93.js} +2 -2
  39. prefect/server/ui-v2/assets/create-DJPAEZ93.js.map +1 -0
  40. prefect/server/ui-v2/assets/{data-table-QSHqmTar.js → data-table-bk-0xKWT.js} +2 -2
  41. prefect/server/ui-v2/assets/{data-table-QSHqmTar.js.map → data-table-bk-0xKWT.js.map} +1 -1
  42. prefect/server/ui-v2/assets/{delete-confirmation-dialog-dLycVNo4.js → delete-confirmation-dialog-BZg9EOfN.js} +2 -2
  43. prefect/server/ui-v2/assets/{delete-confirmation-dialog-dLycVNo4.js.map → delete-confirmation-dialog-BZg9EOfN.js.map} +1 -1
  44. prefect/server/ui-v2/assets/{deployment-action-header-CzvBTL6H.js → deployment-action-header-DwuMPgVg.js} +2 -2
  45. prefect/server/ui-v2/assets/{deployment-action-header-CzvBTL6H.js.map → deployment-action-header-DwuMPgVg.js.map} +1 -1
  46. prefect/server/ui-v2/assets/deployment-form-BpKkzEf2.js +3 -0
  47. prefect/server/ui-v2/assets/deployment-form-BpKkzEf2.js.map +1 -0
  48. prefect/server/ui-v2/assets/{deployment-links-CGjJpxJA.js → deployment-links-B67P-6Ph.js} +2 -2
  49. prefect/server/ui-v2/assets/{deployment-links-CGjJpxJA.js.map → deployment-links-B67P-6Ph.js.map} +1 -1
  50. prefect/server/ui-v2/assets/{deployment._id-DXrb6frJ.js → deployment._id-BVOBfMVf.js} +2 -2
  51. prefect/server/ui-v2/assets/deployment._id-BVOBfMVf.js.map +1 -0
  52. prefect/server/ui-v2/assets/deployment._id-KOMC9fpE.js +2 -0
  53. prefect/server/ui-v2/assets/deployment._id-KOMC9fpE.js.map +1 -0
  54. prefect/server/ui-v2/assets/deployment_._id.duplicate-BPk2SchT.js +2 -0
  55. prefect/server/ui-v2/assets/deployment_._id.duplicate-BPk2SchT.js.map +1 -0
  56. prefect/server/ui-v2/assets/deployment_._id.edit-Dv0M_huv.js +2 -0
  57. prefect/server/ui-v2/assets/deployment_._id.edit-Dv0M_huv.js.map +1 -0
  58. prefect/server/ui-v2/assets/deployment_._id.run-DFVA4Xhx.js +2 -0
  59. prefect/server/ui-v2/assets/{deployment_._id.run-CnacOmhY.js.map → deployment_._id.run-DFVA4Xhx.js.map} +1 -1
  60. prefect/server/ui-v2/assets/{dropdown-menu-B9LKPlz7.js → dropdown-menu-fRiq5bS-.js} +2 -2
  61. prefect/server/ui-v2/assets/{dropdown-menu-B9LKPlz7.js.map → dropdown-menu-fRiq5bS-.js.map} +1 -1
  62. prefect/server/ui-v2/assets/{event-resource-display-B42RIaiX.js → event-resource-display-C1ZAey-o.js} +2 -2
  63. prefect/server/ui-v2/assets/{event-resource-display-B42RIaiX.js.map → event-resource-display-C1ZAey-o.js.map} +1 -1
  64. prefect/server/ui-v2/assets/event._eventDate._eventId-CcbtP9Ag.js +2 -0
  65. prefect/server/ui-v2/assets/{event._eventDate._eventId-CKTuT_8S.js.map → event._eventDate._eventId-CcbtP9Ag.js.map} +1 -1
  66. prefect/server/ui-v2/assets/flow-run-graph-CycKStSg.js +2 -0
  67. prefect/server/ui-v2/assets/flow-run-graph-CycKStSg.js.map +1 -0
  68. prefect/server/ui-v2/assets/{flow-run._id-BKv9Meqc.js → flow-run._id-Dn9R_Tjy.js} +2 -2
  69. prefect/server/ui-v2/assets/flow-run._id-Dn9R_Tjy.js.map +1 -0
  70. prefect/server/ui-v2/assets/{flow-run._id-ZTkjj6bM.js → flow-run._id-Dwx7ojcj.js} +2 -2
  71. prefect/server/ui-v2/assets/flow-run._id-Dwx7ojcj.js.map +1 -0
  72. prefect/server/ui-v2/assets/flow-run._id-YzRd5jrC.js +4 -0
  73. prefect/server/ui-v2/assets/flow-run._id-YzRd5jrC.js.map +1 -0
  74. prefect/server/ui-v2/assets/flow-runs-pagination-DMLZFM1m.js +2 -0
  75. prefect/server/ui-v2/assets/flow-runs-pagination-DMLZFM1m.js.map +1 -0
  76. prefect/server/ui-v2/assets/flow._id-V6-Qhkwk.js +2 -0
  77. prefect/server/ui-v2/assets/flow._id-V6-Qhkwk.js.map +1 -0
  78. prefect/server/ui-v2/assets/{form-DOdmIC3A.js → form-Cl5Hk9bq.js} +2 -2
  79. prefect/server/ui-v2/assets/{form-DOdmIC3A.js.map → form-Cl5Hk9bq.js.map} +1 -1
  80. prefect/server/ui-v2/assets/{header-DcIuN5UN.js → header-BuI436ik.js} +2 -2
  81. prefect/server/ui-v2/assets/{header-DcIuN5UN.js.map → header-BuI436ik.js.map} +1 -1
  82. prefect/server/ui-v2/assets/{header-CnBwASd-.js → header-DcAQCxQl.js} +2 -2
  83. prefect/server/ui-v2/assets/{header-CnBwASd-.js.map → header-DcAQCxQl.js.map} +1 -1
  84. prefect/server/ui-v2/assets/{header-DxE-NzAK.js → header-qlcK4NLD.js} +2 -2
  85. prefect/server/ui-v2/assets/{header-DxE-NzAK.js.map → header-qlcK4NLD.js.map} +1 -1
  86. prefect/server/ui-v2/assets/index--Z69UYXV.js +2 -0
  87. prefect/server/ui-v2/assets/index--Z69UYXV.js.map +1 -0
  88. prefect/server/ui-v2/assets/{index-D0R9_LIL.js → index-BO4Qqsm8.js} +2 -2
  89. prefect/server/ui-v2/assets/index-BO4Qqsm8.js.map +1 -0
  90. prefect/server/ui-v2/assets/index-Bg45XS_V.js +2 -0
  91. prefect/server/ui-v2/assets/index-Bg45XS_V.js.map +1 -0
  92. prefect/server/ui-v2/assets/{index-BIBIJufF.js → index-BleYpDoN.js} +2 -2
  93. prefect/server/ui-v2/assets/index-BleYpDoN.js.map +1 -0
  94. prefect/server/ui-v2/assets/{index-DyOAqIOp.js → index-C63VUjOh.js} +2 -2
  95. prefect/server/ui-v2/assets/{index-DyOAqIOp.js.map → index-C63VUjOh.js.map} +1 -1
  96. prefect/server/ui-v2/assets/{index-DfKXdmko.js → index-C6LgWyJb.js} +2 -2
  97. prefect/server/ui-v2/assets/index-C6LgWyJb.js.map +1 -0
  98. prefect/server/ui-v2/assets/index-CE-bVgqj.js +2 -0
  99. prefect/server/ui-v2/assets/{index-DlAHvqFx.js.map → index-CE-bVgqj.js.map} +1 -1
  100. prefect/server/ui-v2/assets/{index-V_xTKaEb.js → index-CPpeVt8m.js} +13 -13
  101. prefect/server/ui-v2/assets/index-CPpeVt8m.js.map +1 -0
  102. prefect/server/ui-v2/assets/index-CYaUe0Ym.js +2 -0
  103. prefect/server/ui-v2/assets/index-CYaUe0Ym.js.map +1 -0
  104. prefect/server/ui-v2/assets/{index-C5RMFRyZ.js → index-Clbms0kg.js} +2 -2
  105. prefect/server/ui-v2/assets/index-Clbms0kg.js.map +1 -0
  106. prefect/server/ui-v2/assets/index-D13YFoYA.js +2 -0
  107. prefect/server/ui-v2/assets/index-D13YFoYA.js.map +1 -0
  108. prefect/server/ui-v2/assets/{index-Cx1qEoCK.js → index-D73a_nGu.js} +2 -2
  109. prefect/server/ui-v2/assets/{index-Cx1qEoCK.js.map → index-D73a_nGu.js.map} +1 -1
  110. prefect/server/ui-v2/assets/index-DJXBzX1E.css +1 -0
  111. prefect/server/ui-v2/assets/{index-BO60ehN6.js → index-DPPPaOr_.js} +2 -2
  112. prefect/server/ui-v2/assets/index-DPPPaOr_.js.map +1 -0
  113. prefect/server/ui-v2/assets/{index-DP8W-xJo.js → index-DU9ShbqW.js} +2 -2
  114. prefect/server/ui-v2/assets/index-DU9ShbqW.js.map +1 -0
  115. prefect/server/ui-v2/assets/index-DdR1lzZk.js +2 -0
  116. prefect/server/ui-v2/assets/index-DdR1lzZk.js.map +1 -0
  117. prefect/server/ui-v2/assets/{index-B9ttjsyu.js → index-ELo08q04.js} +2 -2
  118. prefect/server/ui-v2/assets/{index-B9ttjsyu.js.map → index-ELo08q04.js.map} +1 -1
  119. prefect/server/ui-v2/assets/{index-BTL1xHS9.js → index-cp6PTdHp.js} +2 -2
  120. prefect/server/ui-v2/assets/{index-BTL1xHS9.js.map → index-cp6PTdHp.js.map} +1 -1
  121. prefect/server/ui-v2/assets/{index-D6G96ToY.js → index-kM_g8J0u.js} +2 -2
  122. prefect/server/ui-v2/assets/{index-D6G96ToY.js.map → index-kM_g8J0u.js.map} +1 -1
  123. prefect/server/ui-v2/assets/{index-q5Y3hlDT.js → index-mYcm9Rkr.js} +2 -2
  124. prefect/server/ui-v2/assets/index-mYcm9Rkr.js.map +1 -0
  125. prefect/server/ui-v2/assets/{index-D9cOtoSU.js → index-yavn_NBp.js} +2 -2
  126. prefect/server/ui-v2/assets/index-yavn_NBp.js.map +1 -0
  127. prefect/server/ui-v2/assets/{json-input-YKJMJCcT.js → json-input-iUzf6BvZ.js} +2 -2
  128. prefect/server/ui-v2/assets/{json-input-YKJMJCcT.js.map → json-input-iUzf6BvZ.js.map} +1 -1
  129. prefect/server/ui-v2/assets/{key-value-RPUUqQ6F.js → key-value-DI27Dv4P.js} +2 -2
  130. prefect/server/ui-v2/assets/{key-value-RPUUqQ6F.js.map → key-value-DI27Dv4P.js.map} +1 -1
  131. prefect/server/ui-v2/assets/key._key-C-nk2nld.js +2 -0
  132. prefect/server/ui-v2/assets/key._key-C-nk2nld.js.map +1 -0
  133. prefect/server/ui-v2/assets/{lazy-markdown-B9vEkJ0h.js → lazy-markdown-D_y73qoD.js} +2 -2
  134. prefect/server/ui-v2/assets/{lazy-markdown-B9vEkJ0h.js.map → lazy-markdown-D_y73qoD.js.map} +1 -1
  135. prefect/server/ui-v2/assets/{login-C3PhSGQJ.js → login-DR_xuMmg.js} +2 -2
  136. prefect/server/ui-v2/assets/{login-C3PhSGQJ.js.map → login-DR_xuMmg.js.map} +1 -1
  137. prefect/server/ui-v2/assets/{markdown-input-Dei7u1qp.js → markdown-input-hzlzpUdj.js} +2 -2
  138. prefect/server/ui-v2/assets/{markdown-input-Dei7u1qp.js.map → markdown-input-hzlzpUdj.js.map} +1 -1
  139. prefect/server/ui-v2/assets/{python-example-snippet-DvulFxgw.js → python-example-snippet-d8bTNJ0J.js} +3 -3
  140. prefect/server/ui-v2/assets/{python-example-snippet-DvulFxgw.js.map → python-example-snippet-d8bTNJ0J.js.map} +1 -1
  141. prefect/server/ui-v2/assets/{python-input-niCawr8m.js → python-input-Bxdnzvx3.js} +2 -2
  142. prefect/server/ui-v2/assets/{python-input-niCawr8m.js.map → python-input-Bxdnzvx3.js.map} +1 -1
  143. prefect/server/ui-v2/assets/{radio-group-D55TQZsk.js → radio-group-0oOEMJCS.js} +2 -2
  144. prefect/server/ui-v2/assets/{radio-group-D55TQZsk.js.map → radio-group-0oOEMJCS.js.map} +1 -1
  145. prefect/server/ui-v2/assets/{route-error-state-Cu4m0LTX.js → route-error-state-BqbnZCc-.js} +2 -2
  146. prefect/server/ui-v2/assets/{route-error-state-Cu4m0LTX.js.map → route-error-state-BqbnZCc-.js.map} +1 -1
  147. prefect/server/ui-v2/assets/{schema-form-BQAcWW5k.js → schema-form-BD-WM4S0.js} +2 -2
  148. prefect/server/ui-v2/assets/{schema-form-BQAcWW5k.js.map → schema-form-BD-WM4S0.js.map} +1 -1
  149. prefect/server/ui-v2/assets/{schema-form-input-string-format-datetime-Cb4sTJle.js → schema-form-input-string-format-datetime-Dg3zVAp5.js} +4 -4
  150. prefect/server/ui-v2/assets/{schema-form-input-string-format-datetime-Cb4sTJle.js.map → schema-form-input-string-format-datetime-Dg3zVAp5.js.map} +1 -1
  151. prefect/server/ui-v2/assets/{settings-DV4ewZ_4.js → settings-Dm6yMLix.js} +2 -2
  152. prefect/server/ui-v2/assets/{settings-DV4ewZ_4.js.map → settings-Dm6yMLix.js.map} +1 -1
  153. prefect/server/ui-v2/assets/{sort-filter-DY7vgl7C.js → sort-filter-X6JyRc0-.js} +2 -2
  154. prefect/server/ui-v2/assets/{sort-filter-DY7vgl7C.js.map → sort-filter-X6JyRc0-.js.map} +1 -1
  155. prefect/server/ui-v2/assets/{table-ChOwO4Pk.js → table-Xyel2BEw.js} +2 -2
  156. prefect/server/ui-v2/assets/{table-ChOwO4Pk.js.map → table-Xyel2BEw.js.map} +1 -1
  157. prefect/server/ui-v2/assets/{tags-input-2KSBvO_K.js → tags-input-DqZ8v99z.js} +2 -2
  158. prefect/server/ui-v2/assets/{tags-input-2KSBvO_K.js.map → tags-input-DqZ8v99z.js.map} +1 -1
  159. prefect/server/ui-v2/assets/{task-run-concurrency-limits-reset-dialog-CNrP9yPQ.js → task-run-concurrency-limits-reset-dialog-5xFWeoYy.js} +2 -2
  160. prefect/server/ui-v2/assets/{task-run-concurrency-limits-reset-dialog-CNrP9yPQ.js.map → task-run-concurrency-limits-reset-dialog-5xFWeoYy.js.map} +1 -1
  161. prefect/server/ui-v2/assets/{task-run._id-cqXH0PMU.js → task-run._id-9DcrUEGz.js} +3 -3
  162. prefect/server/ui-v2/assets/{task-run._id-cqXH0PMU.js.map → task-run._id-9DcrUEGz.js.map} +1 -1
  163. prefect/server/ui-v2/assets/{task-run._id-CQGeAiBh.js → task-run._id-DJkoLl_e.js} +2 -2
  164. prefect/server/ui-v2/assets/task-run._id-DJkoLl_e.js.map +1 -0
  165. prefect/server/ui-v2/assets/task-runs-pagination-B2fSdB1t.js +2 -0
  166. prefect/server/ui-v2/assets/task-runs-pagination-B2fSdB1t.js.map +1 -0
  167. prefect/server/ui-v2/assets/{textarea-9v5uTuxg.js → textarea-DFEOJJdc.js} +2 -2
  168. prefect/server/ui-v2/assets/{textarea-9v5uTuxg.js.map → textarea-DFEOJJdc.js.map} +1 -1
  169. prefect/server/ui-v2/assets/{timezone-select-DPtR_b06.js → timezone-select-NViFNNLz.js} +2 -2
  170. prefect/server/ui-v2/assets/{timezone-select-DPtR_b06.js.map → timezone-select-NViFNNLz.js.map} +1 -1
  171. prefect/server/ui-v2/assets/{toggle-group-CBJphTE6.js → toggle-group-EMgSOoYH.js} +2 -2
  172. prefect/server/ui-v2/assets/{toggle-group-CBJphTE6.js.map → toggle-group-EMgSOoYH.js.map} +1 -1
  173. prefect/server/ui-v2/assets/use-delete-automation-confirmation-dialog-BHgDXlwg.js +2 -0
  174. prefect/server/ui-v2/assets/use-delete-automation-confirmation-dialog-BHgDXlwg.js.map +1 -0
  175. prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-BYY1b8yH.js → use-delete-block-document-confirmation-dialog-CxRkBKPg.js} +2 -2
  176. prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-BYY1b8yH.js.map → use-delete-block-document-confirmation-dialog-CxRkBKPg.js.map} +1 -1
  177. prefect/server/ui-v2/assets/use-flow-runs-selected-rows-Ck8nwx2q.js +2 -0
  178. prefect/server/ui-v2/assets/use-flow-runs-selected-rows-Ck8nwx2q.js.map +1 -0
  179. prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-BOTU5FPq.js → use-get-artifacts-flow-task-runs-D7Djt53s.js} +2 -2
  180. prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-BOTU5FPq.js.map → use-get-artifacts-flow-task-runs-D7Djt53s.js.map} +1 -1
  181. prefect/server/ui-v2/assets/{use-quick-run-DzSmbSlu.js → use-quick-run-Cpy0t7dX.js} +2 -2
  182. prefect/server/ui-v2/assets/{use-quick-run-DzSmbSlu.js.map → use-quick-run-Cpy0t7dX.js.map} +1 -1
  183. prefect/server/ui-v2/assets/{use-state-favicon-UFxhmhHr.js → use-state-favicon-CMsL9s6j.js} +2 -2
  184. prefect/server/ui-v2/assets/{use-state-favicon-UFxhmhHr.js.map → use-state-favicon-CMsL9s6j.js.map} +1 -1
  185. prefect/server/ui-v2/assets/use-stepper-CZZEx5js.js +2 -0
  186. prefect/server/ui-v2/assets/use-stepper-CZZEx5js.js.map +1 -0
  187. prefect/server/ui-v2/assets/{utilities-2FfCfMAV.js → utilities-D9BfvLg5.js} +2 -2
  188. prefect/server/ui-v2/assets/{utilities-2FfCfMAV.js.map → utilities-D9BfvLg5.js.map} +1 -1
  189. prefect/server/ui-v2/assets/work-pool-filter-dsJ6xeK6.js +2 -0
  190. prefect/server/ui-v2/assets/work-pool-filter-dsJ6xeK6.js.map +1 -0
  191. prefect/server/ui-v2/assets/{work-pool-queue-toggle-zSWhEFap.js → work-pool-queue-toggle-f_-cTWxB.js} +2 -2
  192. prefect/server/ui-v2/assets/{work-pool-queue-toggle-zSWhEFap.js.map → work-pool-queue-toggle-f_-cTWxB.js.map} +1 -1
  193. prefect/server/ui-v2/assets/{work-pool._workPoolName-BwIVfCIe.js → work-pool._workPoolName-zBqgkYLT.js} +2 -2
  194. prefect/server/ui-v2/assets/{work-pool._workPoolName-BwIVfCIe.js.map → work-pool._workPoolName-zBqgkYLT.js.map} +1 -1
  195. prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-j7cjgoJp.js → work-pool_._workPoolName.edit-B-8_CnfA.js} +2 -2
  196. prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-j7cjgoJp.js.map → work-pool_._workPoolName.edit-B-8_CnfA.js.map} +1 -1
  197. prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-BlFjSdoB.js → work-pool_._workPoolName.queue._workQueueName-DzrY1tMq.js} +2 -2
  198. prefect/server/ui-v2/assets/work-pool_._workPoolName.queue._workQueueName-DzrY1tMq.js.map +1 -0
  199. prefect/server/ui-v2/assets/{work-queue-icon-text-vWlRNW-b.js → work-queue-icon-text-BqqQ413o.js} +2 -2
  200. prefect/server/ui-v2/assets/{work-queue-icon-text-vWlRNW-b.js.map → work-queue-icon-text-BqqQ413o.js.map} +1 -1
  201. prefect/server/ui-v2/index.html +2 -2
  202. prefect/task_engine.py +26 -12
  203. prefect/workers/base.py +18 -1
  204. {prefect-3.6.16.dev5.dist-info → prefect-3.6.16.dev7.dist-info}/METADATA +1 -1
  205. {prefect-3.6.16.dev5.dist-info → prefect-3.6.16.dev7.dist-info}/RECORD +208 -207
  206. prefect/server/ui-v2/assets/artifact-card-DQfjRA2u.js +0 -2
  207. prefect/server/ui-v2/assets/artifact-card-DQfjRA2u.js.map +0 -1
  208. prefect/server/ui-v2/assets/artifact._id-BBhuX3px.js +0 -2
  209. prefect/server/ui-v2/assets/artifact._id-BBhuX3px.js.map +0 -1
  210. prefect/server/ui-v2/assets/automation-wizard-DeT-tz5i.js +0 -2
  211. prefect/server/ui-v2/assets/automation-wizard-DeT-tz5i.js.map +0 -1
  212. prefect/server/ui-v2/assets/automation._id-CMiura1b.js +0 -2
  213. prefect/server/ui-v2/assets/base-job-template-form-section-MeO0M71Y.js +0 -2
  214. prefect/server/ui-v2/assets/base-job-template-form-section-MeO0M71Y.js.map +0 -1
  215. prefect/server/ui-v2/assets/block-type-details-Bcb9qEO8.js +0 -2
  216. prefect/server/ui-v2/assets/block-type-details-Bcb9qEO8.js.map +0 -1
  217. prefect/server/ui-v2/assets/block-type-logo-DuvU7goV.js +0 -2
  218. prefect/server/ui-v2/assets/block._id-DFR6zmOy.js +0 -2
  219. prefect/server/ui-v2/assets/block._id-DFR6zmOy.js.map +0 -1
  220. prefect/server/ui-v2/assets/catalog-CPzaK8QS.js +0 -2
  221. prefect/server/ui-v2/assets/catalog-CPzaK8QS.js.map +0 -1
  222. prefect/server/ui-v2/assets/catalog_._slug-60h4tERz.js +0 -2
  223. prefect/server/ui-v2/assets/catalog_._slug-60h4tERz.js.map +0 -1
  224. prefect/server/ui-v2/assets/concurrency-limit._id-BFfR6_U0.js +0 -2
  225. prefect/server/ui-v2/assets/concurrency-limit._id-BFfR6_U0.js.map +0 -1
  226. prefect/server/ui-v2/assets/create-BrNwbpVu.js +0 -2
  227. prefect/server/ui-v2/assets/create-DWgkh2HT.js.map +0 -1
  228. prefect/server/ui-v2/assets/deployment-form-B33C7F2u.js +0 -3
  229. prefect/server/ui-v2/assets/deployment-form-B33C7F2u.js.map +0 -1
  230. prefect/server/ui-v2/assets/deployment._id-5rPcPD0T.js +0 -2
  231. prefect/server/ui-v2/assets/deployment._id-5rPcPD0T.js.map +0 -1
  232. prefect/server/ui-v2/assets/deployment._id-DXrb6frJ.js.map +0 -1
  233. prefect/server/ui-v2/assets/deployment_._id.duplicate-D7YLydeq.js +0 -2
  234. prefect/server/ui-v2/assets/deployment_._id.duplicate-D7YLydeq.js.map +0 -1
  235. prefect/server/ui-v2/assets/deployment_._id.edit-Daq0J0Ow.js +0 -2
  236. prefect/server/ui-v2/assets/deployment_._id.edit-Daq0J0Ow.js.map +0 -1
  237. prefect/server/ui-v2/assets/deployment_._id.run-CnacOmhY.js +0 -2
  238. prefect/server/ui-v2/assets/event._eventDate._eventId-CKTuT_8S.js +0 -2
  239. prefect/server/ui-v2/assets/flow-run-graph-OrT2Osbu.js +0 -2
  240. prefect/server/ui-v2/assets/flow-run-graph-OrT2Osbu.js.map +0 -1
  241. prefect/server/ui-v2/assets/flow-run._id-BKv9Meqc.js.map +0 -1
  242. prefect/server/ui-v2/assets/flow-run._id-DCYAnq0D.js +0 -4
  243. prefect/server/ui-v2/assets/flow-run._id-DCYAnq0D.js.map +0 -1
  244. prefect/server/ui-v2/assets/flow-run._id-ZTkjj6bM.js.map +0 -1
  245. prefect/server/ui-v2/assets/flow-runs-pagination-CykMKOhv.js +0 -2
  246. prefect/server/ui-v2/assets/flow-runs-pagination-CykMKOhv.js.map +0 -1
  247. prefect/server/ui-v2/assets/flow._id-DhrxqQmD.js +0 -2
  248. prefect/server/ui-v2/assets/flow._id-DhrxqQmD.js.map +0 -1
  249. prefect/server/ui-v2/assets/index-BIBIJufF.js.map +0 -1
  250. prefect/server/ui-v2/assets/index-BO60ehN6.js.map +0 -1
  251. prefect/server/ui-v2/assets/index-BS7fbJ2s.js +0 -2
  252. prefect/server/ui-v2/assets/index-BS7fbJ2s.js.map +0 -1
  253. prefect/server/ui-v2/assets/index-C5RMFRyZ.js.map +0 -1
  254. prefect/server/ui-v2/assets/index-D0R9_LIL.js.map +0 -1
  255. prefect/server/ui-v2/assets/index-D9cOtoSU.js.map +0 -1
  256. prefect/server/ui-v2/assets/index-DEpWUeaO.js +0 -2
  257. prefect/server/ui-v2/assets/index-DEpWUeaO.js.map +0 -1
  258. prefect/server/ui-v2/assets/index-DP8W-xJo.js.map +0 -1
  259. prefect/server/ui-v2/assets/index-DfKXdmko.js.map +0 -1
  260. prefect/server/ui-v2/assets/index-DiVKp6rW.js +0 -2
  261. prefect/server/ui-v2/assets/index-DiVKp6rW.js.map +0 -1
  262. prefect/server/ui-v2/assets/index-DlAHvqFx.js +0 -2
  263. prefect/server/ui-v2/assets/index-VNFzALsC.js +0 -2
  264. prefect/server/ui-v2/assets/index-VNFzALsC.js.map +0 -1
  265. prefect/server/ui-v2/assets/index-V_xTKaEb.js.map +0 -1
  266. prefect/server/ui-v2/assets/index-WIq8QUNT.js +0 -2
  267. prefect/server/ui-v2/assets/index-WIq8QUNT.js.map +0 -1
  268. prefect/server/ui-v2/assets/index-m9O-nIOl.css +0 -1
  269. prefect/server/ui-v2/assets/index-q5Y3hlDT.js.map +0 -1
  270. prefect/server/ui-v2/assets/key._key-CX8FwfwL.js +0 -2
  271. prefect/server/ui-v2/assets/key._key-CX8FwfwL.js.map +0 -1
  272. prefect/server/ui-v2/assets/task-run._id-CQGeAiBh.js.map +0 -1
  273. prefect/server/ui-v2/assets/task-runs-pagination-CYoOghEN.js +0 -2
  274. prefect/server/ui-v2/assets/task-runs-pagination-CYoOghEN.js.map +0 -1
  275. prefect/server/ui-v2/assets/use-delete-automation-confirmation-dialog-DZplMJDW.js +0 -2
  276. prefect/server/ui-v2/assets/use-delete-automation-confirmation-dialog-DZplMJDW.js.map +0 -1
  277. prefect/server/ui-v2/assets/use-flow-runs-selected-rows-1YE-VIgM.js +0 -2
  278. prefect/server/ui-v2/assets/use-flow-runs-selected-rows-1YE-VIgM.js.map +0 -1
  279. prefect/server/ui-v2/assets/use-stepper-CnGJHRLP.js +0 -2
  280. prefect/server/ui-v2/assets/use-stepper-CnGJHRLP.js.map +0 -1
  281. prefect/server/ui-v2/assets/work-pool-filter-CGfXNujK.js +0 -2
  282. prefect/server/ui-v2/assets/work-pool-filter-CGfXNujK.js.map +0 -1
  283. prefect/server/ui-v2/assets/work-pool_._workPoolName.queue._workQueueName-BlFjSdoB.js.map +0 -1
  284. {prefect-3.6.16.dev5.dist-info → prefect-3.6.16.dev7.dist-info}/WHEEL +0 -0
  285. {prefect-3.6.16.dev5.dist-info → prefect-3.6.16.dev7.dist-info}/entry_points.txt +0 -0
  286. {prefect-3.6.16.dev5.dist-info → prefect-3.6.16.dev7.dist-info}/licenses/LICENSE +0 -0
@@ -1,2 +1,2 @@
1
- import{g,j as e,s as F}from"./vendor-tanstack-BdLtprmr.js";import{dD as C,C as B,o as S,i as m,p as l,q as p,y as d,B as P,g as E,h as i,bw as u,bF as x,bH as J,dE as L,c1 as W}from"./index-V_xTKaEb.js";import{o as _,r as R,n as I,s as U,u as $,c as D}from"./vendor-forms-BlFSCfFw.js";import{a as H}from"./zod-B1GLD-Zc.js";import{F as O,b,c as j,d as h,e as y,a as k}from"./form-DOdmIC3A.js";import{T as Q}from"./textarea-9v5uTuxg.js";import{B as V}from"./base-job-template-form-section-MeO0M71Y.js";import"./vendor-react-HBv6Kpyp.js";import"./vendor-radix-CJc458uP.js";import"./vendor-recharts-CY3PKigC.js";import"./vendor-date-Cl1Jav-N.js";import"./schema-form-input-string-format-datetime-Cb4sTJle.js";import"./use-debounce-callback-Dk7Ebi48.js";import"./toggle-group-CBJphTE6.js";import"./timezone-select-DPtR_b06.js";import"./dropdown-menu-B9LKPlz7.js";import"./schema-form-BQAcWW5k.js";import"./block-type-logo-DuvU7goV.js";const q=_({description:U().nullable().optional(),concurrencyLimit:I().min(0).nullable().optional(),baseJobTemplate:R($()).optional()}),G=({workPool:s})=>{const a=g(),{updateWorkPool:v,isPending:t}=C(),r=D({resolver:H(q),defaultValues:{description:s.description??"",concurrencyLimit:s.concurrency_limit??null,baseJobTemplate:s.base_job_template}}),w=r.watch("baseJobTemplate"),N=s.type!=="prefect-agent",T=()=>{a.history.back()},f=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(O,{...r,children:e.jsxs("form",{onSubmit:o=>{r.handleSubmit(f)(o)},className:"space-y-6",children:[e.jsx(B,{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(Q,{...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})]})]})}),N&&e.jsx(V,{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:T,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(E,{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(J,{children:"Edit"})})]})})});function de(){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(G,{workPool:a})]})}export{de as component};
2
- //# sourceMappingURL=work-pool_._workPoolName.edit-j7cjgoJp.js.map
1
+ import{g,j as e,s as F}from"./vendor-tanstack-BdLtprmr.js";import{dC as C,C as B,o as S,i as m,p as l,q as p,y as d,B as P,g as E,h as i,bv as u,bE as x,bG as J,dD as L,c0 as W}from"./index-CPpeVt8m.js";import{o as _,r as R,n as I,s as U,u as $,c as D}from"./vendor-forms-BlFSCfFw.js";import{a as G}from"./zod-B1GLD-Zc.js";import{F as O,b,c as j,d as h,e as y,a as k}from"./form-Cl5Hk9bq.js";import{T as Q}from"./textarea-DFEOJJdc.js";import{B as V}from"./base-job-template-form-section-C8_R96gO.js";import"./vendor-react-HBv6Kpyp.js";import"./vendor-radix-CJc458uP.js";import"./vendor-recharts-CY3PKigC.js";import"./vendor-date-Cl1Jav-N.js";import"./schema-form-input-string-format-datetime-Dg3zVAp5.js";import"./use-debounce-callback-Dk7Ebi48.js";import"./toggle-group-EMgSOoYH.js";import"./timezone-select-NViFNNLz.js";import"./dropdown-menu-fRiq5bS-.js";import"./schema-form-BD-WM4S0.js";import"./block-type-logo-scnMsyY5.js";const q=_({description:U().nullable().optional(),concurrencyLimit:I().min(0).nullable().optional(),baseJobTemplate:R($()).optional()}),H=({workPool:s})=>{const a=g(),{updateWorkPool:v,isPending:t}=C(),r=D({resolver:G(q),defaultValues:{description:s.description??"",concurrencyLimit:s.concurrency_limit??null,baseJobTemplate:s.base_job_template}}),w=r.watch("baseJobTemplate"),N=s.type!=="prefect-agent",T=()=>{a.history.back()},f=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(O,{...r,children:e.jsxs("form",{onSubmit:o=>{r.handleSubmit(f)(o)},className:"space-y-6",children:[e.jsx(B,{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(Q,{...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})]})]})}),N&&e.jsx(V,{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:T,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(E,{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(J,{children:"Edit"})})]})})});function de(){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{de as component};
2
+ //# sourceMappingURL=work-pool_._workPoolName.edit-B-8_CnfA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"work-pool_._workPoolName.edit-j7cjgoJp.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-B-8_CnfA.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 { PrefectLoading } from \"@/components/ui/loading\";\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\tpendingComponent: PrefectLoading,\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,t as g,n as H,s as z}from"./vendor-tanstack-BdLtprmr.js";import{a_ as y,bO as K,bP as T,B as X,g as G,h as S,bw as Q,bF as D,bH as Y,bQ as $,aI as M,aG as W,af as L,V as J,dV as k,dW as Z,dX as q,c3 as ee,c4 as se,c5 as ae,aA as le,aB as ne,aC as te,aD as C,b9 as o}from"./index-V_xTKaEb.js";import{W as oe,a as re,b as ie}from"./work-pool-queue-toggle-zSWhEFap.js";import{S as ce,a as V,F as A}from"./flow-runs-pagination-CykMKOhv.js";import{o as de,e as ue}from"./vendor-forms-BlFSCfFw.js";import"./vendor-react-HBv6Kpyp.js";import"./vendor-radix-CJc458uP.js";import"./vendor-recharts-CY3PKigC.js";import"./vendor-date-Cl1Jav-N.js";import"./dropdown-menu-B9LKPlz7.js";import"./zod-B1GLD-Zc.js";import"./form-DOdmIC3A.js";import"./textarea-9v5uTuxg.js";import"./delete-confirmation-dialog-dLycVNo4.js";const b=()=>e.jsx("dd",{className:"text-muted-foreground text-sm",children:"None"}),E=({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(E,{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(E,{children:i}),e.jsx(n,{})]})},i))})})}function P({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(K,{}),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(G,{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(Y,{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=$(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(M(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})),F=t.useMemo(()=>{if(!x?.results)return[];const l=new Map(_?.map(c=>[c.id,c])??[]);return x.results.map(c=>{const R=l.get(c.flow_id);return R?{...c,flow:R}: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(V,{flowRuns:F,onClearFilters:F.length===0?O:void 0}),x.pages>1&&e.jsx("div",{className:"mt-6",children:e.jsx(A,{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(M(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(V,{flowRuns:v}),r.pages>1&&e.jsx("div",{className:"mt-6",children:e.jsx(A,{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 Me(){const{workPoolName:s,workQueueName:a}=k.useParams(),{queueTab:i}=k.useSearch(),n=k.useNavigate(),u=H(),{data:m}=z(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(P,{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(P,{workPoolName:s,queue:m,alternate:!0})})})]})]})})}export{Me as component};
2
- //# sourceMappingURL=work-pool_._workPoolName.queue._workQueueName-BlFjSdoB.js.map
1
+ import{j as e,r as t,t as g,n as z,s as H}from"./vendor-tanstack-BdLtprmr.js";import{aZ as y,bN as K,bO as T,B as G,g as X,h as S,bv as P,bE as Q,bG as Y,bP as Z,aH as M,aF as W,af as L,V as $,dU as k,dV as J,dW as q,c2 as ee,c3 as se,c4 as ae,az as le,aA as ne,aB as te,aC as C,b8 as o}from"./index-CPpeVt8m.js";import{W as oe,a as re,b as ie}from"./work-pool-queue-toggle-f_-cTWxB.js";import{S as ce,a as V,F as E}from"./flow-runs-pagination-DMLZFM1m.js";import{o as de,e as ue}from"./vendor-forms-BlFSCfFw.js";import"./vendor-react-HBv6Kpyp.js";import"./vendor-radix-CJc458uP.js";import"./vendor-recharts-CY3PKigC.js";import"./vendor-date-Cl1Jav-N.js";import"./dropdown-menu-fRiq5bS-.js";import"./zod-B1GLD-Zc.js";import"./form-Cl5Hk9bq.js";import"./textarea-DFEOJJdc.js";import"./delete-confirmation-dialog-BZg9EOfN.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 D({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(K,{}),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(G,{className:n,children:e.jsxs(X,{children:[e.jsx(S,{children:e.jsx(P,{to:"/work-pools",className:"text-xl font-semibold",children:"Work Pools"})}),e.jsx(Q,{}),e.jsx(S,{children:e.jsx(P,{to:"/work-pools/work-pool/$workPoolName",params:{workPoolName:s},className:"text-xl font-semibold",children:s})}),e.jsx(Q,{}),e.jsx(S,{className:"text-xl font-semibold",children:e.jsx(Y,{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=Z(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(M(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})),F=t.useMemo(()=>{if(!x?.results)return[];const l=new Map(_?.map(c=>[c.id,c])??[]);return x.results.map(c=>{const R=l.get(c.flow_id);return R?{...c,flow:R}:null}).filter(c=>c!==null)},[x?.results,_]),U=t.useCallback(l=>{w(l.target.value),u(c=>({...c,page:1}))},[]),B=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($,{placeholder:"Search flow runs by name...",value:m,onChange:U,debounceMs:500})}),e.jsx("div",{className:"w-full sm:w-64",children:e.jsx(ce,{selectedFilters:r,onSelectFilter:I})})]}),e.jsx(V,{flowRuns:F,onClearFilters:F.length===0?O:void 0}),x.pages>1&&e.jsx("div",{className:"mt-6",children:e.jsx(E,{count:f,pages:x.pages,pagination:n,onChangePagination:B})})]})},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(M(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(V,{flowRuns:v}),r.pages>1&&e.jsx("div",{className:"mt-6",children:e.jsx(E,{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 Me(){const{workPoolName:s,workQueueName:a}=k.useParams(),{queueTab:i}=k.useSearch(),n=k.useNavigate(),u=z(),{data:m}=H(J(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(D,{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(D,{workPoolName:s,queue:m,alternate:!0})})})]})]})})}export{Me as component};
2
+ //# sourceMappingURL=work-pool_._workPoolName.queue._workQueueName-DzrY1tMq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-pool_._workPoolName.queue._workQueueName-DzrY1tMq.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 { PrefectLoading } from \"@/components/ui/loading\";\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\tpendingComponent: PrefectLoading,\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,s as x,L as n}from"./vendor-tanstack-BdLtprmr.js";import{b9 as m,as as d,I as c,dg as p}from"./index-V_xTKaEb.js";import{a as f}from"./index-B9ttjsyu.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]})]})},g=({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]})]}),I=({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,I as W,g as a};
2
- //# sourceMappingURL=work-queue-icon-text-vWlRNW-b.js.map
1
+ import{j as s,r as i,s as x,L as n}from"./vendor-tanstack-BdLtprmr.js";import{b8 as m,ar as d,I as c,df as p}from"./index-CPpeVt8m.js";import{a as f}from"./index-ELo08q04.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-BqqQ413o.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"work-queue-icon-text-vWlRNW-b.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-BqqQ413o.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,14 +21,14 @@
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-V_xTKaEb.js"></script>
24
+ <script type="module" crossorigin src="/PREFECT_UI_SERVE_BASE_REPLACE_PLACEHOLDER/assets/index-CPpeVt8m.js"></script>
25
25
  <link rel="modulepreload" crossorigin href="/PREFECT_UI_SERVE_BASE_REPLACE_PLACEHOLDER/assets/vendor-react-HBv6Kpyp.js">
26
26
  <link rel="modulepreload" crossorigin href="/PREFECT_UI_SERVE_BASE_REPLACE_PLACEHOLDER/assets/vendor-tanstack-BdLtprmr.js">
27
27
  <link rel="modulepreload" crossorigin href="/PREFECT_UI_SERVE_BASE_REPLACE_PLACEHOLDER/assets/vendor-radix-CJc458uP.js">
28
28
  <link rel="modulepreload" crossorigin href="/PREFECT_UI_SERVE_BASE_REPLACE_PLACEHOLDER/assets/vendor-recharts-CY3PKigC.js">
29
29
  <link rel="modulepreload" crossorigin href="/PREFECT_UI_SERVE_BASE_REPLACE_PLACEHOLDER/assets/vendor-forms-BlFSCfFw.js">
30
30
  <link rel="modulepreload" crossorigin href="/PREFECT_UI_SERVE_BASE_REPLACE_PLACEHOLDER/assets/vendor-date-Cl1Jav-N.js">
31
- <link rel="stylesheet" crossorigin href="/PREFECT_UI_SERVE_BASE_REPLACE_PLACEHOLDER/assets/index-m9O-nIOl.css">
31
+ <link rel="stylesheet" crossorigin href="/PREFECT_UI_SERVE_BASE_REPLACE_PLACEHOLDER/assets/index-DJXBzX1E.css">
32
32
  </head>
33
33
  <body>
34
34
  <div id="root"></div>
prefect/task_engine.py CHANGED
@@ -824,6 +824,7 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
824
824
  parent_task_run_context = TaskRunContext.get()
825
825
 
826
826
  try:
827
+ _emit_pending = False
827
828
  if not self.task_run:
828
829
  self.task_run = _create_task_run_locally(
829
830
  task=self.task,
@@ -834,14 +835,20 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
834
835
  wait_for=self.wait_for,
835
836
  extra_task_inputs=dependencies,
836
837
  )
837
- # Emit an event to capture that the task run was in the `PENDING` state.
838
- self._last_event = emit_task_run_state_change_event(
839
- task_run=self.task_run,
840
- initial_state=None,
841
- validated_state=self.task_run.state,
842
- )
838
+ _emit_pending = True
843
839
 
844
840
  with self.setup_run_context():
841
+ # Emit the Pending event inside setup_run_context so that
842
+ # copy_context() captures this task's TaskRunContext,
843
+ # rather than whatever TaskRunContext may be active from
844
+ # an enclosing scope (e.g. a parent task).
845
+ if _emit_pending:
846
+ self._last_event = emit_task_run_state_change_event(
847
+ task_run=self.task_run,
848
+ initial_state=None,
849
+ validated_state=self.task_run.state,
850
+ )
851
+
845
852
  # setup_run_context might update the task run name, so log creation here
846
853
  self.logger.debug(
847
854
  f"Created task run {self.task_run.name!r} for task {self.task.name!r}"
@@ -1444,6 +1451,7 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
1444
1451
  parent_task_run_context = TaskRunContext.get()
1445
1452
 
1446
1453
  try:
1454
+ _emit_pending = False
1447
1455
  if not self.task_run:
1448
1456
  self.task_run = await self.task.create_local_run(
1449
1457
  id=task_run_id,
@@ -1453,14 +1461,20 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
1453
1461
  wait_for=self.wait_for,
1454
1462
  extra_task_inputs=dependencies,
1455
1463
  )
1456
- # Emit an event to capture that the task run was in the `PENDING` state.
1457
- self._last_event = emit_task_run_state_change_event(
1458
- task_run=self.task_run,
1459
- initial_state=None,
1460
- validated_state=self.task_run.state,
1461
- )
1464
+ _emit_pending = True
1462
1465
 
1463
1466
  async with self.setup_run_context():
1467
+ # Emit the Pending event inside setup_run_context so that
1468
+ # copy_context() captures this task's TaskRunContext,
1469
+ # rather than whatever TaskRunContext may be active from
1470
+ # an enclosing scope (e.g. a parent task).
1471
+ if _emit_pending:
1472
+ self._last_event = emit_task_run_state_change_event(
1473
+ task_run=self.task_run,
1474
+ initial_state=None,
1475
+ validated_state=self.task_run.state,
1476
+ )
1477
+
1464
1478
  # setup_run_context might update the task run name, so log creation here
1465
1479
  self.logger.debug(
1466
1480
  f"Created task run {self.task_run.name!r} for task {self.task.name!r}"
prefect/workers/base.py CHANGED
@@ -80,6 +80,7 @@ from prefect.states import (
80
80
  )
81
81
  from prefect.tasks import Task
82
82
  from prefect.types import KeyValueLabels
83
+ from prefect.utilities.annotations import NotSet
83
84
  from prefect.utilities.collections import deep_merge, set_in_dict
84
85
  from prefect.utilities.dispatch import get_registry_for_type, register_base_type
85
86
  from prefect.utilities.engine import propose_state
@@ -130,7 +131,8 @@ class BaseJobConfiguration(BaseModel):
130
131
  default=None,
131
132
  description=(
132
133
  "Name given to infrastructure created by the worker using this "
133
- "job configuration."
134
+ "job configuration. Supports templates using {{ ctx.flow.* }} and "
135
+ "{{ ctx.flow_run.* }} when prepared for a flow run."
134
136
  ),
135
137
  )
136
138
 
@@ -301,6 +303,21 @@ class BaseJobConfiguration(BaseModel):
301
303
  **self._base_deployment_labels(deployment),
302
304
  **self.labels,
303
305
  }
306
+ if self.name:
307
+ template_values = {
308
+ "ctx": {
309
+ "flow": flow.model_dump(mode="json") if flow is not None else {},
310
+ "flow_run": flow_run.model_dump(mode="json") if flow_run else {},
311
+ },
312
+ }
313
+ rendered_name = apply_values(
314
+ template=self.name,
315
+ values=template_values,
316
+ remove_notset=True,
317
+ )
318
+ if rendered_name is not NotSet:
319
+ self.name = rendered_name
320
+
304
321
  self.name = self.name or flow_run.name
305
322
  self.command = self.command or self._base_flow_run_command()
306
323
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: prefect
3
- Version: 3.6.16.dev5
3
+ Version: 3.6.16.dev7
4
4
  Summary: Workflow orchestration and management.
5
5
  Project-URL: Changelog, https://github.com/PrefectHQ/prefect/releases
6
6
  Project-URL: Documentation, https://docs.prefect.io