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
prefect/_build_info.py CHANGED
@@ -1,5 +1,5 @@
1
1
  # Generated by versioningit
2
- __version__ = "3.6.16.dev5"
3
- __build_date__ = "2026-02-03 08:18:27.573940+00:00"
4
- __git_commit__ = "2c9a7cfbeaeefcf69d03a2f98b68baa7fe794ef2"
2
+ __version__ = "3.6.16.dev7"
3
+ __build_date__ = "2026-02-05 08:19:46.221306+00:00"
4
+ __git_commit__ = "e1258905c84f3fbed1801f2534be5508b02586c3"
5
5
  __dirty__ = False
prefect/cli/__init__.py CHANGED
@@ -8,6 +8,7 @@ import prefect.cli.api
8
8
  import prefect.cli.artifact
9
9
  import prefect.cli.block
10
10
  import prefect.cli.cloud
11
+ import prefect.cli.cloud.asset
11
12
  import prefect.cli.cloud.ip_allowlist
12
13
  import prefect.cli.cloud.webhook
13
14
  import prefect.cli.shell
@@ -0,0 +1,135 @@
1
+ """
2
+ Command line interface for managing Prefect Cloud assets
3
+ """
4
+
5
+ from __future__ import annotations
6
+
7
+ from typing import Optional
8
+
9
+ import orjson
10
+ import typer
11
+ from rich.table import Table
12
+
13
+ from prefect.cli._types import PrefectTyper
14
+ from prefect.cli._utilities import exit_with_error, exit_with_success
15
+ from prefect.cli.cloud import cloud_app, confirm_logged_in
16
+ from prefect.cli.root import app, is_interactive
17
+ from prefect.client.cloud import get_cloud_client
18
+ from prefect.exceptions import ObjectNotFound
19
+ from prefect.settings import get_current_settings
20
+
21
+ asset_app: PrefectTyper = PrefectTyper(name="asset", help="Manage Prefect Cloud assets")
22
+ cloud_app.add_typer(asset_app, aliases=["assets"])
23
+
24
+
25
+ @asset_app.command("ls")
26
+ async def list_assets(
27
+ prefix: Optional[str] = typer.Option(
28
+ None,
29
+ "--prefix",
30
+ "-p",
31
+ help="Filter assets by key prefix",
32
+ ),
33
+ search: Optional[str] = typer.Option(
34
+ None,
35
+ "--search",
36
+ "-s",
37
+ help="Filter assets by key substring",
38
+ ),
39
+ limit: int = typer.Option(
40
+ 50,
41
+ "--limit",
42
+ "-l",
43
+ help="Maximum number of assets to return (default 50, max 200)",
44
+ ),
45
+ output: Optional[str] = typer.Option(
46
+ None,
47
+ "--output",
48
+ "-o",
49
+ help="Output format. Supports: json",
50
+ ),
51
+ ):
52
+ """
53
+ List assets in the current workspace.
54
+ """
55
+ confirm_logged_in()
56
+
57
+ if output and output.lower() != "json":
58
+ exit_with_error("Only 'json' output format is supported.")
59
+
60
+ if limit < 1 or limit > 200:
61
+ exit_with_error("Limit must be between 1 and 200.")
62
+
63
+ key_filter: dict[str, list[str]] = {}
64
+ if prefix:
65
+ key_filter["prefix"] = [prefix]
66
+ if search:
67
+ key_filter["search"] = [search]
68
+
69
+ body: dict[str, object] = {"limit": limit}
70
+ if key_filter:
71
+ body["filter"] = {"key": key_filter}
72
+
73
+ async with get_cloud_client(host=get_current_settings().api.url) as client:
74
+ response = await client.request("POST", "/assets/filter", json=body)
75
+
76
+ assets = response.get("assets", [])
77
+ total = response.get("total", len(assets))
78
+
79
+ if output and output.lower() == "json":
80
+ json_output = orjson.dumps(assets, option=orjson.OPT_INDENT_2).decode()
81
+ app.console.print(json_output)
82
+ else:
83
+ if not assets:
84
+ app.console.print("No assets found in this workspace.")
85
+ return
86
+
87
+ table = Table(
88
+ title="Assets",
89
+ show_header=True,
90
+ )
91
+
92
+ table.add_column("Key", style="blue", no_wrap=False)
93
+ table.add_column("Last Seen", style="cyan", no_wrap=True)
94
+
95
+ for asset in sorted(assets, key=lambda x: x.get("key", "")):
96
+ table.add_row(
97
+ asset.get("key", ""),
98
+ asset.get("last_seen", ""),
99
+ )
100
+
101
+ app.console.print(table)
102
+ app.console.print(f"\nShowing {len(assets)} of {total} asset(s)")
103
+
104
+
105
+ @asset_app.command("delete")
106
+ async def delete_asset(
107
+ key: str = typer.Argument(..., help="The key of the asset to delete"),
108
+ force: bool = typer.Option(
109
+ False,
110
+ "--force",
111
+ "-f",
112
+ help="Skip confirmation prompt",
113
+ ),
114
+ ):
115
+ """
116
+ Delete an asset by its key.
117
+
118
+ The key should be the full asset URI (e.g., 's3://bucket/data.csv').
119
+ """
120
+ confirm_logged_in()
121
+
122
+ if is_interactive() and not force:
123
+ if not typer.confirm(
124
+ f"Are you sure you want to delete asset {key!r}?",
125
+ default=False,
126
+ ):
127
+ exit_with_error("Deletion aborted.")
128
+
129
+ async with get_cloud_client(host=get_current_settings().api.url) as client:
130
+ try:
131
+ await client.request("DELETE", "/assets/key", params={"key": key})
132
+ except ObjectNotFound:
133
+ exit_with_error(f"Asset {key!r} not found.")
134
+
135
+ exit_with_success(f"Deleted asset {key!r}.")
@@ -0,0 +1,2 @@
1
+ import{r as d,j as e,L as n}from"./vendor-tanstack-BdLtprmr.js";import{L as a}from"./lazy-markdown-D_y73qoD.js";import{aP as l,C as x,m as i,o as m,aZ as o}from"./index-CPpeVt8m.js";const f=({artifact:s,compact:t=!1})=>{const r=d.useMemo(()=>l(new Date(s.created??""),"dateTime"),[s.created]);return e.jsx(n,{to:"/artifacts/key/$key",params:{key:s.key??""},children:e.jsxs(x,{className:"hover:shadow-lg hover:border-blue-700",children:[e.jsx(i,{children:e.jsx("p",{className:"text-sm font-bold text-muted-foreground",children:s.type?.toUpperCase()})}),e.jsxs(m,{children:[e.jsxs("div",{className:o("flex",t?"flex-row justify-between":"flex-col"),children:[t?e.jsx("h4",{className:"text-xl font-semibold tracking-tight font-bold",children:s.key}):e.jsx("h3",{className:"text-2xl font-semibold tracking-tight font-bold",children:s.key}),e.jsxs("div",{className:o("flex mt-2",t?"flex-col-reverse items-end":"justify-between"),children:[t?e.jsx("p",{className:"text-sm font-mono",children:r}):e.jsx("p",{className:"text-xs font-mono",children:r}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Created"})]})]}),e.jsx("hr",{className:"my-2"}),s.description?e.jsx("div",{className:"text-muted-foreground overflow-hidden truncate",children:e.jsx(a,{children:s.description??""})}):e.jsx("p",{className:"text-sm text-muted-foreground italic",children:"No description"})]})]})})};export{f as A};
2
+ //# sourceMappingURL=artifact-card-BnPKAfkY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-card-BnPKAfkY.js","sources":["../../src/components/artifacts/artifact-card.tsx"],"sourcesContent":["import { Link } from \"@tanstack/react-router\";\nimport { useMemo } from \"react\";\nimport type { Artifact } from \"@/api/artifacts\";\nimport { LazyMarkdown } from \"@/components/ui/lazy-markdown\";\nimport { cn } from \"@/utils\";\nimport { formatDate } from \"@/utils/date\";\nimport { Card, CardContent, CardHeader } from \"../ui/card\";\n\nexport type ArtifactsCardProps = {\n\tartifact: Artifact;\n\tcompact?: boolean;\n};\n\nexport const ArtifactCard = ({\n\tartifact,\n\tcompact = false,\n}: ArtifactsCardProps) => {\n\tconst createdAtDate = useMemo(() => {\n\t\treturn formatDate(new Date(artifact.created ?? \"\"), \"dateTime\");\n\t}, [artifact.created]);\n\treturn (\n\t\t<Link to=\"/artifacts/key/$key\" params={{ key: artifact.key ?? \"\" }}>\n\t\t\t<Card className=\"hover:shadow-lg hover:border-blue-700\">\n\t\t\t\t<CardHeader>\n\t\t\t\t\t<p className=\"text-sm font-bold text-muted-foreground\">\n\t\t\t\t\t\t{artifact.type?.toUpperCase()}\n\t\t\t\t\t</p>\n\t\t\t\t</CardHeader>\n\t\t\t\t<CardContent>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"flex\",\n\t\t\t\t\t\t\tcompact ? \"flex-row justify-between\" : \"flex-col\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{compact ? (\n\t\t\t\t\t\t\t<h4 className=\"text-xl font-semibold tracking-tight font-bold\">\n\t\t\t\t\t\t\t\t{artifact.key}\n\t\t\t\t\t\t\t</h4>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<h3 className=\"text-2xl font-semibold tracking-tight font-bold\">\n\t\t\t\t\t\t\t\t{artifact.key}\n\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"flex mt-2\",\n\t\t\t\t\t\t\t\tcompact ? \"flex-col-reverse items-end\" : \"justify-between\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{compact ? (\n\t\t\t\t\t\t\t\t<p className=\"text-sm font-mono\">{createdAtDate}</p>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<p className=\"text-xs font-mono\">{createdAtDate}</p>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">Created</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<hr className=\"my-2\" />\n\t\t\t\t\t{artifact.description ? (\n\t\t\t\t\t\t<div className=\"text-muted-foreground overflow-hidden truncate\">\n\t\t\t\t\t\t\t<LazyMarkdown>{artifact.description ?? \"\"}</LazyMarkdown>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<p className=\"text-sm text-muted-foreground italic\">\n\t\t\t\t\t\t\tNo description\n\t\t\t\t\t\t</p>\n\t\t\t\t\t)}\n\t\t\t\t</CardContent>\n\t\t\t</Card>\n\t\t</Link>\n\t);\n};\n"],"names":["ArtifactCard","artifact","compact","createdAtDate","useMemo","formatDate","jsx","Link","jsxs","Card","CardHeader","CardContent","cn","LazyMarkdown"],"mappings":"sLAaO,MAAMA,EAAe,CAAC,CAC5B,SAAAC,EACA,QAAAC,EAAU,EACX,IAA0B,CACzB,MAAMC,EAAgBC,EAAAA,QAAQ,IACtBC,EAAW,IAAI,KAAKJ,EAAS,SAAW,EAAE,EAAG,UAAU,EAC5D,CAACA,EAAS,OAAO,CAAC,EACrB,OACCK,EAAAA,IAACC,EAAA,CAAK,GAAG,sBAAsB,OAAQ,CAAE,IAAKN,EAAS,KAAO,EAAA,EAC7D,SAAAO,EAAAA,KAACC,EAAA,CAAK,UAAU,wCACf,SAAA,CAAAH,EAAAA,IAACI,EAAA,CACA,eAAC,IAAA,CAAE,UAAU,0CACX,SAAAT,EAAS,MAAM,YAAA,CAAY,CAC7B,CAAA,CACD,SACCU,EAAA,CACA,SAAA,CAAAH,EAAAA,KAAC,MAAA,CACA,UAAWI,EACV,OACAV,EAAU,2BAA6B,UAAA,EAGvC,SAAA,CAAAA,EACAI,EAAAA,IAAC,KAAA,CAAG,UAAU,iDACZ,SAAAL,EAAS,GAAA,CACX,EAEAK,EAAAA,IAAC,KAAA,CAAG,UAAU,kDACZ,SAAAL,EAAS,IACX,EAEDO,EAAAA,KAAC,MAAA,CACA,UAAWI,EACV,YACAV,EAAU,6BAA+B,iBAAA,EAGzC,SAAA,CAAAA,EACAI,EAAAA,IAAC,IAAA,CAAE,UAAU,oBAAqB,SAAAH,CAAA,CAAc,EAEhDG,EAAAA,IAAC,IAAA,CAAE,UAAU,oBAAqB,SAAAH,EAAc,EAEjDG,EAAAA,IAAC,IAAA,CAAE,UAAU,gCAAgC,SAAA,SAAA,CAAO,CAAA,CAAA,CAAA,CACrD,CAAA,CAAA,EAEDA,EAAAA,IAAC,KAAA,CAAG,UAAU,MAAA,CAAO,EACpBL,EAAS,YACTK,MAAC,MAAA,CAAI,UAAU,iDACd,SAAAA,EAAAA,IAACO,EAAA,CAAc,SAAAZ,EAAS,aAAe,GAAG,CAAA,CAC3C,QAEC,IAAA,CAAE,UAAU,uCAAuC,SAAA,gBAAA,CAEpD,CAAA,CAAA,CAEF,CAAA,CAAA,CACD,CAAA,CACD,CAEF"}
@@ -0,0 +1,2 @@
1
+ import{j as e,r as n,L as j,s as w}from"./vendor-tanstack-BdLtprmr.js";import{B as N,g as f,h as u,bv as h,bE as p,D as T,q as g,I as b,y as D,V as _,aP as m,au as S,bq as y,dB as C,dA as L}from"./index-CPpeVt8m.js";import{a as M}from"./use-get-artifacts-flow-task-runs-D7Djt53s.js";import{L as k}from"./lazy-markdown-D_y73qoD.js";import{u as A,E as B}from"./vendor-codemirror-DDrdK9VD.js";import{T as F,a as I,b as v,c as $,d as E,e as z}from"./table-Xyel2BEw.js";import{K as r}from"./key-value-DI27Dv4P.js";import"./vendor-react-HBv6Kpyp.js";import"./vendor-radix-CJc458uP.js";import"./vendor-recharts-CY3PKigC.js";import"./vendor-forms-BlFSCfFw.js";import"./vendor-date-Cl1Jav-N.js";const H=({artifact:s})=>{let a=e.jsx(e.Fragment,{});return s.key?a=e.jsx("div",{className:"flex items-center gap-2",children:e.jsx(N,{children:e.jsxs(f,{children:[e.jsx(u,{children:e.jsx(h,{to:"/artifacts/key/$key",params:{key:s.key},className:"text-xl font-semibold",children:s.key})}),e.jsx(p,{}),e.jsx(u,{className:"text-xl font-semibold",children:s.id})]})})}):a=e.jsx("div",{className:"flex items-center gap-2",children:e.jsx(N,{children:e.jsxs(f,{children:[s.flow_run&&e.jsxs(e.Fragment,{children:[e.jsx(u,{children:e.jsx(h,{to:"/runs/flow-run/$id",params:{id:s.flow_run_id??""},className:"text-xl font-semibold",children:s.flow_run.name})}),e.jsx(p,{})]}),s.task_run&&e.jsxs(e.Fragment,{children:[e.jsx(u,{children:e.jsx(h,{to:"/runs/task-run/$id",params:{id:s.task_run_id??""},className:"text-xl font-semibold",children:s.task_run.name})}),e.jsx(p,{})]}),e.jsx(u,{className:"text-xl font-semibold",children:s.id})]})})}),e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center justify-between",children:[a,e.jsx(T,{id:"artifacts-guide",label:"Documentation"})]}),s.description&&e.jsx("div",{className:"",children:e.jsx("h2",{className:"text-3xl font-semibold tracking-tight my-4 font-bold prose lg:prose-xl",children:e.jsx(k,{children:s.description})})}),e.jsx("hr",{})]})},P=({artifact:s})=>{const[a,t]=n.useState(!1),i=()=>{t(x=>!x)},d=n.useRef(null),o={highlightActiveLine:!1,foldGutter:!1,highlightActiveLineGutter:!1},{setContainer:l}=A({container:d.current,extensions:[B.lineWrapping],value:String(s.data),indentWithTab:!1,editable:!0,basicSetup:o});n.useEffect(()=>{d.current&&l(d.current)},[l]);const c=x=>{D.success("Copied to clipboard"),navigator.clipboard.writeText(x)};return e.jsxs("div",{className:"flex flex-col justify-center items-center",children:[e.jsxs(g,{"data-testid":"show-raw-data-button",variant:"outline",onClick:i,className:"my-4",children:[a?"Hide":"Show"," Raw Data"]}),e.jsx("div",{className:"rounded-md border shadow-xs focus-within:outline-hidden focus-within:ring-1 focus-within:ring-ring relative",style:{display:a?"block":"none"},ref:x=>{d.current=x},"data-testid":"raw-data-display",children:e.jsx(g,{onClick:()=>c(s.data),variant:"ghost",size:"icon",className:"absolute top-0 right-0 z-10","aria-label":"copy",children:e.jsx(b,{id:"Copy",className:"size-2"})})})]})},G=({url:s})=>e.jsxs("div",{"data-testid":s,className:"prose mt-2",children:[e.jsx("img",{"data-testid":`image-${s}`,src:s,alt:"artifact-image",className:"w-full"}),e.jsxs("p",{className:"text-lg",children:["Image URL:"," ",e.jsx("a",{className:"text-blue-700 hover:underline",target:"_blank",href:s,rel:"noreferrer",children:s})]})]}),O=({markdown:s})=>e.jsx("div",{"data-testid":"markdown-display",className:"mt-4 prose",children:e.jsx(k,{children:s})}),K=({progress:s})=>e.jsxs("p",{"data-testid":"progress-display",className:"text-lg",children:["Progress: ",s,"%"]}),U=({tableData:s})=>{const a=JSON.parse(s),t=Object.keys(a[0]),[i,d]=n.useState(""),o=n.useMemo(()=>a.filter(l=>Object.values(l).some(c=>String(c).toLowerCase().includes(i.toLowerCase()))),[i,a]);return e.jsxs("div",{"data-testid":"table-display",className:"mt-4",children:[e.jsx("div",{className:"flex flex-row justify-end items-center mb-2",children:e.jsx("div",{children:e.jsx(_,{placeholder:"Search",value:i,onChange:l=>d(l.target.value)})})}),e.jsx("div",{className:"rounded-md border overflow-hidden",children:e.jsxs(F,{children:[e.jsx(I,{className:"bg-muted",children:e.jsx(v,{children:t.map(l=>e.jsx($,{className:"py-2 text-foreground",children:l},l))})}),e.jsx(E,{children:o.map(l=>e.jsx(v,{children:t.map(c=>e.jsx(z,{children:l[c]},c))},l.id))})]})})]})},V=({artifact:s})=>{const a=n.useMemo(()=>s.created?m(s.created,"dateTime"):null,[s.created]);return e.jsxs("div",{className:"mt-4",children:[e.jsx("p",{className:"text-lg font-bold",children:"Artifact"}),e.jsxs("div",{className:"mt-3 flex flex-col gap-3",children:[e.jsx(r,{label:"Key",value:e.jsx("span",{className:"font-mono",children:s.key??"None"})}),e.jsx(r,{label:"Type",value:e.jsx("span",{className:"font-mono",children:s.type??"None"})}),e.jsx(r,{label:"Created",value:e.jsx("span",{className:"font-mono",children:a??"None"})})]})]})},W=({flowRun:s})=>{const a=n.useMemo(()=>s.start_time?m(s.start_time,"dateTime"):null,[s.start_time]),t=n.useMemo(()=>s.estimated_run_time?S(Math.ceil(s.estimated_run_time)*1e3):null,[s.estimated_run_time]),i=n.useMemo(()=>s.created?m(s.created,"dateTime"):null,[s.created]),d=n.useMemo(()=>s.updated?m(s.updated,"dateTime"):null,[s.updated]);return e.jsxs("div",{className:"mt-4",children:[e.jsx("p",{className:"text-lg font-bold",children:"Flow Run"}),e.jsxs("div",{className:"mt-3 flex flex-col gap-3",children:[e.jsx(r,{label:"Start time",value:e.jsxs("span",{className:"font-mono flex items-center",children:[e.jsx(b,{id:"Calendar",className:"inline w-4 mr-2"}),a??"None"]})}),e.jsx(r,{label:"Duration",value:e.jsxs("span",{className:"font-mono flex items-center",children:[e.jsx(b,{id:"Clock",className:"inline w-4 mr-2"}),t??"None"]})}),e.jsx(r,{label:"Created",value:e.jsx("span",{className:"font-mono",children:i??"None"})}),e.jsx(r,{label:"Last Updated",value:e.jsx("span",{className:"font-mono",children:d??"None"})}),e.jsx(r,{label:"Tags",value:s.tags&&s.tags.length>0?e.jsx("div",{className:"flex flex-wrap",children:s.tags.map(o=>e.jsx(y,{tag:o},o))}):e.jsx("span",{className:"font-mono",children:"None"})}),e.jsx(r,{label:"State Message",value:e.jsx("span",{className:"font-mono",children:s.state?.message??"None"})})]})]})},q=({artifact:s})=>{const{flow_run:a,task_run:t}=s;return s.key||a||t?e.jsxs("div",{className:"flex flex-col gap-2",children:[s.key&&e.jsx(r,{label:"Artifact",value:e.jsx(j,{to:"/artifacts/key/$key",params:{key:s.key},className:"text-blue-500 hover:underline",children:s.key})}),a&&e.jsx(r,{label:"Flow Run",value:e.jsx(j,{to:"/runs/flow-run/$id",params:{id:a.id},className:"text-blue-500 hover:underline",children:a.name})}),t&&e.jsx(r,{label:"Task Run",value:e.jsx(j,{to:"/runs/task-run/$id",params:{id:t.id},className:"text-blue-500 hover:underline",children:t.name})}),e.jsx("hr",{className:"mt-2 border-border"})]}):null},J=({taskRun:s})=>{const a=n.useMemo(()=>s.created?m(s.created,"dateTime"):null,[s.created]),t=n.useMemo(()=>s.updated?m(s.updated,"dateTime"):null,[s.updated]);return e.jsxs("div",{className:"mt-4",children:[e.jsx("p",{className:"text-lg font-bold",children:"Task Run"}),e.jsxs("div",{className:"mt-3 flex flex-col gap-3",children:[e.jsx(r,{label:"Created",value:e.jsx("span",{className:"font-mono",children:a??"None"})}),e.jsx(r,{label:"Last Updated",value:e.jsx("span",{className:"font-mono",children:t??"None"})}),e.jsx(r,{label:"Tags",value:s.tags&&s.tags.length>0?e.jsx("div",{className:"flex flex-wrap",children:s.tags.map(i=>e.jsx(y,{tag:i},i))}):e.jsx("span",{className:"font-mono",children:"None"})})]})]})},Q=({artifact:s})=>{const{flow_run:a,task_run:t}=s;return e.jsxs("div",{className:"w-[250px] shrink-0 pt-4",children:[e.jsx(q,{artifact:s}),e.jsx(V,{artifact:s}),(a||t)&&e.jsx("hr",{className:"mt-4 border-border"}),a&&e.jsx(W,{flowRun:a}),a&&t&&e.jsx("hr",{className:"mt-4 border-border"}),t&&e.jsx(J,{taskRun:t})]})},X=({artifact:s})=>{const a=n.useMemo(()=>{switch(s.type){case"markdown":case"link":return e.jsx(O,{markdown:s.data});case"image":return e.jsx(G,{url:s.data});case"progress":return e.jsx(K,{progress:s.data});case"table":return e.jsx(U,{tableData:s.data});default:return e.jsx("pre",{children:JSON.stringify(s.data,null,2)})}},[s]);return e.jsxs("div",{children:[e.jsx(H,{artifact:s}),e.jsxs("div",{className:"flex flex-row gap-4 justify-between",children:[e.jsxs("div",{className:"flex-grow min-w-0",children:[a,e.jsx(P,{artifact:s})]}),e.jsx(Q,{artifact:s})]})]})};function oe(){const{id:s}=C.useParams(),{data:a}=w(L(s)),t=M(s);return e.jsx(X,{artifact:t??a})}export{oe as component};
2
+ //# sourceMappingURL=artifact._id-vDOuIuta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact._id-vDOuIuta.js","sources":["../../src/components/artifacts/artifact/artifact-detail-header.tsx","../../src/components/artifacts/artifact/artifact-raw-data-display.tsx","../../src/components/artifacts/artifact/detail-image.tsx","../../src/components/artifacts/artifact/detail-markdown.tsx","../../src/components/artifacts/artifact/detail-progress.tsx","../../src/components/artifacts/artifact/detail-table.tsx","../../src/components/artifacts/artifact/metadata-sidebar/artifact-section.tsx","../../src/components/artifacts/artifact/metadata-sidebar/flow-run-section.tsx","../../src/components/artifacts/artifact/metadata-sidebar/links-section.tsx","../../src/components/artifacts/artifact/metadata-sidebar/task-run-section.tsx","../../src/components/artifacts/artifact/metadata-sidebar/index.tsx","../../src/components/artifacts/artifact/artifact-detail-page.tsx","../../src/routes/artifacts/artifact.$id.tsx?tsr-split=component"],"sourcesContent":["import type { ArtifactWithFlowRunAndTaskRun } from \"@/api/artifacts\";\nimport {\n\tBreadcrumb,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { DocsLink } from \"@/components/ui/docs-link\";\nimport { LazyMarkdown } from \"@/components/ui/lazy-markdown\";\n\nexport type ArtifactDetailHeaderProps = {\n\tartifact: ArtifactWithFlowRunAndTaskRun;\n};\n\nexport const ArtifactDetailHeader = ({\n\tartifact,\n}: ArtifactDetailHeaderProps) => {\n\tlet header = <></>;\n\tif (artifact.key) {\n\t\theader = (\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<Breadcrumb>\n\t\t\t\t\t<BreadcrumbList>\n\t\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\t\t\tto=\"/artifacts/key/$key\"\n\t\t\t\t\t\t\t\tparams={{ key: artifact.key }}\n\t\t\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{artifact.key}\n\t\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t\t<BreadcrumbSeparator />\n\t\t\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t\t\t{artifact.id}\n\t\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t</BreadcrumbList>\n\t\t\t\t</Breadcrumb>\n\t\t\t</div>\n\t\t);\n\t} else {\n\t\theader = (\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<Breadcrumb>\n\t\t\t\t\t<BreadcrumbList>\n\t\t\t\t\t\t{artifact.flow_run && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\t\t\t\t\tto=\"/runs/flow-run/$id\"\n\t\t\t\t\t\t\t\t\t\tparams={{ id: artifact.flow_run_id ?? \"\" }}\n\t\t\t\t\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{artifact.flow_run.name}\n\t\t\t\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t\t\t\t<BreadcrumbSeparator />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{artifact.task_run && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BreadcrumbItem>\n\t\t\t\t\t\t\t\t\t<BreadcrumbLink\n\t\t\t\t\t\t\t\t\t\tto=\"/runs/task-run/$id\"\n\t\t\t\t\t\t\t\t\t\tparams={{ id: artifact.task_run_id ?? \"\" }}\n\t\t\t\t\t\t\t\t\t\tclassName=\"text-xl font-semibold\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{artifact.task_run.name}\n\t\t\t\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t\t\t\t<BreadcrumbSeparator />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<BreadcrumbItem className=\"text-xl font-semibold\">\n\t\t\t\t\t\t\t{artifact.id}\n\t\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t</BreadcrumbList>\n\t\t\t\t</Breadcrumb>\n\t\t\t</div>\n\t\t);\n\t}\n\treturn (\n\t\t<>\n\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t{header}\n\t\t\t\t<DocsLink id=\"artifacts-guide\" label=\"Documentation\" />\n\t\t\t</div>\n\t\t\t{artifact.description && (\n\t\t\t\t<div className=\"\">\n\t\t\t\t\t<h2 className=\"text-3xl font-semibold tracking-tight my-4 font-bold prose lg:prose-xl\">\n\t\t\t\t\t\t<LazyMarkdown>{artifact.description}</LazyMarkdown>\n\t\t\t\t\t</h2>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<hr />\n\t\t</>\n\t);\n};\n","import { EditorView, useCodeMirror } from \"@uiw/react-codemirror\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { toast } from \"sonner\";\nimport type { ArtifactWithFlowRunAndTaskRun } from \"@/api/artifacts\";\nimport { Button } from \"@/components/ui/button\";\nimport { Icon } from \"@/components/ui/icons\";\n\ntype ArtifactDataDisplayProps = {\n\tartifact: ArtifactWithFlowRunAndTaskRun;\n};\n\nexport const ArtifactDataDisplay = ({ artifact }: ArtifactDataDisplayProps) => {\n\tconst [showData, setShowData] = useState(false);\n\n\tconst toggleShowData = () => {\n\t\tsetShowData((val) => !val);\n\t};\n\n\tconst editor = useRef<HTMLDivElement | null>(null);\n\tconst basicSetup = {\n\t\thighlightActiveLine: false,\n\t\tfoldGutter: false,\n\t\thighlightActiveLineGutter: false,\n\t};\n\tconst { setContainer } = useCodeMirror({\n\t\tcontainer: editor.current,\n\t\textensions: [EditorView.lineWrapping],\n\t\tvalue: String(artifact.data),\n\t\tindentWithTab: false,\n\t\teditable: true,\n\t\tbasicSetup,\n\t});\n\n\tuseEffect(() => {\n\t\tif (editor.current) {\n\t\t\tsetContainer(editor.current);\n\t\t}\n\t}, [setContainer]);\n\n\tconst handleCopy = (_value: string) => {\n\t\ttoast.success(\"Copied to clipboard\");\n\t\tvoid navigator.clipboard.writeText(_value);\n\t};\n\n\treturn (\n\t\t<div className=\"flex flex-col justify-center items-center\">\n\t\t\t<Button\n\t\t\t\tdata-testid=\"show-raw-data-button\"\n\t\t\t\tvariant={\"outline\"}\n\t\t\t\tonClick={toggleShowData}\n\t\t\t\tclassName=\"my-4\"\n\t\t\t>\n\t\t\t\t{showData ? \"Hide\" : \"Show\"} Raw Data\n\t\t\t</Button>\n\n\t\t\t<div\n\t\t\t\tclassName=\"rounded-md border shadow-xs focus-within:outline-hidden focus-within:ring-1 focus-within:ring-ring relative\"\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: showData ? \"block\" : \"none\",\n\t\t\t\t}}\n\t\t\t\tref={(node) => {\n\t\t\t\t\teditor.current = node;\n\t\t\t\t}}\n\t\t\t\tdata-testid=\"raw-data-display\"\n\t\t\t>\n\t\t\t\t<Button\n\t\t\t\t\tonClick={() => handleCopy(artifact.data as string)}\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\tclassName=\"absolute top-0 right-0 z-10\"\n\t\t\t\t\taria-label=\"copy\"\n\t\t\t\t>\n\t\t\t\t\t<Icon id=\"Copy\" className=\"size-2\" />\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","export type DetailImageProps = {\n\turl: string;\n};\n\nexport const DetailImage = ({ url }: DetailImageProps) => {\n\treturn (\n\t\t<div data-testid={url} className=\"prose mt-2\">\n\t\t\t<img\n\t\t\t\tdata-testid={`image-${url}`}\n\t\t\t\tsrc={url}\n\t\t\t\talt=\"artifact-image\"\n\t\t\t\tclassName=\"w-full\"\n\t\t\t/>\n\n\t\t\t<p className=\"text-lg\">\n\t\t\t\tImage URL:{\" \"}\n\t\t\t\t<a\n\t\t\t\t\tclassName=\"text-blue-700 hover:underline\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\thref={url}\n\t\t\t\t\trel=\"noreferrer\"\n\t\t\t\t>\n\t\t\t\t\t{url}\n\t\t\t\t</a>\n\t\t\t</p>\n\t\t</div>\n\t);\n};\n","import { LazyMarkdown } from \"@/components/ui/lazy-markdown\";\n\nexport type DetailMarkdownProps = {\n\tmarkdown: string;\n};\n\nexport const DetailMarkdown = ({ markdown }: DetailMarkdownProps) => {\n\treturn (\n\t\t<div data-testid=\"markdown-display\" className=\"mt-4 prose\">\n\t\t\t<LazyMarkdown>{markdown}</LazyMarkdown>\n\t\t</div>\n\t);\n};\n","export type DetailProgressProps = {\n\tprogress: number;\n};\n\nexport const DetailProgress = ({ progress }: DetailProgressProps) => {\n\treturn (\n\t\t<p data-testid=\"progress-display\" className=\"text-lg\">\n\t\t\tProgress: {progress}%\n\t\t</p>\n\t);\n};\n","import { useMemo, useState } from \"react\";\nimport { SearchInput } from \"@/components/ui/input\";\nimport {\n\tTable,\n\tTableBody,\n\tTableCell,\n\tTableHead,\n\tTableHeader,\n\tTableRow,\n} from \"@/components/ui/table\";\n\nexport type DetailTableProps = {\n\ttableData: string;\n};\n\nexport const DetailTable = ({ tableData }: DetailTableProps) => {\n\tconst table = JSON.parse(tableData) as Record<string, string>[];\n\tconst headers = Object.keys(table[0]);\n\tconst [input, setInput] = useState<string>(\"\");\n\n\tconst filteredTable = useMemo(() => {\n\t\treturn table.filter((row) => {\n\t\t\treturn Object.values(row).some((value: string) =>\n\t\t\t\tString(value).toLowerCase().includes(input.toLowerCase()),\n\t\t\t);\n\t\t});\n\t}, [input, table]);\n\n\treturn (\n\t\t<div data-testid=\"table-display\" className=\"mt-4\">\n\t\t\t<div className=\"flex flex-row justify-end items-center mb-2\">\n\t\t\t\t<div>\n\t\t\t\t\t<SearchInput\n\t\t\t\t\t\tplaceholder=\"Search\"\n\t\t\t\t\t\tvalue={input}\n\t\t\t\t\t\tonChange={(e) => setInput(e.target.value)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"rounded-md border overflow-hidden\">\n\t\t\t\t<Table>\n\t\t\t\t\t<TableHeader className=\"bg-muted\">\n\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t{headers.map((header) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<TableHead key={header} className=\"py-2 text-foreground\">\n\t\t\t\t\t\t\t\t\t\t{header}\n\t\t\t\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t</TableHeader>\n\t\t\t\t\t<TableBody>\n\t\t\t\t\t\t{filteredTable.map((row) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<TableRow key={row.id}>\n\t\t\t\t\t\t\t\t\t{headers.map((header) => {\n\t\t\t\t\t\t\t\t\t\treturn <TableCell key={header}>{row[header]}</TableCell>;\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</TableBody>\n\t\t\t\t</Table>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import { useMemo } from \"react\";\nimport type { ArtifactWithFlowRunAndTaskRun } from \"@/api/artifacts\";\nimport { KeyValue } from \"@/components/ui/key-value\";\nimport { formatDate } from \"@/utils/date\";\n\ntype ArtifactSectionProps = {\n\tartifact: ArtifactWithFlowRunAndTaskRun;\n};\n\nexport const ArtifactSection = ({ artifact }: ArtifactSectionProps) => {\n\tconst createdDate = useMemo(() => {\n\t\tif (!artifact.created) return null;\n\t\treturn formatDate(artifact.created, \"dateTime\");\n\t}, [artifact.created]);\n\n\treturn (\n\t\t<div className=\"mt-4\">\n\t\t\t<p className=\"text-lg font-bold\">Artifact</p>\n\n\t\t\t<div className=\"mt-3 flex flex-col gap-3\">\n\t\t\t\t<KeyValue\n\t\t\t\t\tlabel=\"Key\"\n\t\t\t\t\tvalue={<span className=\"font-mono\">{artifact.key ?? \"None\"}</span>}\n\t\t\t\t/>\n\n\t\t\t\t<KeyValue\n\t\t\t\t\tlabel=\"Type\"\n\t\t\t\t\tvalue={<span className=\"font-mono\">{artifact.type ?? \"None\"}</span>}\n\t\t\t\t/>\n\n\t\t\t\t<KeyValue\n\t\t\t\t\tlabel=\"Created\"\n\t\t\t\t\tvalue={<span className=\"font-mono\">{createdDate ?? \"None\"}</span>}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import humanizeDuration from \"humanize-duration\";\nimport { useMemo } from \"react\";\nimport type { FlowRun } from \"@/api/flow-runs\";\nimport { Icon } from \"@/components/ui/icons\";\nimport { KeyValue } from \"@/components/ui/key-value\";\nimport { TagBadge } from \"@/components/ui/tag-badge\";\nimport { formatDate } from \"@/utils/date\";\n\ntype FlowRunSectionProps = {\n\tflowRun: FlowRun;\n};\n\nexport const FlowRunSection = ({ flowRun }: FlowRunSectionProps) => {\n\tconst startTime = useMemo(() => {\n\t\tif (!flowRun.start_time) return null;\n\t\treturn formatDate(flowRun.start_time, \"dateTime\");\n\t}, [flowRun.start_time]);\n\n\tconst duration = useMemo(() => {\n\t\tif (!flowRun.estimated_run_time) return null;\n\t\treturn humanizeDuration(Math.ceil(flowRun.estimated_run_time) * 1000);\n\t}, [flowRun.estimated_run_time]);\n\n\tconst createdDate = useMemo(() => {\n\t\tif (!flowRun.created) return null;\n\t\treturn formatDate(flowRun.created, \"dateTime\");\n\t}, [flowRun.created]);\n\n\tconst updatedDate = useMemo(() => {\n\t\tif (!flowRun.updated) return null;\n\t\treturn formatDate(flowRun.updated, \"dateTime\");\n\t}, [flowRun.updated]);\n\n\treturn (\n\t\t<div className=\"mt-4\">\n\t\t\t<p className=\"text-lg font-bold\">Flow Run</p>\n\n\t\t\t<div className=\"mt-3 flex flex-col gap-3\">\n\t\t\t\t<KeyValue\n\t\t\t\t\tlabel=\"Start time\"\n\t\t\t\t\tvalue={\n\t\t\t\t\t\t<span className=\"font-mono flex items-center\">\n\t\t\t\t\t\t\t<Icon id=\"Calendar\" className=\"inline w-4 mr-2\" />\n\t\t\t\t\t\t\t{startTime ?? \"None\"}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t}\n\t\t\t\t/>\n\n\t\t\t\t<KeyValue\n\t\t\t\t\tlabel=\"Duration\"\n\t\t\t\t\tvalue={\n\t\t\t\t\t\t<span className=\"font-mono flex items-center\">\n\t\t\t\t\t\t\t<Icon id=\"Clock\" className=\"inline w-4 mr-2\" />\n\t\t\t\t\t\t\t{duration ?? \"None\"}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t}\n\t\t\t\t/>\n\n\t\t\t\t<KeyValue\n\t\t\t\t\tlabel=\"Created\"\n\t\t\t\t\tvalue={<span className=\"font-mono\">{createdDate ?? \"None\"}</span>}\n\t\t\t\t/>\n\n\t\t\t\t<KeyValue\n\t\t\t\t\tlabel=\"Last Updated\"\n\t\t\t\t\tvalue={<span className=\"font-mono\">{updatedDate ?? \"None\"}</span>}\n\t\t\t\t/>\n\n\t\t\t\t<KeyValue\n\t\t\t\t\tlabel=\"Tags\"\n\t\t\t\t\tvalue={\n\t\t\t\t\t\tflowRun.tags && flowRun.tags.length > 0 ? (\n\t\t\t\t\t\t\t<div className=\"flex flex-wrap\">\n\t\t\t\t\t\t\t\t{flowRun.tags.map((tag) => (\n\t\t\t\t\t\t\t\t\t<TagBadge key={tag} tag={tag} />\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span className=\"font-mono\">None</span>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t/>\n\n\t\t\t\t<KeyValue\n\t\t\t\t\tlabel=\"State Message\"\n\t\t\t\t\tvalue={\n\t\t\t\t\t\t<span className=\"font-mono\">\n\t\t\t\t\t\t\t{flowRun.state?.message ?? \"None\"}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import { Link } from \"@tanstack/react-router\";\nimport type { ArtifactWithFlowRunAndTaskRun } from \"@/api/artifacts\";\nimport { KeyValue } from \"@/components/ui/key-value\";\n\ntype LinksSectionProps = {\n\tartifact: ArtifactWithFlowRunAndTaskRun;\n};\n\nexport const LinksSection = ({ artifact }: LinksSectionProps) => {\n\tconst { flow_run, task_run } = artifact;\n\tconst hasLinks = artifact.key || flow_run || task_run;\n\n\tif (!hasLinks) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-2\">\n\t\t\t{artifact.key && (\n\t\t\t\t<KeyValue\n\t\t\t\t\tlabel=\"Artifact\"\n\t\t\t\t\tvalue={\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tto=\"/artifacts/key/$key\"\n\t\t\t\t\t\t\tparams={{ key: artifact.key }}\n\t\t\t\t\t\t\tclassName=\"text-blue-500 hover:underline\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{artifact.key}\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{flow_run && (\n\t\t\t\t<KeyValue\n\t\t\t\t\tlabel=\"Flow Run\"\n\t\t\t\t\tvalue={\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tto=\"/runs/flow-run/$id\"\n\t\t\t\t\t\t\tparams={{ id: flow_run.id }}\n\t\t\t\t\t\t\tclassName=\"text-blue-500 hover:underline\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{flow_run.name}\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{task_run && (\n\t\t\t\t<KeyValue\n\t\t\t\t\tlabel=\"Task Run\"\n\t\t\t\t\tvalue={\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tto=\"/runs/task-run/$id\"\n\t\t\t\t\t\t\tparams={{ id: task_run.id }}\n\t\t\t\t\t\t\tclassName=\"text-blue-500 hover:underline\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{task_run.name}\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<hr className=\"mt-2 border-border\" />\n\t\t</div>\n\t);\n};\n","import { useMemo } from \"react\";\nimport type { TaskRun } from \"@/api/task-runs\";\nimport { KeyValue } from \"@/components/ui/key-value\";\nimport { TagBadge } from \"@/components/ui/tag-badge\";\nimport { formatDate } from \"@/utils/date\";\n\ntype TaskRunSectionProps = {\n\ttaskRun: TaskRun;\n};\n\nexport const TaskRunSection = ({ taskRun }: TaskRunSectionProps) => {\n\tconst createdDate = useMemo(() => {\n\t\tif (!taskRun.created) return null;\n\t\treturn formatDate(taskRun.created, \"dateTime\");\n\t}, [taskRun.created]);\n\n\tconst updatedDate = useMemo(() => {\n\t\tif (!taskRun.updated) return null;\n\t\treturn formatDate(taskRun.updated, \"dateTime\");\n\t}, [taskRun.updated]);\n\n\treturn (\n\t\t<div className=\"mt-4\">\n\t\t\t<p className=\"text-lg font-bold\">Task Run</p>\n\n\t\t\t<div className=\"mt-3 flex flex-col gap-3\">\n\t\t\t\t<KeyValue\n\t\t\t\t\tlabel=\"Created\"\n\t\t\t\t\tvalue={<span className=\"font-mono\">{createdDate ?? \"None\"}</span>}\n\t\t\t\t/>\n\n\t\t\t\t<KeyValue\n\t\t\t\t\tlabel=\"Last Updated\"\n\t\t\t\t\tvalue={<span className=\"font-mono\">{updatedDate ?? \"None\"}</span>}\n\t\t\t\t/>\n\n\t\t\t\t<KeyValue\n\t\t\t\t\tlabel=\"Tags\"\n\t\t\t\t\tvalue={\n\t\t\t\t\t\ttaskRun.tags && taskRun.tags.length > 0 ? (\n\t\t\t\t\t\t\t<div className=\"flex flex-wrap\">\n\t\t\t\t\t\t\t\t{taskRun.tags.map((tag) => (\n\t\t\t\t\t\t\t\t\t<TagBadge key={tag} tag={tag} />\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span className=\"font-mono\">None</span>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import type { ArtifactWithFlowRunAndTaskRun } from \"@/api/artifacts\";\nimport { ArtifactSection } from \"./artifact-section\";\nimport { FlowRunSection } from \"./flow-run-section\";\nimport { LinksSection } from \"./links-section\";\nimport { TaskRunSection } from \"./task-run-section\";\n\nexport type MetadataSidebarProps = {\n\tartifact: ArtifactWithFlowRunAndTaskRun;\n};\n\nexport const MetadataSidebar = ({ artifact }: MetadataSidebarProps) => {\n\tconst { flow_run, task_run } = artifact;\n\n\treturn (\n\t\t<div className=\"w-[250px] shrink-0 pt-4\">\n\t\t\t<LinksSection artifact={artifact} />\n\n\t\t\t<ArtifactSection artifact={artifact} />\n\n\t\t\t{(flow_run || task_run) && <hr className=\"mt-4 border-border\" />}\n\n\t\t\t{flow_run && <FlowRunSection flowRun={flow_run} />}\n\n\t\t\t{flow_run && task_run && <hr className=\"mt-4 border-border\" />}\n\n\t\t\t{task_run && <TaskRunSection taskRun={task_run} />}\n\t\t</div>\n\t);\n};\n","import { useMemo } from \"react\";\nimport type { ArtifactWithFlowRunAndTaskRun } from \"@/api/artifacts\";\nimport { ArtifactDetailHeader } from \"./artifact-detail-header\";\nimport { ArtifactDataDisplay } from \"./artifact-raw-data-display\";\nimport { DetailImage } from \"./detail-image\";\nimport { DetailMarkdown } from \"./detail-markdown\";\nimport { DetailProgress } from \"./detail-progress\";\nimport { DetailTable } from \"./detail-table\";\nimport { MetadataSidebar } from \"./metadata-sidebar\";\n\nexport type ArtifactDetailPageProps = {\n\tartifact: ArtifactWithFlowRunAndTaskRun;\n};\n\nexport const ArtifactDetailPage = ({ artifact }: ArtifactDetailPageProps) => {\n\tconst mapArtifactHoc = useMemo(() => {\n\t\tswitch (artifact.type) {\n\t\t\tcase \"markdown\":\n\t\t\tcase \"link\":\n\t\t\t\treturn <DetailMarkdown markdown={artifact.data as string} />;\n\t\t\tcase \"image\":\n\t\t\t\treturn <DetailImage url={artifact.data as string} />;\n\t\t\tcase \"progress\":\n\t\t\t\treturn <DetailProgress progress={artifact.data as number} />;\n\t\t\tcase \"table\":\n\t\t\t\treturn <DetailTable tableData={artifact.data as string} />;\n\t\t\tdefault:\n\t\t\t\treturn <pre>{JSON.stringify(artifact.data, null, 2)}</pre>;\n\t\t}\n\t}, [artifact]);\n\treturn (\n\t\t<div>\n\t\t\t<ArtifactDetailHeader artifact={artifact} />\n\t\t\t<div className=\"flex flex-row gap-4 justify-between\">\n\t\t\t\t<div className=\"flex-grow min-w-0\">\n\t\t\t\t\t{mapArtifactHoc}\n\t\t\t\t\t<ArtifactDataDisplay artifact={artifact} />\n\t\t\t\t</div>\n\t\t\t\t<MetadataSidebar artifact={artifact} />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { buildGetArtifactQuery } from \"@/api/artifacts\";\nimport { useGetArtifactFlowTaskRuns } from \"@/api/artifacts/use-get-artifacts-flow-task-runs/use-get-artifacts-flow-task-runs\";\nimport { ArtifactDetailPage } from \"@/components/artifacts/artifact/artifact-detail-page\";\n\nexport const Route = createFileRoute(\"/artifacts/artifact/$id\")({\n\tcomponent: RouteComponent,\n\tloader: async ({ context, params }) => {\n\t\tconst { id } = params;\n\n\t\tconst artifact = await context.queryClient.ensureQueryData(\n\t\t\tbuildGetArtifactQuery(id),\n\t\t);\n\n\t\treturn { artifact };\n\t},\n});\n\nfunction RouteComponent() {\n\tconst { id } = Route.useParams();\n\n\tconst { data: artifact } = useSuspenseQuery(buildGetArtifactQuery(id));\n\n\tconst artifactWithMetadata = useGetArtifactFlowTaskRuns(id);\n\n\treturn <ArtifactDetailPage artifact={artifactWithMetadata ?? artifact} />;\n}\n"],"names":["ArtifactDetailHeader","artifact","header","jsx","Fragment","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","jsxs","DocsLink","LazyMarkdown","ArtifactDataDisplay","showData","setShowData","useState","toggleShowData","val","editor","useRef","basicSetup","setContainer","useCodeMirror","EditorView","useEffect","handleCopy","_value","toast","Button","node","Icon","DetailImage","url","DetailMarkdown","markdown","DetailProgress","progress","DetailTable","tableData","table","headers","input","setInput","filteredTable","useMemo","row","value","SearchInput","e","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","ArtifactSection","createdDate","formatDate","KeyValue","FlowRunSection","flowRun","startTime","duration","humanizeDuration","updatedDate","tag","TagBadge","LinksSection","flow_run","task_run","Link","TaskRunSection","taskRun","MetadataSidebar","ArtifactDetailPage","mapArtifactHoc","RouteComponent","id","Route","useParams","data","useSuspenseQuery","buildGetArtifactQuery","artifactWithMetadata","useGetArtifactFlowTaskRuns"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as e,r as m,t as E,L as ze}from"./vendor-tanstack-BdLtprmr.js";import{a as Qe}from"./zod-B1GLD-Zc.js";import{g as _,p as D,q as Je,Z as Fe,c as Ge}from"./vendor-forms-BlFSCfFw.js";import{S as B,a as z,b as Q,c as J,d as Re,dm as Ye,e as G,b8 as He,bp as Me,bs as Ve,ag as R,ah as M,ai as V,aj as O,al as W,ak as I,am as F,an as k,I as Y,dn as Oe,bP as he,p as Z,bu as Ke,bh as Xe,af as ce,T as me,d6 as We,q as U,i as pe,aZ as Ze,b1 as et,as as tt,c$ as ge,ao as je,at as ve,az as st,aA as rt,aB as be,aC as Se,L as nt,C as ot,o as at,dp as lt}from"./index-CPpeVt8m.js";import{b as w,c as b,d as S,e as y,a as C,F as ct}from"./form-Cl5Hk9bq.js";import{u as it,S as ut}from"./use-stepper-CZZEx5js.js";import{U as te,T as Ie,A as dt}from"./automation-schema-D1HDjyeB.js";import{T as xe}from"./textarea-DFEOJJdc.js";import{S as ht,R as mt,a as Pe,b as we,c as pt}from"./index-C63VUjOh.js";import{R as xt,a as ft}from"./radio-group-0oOEMJCS.js";import{u as gt,C as jt,a as vt,b as bt}from"./collapsible-Lk7MRvBH.js";import{T as St}from"./tags-input-DqZ8v99z.js";const ye={"cancel-flow-run":"Cancel a flow run","suspend-flow-run":"Suspend a flow run","resume-flow-run":"Resume a flow run","change-flow-run-state":"Change flow run's state","run-deployment":"Run a deployment","pause-deployment":"Pause a deployment","resume-deployment":"Resume a deployment","pause-work-queue":"Pause a work queue","resume-work-queue":"Resume a work queue","pause-work-pool":"Pause a work pool","resume-work-pool":"Resume a work pool","pause-automation":"Pause an automation","resume-automation":"Resume an automation","send-notification":"Send a notification","call-webhook":"Call a webhook"},wt=({index:t})=>{const s=_();return e.jsx(w,{control:s.control,name:`actions.${t}.type`,render:({field:n})=>e.jsxs(b,{children:[e.jsx(S,{children:"Action Type"}),e.jsx(y,{children:e.jsxs(B,{...n,onValueChange:r=>{n.onChange(r);const a=yt({index:t,type:r});a&&s.setValue(a,te)},children:[e.jsx(z,{"aria-label":"select action",className:"w-full",children:e.jsx(Q,{placeholder:"Select action"})}),e.jsx(J,{children:e.jsxs(Re,{children:[e.jsx(Ye,{children:"Actions"}),Object.keys(ye).map(r=>e.jsx(G,{value:r,children:ye[r]},r))]})})]})})]})})};function yt({index:t,type:s}){switch(s){case"run-deployment":case"pause-deployment":case"resume-deployment":return`actions.${t}.deployment_id`;case"pause-work-queue":case"resume-work-queue":return`actions.${t}.work_queue_id`;case"pause-work-pool":case"resume-work-pool":return`actions.${t}.work_pool_id`;case"pause-automation":case"resume-automation":return`actions.${t}.automation_id`;default:return null}}const Ct=4,ee=({length:t=Ct})=>Array.from({length:t},(s,n)=>e.jsx(He,{className:"mt-2 p-4 h-2 w-full"},n)),kt=({index:t})=>{const s=_(),[n,r]=m.useState(""),{data:a,isLoading:o}=E(Me({offset:0,block_types:{slug:{any_:["webhook"]}}})),l=m.useMemo(()=>a?.map(i=>i.slug)??[],[a]),{data:h,isLoading:p}=E(Ve({block_types:l.length>0?{slug:{any_:l}}:void 0,include_secrets:!1,sort:"BLOCK_TYPE_AND_NAME_ASC",offset:0},{enabled:l.length>0})),d=o||p,c=m.useMemo(()=>!a||!h?[]:a.map(i=>({blockType:i,documents:h.filter(f=>f.block_type_id===i.id)})).filter(i=>i.documents.length>0),[a,h]),x=m.useMemo(()=>{if(!n)return c;const i=n.toLowerCase();return c.map(f=>({...f,documents:f.documents.filter(j=>j.name?.toLowerCase().includes(i))})).filter(f=>f.documents.length>0)},[c,n]),u=m.useCallback(i=>{if(!(!i||!h))return h.find(f=>f.id===i)},[h]);return e.jsxs("div",{className:"space-y-4",children:[e.jsx(w,{control:s.control,name:`actions.${t}.block_document_id`,render:({field:i})=>{const f=u(i.value);return e.jsxs(b,{className:"flex flex-col",children:[e.jsx(S,{children:"Block"}),e.jsxs(R,{children:[e.jsx(M,{selected:!!f,"aria-label":"Select webhook block",children:f?f.name:"Select a webhook block"}),e.jsxs(V,{children:[e.jsx(O,{value:n,onValueChange:r,placeholder:"Search for a block..."}),e.jsx(W,{children:"No webhook blocks found"}),e.jsx(I,{children:d?e.jsx(ee,{}):x.map(j=>e.jsx(F,{heading:j.blockType.name,children:j.documents.map(A=>e.jsx(k,{value:A.id,selected:i.value===A.id,onSelect:i.onChange,children:A.name},A.id))},j.blockType.id))})]})]}),e.jsx(C,{})]})}}),e.jsx(Nt,{index:t}),e.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-blue-200 bg-blue-50 p-3 text-sm text-blue-800 dark:border-blue-800 dark:bg-blue-950 dark:text-blue-200",children:[e.jsx(Y,{id:"Info",className:"mt-0.5 size-4 shrink-0"}),e.jsxs("p",{children:["In addition to any fields present on the triggering event, the following objects can be used in webhook payload templates:"," ",e.jsx("code",{className:"rounded bg-blue-100 px-1 py-0.5 font-mono text-xs dark:bg-blue-900",children:"flow"}),","," ",e.jsx("code",{className:"rounded bg-blue-100 px-1 py-0.5 font-mono text-xs dark:bg-blue-900",children:"deployment"}),","," ",e.jsx("code",{className:"rounded bg-blue-100 px-1 py-0.5 font-mono text-xs dark:bg-blue-900",children:"flow_run"}),","," ",e.jsx("code",{className:"rounded bg-blue-100 px-1 py-0.5 font-mono text-xs dark:bg-blue-900",children:"work_pool"}),", and"," ",e.jsx("code",{className:"rounded bg-blue-100 px-1 py-0.5 font-mono text-xs dark:bg-blue-900",children:"work_queue"}),"."]})]})]})},Nt=({index:t})=>{const s=_(),{validateTemplate:n}=Oe(),[r,a]=m.useState(null),[o,l]=m.useState(!1),h=s.watch(`actions.${t}.payload`),p=he(h,1e3);return m.useEffect(()=>{(async()=>{if(!p||p.trim()===""){a(null);return}l(!0);try{const c=await n(p);c.valid?a(null):a(c.error)}catch{a(null)}finally{l(!1)}})()},[p,n]),e.jsx(w,{control:s.control,name:`actions.${t}.payload`,render:({field:d})=>e.jsxs(b,{children:[e.jsxs(S,{className:"flex items-center gap-2",children:["Payload",o&&e.jsx(Y,{id:"Loader2",className:"size-3 animate-spin"})]}),e.jsx(y,{children:e.jsx(xe,{...d,value:d.value??"",placeholder:"Enter webhook payload...",className:r?"border-destructive":"",rows:5})}),r&&e.jsx("p",{className:"text-sm text-destructive",children:r}),e.jsx(C,{})]})})},_t=({index:t})=>{const s=_(),n=s.watch(`actions.${t}.state`);return e.jsxs(e.Fragment,{children:[e.jsx(w,{control:s.control,name:`actions.${t}.state`,render:({field:r})=>e.jsxs(b,{children:[e.jsx(S,{children:"State"}),e.jsx(y,{children:e.jsx(ht,{value:r.value,onValueChange:r.onChange})}),e.jsx(C,{})]})}),e.jsx(w,{control:s.control,name:`actions.${t}.name`,render:({field:r})=>e.jsxs(b,{children:[e.jsx(S,{children:"Name"}),e.jsx(y,{children:e.jsx(Z,{type:"text",...r,value:r.value??"",placeholder:n?mt[n]:void 0})}),e.jsx(C,{})]})}),e.jsx(w,{control:s.control,name:`actions.${t}.message`,render:({field:r})=>e.jsxs(b,{children:[e.jsx(S,{children:"Message"}),e.jsx(y,{children:e.jsx(xe,{...r,placeholder:"State changed by Automation <id>"})}),e.jsx(C,{})]})})]})},oe=({action:t})=>{const s=t==="Resume"?"Resume a flow run inferred from the triggering event":`${t} flow run inferred from the triggering event`;return e.jsx("p",{className:"text-sm text-muted-foreground",children:s})},H={value:te,name:"Infer Automation"},Tt=(t,s)=>{if(s===H.value)return H.name;const n=t?.find(r=>r.id===s);if(n)return n.name},Ce=({action:t,index:s})=>{const[n,r]=m.useState(""),a=_(),{data:o,isSuccess:l}=E(Ke()),h=m.useDeferredValue(n),p=m.useMemo(()=>o?o.filter(c=>c.name.toLowerCase().includes(h.toLowerCase())):[],[o,h]),d=H.name.toLowerCase().includes(h.toLowerCase());return e.jsx(w,{control:a.control,name:`actions.${s}.automation_id`,render:({field:c})=>{const x=Tt(o,c.value);return e.jsxs(b,{className:"flex flex-col",children:[e.jsxs(S,{children:["Automation To ",t]}),e.jsxs(R,{children:[e.jsx(M,{selected:!!x,"aria-label":`Select Automation to ${t}`,children:x??"Select automation"}),e.jsxs(V,{children:[e.jsx(O,{value:n,onValueChange:r,placeholder:"Search for an automation..."}),e.jsx(W,{children:"No automation found"}),e.jsx(I,{children:e.jsxs(F,{children:[d&&e.jsx(k,{selected:c.value===H.value,onSelect:u=>{c.onChange(u),r("")},value:H.value,children:H.name}),l?p.map(u=>e.jsx(k,{selected:c.value===u.id,onSelect:i=>{c.onChange(i),r("")},value:u.id,children:u.name},u.id)):e.jsx(ee,{})]})})]})]}),e.jsx(C,{})]})}})},At=(t={page:1,limit:100,sort:"NAME_ASC"})=>{const{data:s,status:n}=E(Xe(t)),r=new Set(s?.results.map(l=>l.flow_id)),{data:a,status:o}=E(ce({flows:{operator:"or_",id:{any_:Array.from(r)}},sort:"NAME_DESC",offset:0},{enabled:r.size>0}));return m.useMemo(()=>{if(a&&s){const l=new Map(a.map(i=>[i.id,i])),h=s.results.map(i=>({...i,flow:l.get(i.flow_id)})),{count:p,limit:d,pages:c,page:x}=s;return{data:{count:p,limit:d,pages:c,page:x,results:h},status:"success"}}return o==="error"||n==="error"?{data:void 0,status:"error"}:{data:void 0,status:"pending"}},[s,n,a,o])},q={value:te,name:"Infer Deployment"},Et=(t,s)=>{if(s===q.value)return q.name;const n=t?.find(r=>r.id===s);if(n)return e.jsx($e,{deploymentWithFlow:n})},ae=({action:t,index:s})=>{const[n,r]=m.useState(""),a=_(),o=a.watch(`actions.${s}.type`),l=D({name:`actions.${s}.deployment_id`}),h=he(n,500),{data:p}=At({page:1,sort:"NAME_ASC",deployments:{operator:"or_",flow_or_deployment_name:{like_:h}}}),d=q.name.toLowerCase().includes(n.toLowerCase()),c=p?.results;return e.jsxs(e.Fragment,{children:[e.jsx(w,{control:a.control,name:`actions.${s}.deployment_id`,render:({field:x})=>{const u=Et(c,x.value);return e.jsxs(b,{className:"flex flex-col",children:[e.jsxs(S,{children:["Deployment To ",t]}),e.jsxs(R,{children:[e.jsx(M,{selected:!!u,"aria-label":`Select Deployment to ${t}`,children:u??"Select deployment"}),e.jsxs(V,{children:[e.jsx(O,{value:n,onValueChange:r,placeholder:"Search for an deployment..."}),e.jsx(W,{children:"No deployment found"}),e.jsx(I,{children:e.jsxs(F,{children:[d&&e.jsx(k,{selected:x.value===q.value,onSelect:x.onChange,value:q.value,children:q.name}),c?c.map(i=>e.jsx(k,{"aria-label":i.name,selected:x.value===i.id,onSelect:x.onChange,value:i.id,children:e.jsx($e,{deploymentWithFlow:i})},i.id)):e.jsx(ee,{})]})})]})]}),e.jsx(C,{})]})}}),l!==q.value&&o==="run-deployment"&&e.jsx("div",{children:"TODO: Additional fields"})]})},$e=({deploymentWithFlow:t})=>t.flow?e.jsxs("div",{className:"flex items-center gap-0.5",children:[e.jsx("div",{children:t.flow.name}),e.jsx(Y,{className:"size-4",id:"ChevronRight"}),e.jsx("div",{children:t.name})]}):t.name,K={value:te,name:"Infer Work Pool"},Lt=(t,s)=>{if(s===K.value)return K.name;const n=t?.find(r=>r.id===s);if(n)return n.name},ke=({action:t,index:s})=>{const[n,r]=m.useState(""),a=_(),{data:o,isSuccess:l}=E(me()),h=m.useDeferredValue(n),p=m.useMemo(()=>o?o.filter(c=>c.name.toLowerCase().includes(h.toLowerCase())):[],[o,h]),d=K.name.toLowerCase().includes(h.toLowerCase());return e.jsx(w,{control:a.control,name:`actions.${s}.work_pool_id`,render:({field:c})=>{const x=Lt(o,c.value);return e.jsxs(b,{className:"flex flex-col",children:[e.jsxs(S,{children:["Work Pool To ",t]}),e.jsxs(R,{children:[e.jsx(M,{selected:!!x,"aria-label":`Select Work Pool to ${t}`,children:x??"Select Work Pool"}),e.jsxs(V,{children:[e.jsx(O,{value:n,onValueChange:r,placeholder:"Search for a work pool..."}),e.jsx(W,{children:"No work pool found"}),e.jsx(I,{children:e.jsxs(F,{children:[d&&e.jsx(k,{selected:c.value===K.value,onSelect:u=>{c.onChange(u),r("")},value:K.value,children:K.name}),l?p.map(u=>e.jsx(k,{selected:c.value===u.id,onSelect:i=>{c.onChange(i),r("")},value:u.id,children:u.name},u.id)):e.jsx(ee,{})]})})]})]}),e.jsx(C,{})]})}})},X={value:te,name:"Infer Work Queue"},Dt=(t,s)=>{if(s===X.value)return X.name;const n=t?.find(r=>r.id===s);if(n)return n.name},Ne=({action:t,index:s})=>{const[n,r]=m.useState(""),a=_(),{data:o}=E(We()),l=m.useDeferredValue(n),h=m.useMemo(()=>{if(!o)return;const d=new Map,c=o.filter(x=>x.name.toLowerCase().includes(l.toLowerCase()));for(const x of c){const{work_pool_name:u}=x;if(!u)throw new Error("'work_pool_name expected");d.set(u,[...d.get(u)??[],x])}return d},[o,l]),p=X.name.toLowerCase().includes(l.toLowerCase());return e.jsx(w,{control:a.control,name:`actions.${s}.work_queue_id`,render:({field:d})=>{const c=Dt(o,d.value);return e.jsxs(b,{className:"flex flex-col",children:[e.jsxs(S,{children:["Work Queue To ",t]}),e.jsxs(R,{children:[e.jsx(M,{selected:!!c,"aria-label":`Select Work Queue to ${t}`,children:c??"Select Work Queue"}),e.jsxs(V,{children:[e.jsx(O,{value:n,onValueChange:r,placeholder:"Search for a work queue..."}),e.jsx(W,{children:"No work queue found"}),e.jsx(I,{children:e.jsxs(F,{children:[p&&e.jsx(k,{selected:d.value===X.value,onSelect:x=>{d.onChange(x),r("")},value:X.value,children:X.name}),h?Array.from(h).map(([x,u])=>e.jsxs("div",{className:"border-b",children:[e.jsx(k,{disabled:!0,children:x}),u.map(i=>e.jsx(k,{selected:d.value===i.id,onSelect:f=>{d.onChange(f),r("")},value:i.id,children:i.name},i.id))]},x)):e.jsx(ee,{})]})})]})]}),e.jsx(C,{})]})}})},Ft=({index:t})=>{const s=_(),[n,r]=m.useState(""),{data:a,isLoading:o}=E(Me({offset:0,block_schemas:{operator:"and_",block_capabilities:{all_:["notify"]}}})),l=m.useMemo(()=>a?.map(i=>i.slug)??[],[a]),{data:h,isLoading:p}=E(Ve({block_types:l.length>0?{slug:{any_:l}}:void 0,include_secrets:!1,sort:"BLOCK_TYPE_AND_NAME_ASC",offset:0},{enabled:l.length>0})),d=o||p,c=m.useMemo(()=>!a||!h?[]:a.map(i=>({blockType:i,documents:h.filter(f=>f.block_type_id===i.id)})).filter(i=>i.documents.length>0),[a,h]),x=m.useMemo(()=>{if(!n)return c;const i=n.toLowerCase();return c.map(f=>({...f,documents:f.documents.filter(j=>j.name?.toLowerCase().includes(i))})).filter(f=>f.documents.length>0)},[c,n]),u=m.useCallback(i=>{if(!(!i||!h))return h.find(f=>f.id===i)},[h]);return e.jsxs("div",{className:"space-y-4",children:[e.jsx(w,{control:s.control,name:`actions.${t}.block_document_id`,render:({field:i})=>{const f=u(i.value);return e.jsxs(b,{className:"flex flex-col",children:[e.jsx(S,{children:"Block"}),e.jsxs(R,{children:[e.jsx(M,{selected:!!f,"aria-label":"Select notification block",children:f?f.name:"Select a notification block"}),e.jsxs(V,{children:[e.jsx(O,{value:n,onValueChange:r,placeholder:"Search for a block..."}),e.jsx(W,{children:"No notification blocks found"}),e.jsx(I,{children:d?e.jsx(ee,{}):x.map(j=>e.jsx(F,{heading:j.blockType.name,children:j.documents.map(A=>e.jsx(k,{value:A.id,selected:i.value===A.id,onSelect:i.onChange,children:A.name},A.id))},j.blockType.id))})]})]}),e.jsx(C,{})]})}}),e.jsx(_e,{index:t,name:"subject",label:"Subject",placeholder:"Enter notification subject..."}),e.jsx(_e,{index:t,name:"body",label:"Body",placeholder:"Enter notification body...",multiline:!0}),e.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-blue-200 bg-blue-50 p-3 text-sm text-blue-800 dark:border-blue-800 dark:bg-blue-950 dark:text-blue-200",children:[e.jsx(Y,{id:"Info",className:"mt-0.5 size-4 shrink-0"}),e.jsxs("p",{children:["In addition to any fields present on the triggering event, the following objects can be used in notification templates:"," ",e.jsx("code",{className:"rounded bg-blue-100 px-1 py-0.5 font-mono text-xs dark:bg-blue-900",children:"flow"}),","," ",e.jsx("code",{className:"rounded bg-blue-100 px-1 py-0.5 font-mono text-xs dark:bg-blue-900",children:"deployment"}),","," ",e.jsx("code",{className:"rounded bg-blue-100 px-1 py-0.5 font-mono text-xs dark:bg-blue-900",children:"flow_run"}),","," ",e.jsx("code",{className:"rounded bg-blue-100 px-1 py-0.5 font-mono text-xs dark:bg-blue-900",children:"work_pool"}),","," ",e.jsx("code",{className:"rounded bg-blue-100 px-1 py-0.5 font-mono text-xs dark:bg-blue-900",children:"work_queue"}),", and"," ",e.jsx("code",{className:"rounded bg-blue-100 px-1 py-0.5 font-mono text-xs dark:bg-blue-900",children:"metric"}),"."]})]})]})},_e=({index:t,name:s,label:n,placeholder:r,multiline:a=!1})=>{const o=_(),{validateTemplate:l}=Oe(),[h,p]=m.useState(null),[d,c]=m.useState(!1),x=o.watch(`actions.${t}.${s}`),u=he(x,1e3);m.useEffect(()=>{(async()=>{if(!u||u.trim()===""){p(null);return}c(!0);try{const j=await l(u);j.valid?p(null):p(j.error)}catch{p(null)}finally{c(!1)}})()},[u,l]);const i=a?xe:Z;return e.jsx(w,{control:o.control,name:`actions.${t}.${s}`,render:({field:f})=>e.jsxs(b,{children:[e.jsxs(S,{className:"flex items-center gap-2",children:[n,d&&e.jsx(Y,{id:"Loader2",className:"size-3 animate-spin"})]}),e.jsx(y,{children:e.jsx(i,{...f,value:f.value??"",placeholder:r,className:h?"border-destructive":""})}),h&&e.jsx("p",{className:"text-sm text-destructive",children:h}),e.jsx(C,{})]})})},Rt=({index:t,onRemove:s})=>e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsxs("p",{className:"text-base font-semibold",children:["Action ",t+1]}),e.jsx(U,{size:"icon","aria-label":`remove action ${t+1}`,onClick:s,variant:"outline",children:e.jsx(Y,{id:"Trash2",className:"size-4"})})]}),e.jsx(wt,{index:t}),e.jsx(Mt,{index:t}),e.jsx("hr",{className:"my-8"})]},t),Mt=({index:t})=>{switch(D({name:`actions.${t}.type`})){case"change-flow-run-state":return e.jsx(_t,{index:t});case"run-deployment":return e.jsx(ae,{action:"Run",index:t});case"pause-deployment":return e.jsx(ae,{action:"Pause",index:t});case"resume-deployment":return e.jsx(ae,{action:"Resume",index:t});case"pause-work-queue":return e.jsx(Ne,{action:"Pause",index:t});case"resume-work-queue":return e.jsx(Ne,{action:"Resume",index:t});case"pause-work-pool":return e.jsx(ke,{action:"Pause",index:t});case"resume-work-pool":return e.jsx(ke,{action:"Resume",index:t});case"pause-automation":return e.jsx(Ce,{action:"Pause",index:t});case"resume-automation":return e.jsx(Ce,{action:"Resume",index:t});case"send-notification":return e.jsx(Ft,{index:t});case"call-webhook":return e.jsx(kt,{index:t});case"cancel-flow-run":return e.jsx(oe,{action:"Cancel"});case"suspend-flow-run":return e.jsx(oe,{action:"Suspend"});case"resume-flow-run":return e.jsx(oe,{action:"Resume"});default:return null}},Vt=()=>{const t=_(),{fields:s,append:n,remove:r}=Je({control:t.control,name:"actions",shouldUnregister:!1,rules:{minLength:1}});return e.jsxs("div",{children:[s.map(({id:a},o)=>e.jsx(Rt,{index:o,onRemove:()=>r(o)},a)),e.jsxs(U,{type:"button",variant:"outline",onClick:()=>n({type:"cancel-flow-run"}),children:[e.jsx(Y,{id:"Plus",className:"mr-2 size-4"})," Add Action"]})]})},Ot=()=>{const t=_();return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(w,{control:t.control,name:"name",render:({field:s})=>e.jsxs(b,{children:[e.jsx(S,{children:"Automation Name"}),e.jsx(y,{children:e.jsx(Z,{type:"text",...s,value:s.value??""})}),e.jsx(C,{})]})}),e.jsx(w,{control:t.control,name:"description",render:({field:s})=>e.jsxs(b,{children:[e.jsx(S,{children:"Description (Optional)"}),e.jsx(y,{children:e.jsx(Z,{type:"text",...s,value:s.value??""})}),e.jsx(C,{})]})})]})},Wt=[{value:"Reactive",label:"Observe"},{value:"Proactive",label:"Don't observe"}],It=30,Pt=()=>{const t=_(),s=n=>{const r=t.getValues("trigger.posture");if(t.setValue("trigger.posture",n),r==="Reactive"&&n==="Proactive"){const a=t.getValues("trigger.expect")??[];t.setValue("trigger.after",a),t.setValue("trigger.expect",[]),t.getValues("trigger.within")===0&&t.setValue("trigger.within",It)}else if(r==="Proactive"&&n==="Reactive"){const a=t.getValues("trigger.after")??[];t.setValue("trigger.expect",a),t.setValue("trigger.after",[])}};return e.jsx(w,{control:t.control,name:"trigger.posture",render:({field:n})=>e.jsxs(b,{children:[e.jsx(S,{children:"When I"}),e.jsx(y,{children:e.jsx(xt,{value:n.value,onValueChange:s,className:"flex gap-4",children:Wt.map(r=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ft,{value:r.value,id:`custom-${r.value}`}),e.jsx(pe,{htmlFor:`custom-${r.value}`,children:r.label})]},r.value))})})]})})},ie=60,ue=3600,de=86400,$t=[{label:"Seconds",value:1},{label:"Minutes",value:ie},{label:"Hours",value:ue},{label:"Days",value:de}];function qt(t){return t>0&&t%de===0?de:t>0&&t%ue===0?ue:t>0&&t%ie===0?ie:1}function se({value:t,onChange:s,min:n=0,max:r,className:a,disabled:o=!1}){const[l,h]=m.useState(()=>qt(t)),p=m.useMemo(()=>$t.filter(u=>u.value>=n),[n]),d=m.useMemo(()=>t/l,[t,l]),c=m.useCallback(u=>{let i=u*l;r!==void 0&&i>r&&(i=r),s(i)},[s,l,r]),x=m.useCallback(u=>{const i=Number(u),f=l;h(i);let j=t/f*i;r!==void 0&&j>r&&(j=r),s(j)},[s,l,t,r]);return m.useEffect(()=>{if(!p.some(u=>u.value===l)){const u=p[0];u&&h(u.value)}},[p,l]),e.jsxs("div",{className:Ze("grid grid-cols-[1fr_7rem] gap-2 w-full",a),children:[e.jsx(Z,{type:"number",min:0,value:d,onChange:u=>c(Number(u.target.value)),disabled:o,"aria-label":"Duration quantity"}),e.jsxs(B,{value:String(l),onValueChange:x,disabled:o,children:[e.jsx(z,{"aria-label":"Duration unit",children:e.jsx(Q,{})}),e.jsx(J,{children:p.map(u=>e.jsx(G,{value:String(u.value),children:u.label},u.value))})]})]})}const Ut=2,Bt=40;function Te({selectedResourceIds:t,onToggleResource:s,emptyMessage:n="All resources"}){const[r,a]=m.useState(""),o=m.useDeferredValue(r),[l,h]=m.useState(0),p=m.useRef(null),d=m.useRef(null);m.useEffect(()=>{const g=p.current;if(!g)return;const v=new ResizeObserver(N=>{for(const T of N)h(T.contentRect.width)});return v.observe(g),()=>v.disconnect()},[]);const{resourceOptions:c}=gt(),x=m.useMemo(()=>{const g=[{label:"Automations",options:[]},{label:"Blocks",options:[]},{label:"Deployments",options:[]},{label:"Flows",options:[]},{label:"Work Pools",options:[]},{label:"Work Queues",options:[]}];for(const v of c){const N={label:v.name,value:v.resourceId};switch(v.type){case"automation":g[0].options.push(N);break;case"block":g[1].options.push(N);break;case"deployment":g[2].options.push(N);break;case"flow":g[3].options.push(N);break;case"work-pool":g[4].options.push(N);break;case"work-queue":g[5].options.push(N);break}}return g.map(v=>({...v,options:v.options.sort((N,T)=>N.label.localeCompare(T.label))})).filter(v=>v.options.length>0)},[c]),u=m.useMemo(()=>{if(!o)return x;const g=o.toLowerCase();return x.map(v=>({...v,options:v.options.filter(N=>N.label.toLowerCase().includes(g)||N.value.toLowerCase().includes(g))})).filter(v=>v.options.length>0)},[x,o]),i=m.useMemo(()=>{if(!o.trim()||!o.includes("."))return!1;const g=o.toLowerCase();return!c.some(v=>v.resourceId.toLowerCase()===g)},[o,c]),f=m.useCallback(g=>{const v=d.current;if(!v||l===0||g.length===0)return Math.min(g.length,Ut);const N=g.length>1?l-Bt:l;let T=0;for(let L=0;L<g.length&&(v.textContent=g.slice(0,L+1).join(", "),v.offsetWidth<=N);L++)T=L+1;return T===g.length?g.length:Math.max(1,T)},[l]),j=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:n});const g=t.map(L=>c.find(Be=>Be.resourceId===L)?.name??L),v=f(g),N=g.slice(0,v),T=g.length-v;return e.jsxs("div",{ref:p,className:"flex flex-1 min-w-0 items-center gap-2",children:[e.jsx("div",{className:"flex flex-1 min-w-0 items-center gap-2 overflow-hidden",children:e.jsx("span",{className:"truncate",children:N.join(", ")})}),T>0&&e.jsxs("p",{className:"text-sm shrink-0",children:["+ ",T]}),e.jsx("div",{ref:d,className:"absolute invisible whitespace-nowrap","aria-hidden":"true"})]})},A=g=>{s(g),a("")};return e.jsxs(R,{children:[e.jsx(M,{selected:t.length>0,children:j()}),e.jsxs(V,{children:[e.jsx(O,{value:r,onValueChange:a,placeholder:"Search resources..."}),e.jsxs(I,{children:[e.jsx(W,{children:"No resources found"}),i&&e.jsx(F,{children:e.jsxs(k,{selected:t.includes(o),onSelect:()=>A(o),closeOnSelect:!1,value:o,children:['Add "',o,'"']},"__custom__")}),u.map(g=>e.jsx(F,{heading:g.label,children:g.options.map(v=>e.jsx(k,{selected:t.includes(v.value),onSelect:()=>A(v.value),closeOnSelect:!1,value:v.value,children:v.label},v.value))},g.label))]})]})]})}function zt(t){const s=new Map;for(const n of t){const r=n.split(".");for(let a=1;a<r.length;a++){const o=r.slice(0,a).join(".");s.set(o,(s.get(o)??0)+1)}}return Array.from(s.entries()).filter(([,n])=>n>1&&n<t.length).map(([n])=>`${n}.*`)}function Ae({selectedEvents:t,onToggleEvent:s,emptyMessage:n="All events"}){const[r,a]=m.useState(""),o=m.useDeferredValue(r),[l]=m.useState(()=>({since:new Date(Date.now()-10080*60*1e3).toISOString(),until:new Date().toISOString()})),{data:h=[]}=E(et("event",{filter:{occurred:l,order:"DESC"},time_unit:"day",time_interval:1})),p=m.useMemo(()=>{const i=h.map(j=>j.label),f=zt(i);return[...i,...f].sort((j,A)=>j.localeCompare(A))},[h]),d=m.useMemo(()=>{if(!o)return p;const i=o.toLowerCase();return p.filter(f=>f.toLowerCase().includes(i))},[p,o]),c=m.useMemo(()=>{if(!o.trim())return!1;const i=o.toLowerCase();return!p.some(f=>f.toLowerCase()===i)},[o,p]),x=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:n});const i=t.slice(0,2),f=t.length-i.length;return e.jsxs("div",{className:"flex min-w-0 items-center justify-start gap-1",children:[e.jsx("span",{className:"truncate min-w-0 text-left",children:i.join(", ")}),f>0&&e.jsxs("span",{className:"shrink-0 text-muted-foreground",children:["+",f]})]})},u=i=>{s(i),a("")};return e.jsxs(R,{children:[e.jsx(M,{selected:t.length>0,children:x()}),e.jsxs(V,{children:[e.jsx(O,{value:r,onValueChange:a,placeholder:"Search events..."}),e.jsxs(I,{children:[e.jsx(W,{children:"No events found"}),e.jsxs(F,{children:[c&&e.jsxs(k,{selected:t.includes(o),onSelect:()=>u(o),closeOnSelect:!1,value:o,children:['Add "',o,'"']},"__custom__"),d.map(i=>e.jsx(k,{selected:t.includes(i),onSelect:()=>u(i),closeOnSelect:!1,value:i,children:i},i))]})]})]})]})}const Qt=()=>{const t=_(),s=D({name:"trigger.posture"});return e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex items-end gap-4",children:e.jsx(Pt,{})}),e.jsx(w,{control:t.control,name:"trigger.expect",render:({field:n})=>{const r=n.value??[];return e.jsxs(b,{children:[e.jsx(S,{children:"Any event matching"}),e.jsx(y,{children:e.jsx(Ae,{selectedEvents:r,onToggleEvent:a=>{const o=r.includes(a)?r.filter(l=>l!==a):[...r,a];n.onChange(o)}})}),e.jsx(C,{})]})}}),e.jsx(w,{control:t.control,name:"trigger.match",render:({field:n})=>{const r=n.value?.["prefect.resource.id"]??[],a=Array.isArray(r)?r:[r];return e.jsxs(b,{children:[e.jsx(S,{children:"From the following resources"}),e.jsx(y,{children:e.jsx(Te,{selectedResourceIds:a,onToggleResource:o=>{const l=a.includes(o)?a.filter(h=>h!==o):[...a,o];l.length>0?n.onChange({"prefect.resource.id":l}):n.onChange({})}})}),e.jsx(C,{})]})}}),e.jsxs("div",{className:"flex items-end gap-2",children:[e.jsx(w,{control:t.control,name:"trigger.threshold",render:({field:n})=>e.jsxs(b,{className:"w-20",children:[e.jsx(y,{children:e.jsx(Z,{type:"number",min:1,...n,onChange:r=>n.onChange(Number(r.target.value))})}),e.jsx(C,{})]})}),e.jsx("span",{className:"pb-2 text-sm text-muted-foreground",children:"times within"}),e.jsx(w,{control:t.control,name:"trigger.within",render:({field:n})=>e.jsxs(b,{children:[e.jsx(y,{children:e.jsx(se,{value:n.value??0,onChange:n.onChange,min:s==="Proactive"?10:0})}),e.jsx(C,{})]})})]}),e.jsxs(jt,{children:[e.jsxs(vt,{className:"flex items-center gap-2 text-sm font-medium",children:[e.jsx(tt,{className:"h-4 w-4 transition-transform data-[state=open]:rotate-90"}),"Evaluation Options"]}),e.jsxs(bt,{className:"mt-4 space-y-4 pl-6",children:[e.jsx(w,{control:t.control,name:"trigger.after",render:({field:n})=>{const r=n.value??[];return e.jsxs(b,{children:[e.jsx(S,{children:"Evaluate trigger only after observing an event matching"}),e.jsx(y,{children:e.jsx(Ae,{selectedEvents:r,onToggleEvent:a=>{const o=r.includes(a)?r.filter(l=>l!==a):[...r,a];n.onChange(o)}})}),e.jsx(C,{})]})}}),e.jsx(w,{control:t.control,name:"trigger.match_related",render:({field:n})=>{const r=n.value?.["prefect.resource.id"]??[],a=Array.isArray(r)?r:[r];return e.jsxs(b,{children:[e.jsx(S,{children:"Filter for events related to"}),e.jsx(y,{children:e.jsx(Te,{selectedResourceIds:a,onToggleResource:o=>{const l=a.includes(o)?a.filter(h=>h!==o):[...a,o];l.length>0?n.onChange({"prefect.resource.id":l}):n.onChange({})}})}),e.jsx(C,{})]})}})]})]})]})},Jt=2,Gt=40,Yt=({selectedDeploymentIds:t,onSelectDeploymentIds:s})=>{const[n,r]=m.useState(""),a=m.useDeferredValue(n),[o,l]=m.useState(0),h=m.useRef(null),p=m.useRef(null),d=m.useMemo(()=>new Set(t),[t]);m.useEffect(()=>{const g=h.current;if(!g)return;const v=new ResizeObserver(N=>{for(const T of N)l(T.contentRect.width)});return v.observe(g),()=>v.disconnect()},[]);const{data:c=[]}=E(ge({deployments:a?{operator:"and_",name:{like_:a}}:void 0,limit:100,offset:0,sort:"NAME_ASC"})),{data:x=[]}=E(ge({deployments:d.size>0?{operator:"and_",id:{any_:t}}:void 0,limit:d.size||1,offset:0,sort:"NAME_ASC"},{enabled:d.size>0})),u=g=>{const v=new Set(d);d.has(g)?v.delete(g):v.add(g),s(Array.from(v))},i=()=>{s([])},f=m.useCallback(g=>{const v=p.current;if(!v||o===0||g.length===0)return Math.min(g.length,Jt);const N=g.length>1?o-Gt:o;let T=0;for(let L=0;L<g.length&&(v.textContent=g.slice(0,L+1).join(", "),v.offsetWidth<=N);L++)T=L+1;return T===g.length?g.length:Math.max(1,T)},[o]),j=()=>{if(d.size===0)return"All deployments";const g=x.filter(L=>d.has(L.id)).map(L=>L.name),v=f(g),N=g.slice(0,v),T=g.length-v;return e.jsxs("div",{ref:h,className:"flex flex-1 min-w-0 items-center gap-2",children:[e.jsx("div",{className:"flex flex-1 min-w-0 items-center gap-2 overflow-hidden",children:e.jsx("span",{className:"truncate",children:N.join(", ")})}),T>0&&e.jsxs("p",{className:"text-sm shrink-0",children:["+ ",T]}),e.jsx("div",{ref:p,className:"absolute invisible whitespace-nowrap","aria-hidden":"true"})]})},A=m.useMemo(()=>c.filter(g=>!a||g.name.toLowerCase().includes(a.toLowerCase())),[c,a]);return e.jsxs(R,{children:[e.jsx(M,{"aria-label":"Select deployments",selected:d.size===0,children:j()}),e.jsxs(V,{children:[e.jsx(O,{value:n,onValueChange:r,placeholder:"Search deployments..."}),e.jsxs(I,{children:[e.jsx(W,{children:"No deployments found"}),e.jsxs(F,{children:[e.jsxs(k,{"aria-label":"All deployments",onSelect:i,closeOnSelect:!1,value:"__all__",children:[e.jsx(je,{checked:d.size===0}),"All deployments"]}),A.map(g=>e.jsxs(k,{"aria-label":g.name,onSelect:()=>u(g.id),closeOnSelect:!1,value:g.id,children:[e.jsx(je,{checked:d.has(g.id)}),g.name]},g.id))]})]})]})]})},Ht=[{value:"Reactive",label:"Enters"},{value:"Proactive",label:"Stays in"}],Kt=30,re=()=>{const t=_();return e.jsx(w,{control:t.control,name:"trigger.posture",render:({field:s})=>e.jsx(b,{children:e.jsx(y,{children:e.jsxs(B,{value:s.value,onValueChange:n=>{const r=s.value;if(s.onChange(n),r==="Reactive"&&n==="Proactive"){const a=t.getValues("trigger.expect")??[];t.setValue("trigger.after",a),t.setValue("trigger.expect",[]),t.getValues("trigger.within")===0&&t.setValue("trigger.within",Kt)}else if(r==="Proactive"&&n==="Reactive"){const a=t.getValues("trigger.after")??[];t.setValue("trigger.expect",a),t.setValue("trigger.after",[])}},children:[e.jsx(z,{"aria-label":"select posture",className:"w-[160px]",children:e.jsx(Q,{placeholder:"Select posture"})}),e.jsx(J,{children:Ht.map(n=>e.jsx(G,{value:n.value,children:n.label},n.value))})]})})})})},Xt=86400,Zt=30*Xt,es=[{value:"prefect.deployment.ready",label:"Ready"},{value:"prefect.deployment.not-ready",label:"Not Ready"},{value:"prefect.deployment.disabled",label:"Disabled"}],qe="prefect.deployment.",Ue="prefect.deployment.*",ts=t=>t?(Array.isArray(t)?t:[t]).filter(n=>n!==Ue).map(n=>n.replace(qe,"")):[],ss=t=>t.length===0?Ue:t.map(s=>`${qe}${s}`),rs=()=>{const t=_(),s=D({name:"trigger.posture"}),n=D({name:"trigger.match"}),r=m.useMemo(()=>{const l=n?.["prefect.resource.id"];return ts(l)},[n]),a=m.useCallback(o=>{const l=t.getValues("trigger.match")??{};t.setValue("trigger.match",{...l,"prefect.resource.id":ss(o)})},[t]);return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(b,{children:[e.jsx(S,{children:"Deployments"}),e.jsx(y,{children:e.jsx(Yt,{selectedDeploymentIds:r,onSelectDeploymentIds:a})})]}),e.jsxs(b,{children:[e.jsx(S,{children:"Deployment"}),e.jsxs("div",{className:"grid gap-2",style:{gridTemplateColumns:"10rem 1fr"},children:[e.jsx(re,{}),e.jsx(w,{control:t.control,name:"trigger.expect",render:({field:o})=>{const l=o.value?.[0];return e.jsxs(B,{value:l??"",onValueChange:h=>o.onChange([h]),children:[e.jsx(z,{className:"w-full",children:e.jsx(Q,{placeholder:"Select status"})}),e.jsx(J,{children:es.map(h=>e.jsx(G,{value:h.value,children:h.label},h.value))})]})}})]})]}),s==="Proactive"&&e.jsx(w,{control:t.control,name:"trigger.within",render:({field:o})=>e.jsxs(b,{children:[e.jsx(S,{children:"Within"}),e.jsx(y,{children:e.jsx(se,{value:o.value??0,onChange:o.onChange,min:10,max:Zt})}),e.jsx(C,{})]})})]})},ns=2;function os({selectedFlowIds:t,onToggleFlow:s,emptyMessage:n="Any flow"}){const[r,a]=m.useState(""),o=m.useDeferredValue(r),{data:l=[]}=E(ce({flows:o?{operator:"and_",name:{like_:o}}:void 0,limit:100,offset:0,sort:"NAME_ASC"})),{data:h=[]}=E(ce({flows:t.length>0?{operator:"and_",id:{any_:t}}:void 0,limit:t.length||1,offset:0,sort:"NAME_ASC"},{enabled:t.length>0})),p=m.useMemo(()=>l.filter(c=>!o||c.name.toLowerCase().includes(o.toLowerCase())),[l,o]),d=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:n});const x=h.filter(i=>t.includes(i.id)).map(i=>i.name).slice(0,ns),u=t.length-x.length;return e.jsxs("div",{className:"flex min-w-0 items-center justify-start gap-1",children:[e.jsx("span",{className:"truncate min-w-0 text-left",children:x.join(", ")}),u>0&&e.jsxs("span",{className:"shrink-0 text-muted-foreground",children:["+",u]})]})};return e.jsxs(R,{children:[e.jsx(M,{selected:t.length>0,children:d()}),e.jsxs(V,{children:[e.jsx(O,{value:r,onValueChange:a,placeholder:"Search flows..."}),e.jsxs(I,{children:[e.jsx(W,{children:"No flows found"}),e.jsx(F,{children:p.map(c=>e.jsx(k,{selected:t.includes(c.id),onSelect:()=>{s(c.id),a("")},closeOnSelect:!1,value:c.id,children:c.name},c.id))})]})]})]})}const P="All run states",$="All except scheduled";function as(t){return t.length!==Pe.length-1?!1:!t.includes("Scheduled")}function ls({selectedStates:t,onStateChange:s,emptyMessage:n="Any state"}){const[r,a]=m.useState(""),o=m.useDeferredValue(r),l=m.useMemo(()=>t.length===0?P:as(t)?$:t,[t]),h=m.useMemo(()=>{const u=o.toLowerCase();return Pe.filter(i=>i.toLowerCase().includes(u))},[o]),p=m.useMemo(()=>{const u=o.toLowerCase();return P.toLowerCase().includes(u)||$.toLowerCase().includes(u)},[o]),d=u=>{u===P?s([]):u===$&&s([...pt]),a("")},c=u=>{t.includes(u)?s(t.filter(i=>i!==u)):s([...t,u]),a("")},x=()=>l===P?e.jsx("span",{className:"text-muted-foreground",children:n}):l===$?e.jsx("span",{children:"All except scheduled"}):e.jsx("div",{className:"flex flex-wrap gap-1",children:t.map(u=>e.jsx(ve,{type:we[u],name:u,className:"cursor-pointer"},u))});return e.jsxs(R,{children:[e.jsx(M,{selected:t.length>0,children:x()}),e.jsxs(V,{children:[e.jsx(O,{value:r,onValueChange:a,placeholder:"Search states..."}),e.jsx(W,{children:"No state found"}),e.jsx(I,{children:e.jsxs(F,{children:[p&&e.jsxs(e.Fragment,{children:[e.jsx(k,{selected:l===P,onSelect:()=>d(P),value:P,closeOnSelect:!1,children:"All run states"},P),e.jsx(k,{selected:l===$,onSelect:()=>d($),value:$,closeOnSelect:!1,children:"All except scheduled"},$)]}),h.map(u=>e.jsx(k,{selected:t.includes(u),onSelect:()=>c(u),value:u,closeOnSelect:!1,children:e.jsx(ve,{type:we[u],name:u})},u))]})})]})]})}function cs(t){return t.length===0?["prefect.flow-run.*"]:t.map(s=>`prefect.flow-run.${s}`)}function is(t){return!t||t.length===0?[]:t.includes("prefect.flow-run.*")?[]:t.filter(s=>s.startsWith("prefect.flow-run.")).map(s=>s.replace("prefect.flow-run.",""))}function us(t){if(!t)return[];const s=t["prefect.resource.id"];return s?(Array.isArray(s)?s:[s]).filter(r=>r.startsWith("prefect.flow.")).map(r=>r.replace("prefect.flow.","")):[]}function ds(t){if(!t)return[];const s=t["prefect.resource.id"];return s?(Array.isArray(s)?s:[s]).filter(r=>r.startsWith("prefect.tag.")).map(r=>r.replace("prefect.tag.","")):[]}function Ee(t,s){const n=t.map(l=>`prefect.flow.${l}`),r=s.map(l=>`prefect.tag.${l}`);if(n.length===0&&r.length===0)return{};const a=n.length>0?"flow":"tag",o=[...n,...r];return{"prefect.resource.role":a,"prefect.resource.id":o}}const hs=()=>{const t=_(),s=D({name:"trigger.posture"}),n=s==="Proactive"?"trigger.after":"trigger.expect",r=D({name:"trigger.match_related"}),a=us(r),o=ds(r),l=d=>{const c=a,x=c.includes(d)?c.filter(i=>i!==d):[...c,d],u=x.length>0?[]:o;t.setValue("trigger.match_related",Ee(x,u))},h=d=>{t.setValue("trigger.match_related",Ee(a,d))},p=a.length===0;return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(b,{children:[e.jsx(S,{children:"Flows"}),e.jsx(y,{children:e.jsx(os,{selectedFlowIds:a,onToggleFlow:l,emptyMessage:"All flows"})})]}),p&&e.jsxs(b,{children:[e.jsx(S,{children:"Flow Run Tags"}),e.jsx(y,{children:e.jsx(St,{value:o,onChange:h,placeholder:"All tags"})})]}),e.jsxs(b,{children:[e.jsx(S,{children:"Flow Run"}),e.jsxs("div",{className:"grid grid-cols-[10rem_1fr] gap-2",children:[e.jsx(re,{}),e.jsx(w,{control:t.control,name:n,render:({field:d})=>{const c=d.value??[],x=is(c);return e.jsx(y,{children:e.jsx(ls,{selectedStates:x,onStateChange:u=>{d.onChange(cs(u))},emptyMessage:"Any state"})})}})]})]}),s==="Proactive"&&e.jsx(w,{control:t.control,name:"trigger.within",render:({field:d})=>e.jsxs(b,{children:[e.jsx(S,{children:"For"}),e.jsx(y,{children:e.jsx(se,{value:d.value??0,onChange:d.onChange,min:0})}),e.jsx(C,{})]})})]})},ms=({defaultValue:t="Form",value:s,onValueChange:n,formContent:r,jsonContent:a})=>{const o=s!==void 0?{value:s,onValueChange:n}:{defaultValue:t};return e.jsxs(st,{...o,children:[e.jsx("div",{className:"flex justify-center",children:e.jsxs(rt,{children:[e.jsx(be,{value:"Form",children:"Form"}),e.jsx(be,{value:"JSON",children:"JSON"})]})}),e.jsx(Se,{value:"Form",children:r}),e.jsx(Se,{value:"JSON",children:a})]})},ps=({value:t,onChange:s,error:n})=>{const[r,a]=m.useState(null),o=()=>{try{const h=JSON.parse(t);s(JSON.stringify(h,null,2))}catch{}},l=h=>{try{const p=JSON.parse(h);return Ie.parse(p),a(null),!0}catch(p){return p instanceof SyntaxError?a("Invalid JSON syntax"):p instanceof Fe&&a(p.errors[0]?.message??"Invalid trigger configuration"),!1}};return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(pe,{children:"Trigger Configuration"}),e.jsx(U,{variant:"ghost",size:"sm",onClick:o,children:"Format"})]}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Edit the trigger configuration as JSON."," ",e.jsx("a",{href:"https://docs.prefect.io/v3/automate/events/automations-triggers",target:"_blank",rel:"noopener noreferrer",className:"underline hover:text-foreground",children:"View documentation"})]}),e.jsx(nt,{value:t,onChange:s,onBlur:()=>l(t)}),(r||n)&&e.jsx("p",{className:"text-sm text-destructive",children:r||n})]})},Le={"deployment-status":"Deployment status","flow-run-state":"Flow run state","work-pool-status":"Work pool status","work-queue-status":"Work queue status",custom:"Custom"},xs=({onValueChange:t,value:s})=>e.jsxs("div",{className:"space-y-2",children:[e.jsx(pe,{htmlFor:"automations-trigger-template-select",children:"Trigger Template"}),e.jsxs(B,{value:s,onValueChange:t,children:[e.jsx(z,{id:"automations-trigger-template-select",className:"w-full",children:e.jsx(Q,{placeholder:"Select template"})}),e.jsx(J,{children:e.jsx(Re,{children:Object.keys(Le).map(n=>e.jsx(G,{value:n,children:Le[n]},n))})})]})]}),fs=({onTemplateChange:t})=>{const s=_();return e.jsx(w,{control:s.control,name:"triggerTemplate",render:({field:n})=>e.jsx(b,{children:e.jsx(y,{children:e.jsx(xs,{value:n.value,onValueChange:r=>{n.onChange(r),t?.(r)}})})})})},gs={type:"event",posture:"Reactive",threshold:1,within:0},js=t=>{switch(t){case"flow-run-state":return{type:"event",match:{"prefect.resource.id":"prefect.flow-run.*"},match_related:{},after:[],expect:["prefect.flow-run.*"],for_each:["prefect.resource.id"],posture:"Reactive",threshold:1,within:0};case"deployment-status":return{type:"event",match:{"prefect.resource.id":"prefect.deployment.*"},match_related:{},after:[],expect:["prefect.deployment.not-ready"],for_each:["prefect.resource.id"],posture:"Reactive",threshold:1,within:0};case"work-pool-status":return{type:"event",match:{"prefect.resource.id":"prefect.work-pool.*"},match_related:{},after:[],expect:["prefect.work-pool.not-ready","prefect.work-pool.not_ready"],for_each:["prefect.resource.id"],posture:"Reactive",threshold:1,within:0};case"work-queue-status":return{type:"event",match:{"prefect.resource.id":"prefect.work-queue.*"},match_related:{},after:[],expect:["prefect.work-queue.not-ready"],for_each:["prefect.resource.id"],posture:"Reactive",threshold:1,within:0};case"custom":return{type:"event",match:{"prefect.resource.id":["prefect.flow-run.*"]},match_related:{},after:[],expect:["prefect.flow-run.Failed"],for_each:[],posture:"Reactive",threshold:5,within:60};default:return gs}};function vs({selectedWorkPoolIds:t,onToggleWorkPool:s,emptyMessage:n="All work pools"}){const[r,a]=m.useState(""),o=m.useDeferredValue(r),{data:l=[]}=E(me()),h=m.useMemo(()=>l.filter(c=>c.status!==null).filter(c=>!o||c.name.toLowerCase().includes(o.toLowerCase())),[l,o]),p=m.useMemo(()=>l.filter(c=>t.includes(c.id)),[l,t]),d=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:n});const c=p.map(x=>x.name);return e.jsx("span",{className:"truncate min-w-0 text-left",children:c.join(", ")})};return e.jsxs(R,{children:[e.jsx(M,{selected:t.length>0,children:d()}),e.jsxs(V,{children:[e.jsx(O,{value:r,onValueChange:a,placeholder:"Search work pools..."}),e.jsxs(I,{children:[e.jsx(W,{children:"No work pools found"}),e.jsx(F,{children:h.map(c=>e.jsx(k,{selected:t.includes(c.id),onSelect:()=>{s(c.id),a("")},closeOnSelect:!1,value:c.id,children:c.name},c.id))})]})]})]})}const ne=[{value:"ready",label:"Ready",events:["prefect.work-pool.ready"]},{value:"not_ready",label:"Not Ready",events:["prefect.work-pool.not-ready","prefect.work-pool.not_ready"]},{value:"paused",label:"Paused",events:["prefect.work-pool.paused"]}];function De(t){if(!t||t.length===0)return"not_ready";for(const s of ne)if(s.events.some(n=>t.includes(n)))return s.value;return"not_ready"}function bs(t){const s=ne.find(n=>n.value===t);return s?[...s.events]:[]}function Ss(t){return ne.filter(s=>s.value!==t).flatMap(s=>[...s.events])}function ws(t){if(!t)return[];const s=t["prefect.resource.id"];return s?s==="prefect.work-pool.*"?[]:(Array.isArray(s)?s:[s]).filter(r=>r.startsWith("prefect.work-pool.")&&r!=="prefect.work-pool.*").map(r=>r.replace("prefect.work-pool.","")):[]}function ys(t){return t.length===0?{"prefect.resource.id":"prefect.work-pool.*"}:{"prefect.resource.id":t.map(s=>`prefect.work-pool.${s}`)}}const Cs=()=>{const t=_(),s=D({name:"trigger.posture"}),n=D({name:"trigger.expect"}),r=D({name:"trigger.after"}),a=De(s==="Proactive"?r:n),o=l=>{const h=bs(l),p=Ss(l);s==="Proactive"?(t.setValue("trigger.after",h),t.setValue("trigger.expect",p)):(t.setValue("trigger.expect",h),t.setValue("trigger.after",[]))};return e.jsxs(B,{value:a,onValueChange:o,children:[e.jsx(z,{"aria-label":"select status",className:"min-w-0 flex-1",children:e.jsx(Q,{placeholder:"Select status"})}),e.jsx(J,{children:ne.map(l=>e.jsx(G,{value:l.value,children:l.label},l.value))})]})},ks=()=>{const t=_(),s=D({name:"trigger.posture"}),n=D({name:"trigger.match"}),r=ws(n),a=o=>{const l=r,h=l.includes(o)?l.filter(p=>p!==o):[...l,o];t.setValue("trigger.match",ys(h))};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(b,{children:[e.jsx(S,{children:"Work Pools"}),e.jsx(y,{children:e.jsx(vs,{selectedWorkPoolIds:r,onToggleWorkPool:a,emptyMessage:"All work pools"})})]}),e.jsxs(b,{children:[e.jsx(S,{children:"Work Pool"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(re,{}),e.jsx(Cs,{})]})]}),s==="Proactive"&&e.jsx(w,{control:t.control,name:"trigger.within",render:({field:o})=>e.jsxs(b,{children:[e.jsx(S,{children:"For"}),e.jsx(y,{children:e.jsx(se,{value:o.value??30,onChange:o.onChange,min:0})}),e.jsx(C,{})]})})]})};function Ns({selectedWorkPoolIds:t,onToggleWorkPool:s,emptyMessage:n="All work pools"}){const[r,a]=m.useState(""),o=m.useDeferredValue(r),{data:l=[]}=E(me({limit:100,offset:0})),h=m.useMemo(()=>l.filter(d=>d.status?o?d.name.toLowerCase().includes(o.toLowerCase()):!0:!1),[l,o]),p=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:n});const d=l.filter(c=>t.includes(c.id)).map(c=>c.name);return e.jsx("span",{className:"truncate min-w-0 text-left",children:d.join(", ")})};return e.jsxs(R,{children:[e.jsx(M,{selected:t.length>0,children:p()}),e.jsxs(V,{children:[e.jsx(O,{value:r,onValueChange:a,placeholder:"Search work pools..."}),e.jsxs(I,{children:[e.jsx(W,{children:"No work pools found"}),e.jsx(F,{children:h.map(d=>e.jsx(k,{selected:t.includes(d.id),onSelect:()=>{s(d.id),a("")},closeOnSelect:!1,value:d.id,children:d.name},d.id))})]})]})]})}function _s({selectedWorkQueueIds:t,onToggleWorkQueue:s,workPoolIds:n=[],emptyMessage:r="All work queues"}){const[a,o]=m.useState(""),l=m.useDeferredValue(a),{data:h=[]}=E(We({limit:100,offset:0})),p=m.useMemo(()=>h.filter(x=>n.length>0&&(!x.work_pool_id||!n.includes(x.work_pool_id))?!1:l?x.name.toLowerCase().includes(l.toLowerCase()):!0),[h,n,l]),d=m.useMemo(()=>{const x={};for(const i of p){const f=i.work_pool_name??"Unknown";x[f]||(x[f]=[]),x[f].push(i)}return Object.keys(x).sort((i,f)=>i.localeCompare(f)).map(i=>({poolName:i,queues:x[i].sort((f,j)=>f.name.localeCompare(j.name))}))},[p]),c=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:r});const x=h.filter(u=>t.includes(u.id)).map(u=>u.name);return e.jsx("span",{className:"truncate min-w-0 text-left",children:x.join(", ")})};return e.jsxs(R,{children:[e.jsx(M,{selected:t.length>0,children:c()}),e.jsxs(V,{children:[e.jsx(O,{value:a,onValueChange:o,placeholder:"Search work queues..."}),e.jsxs(I,{children:[e.jsx(W,{children:"No work queues found"}),d.map(x=>e.jsx(F,{heading:x.poolName,children:x.queues.map(u=>e.jsx(k,{selected:t.includes(u.id),onSelect:()=>{s(u.id),o("")},closeOnSelect:!1,value:u.id,children:u.name},u.id))},x.poolName))]})]})]})}const Ts=[{value:"prefect.work-queue.ready",label:"Ready"},{value:"prefect.work-queue.not-ready",label:"Not Ready"},{value:"prefect.work-queue.paused",label:"Paused"}];function As(t){if(!t)return[];const s=t["prefect.resource.id"];return s?(Array.isArray(s)?s:[s]).filter(r=>r.startsWith("prefect.work-pool.")).map(r=>r.replace("prefect.work-pool.","")):[]}function Es(t){if(!t)return[];const s=t["prefect.resource.id"];if(!s)return[];const n=Array.isArray(s)?s:[s];return n.includes("prefect.work-queue.*")?[]:n.filter(r=>r.startsWith("prefect.work-queue.")).map(r=>r.replace("prefect.work-queue.",""))}function Ls(t){return t.length===0?{}:{"prefect.resource.role":"work-pool","prefect.resource.id":t.map(n=>`prefect.work-pool.${n}`)}}function Ds(t){return t.length===0?{"prefect.resource.id":"prefect.work-queue.*"}:{"prefect.resource.id":t.map(n=>`prefect.work-queue.${n}`)}}const Fs=()=>{const t=_(),s=D({name:"trigger.posture"}),n=D({name:"trigger.match_related"}),r=D({name:"trigger.match"}),a=As(n),o=Es(r),l=p=>{const d=a,c=d.includes(p)?d.filter(x=>x!==p):[...d,p];t.setValue("trigger.match_related",Ls(c))},h=p=>{const d=o,c=d.includes(p)?d.filter(x=>x!==p):[...d,p];t.setValue("trigger.match",Ds(c))};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(b,{children:[e.jsx(S,{children:"Work Pools"}),e.jsx(y,{children:e.jsx(Ns,{selectedWorkPoolIds:a,onToggleWorkPool:l,emptyMessage:"All work pools"})})]}),e.jsxs(b,{children:[e.jsx(S,{children:"Work Queues"}),e.jsx(y,{children:e.jsx(_s,{selectedWorkQueueIds:o,onToggleWorkQueue:h,workPoolIds:a,emptyMessage:"All work queues"})})]}),e.jsxs(b,{children:[e.jsx(S,{children:"Work Queue"}),e.jsxs("div",{className:"grid grid-cols-[10rem_1fr] gap-2",children:[e.jsx(re,{}),e.jsx(w,{control:t.control,name:"trigger.expect",render:({field:p})=>{const d=p.value?.[0];return e.jsx(y,{children:e.jsxs(B,{value:d??"",onValueChange:c=>p.onChange([c]),children:[e.jsx(z,{className:"w-full",children:e.jsx(Q,{placeholder:"Select status"})}),e.jsx(J,{children:Ts.map(c=>e.jsx(G,{value:c.value,children:c.label},c.value))})]})})}})]})]}),s==="Proactive"&&e.jsx(w,{control:t.control,name:"trigger.within",render:({field:p})=>e.jsxs(b,{children:[e.jsx(S,{children:"For"}),e.jsx(y,{children:e.jsx(se,{value:p.value??0,onChange:p.onChange,min:0})}),e.jsx(C,{})]})})]})},Rs=()=>{const t=_(),s=t.watch("triggerTemplate"),n=t.watch("trigger"),[r,a]=m.useState("Form"),[o,l]=m.useState(""),[h,p]=m.useState(void 0),d=m.useCallback(()=>JSON.stringify(n,null,2),[n]);m.useEffect(()=>{r==="Form"&&l(d())},[r,d]);const c=m.useCallback(f=>{try{const j=JSON.parse(f);return{valid:!0,trigger:Ie.parse(j)}}catch(j){return j instanceof SyntaxError?{valid:!1,error:"Invalid JSON syntax"}:j instanceof Fe?{valid:!1,error:j.errors[0]?.message??"Invalid trigger configuration"}:{valid:!1,error:"Unknown error"}}},[]),x=m.useCallback(f=>{if(r!==f){if(f==="Form"){const j=c(o);if(!j.valid){p(j.error);return}j.trigger&&t.setValue("trigger",j.trigger),p(void 0)}else l(d()),p(void 0);a(f)}},[r,o,c,t,d]),u=m.useCallback(f=>{l(f);const j=c(f);j.valid&&j.trigger&&(t.setValue("trigger",j.trigger),p(void 0))},[c,t]),i=f=>{const j=js(f);t.setValue("trigger",j),l(JSON.stringify(j,null,2)),p(void 0)};return e.jsxs("div",{className:"space-y-6",children:[e.jsx(fs,{onTemplateChange:i}),s&&e.jsx(ms,{value:r,onValueChange:x,formContent:e.jsx(Ms,{template:s}),jsonContent:e.jsx(ps,{value:o,onChange:u,error:h})})]})},Ms=({template:t})=>{switch(t){case"flow-run-state":return e.jsx(hs,{});case"deployment-status":return e.jsx(rs,{});case"work-pool-status":return e.jsx(ks,{});case"work-queue-status":return e.jsx(Fs,{});case"custom":return e.jsx(Qt,{});default:return null}},le=["Trigger","Actions","Details"],Vs={actions:[{type:void 0}],trigger:{type:"event",posture:"Reactive",threshold:1,within:0}},Ys=({defaultValues:t={},onSubmit:s,submitLabel:n="Save",isSubmitting:r=!1})=>{const o=!!(t&&Object.keys(t).length>0)?new Set([0,1,2]):new Set([0]),l=it(le.length,0,o),h=Ge({resolver:Qe(dt),defaultValues:{...Vs,...t}}),p=le[l.currentStep],d={Trigger:{render:()=>e.jsx(Rs,{}),trigger:()=>h.trigger("trigger")},Actions:{render:()=>e.jsx(Vt,{}),trigger:()=>h.trigger("actions")},Details:{render:()=>e.jsx(Ot,{}),trigger:()=>h.trigger(["description","name"])}},c=async x=>{await d[x].trigger()&&l.incrementStep()};return e.jsx(ct,{...h,children:e.jsx("form",{onSubmit:x=>{h.handleSubmit(s)(x)},children:e.jsxs("div",{className:"flex flex-col gap-8",children:[e.jsx(ut,{steps:le,currentStepNum:l.currentStep,onClick:x=>l.changeStep(x.stepNum),completedSteps:l.completedStepsSet,visitedSteps:l.visitedStepsSet}),e.jsxs(ot,{className:"p-4 pt-8",children:[e.jsxs(at,{children:[d[p].render(),e.jsx(C,{children:h.formState.errors.root?.message})]}),e.jsxs(lt,{className:"mt-6 flex gap-2 justify-end",children:[e.jsx(U,{type:"button",variant:"outline",children:e.jsx(ze,{to:"/automations",children:"Cancel"})}),e.jsx(U,{disabled:l.isStartingStep,type:"button",variant:"outline",onClick:l.decrementStep,children:"Previous"}),l.isFinalStep?e.jsx(U,{type:"submit",loading:r,children:n},"save"):e.jsx(U,{type:"button",onClick:()=>{c(p)},children:"Next"},"next")]})]})]})})})};export{Ys as A};
2
+ //# sourceMappingURL=automation-wizard-RlOhF90R.js.map