prefect 3.6.13.dev2__py3-none-any.whl → 3.6.14.dev1__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 (226) hide show
  1. prefect/_build_info.py +3 -3
  2. prefect/_internal/compatibility/blocks.py +18 -0
  3. prefect/client/schemas/filters.py +24 -0
  4. prefect/flow_engine.py +192 -10
  5. prefect/flows.py +61 -2
  6. prefect/results.py +262 -21
  7. prefect/runner/runner.py +29 -82
  8. prefect/runner/storage.py +3 -2
  9. prefect/server/schemas/filters.py +45 -0
  10. prefect/server/ui-v2/assets/{artifact-card-C8JEQRHl.js → artifact-card-DkgEVahF.js} +2 -2
  11. prefect/server/ui-v2/assets/{artifact-card-C8JEQRHl.js.map → artifact-card-DkgEVahF.js.map} +1 -1
  12. prefect/server/ui-v2/assets/{artifact._id-67V8kTg9.js → artifact._id-C7yJhkKY.js} +2 -2
  13. prefect/server/ui-v2/assets/{artifact._id-67V8kTg9.js.map → artifact._id-C7yJhkKY.js.map} +1 -1
  14. prefect/server/ui-v2/assets/{automation-wizard-DuxZ47Nn.js → automation-wizard-BLI4sqs9.js} +2 -2
  15. prefect/server/ui-v2/assets/{automation-wizard-DuxZ47Nn.js.map → automation-wizard-BLI4sqs9.js.map} +1 -1
  16. prefect/server/ui-v2/assets/{automation._id-D8S8r4Ji.js → automation._id-OLes3du9.js} +2 -2
  17. prefect/server/ui-v2/assets/{automation._id-D8S8r4Ji.js.map → automation._id-OLes3du9.js.map} +1 -1
  18. prefect/server/ui-v2/assets/{automation_._id.edit-C1fOM0Hx.js → automation_._id.edit-QrSzkDDB.js} +2 -2
  19. prefect/server/ui-v2/assets/{automation_._id.edit-C1fOM0Hx.js.map → automation_._id.edit-QrSzkDDB.js.map} +1 -1
  20. prefect/server/ui-v2/assets/{automations-header-DrijTNGi.js → automations-header-BoJc9HK8.js} +2 -2
  21. prefect/server/ui-v2/assets/{automations-header-DrijTNGi.js.map → automations-header-BoJc9HK8.js.map} +1 -1
  22. prefect/server/ui-v2/assets/{base-job-template-form-section-BDkqOkpe.js → base-job-template-form-section-Br6s0jNS.js} +2 -2
  23. prefect/server/ui-v2/assets/{base-job-template-form-section-BDkqOkpe.js.map → base-job-template-form-section-Br6s0jNS.js.map} +1 -1
  24. prefect/server/ui-v2/assets/{block-type-details-CrFHWH5D.js → block-type-details-BSbBP-Nm.js} +2 -2
  25. prefect/server/ui-v2/assets/{block-type-details-CrFHWH5D.js.map → block-type-details-BSbBP-Nm.js.map} +1 -1
  26. prefect/server/ui-v2/assets/block-type-logo-DNFERTyH.js +2 -0
  27. prefect/server/ui-v2/assets/{block-type-logo-WQNm0PzP.js.map → block-type-logo-DNFERTyH.js.map} +1 -1
  28. prefect/server/ui-v2/assets/{block._id-C3gN1Ae8.js → block._id-DO6Hulrv.js} +2 -2
  29. prefect/server/ui-v2/assets/{block._id-C3gN1Ae8.js.map → block._id-DO6Hulrv.js.map} +1 -1
  30. prefect/server/ui-v2/assets/{block_._id.edit-DzPuSvat.js → block_._id.edit-BWF0TQvv.js} +2 -2
  31. prefect/server/ui-v2/assets/{block_._id.edit-DzPuSvat.js.map → block_._id.edit-BWF0TQvv.js.map} +1 -1
  32. prefect/server/ui-v2/assets/{catalog-T-7MqsyE.js → catalog-BlaqZP0r.js} +2 -2
  33. prefect/server/ui-v2/assets/{catalog-T-7MqsyE.js.map → catalog-BlaqZP0r.js.map} +1 -1
  34. prefect/server/ui-v2/assets/{catalog_._slug-DMOI61fc.js → catalog_._slug-BZWiMtjq.js} +2 -2
  35. prefect/server/ui-v2/assets/{catalog_._slug-DMOI61fc.js.map → catalog_._slug-BZWiMtjq.js.map} +1 -1
  36. prefect/server/ui-v2/assets/{catalog_._slug_.create-l9bGUPi-.js → catalog_._slug_.create-oHffbeMs.js} +2 -2
  37. prefect/server/ui-v2/assets/{catalog_._slug_.create-l9bGUPi-.js.map → catalog_._slug_.create-oHffbeMs.js.map} +1 -1
  38. prefect/server/ui-v2/assets/{collapsible-DM-Ze5-Y.js → collapsible-D45P93xU.js} +2 -2
  39. prefect/server/ui-v2/assets/{collapsible-DM-Ze5-Y.js.map → collapsible-D45P93xU.js.map} +1 -1
  40. prefect/server/ui-v2/assets/{concurrency-limit._id-BHEt9viF.js → concurrency-limit._id-B6oyPVya.js} +2 -2
  41. prefect/server/ui-v2/assets/{concurrency-limit._id-BHEt9viF.js.map → concurrency-limit._id-B6oyPVya.js.map} +1 -1
  42. prefect/server/ui-v2/assets/{create-BMxUOyN5.js → create-CcYMd6w6.js} +2 -2
  43. prefect/server/ui-v2/assets/{create-BMxUOyN5.js.map → create-CcYMd6w6.js.map} +1 -1
  44. prefect/server/ui-v2/assets/{create-Cq-EAHVk.js → create-DK1WvDhf.js} +2 -2
  45. prefect/server/ui-v2/assets/{create-Cq-EAHVk.js.map → create-DK1WvDhf.js.map} +1 -1
  46. prefect/server/ui-v2/assets/{data-table-Bw8TZx9D.js → data-table-B_iyrrTm.js} +2 -2
  47. prefect/server/ui-v2/assets/{data-table-Bw8TZx9D.js.map → data-table-B_iyrrTm.js.map} +1 -1
  48. prefect/server/ui-v2/assets/{delete-confirmation-dialog-CTdWZlGM.js → delete-confirmation-dialog-7GKqeKy1.js} +2 -2
  49. prefect/server/ui-v2/assets/{delete-confirmation-dialog-CTdWZlGM.js.map → delete-confirmation-dialog-7GKqeKy1.js.map} +1 -1
  50. prefect/server/ui-v2/assets/{deployment-action-header-BObYqmI_.js → deployment-action-header-DrvnfE9Y.js} +2 -2
  51. prefect/server/ui-v2/assets/{deployment-action-header-BObYqmI_.js.map → deployment-action-header-DrvnfE9Y.js.map} +1 -1
  52. prefect/server/ui-v2/assets/{deployment-form-CntyhRrK.js → deployment-form-DsAij22s.js} +3 -3
  53. prefect/server/ui-v2/assets/{deployment-form-CntyhRrK.js.map → deployment-form-DsAij22s.js.map} +1 -1
  54. prefect/server/ui-v2/assets/{deployment-links-DBUSCaxB.js → deployment-links-BwqfKWQX.js} +2 -2
  55. prefect/server/ui-v2/assets/{deployment-links-DBUSCaxB.js.map → deployment-links-BwqfKWQX.js.map} +1 -1
  56. prefect/server/ui-v2/assets/{deployment._id-BXanVFA8.js → deployment._id-E5e5s6bO.js} +2 -2
  57. prefect/server/ui-v2/assets/{deployment._id-BXanVFA8.js.map → deployment._id-E5e5s6bO.js.map} +1 -1
  58. prefect/server/ui-v2/assets/{deployment._id-Q5cvHMX9.js → deployment._id-U6KrtWw0.js} +2 -2
  59. prefect/server/ui-v2/assets/{deployment._id-Q5cvHMX9.js.map → deployment._id-U6KrtWw0.js.map} +1 -1
  60. prefect/server/ui-v2/assets/deployment_._id.duplicate-C_kNyCA9.js +2 -0
  61. prefect/server/ui-v2/assets/{deployment_._id.duplicate-DB-4hHHc.js.map → deployment_._id.duplicate-C_kNyCA9.js.map} +1 -1
  62. prefect/server/ui-v2/assets/deployment_._id.edit-BP8pfTOR.js +2 -0
  63. prefect/server/ui-v2/assets/{deployment_._id.edit-CWf1RIGy.js.map → deployment_._id.edit-BP8pfTOR.js.map} +1 -1
  64. prefect/server/ui-v2/assets/{deployment_._id.run-CoHGXFoM.js → deployment_._id.run-Di3-4Mtk.js} +2 -2
  65. prefect/server/ui-v2/assets/{deployment_._id.run-CoHGXFoM.js.map → deployment_._id.run-Di3-4Mtk.js.map} +1 -1
  66. prefect/server/ui-v2/assets/{dropdown-menu-CT-s-V7d.js → dropdown-menu-iS8iJMpx.js} +2 -2
  67. prefect/server/ui-v2/assets/{dropdown-menu-CT-s-V7d.js.map → dropdown-menu-iS8iJMpx.js.map} +1 -1
  68. prefect/server/ui-v2/assets/{event._eventDate._eventId-BITo_GYL.js → event._eventDate._eventId-CG15qDSZ.js} +2 -2
  69. prefect/server/ui-v2/assets/{event._eventDate._eventId-BITo_GYL.js.map → event._eventDate._eventId-CG15qDSZ.js.map} +1 -1
  70. prefect/server/ui-v2/assets/flow-run-graph-B1vF1w0Z.js +2 -0
  71. prefect/server/ui-v2/assets/flow-run-graph-B1vF1w0Z.js.map +1 -0
  72. prefect/server/ui-v2/assets/flow-run._id-BHY61H6u.js +4 -0
  73. prefect/server/ui-v2/assets/flow-run._id-BHY61H6u.js.map +1 -0
  74. prefect/server/ui-v2/assets/{flow-run._id-BtSgRDtA.js → flow-run._id-D_eAHZ5z.js} +2 -2
  75. prefect/server/ui-v2/assets/{flow-run._id-BtSgRDtA.js.map → flow-run._id-D_eAHZ5z.js.map} +1 -1
  76. prefect/server/ui-v2/assets/{flow-run._id-Bbm9OpDi.js → flow-run._id-wco0Q19f.js} +2 -2
  77. prefect/server/ui-v2/assets/{flow-run._id-Bbm9OpDi.js.map → flow-run._id-wco0Q19f.js.map} +1 -1
  78. prefect/server/ui-v2/assets/{flow-runs-pagination-LrU9Aio8.js → flow-runs-pagination-DzGHOht3.js} +2 -2
  79. prefect/server/ui-v2/assets/{flow-runs-pagination-LrU9Aio8.js.map → flow-runs-pagination-DzGHOht3.js.map} +1 -1
  80. prefect/server/ui-v2/assets/{flow._id-BJBRokk4.js → flow._id-Dn2so3rK.js} +2 -2
  81. prefect/server/ui-v2/assets/{flow._id-BJBRokk4.js.map → flow._id-Dn2so3rK.js.map} +1 -1
  82. prefect/server/ui-v2/assets/{form-CVSlEnl8.js → form-rC8pxeRl.js} +2 -2
  83. prefect/server/ui-v2/assets/{form-CVSlEnl8.js.map → form-rC8pxeRl.js.map} +1 -1
  84. prefect/server/ui-v2/assets/{header-4plZZheZ.js → header-C0zV3WDn.js} +2 -2
  85. prefect/server/ui-v2/assets/{header-4plZZheZ.js.map → header-C0zV3WDn.js.map} +1 -1
  86. prefect/server/ui-v2/assets/{header-D3uM8_xM.js → header-C6ko3O7G.js} +2 -2
  87. prefect/server/ui-v2/assets/{header-D3uM8_xM.js.map → header-C6ko3O7G.js.map} +1 -1
  88. prefect/server/ui-v2/assets/{header-9rXZ4r39.js → header-CuAwmJ64.js} +2 -2
  89. prefect/server/ui-v2/assets/{header-9rXZ4r39.js.map → header-CuAwmJ64.js.map} +1 -1
  90. prefect/server/ui-v2/assets/{index-6OsEYhIi.js → index-0g8aAM30.js} +2 -2
  91. prefect/server/ui-v2/assets/{index-6OsEYhIi.js.map → index-0g8aAM30.js.map} +1 -1
  92. prefect/server/ui-v2/assets/{index-BeoNC2tJ.js → index-BIqzfifB.js} +2 -2
  93. prefect/server/ui-v2/assets/{index-BeoNC2tJ.js.map → index-BIqzfifB.js.map} +1 -1
  94. prefect/server/ui-v2/assets/{index-ChIrfjIW.js → index-BKbBu9gL.js} +2 -2
  95. prefect/server/ui-v2/assets/{index-ChIrfjIW.js.map → index-BKbBu9gL.js.map} +1 -1
  96. prefect/server/ui-v2/assets/{index-h9-QgNjZ.js → index-BYQ1P2TC.js} +2 -2
  97. prefect/server/ui-v2/assets/{index-h9-QgNjZ.js.map → index-BYQ1P2TC.js.map} +1 -1
  98. prefect/server/ui-v2/assets/{index-DODEq1Pi.js → index-BdgomKuA.js} +2 -2
  99. prefect/server/ui-v2/assets/{index-DODEq1Pi.js.map → index-BdgomKuA.js.map} +1 -1
  100. prefect/server/ui-v2/assets/{index-DqCPbST9.js → index-Benf9xn3.js} +2 -2
  101. prefect/server/ui-v2/assets/{index-DqCPbST9.js.map → index-Benf9xn3.js.map} +1 -1
  102. prefect/server/ui-v2/assets/{index-B7xsJ-QH.js → index-BjsWjEUO.js} +2 -2
  103. prefect/server/ui-v2/assets/{index-B7xsJ-QH.js.map → index-BjsWjEUO.js.map} +1 -1
  104. prefect/server/ui-v2/assets/{index-DicK6p3K.js → index-C3D0Re7U.js} +2 -2
  105. prefect/server/ui-v2/assets/{index-DicK6p3K.js.map → index-C3D0Re7U.js.map} +1 -1
  106. prefect/server/ui-v2/assets/{index-BlpD74iH.js → index-CCs20W5W.js} +2 -2
  107. prefect/server/ui-v2/assets/{index-BlpD74iH.js.map → index-CCs20W5W.js.map} +1 -1
  108. prefect/server/ui-v2/assets/{index-udb79rgq.js → index-CEStyUb-.js} +2 -2
  109. prefect/server/ui-v2/assets/{index-udb79rgq.js.map → index-CEStyUb-.js.map} +1 -1
  110. prefect/server/ui-v2/assets/{index-tBdv6kBF.js → index-CYpFLd7y.js} +2 -2
  111. prefect/server/ui-v2/assets/{index-tBdv6kBF.js.map → index-CYpFLd7y.js.map} +1 -1
  112. prefect/server/ui-v2/assets/{index-CDyLkbVG.js → index-CcVSC2pV.js} +2 -2
  113. prefect/server/ui-v2/assets/{index-CDyLkbVG.js.map → index-CcVSC2pV.js.map} +1 -1
  114. prefect/server/ui-v2/assets/index-Cd7pM9pk.js +17 -0
  115. prefect/server/ui-v2/assets/index-Cd7pM9pk.js.map +1 -0
  116. prefect/server/ui-v2/assets/{index-DJyKqsFO.js → index-CotXErTe.js} +2 -2
  117. prefect/server/ui-v2/assets/{index-DJyKqsFO.js.map → index-CotXErTe.js.map} +1 -1
  118. prefect/server/ui-v2/assets/{index-DxPoKag8.js → index-D8fZaZa7.js} +2 -2
  119. prefect/server/ui-v2/assets/{index-DxPoKag8.js.map → index-D8fZaZa7.js.map} +1 -1
  120. prefect/server/ui-v2/assets/{index-D6GJ4go1.js → index-DB2qeheX.js} +2 -2
  121. prefect/server/ui-v2/assets/{index-D6GJ4go1.js.map → index-DB2qeheX.js.map} +1 -1
  122. prefect/server/ui-v2/assets/{index-CzCSgCK-.js → index-DvKYj8ko.js} +2 -2
  123. prefect/server/ui-v2/assets/{index-CzCSgCK-.js.map → index-DvKYj8ko.js.map} +1 -1
  124. prefect/server/ui-v2/assets/{index-BfJLUM7N.js → index-DwkedbVy.js} +2 -2
  125. prefect/server/ui-v2/assets/{index-BfJLUM7N.js.map → index-DwkedbVy.js.map} +1 -1
  126. prefect/server/ui-v2/assets/index-b9WBW430.css +1 -0
  127. prefect/server/ui-v2/assets/{index-CDwJvjUM.js → index-fhrsIceD.js} +2 -2
  128. prefect/server/ui-v2/assets/{index-CDwJvjUM.js.map → index-fhrsIceD.js.map} +1 -1
  129. prefect/server/ui-v2/assets/{index-D5v9S-lB.js → index-k2161reF.js} +2 -2
  130. prefect/server/ui-v2/assets/{index-D5v9S-lB.js.map → index-k2161reF.js.map} +1 -1
  131. prefect/server/ui-v2/assets/{index-Bj0OOguP.js → index-pE_31vXF.js} +2 -2
  132. prefect/server/ui-v2/assets/{index-Bj0OOguP.js.map → index-pE_31vXF.js.map} +1 -1
  133. prefect/server/ui-v2/assets/{json-input-Dt1icmrn.js → json-input-C9dkBSdc.js} +2 -2
  134. prefect/server/ui-v2/assets/{json-input-Dt1icmrn.js.map → json-input-C9dkBSdc.js.map} +1 -1
  135. prefect/server/ui-v2/assets/{key._key-Cyh5MBX_.js → key._key-BBVH44_R.js} +2 -2
  136. prefect/server/ui-v2/assets/{key._key-Cyh5MBX_.js.map → key._key-BBVH44_R.js.map} +1 -1
  137. prefect/server/ui-v2/assets/{lazy-markdown-BwIwKFRF.js → lazy-markdown-BoMKGRXo.js} +2 -2
  138. prefect/server/ui-v2/assets/{lazy-markdown-BwIwKFRF.js.map → lazy-markdown-BoMKGRXo.js.map} +1 -1
  139. prefect/server/ui-v2/assets/{login-DKXFVSwk.js → login-BmmIDesJ.js} +2 -2
  140. prefect/server/ui-v2/assets/{login-DKXFVSwk.js.map → login-BmmIDesJ.js.map} +1 -1
  141. prefect/server/ui-v2/assets/{markdown-input-Dp0mBlkV.js → markdown-input-C6P8cYT1.js} +2 -2
  142. prefect/server/ui-v2/assets/{markdown-input-Dp0mBlkV.js.map → markdown-input-C6P8cYT1.js.map} +1 -1
  143. prefect/server/ui-v2/assets/{python-example-snippet-BYwPjHI5.js → python-example-snippet-DPumgTpL.js} +3 -3
  144. prefect/server/ui-v2/assets/{python-example-snippet-BYwPjHI5.js.map → python-example-snippet-DPumgTpL.js.map} +1 -1
  145. prefect/server/ui-v2/assets/{python-input-y26XMqXw.js → python-input-DX4uV8MF.js} +2 -2
  146. prefect/server/ui-v2/assets/{python-input-y26XMqXw.js.map → python-input-DX4uV8MF.js.map} +1 -1
  147. prefect/server/ui-v2/assets/{radio-group-D0van45v.js → radio-group-DeNK-Ob0.js} +2 -2
  148. prefect/server/ui-v2/assets/{radio-group-D0van45v.js.map → radio-group-DeNK-Ob0.js.map} +1 -1
  149. prefect/server/ui-v2/assets/{route-error-state-CGGpuCGN.js → route-error-state-C9CbByMx.js} +2 -2
  150. prefect/server/ui-v2/assets/{route-error-state-CGGpuCGN.js.map → route-error-state-C9CbByMx.js.map} +1 -1
  151. prefect/server/ui-v2/assets/{schema-form-2tg5SXM4.js → schema-form-B45xnsnK.js} +2 -2
  152. prefect/server/ui-v2/assets/{schema-form-2tg5SXM4.js.map → schema-form-B45xnsnK.js.map} +1 -1
  153. prefect/server/ui-v2/assets/{schema-form-input-string-format-datetime-CZt6AJ4z.js → schema-form-input-string-format-datetime-BJj81bu-.js} +4 -4
  154. prefect/server/ui-v2/assets/{schema-form-input-string-format-datetime-CZt6AJ4z.js.map → schema-form-input-string-format-datetime-BJj81bu-.js.map} +1 -1
  155. prefect/server/ui-v2/assets/{settings-DDUadk_N.js → settings-CbkeWqQ9.js} +2 -2
  156. prefect/server/ui-v2/assets/{settings-DDUadk_N.js.map → settings-CbkeWqQ9.js.map} +1 -1
  157. prefect/server/ui-v2/assets/{sort-filter-D9p3cPx9.js → sort-filter-DM7SvBB0.js} +2 -2
  158. prefect/server/ui-v2/assets/{sort-filter-D9p3cPx9.js.map → sort-filter-DM7SvBB0.js.map} +1 -1
  159. prefect/server/ui-v2/assets/{table-vo9Do8sA.js → table-CEPo6xb_.js} +2 -2
  160. prefect/server/ui-v2/assets/{table-vo9Do8sA.js.map → table-CEPo6xb_.js.map} +1 -1
  161. prefect/server/ui-v2/assets/{tags-input-Ci2JQ-k3.js → tags-input-DJiZSVHp.js} +2 -2
  162. prefect/server/ui-v2/assets/{tags-input-Ci2JQ-k3.js.map → tags-input-DJiZSVHp.js.map} +1 -1
  163. prefect/server/ui-v2/assets/{task-run-concurrency-limits-reset-dialog-CJzPc2gw.js → task-run-concurrency-limits-reset-dialog-vJEkvqWp.js} +2 -2
  164. prefect/server/ui-v2/assets/{task-run-concurrency-limits-reset-dialog-CJzPc2gw.js.map → task-run-concurrency-limits-reset-dialog-vJEkvqWp.js.map} +1 -1
  165. prefect/server/ui-v2/assets/{task-run._id-D8QKG5UZ.js → task-run._id-BCnDnXrL.js} +2 -2
  166. prefect/server/ui-v2/assets/{task-run._id-D8QKG5UZ.js.map → task-run._id-BCnDnXrL.js.map} +1 -1
  167. prefect/server/ui-v2/assets/{task-run._id-CjevSs79.js → task-run._id-ByJw1K82.js} +2 -2
  168. prefect/server/ui-v2/assets/{task-run._id-CjevSs79.js.map → task-run._id-ByJw1K82.js.map} +1 -1
  169. prefect/server/ui-v2/assets/{task-runs-pagination-CifoSGct.js → task-runs-pagination-DbjB6XnY.js} +2 -2
  170. prefect/server/ui-v2/assets/{task-runs-pagination-CifoSGct.js.map → task-runs-pagination-DbjB6XnY.js.map} +1 -1
  171. prefect/server/ui-v2/assets/{textarea-BAtfAxtV.js → textarea-BX8KbLGx.js} +2 -2
  172. prefect/server/ui-v2/assets/{textarea-BAtfAxtV.js.map → textarea-BX8KbLGx.js.map} +1 -1
  173. prefect/server/ui-v2/assets/{timezone-select-QlQTZSsF.js → timezone-select-TBj2n6Ox.js} +2 -2
  174. prefect/server/ui-v2/assets/{timezone-select-QlQTZSsF.js.map → timezone-select-TBj2n6Ox.js.map} +1 -1
  175. prefect/server/ui-v2/assets/{toggle-group-BJN1vjEh.js → toggle-group-D7mfSUim.js} +2 -2
  176. prefect/server/ui-v2/assets/{toggle-group-BJN1vjEh.js.map → toggle-group-D7mfSUim.js.map} +1 -1
  177. prefect/server/ui-v2/assets/{use-delete-automation-confirmation-dialog-eOWJYPkD.js → use-delete-automation-confirmation-dialog-BpBSjz60.js} +2 -2
  178. prefect/server/ui-v2/assets/{use-delete-automation-confirmation-dialog-eOWJYPkD.js.map → use-delete-automation-confirmation-dialog-BpBSjz60.js.map} +1 -1
  179. prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-BTwSeHRM.js → use-delete-block-document-confirmation-dialog-BjKsNw6b.js} +2 -2
  180. prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-BTwSeHRM.js.map → use-delete-block-document-confirmation-dialog-BjKsNw6b.js.map} +1 -1
  181. prefect/server/ui-v2/assets/{use-flow-runs-selected-rows-BL_Gv9CC.js → use-flow-runs-selected-rows-B_BlBMic.js} +2 -2
  182. prefect/server/ui-v2/assets/{use-flow-runs-selected-rows-BL_Gv9CC.js.map → use-flow-runs-selected-rows-B_BlBMic.js.map} +1 -1
  183. prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-TSCoomjQ.js → use-get-artifacts-flow-task-runs-BfE433bC.js} +2 -2
  184. prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-TSCoomjQ.js.map → use-get-artifacts-flow-task-runs-BfE433bC.js.map} +1 -1
  185. prefect/server/ui-v2/assets/{use-quick-run-BMnCkwSv.js → use-quick-run-qrtcF-DD.js} +2 -2
  186. prefect/server/ui-v2/assets/{use-quick-run-BMnCkwSv.js.map → use-quick-run-qrtcF-DD.js.map} +1 -1
  187. prefect/server/ui-v2/assets/{use-stepper-C1wm66U2.js → use-stepper-CVy1_GBw.js} +2 -2
  188. prefect/server/ui-v2/assets/{use-stepper-C1wm66U2.js.map → use-stepper-CVy1_GBw.js.map} +1 -1
  189. prefect/server/ui-v2/assets/{utilities-DxRXxFOF.js → utilities-D5-00wjP.js} +2 -2
  190. prefect/server/ui-v2/assets/{utilities-DxRXxFOF.js.map → utilities-D5-00wjP.js.map} +1 -1
  191. prefect/server/ui-v2/assets/{vendor-graphs-Diy0Lo-N.js → vendor-graphs-R8z6S3Jg.js} +2 -2
  192. prefect/server/ui-v2/assets/{vendor-graphs-Diy0Lo-N.js.map → vendor-graphs-R8z6S3Jg.js.map} +1 -1
  193. prefect/server/ui-v2/assets/{work-pool-filter-PudrkZYj.js → work-pool-filter-D8MkTbSW.js} +2 -2
  194. prefect/server/ui-v2/assets/{work-pool-filter-PudrkZYj.js.map → work-pool-filter-D8MkTbSW.js.map} +1 -1
  195. prefect/server/ui-v2/assets/{work-pool-queue-toggle-BAOrV_0R.js → work-pool-queue-toggle-CbI7Gfu5.js} +2 -2
  196. prefect/server/ui-v2/assets/{work-pool-queue-toggle-BAOrV_0R.js.map → work-pool-queue-toggle-CbI7Gfu5.js.map} +1 -1
  197. prefect/server/ui-v2/assets/{work-pool._workPoolName-BOM3849e.js → work-pool._workPoolName-CCzzgVV2.js} +2 -2
  198. prefect/server/ui-v2/assets/{work-pool._workPoolName-BOM3849e.js.map → work-pool._workPoolName-CCzzgVV2.js.map} +1 -1
  199. prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-CIhcG6yr.js → work-pool_._workPoolName.edit-BAgiuU_j.js} +2 -2
  200. prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-CIhcG6yr.js.map → work-pool_._workPoolName.edit-BAgiuU_j.js.map} +1 -1
  201. prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-CjoM77tu.js → work-pool_._workPoolName.queue._workQueueName-BUawWJEy.js} +2 -2
  202. prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-CjoM77tu.js.map → work-pool_._workPoolName.queue._workQueueName-BUawWJEy.js.map} +1 -1
  203. prefect/server/ui-v2/assets/{work-queue-icon-text-CP4yX3uM.js → work-queue-icon-text-D_G_UCJX.js} +2 -2
  204. prefect/server/ui-v2/assets/{work-queue-icon-text-CP4yX3uM.js.map → work-queue-icon-text-D_G_UCJX.js.map} +1 -1
  205. prefect/server/ui-v2/index.html +2 -2
  206. prefect/settings/models/flows.py +14 -1
  207. prefect/settings/models/runner.py +16 -6
  208. prefect/task_engine.py +1 -3
  209. prefect/task_worker.py +1 -1
  210. prefect/tasks.py +2 -2
  211. prefect/testing/fixtures.py +23 -5
  212. {prefect-3.6.13.dev2.dist-info → prefect-3.6.14.dev1.dist-info}/METADATA +1 -1
  213. {prefect-3.6.13.dev2.dist-info → prefect-3.6.14.dev1.dist-info}/RECORD +216 -216
  214. prefect/server/ui-v2/assets/block-type-logo-WQNm0PzP.js +0 -2
  215. prefect/server/ui-v2/assets/deployment_._id.duplicate-DB-4hHHc.js +0 -2
  216. prefect/server/ui-v2/assets/deployment_._id.edit-CWf1RIGy.js +0 -2
  217. prefect/server/ui-v2/assets/flow-run-graph-DxIl6fzW.js +0 -2
  218. prefect/server/ui-v2/assets/flow-run-graph-DxIl6fzW.js.map +0 -1
  219. prefect/server/ui-v2/assets/flow-run._id-DJuMECRh.js +0 -4
  220. prefect/server/ui-v2/assets/flow-run._id-DJuMECRh.js.map +0 -1
  221. prefect/server/ui-v2/assets/index-BvSl3DKP.js +0 -17
  222. prefect/server/ui-v2/assets/index-BvSl3DKP.js.map +0 -1
  223. prefect/server/ui-v2/assets/index-NY089eTx.css +0 -1
  224. {prefect-3.6.13.dev2.dist-info → prefect-3.6.14.dev1.dist-info}/WHEEL +0 -0
  225. {prefect-3.6.13.dev2.dist-info → prefect-3.6.14.dev1.dist-info}/entry_points.txt +0 -0
  226. {prefect-3.6.13.dev2.dist-info → prefect-3.6.14.dev1.dist-info}/licenses/LICENSE +0 -0
@@ -1,2 +1,2 @@
1
- import{r as o,j as e,L as t}from"./vendor-tanstack-BK8oseNA.js";import{L as n}from"./lazy-markdown-BwIwKFRF.js";import{aM as i,C as m,m as x,al as r,o as c,aW as d}from"./index-BvSl3DKP.js";const f=({artifact:s,compact:a=!1})=>{const l=o.useMemo(()=>i(new Date(s.created??""),"dateTime"),[s.created]);return e.jsx(t,{to:"/artifacts/key/$key",params:{key:s.key??""},children:e.jsxs(m,{className:"hover:shadow-lg hover:border-blue-700",children:[e.jsx(x,{children:e.jsx(r,{variant:"bodySmall",className:"font-bold text-muted-foreground",children:s.type?.toUpperCase()})}),e.jsxs(c,{children:[e.jsxs("div",{className:d("flex",a?"flex-row justify-between":"flex-col"),children:[e.jsx(r,{variant:a?"h4":"h3",className:"font-bold",children:s.key}),e.jsxs("div",{className:d("flex mt-2",a?"flex-col-reverse items-end":"justify-between"),children:[e.jsx(r,{variant:a?"bodySmall":"xsmall",className:"",fontFamily:"mono",children:l}),e.jsx(r,{variant:"bodySmall",className:"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(n,{children:s.description??""})}):e.jsx(r,{variant:"bodySmall",className:"text-muted-foreground italic",children:"No description"})]})]})})};export{f as A};
2
- //# sourceMappingURL=artifact-card-C8JEQRHl.js.map
1
+ import{r as o,j as e,L as t}from"./vendor-tanstack-BK8oseNA.js";import{L as n}from"./lazy-markdown-BoMKGRXo.js";import{aM as i,C as m,m as x,al as r,o as c,aW as d}from"./index-Cd7pM9pk.js";const f=({artifact:s,compact:a=!1})=>{const l=o.useMemo(()=>i(new Date(s.created??""),"dateTime"),[s.created]);return e.jsx(t,{to:"/artifacts/key/$key",params:{key:s.key??""},children:e.jsxs(m,{className:"hover:shadow-lg hover:border-blue-700",children:[e.jsx(x,{children:e.jsx(r,{variant:"bodySmall",className:"font-bold text-muted-foreground",children:s.type?.toUpperCase()})}),e.jsxs(c,{children:[e.jsxs("div",{className:d("flex",a?"flex-row justify-between":"flex-col"),children:[e.jsx(r,{variant:a?"h4":"h3",className:"font-bold",children:s.key}),e.jsxs("div",{className:d("flex mt-2",a?"flex-col-reverse items-end":"justify-between"),children:[e.jsx(r,{variant:a?"bodySmall":"xsmall",className:"",fontFamily:"mono",children:l}),e.jsx(r,{variant:"bodySmall",className:"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(n,{children:s.description??""})}):e.jsx(r,{variant:"bodySmall",className:"text-muted-foreground italic",children:"No description"})]})]})})};export{f as A};
2
+ //# sourceMappingURL=artifact-card-DkgEVahF.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-card-C8JEQRHl.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\";\nimport { Typography } from \"../ui/typography\";\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<Typography\n\t\t\t\t\t\tvariant=\"bodySmall\"\n\t\t\t\t\t\tclassName=\"font-bold text-muted-foreground\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{artifact.type?.toUpperCase()}\n\t\t\t\t\t</Typography>\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<Typography variant={compact ? \"h4\" : \"h3\"} className=\"font-bold\">\n\t\t\t\t\t\t\t{artifact.key}\n\t\t\t\t\t\t</Typography>\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<Typography\n\t\t\t\t\t\t\t\tvariant={compact ? \"bodySmall\" : \"xsmall\"}\n\t\t\t\t\t\t\t\tclassName=\"\"\n\t\t\t\t\t\t\t\tfontFamily=\"mono\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{createdAtDate}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t<Typography variant=\"bodySmall\" className=\"text-muted-foreground\">\n\t\t\t\t\t\t\t\tCreated\n\t\t\t\t\t\t\t</Typography>\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<Typography\n\t\t\t\t\t\t\tvariant=\"bodySmall\"\n\t\t\t\t\t\t\tclassName=\"text-muted-foreground italic\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tNo description\n\t\t\t\t\t\t</Typography>\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","Typography","CardContent","cn","LazyMarkdown"],"mappings":"8LAcO,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,MAACI,EAAA,CACA,SAAAJ,EAAAA,IAACK,EAAA,CACA,QAAQ,YACR,UAAU,kCAET,SAAAV,EAAS,MAAM,YAAA,CAAY,CAAA,EAE9B,SACCW,EAAA,CACA,SAAA,CAAAJ,EAAAA,KAAC,MAAA,CACA,UAAWK,EACV,OACAX,EAAU,2BAA6B,UAAA,EAGxC,SAAA,CAAAI,EAAAA,IAACK,EAAA,CAAW,QAAST,EAAU,KAAO,KAAM,UAAU,YACpD,WAAS,GAAA,CACX,EACAM,EAAAA,KAAC,MAAA,CACA,UAAWK,EACV,YACAX,EAAU,6BAA+B,iBAAA,EAG1C,SAAA,CAAAI,EAAAA,IAACK,EAAA,CACA,QAAST,EAAU,YAAc,SACjC,UAAU,GACV,WAAW,OAEV,SAAAC,CAAA,CAAA,QAEDQ,EAAA,CAAW,QAAQ,YAAY,UAAU,wBAAwB,SAAA,SAAA,CAElE,CAAA,CAAA,CAAA,CACD,CAAA,CAAA,EAEDL,EAAAA,IAAC,KAAA,CAAG,UAAU,MAAA,CAAO,EACpBL,EAAS,YACTK,MAAC,MAAA,CAAI,UAAU,iDACd,SAAAA,EAAAA,IAACQ,EAAA,CAAc,SAAAb,EAAS,aAAe,EAAA,CAAG,CAAA,CAC3C,EAEAK,EAAAA,IAACK,EAAA,CACA,QAAQ,YACR,UAAU,+BACV,SAAA,gBAAA,CAAA,CAED,CAAA,CAEF,CAAA,CAAA,CACD,CAAA,CACD,CAEF"}
1
+ {"version":3,"file":"artifact-card-DkgEVahF.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\";\nimport { Typography } from \"../ui/typography\";\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<Typography\n\t\t\t\t\t\tvariant=\"bodySmall\"\n\t\t\t\t\t\tclassName=\"font-bold text-muted-foreground\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{artifact.type?.toUpperCase()}\n\t\t\t\t\t</Typography>\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<Typography variant={compact ? \"h4\" : \"h3\"} className=\"font-bold\">\n\t\t\t\t\t\t\t{artifact.key}\n\t\t\t\t\t\t</Typography>\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<Typography\n\t\t\t\t\t\t\t\tvariant={compact ? \"bodySmall\" : \"xsmall\"}\n\t\t\t\t\t\t\t\tclassName=\"\"\n\t\t\t\t\t\t\t\tfontFamily=\"mono\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{createdAtDate}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t<Typography variant=\"bodySmall\" className=\"text-muted-foreground\">\n\t\t\t\t\t\t\t\tCreated\n\t\t\t\t\t\t\t</Typography>\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<Typography\n\t\t\t\t\t\t\tvariant=\"bodySmall\"\n\t\t\t\t\t\t\tclassName=\"text-muted-foreground italic\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tNo description\n\t\t\t\t\t\t</Typography>\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","Typography","CardContent","cn","LazyMarkdown"],"mappings":"8LAcO,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,MAACI,EAAA,CACA,SAAAJ,EAAAA,IAACK,EAAA,CACA,QAAQ,YACR,UAAU,kCAET,SAAAV,EAAS,MAAM,YAAA,CAAY,CAAA,EAE9B,SACCW,EAAA,CACA,SAAA,CAAAJ,EAAAA,KAAC,MAAA,CACA,UAAWK,EACV,OACAX,EAAU,2BAA6B,UAAA,EAGxC,SAAA,CAAAI,EAAAA,IAACK,EAAA,CAAW,QAAST,EAAU,KAAO,KAAM,UAAU,YACpD,WAAS,GAAA,CACX,EACAM,EAAAA,KAAC,MAAA,CACA,UAAWK,EACV,YACAX,EAAU,6BAA+B,iBAAA,EAG1C,SAAA,CAAAI,EAAAA,IAACK,EAAA,CACA,QAAST,EAAU,YAAc,SACjC,UAAU,GACV,WAAW,OAEV,SAAAC,CAAA,CAAA,QAEDQ,EAAA,CAAW,QAAQ,YAAY,UAAU,wBAAwB,SAAA,SAAA,CAElE,CAAA,CAAA,CAAA,CACD,CAAA,CAAA,EAEDL,EAAAA,IAAC,KAAA,CAAG,UAAU,MAAA,CAAO,EACpBL,EAAS,YACTK,MAAC,MAAA,CAAI,UAAU,iDACd,SAAAA,EAAAA,IAACQ,EAAA,CAAc,SAAAb,EAAS,aAAe,EAAA,CAAG,CAAA,CAC3C,EAEAK,EAAAA,IAACK,EAAA,CACA,QAAQ,YACR,UAAU,+BACV,SAAA,gBAAA,CAAA,CAED,CAAA,CAEF,CAAA,CAAA,CACD,CAAA,CACD,CAEF"}
@@ -1,2 +1,2 @@
1
- import{j as e,r as l,p as y}from"./vendor-tanstack-BK8oseNA.js";import{B as j,g as p,h as c,bs as u,bB as x,D as w,al as h,q as b,I as v,y as N,O as k,dw as D,dv as S}from"./index-BvSl3DKP.js";import{a as T}from"./use-get-artifacts-flow-task-runs-TSCoomjQ.js";import{L as f}from"./lazy-markdown-BwIwKFRF.js";import{u as C,E as L}from"./vendor-codemirror-CXN7nd_v.js";import{T as B,a as _,b as g,c as A,d as R,e as I}from"./table-vo9Do8sA.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-CznP1SOq.js";import"./vendor-recharts-D4imLXNl.js";import"./vendor-forms-DxqqmhL5.js";import"./vendor-date-7GxEwcQM.js";const M=({artifact:s})=>{let a=e.jsx(e.Fragment,{});return s.key?a=e.jsx("div",{className:"flex items-center gap-2",children:e.jsx(j,{children:e.jsxs(p,{children:[e.jsx(c,{children:e.jsx(u,{to:"/artifacts/key/$key",params:{key:s.key},className:"text-xl font-semibold",children:s.key})}),e.jsx(x,{}),e.jsx(c,{className:"text-xl font-semibold",children:s.id})]})})}):a=e.jsx("div",{className:"flex items-center gap-2",children:e.jsx(j,{children:e.jsxs(p,{children:[s.flow_run&&e.jsxs(e.Fragment,{children:[e.jsx(c,{children:e.jsx(u,{to:"/runs/flow-run/$id",params:{id:s.flow_run_id??""},className:"text-xl font-semibold",children:s.flow_run.name})}),e.jsx(x,{})]}),s.task_run&&e.jsxs(e.Fragment,{children:[e.jsx(c,{children:e.jsx(u,{to:"/runs/task-run/$id",params:{id:s.task_run_id??""},className:"text-xl font-semibold",children:s.task_run.name})}),e.jsx(x,{})]}),e.jsx(c,{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(w,{id:"artifacts-guide",label:"Documentation"})]}),s.description&&e.jsx("div",{className:"",children:e.jsx(h,{variant:"h2",className:"my-4 font-bold prose lg:prose-xl",children:e.jsx(f,{children:s.description})})}),e.jsx("hr",{})]})},E=({artifact:s})=>{const[a,r]=l.useState(!1),d=()=>{r(o=>!o)},n=l.useRef(null),m={highlightActiveLine:!1,foldGutter:!1,highlightActiveLineGutter:!1},{setContainer:t}=C({container:n.current,extensions:[L.lineWrapping],value:String(s.data),indentWithTab:!1,editable:!0,basicSetup:m});l.useEffect(()=>{n.current&&t(n.current)},[t]);const i=o=>{N.success("Copied to clipboard"),navigator.clipboard.writeText(o)};return e.jsxs("div",{className:"flex flex-col justify-center items-center",children:[e.jsxs(b,{"data-testid":"show-raw-data-button",variant:"outline",onClick:d,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:o=>{n.current=o},"data-testid":"raw-data-display",children:e.jsx(b,{onClick:()=>i(s.data),variant:"ghost",size:"icon",className:"absolute top-0 right-0 z-10","aria-label":"copy",children:e.jsx(v,{id:"Copy",className:"size-2"})})})]})},F=({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(h,{variant:"bodyLarge",children:["Image URL:"," ",e.jsx("a",{className:"text-blue-700 hover:underline",target:"_blank",href:s,rel:"noreferrer",children:s})]})]}),H=({markdown:s})=>e.jsx("div",{"data-testid":"markdown-display",className:"mt-4 prose",children:e.jsx(f,{children:s})}),O=({progress:s})=>e.jsxs(h,{"data-testid":"progress-display",variant:"bodyLarge",children:["Progress: ",s,"%"]}),z=({tableData:s})=>{const a=JSON.parse(s),r=Object.keys(a[0]),[d,n]=l.useState(""),m=l.useMemo(()=>a.filter(t=>Object.values(t).some(i=>String(i).toLowerCase().includes(d.toLowerCase()))),[d,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(k,{placeholder:"Search",value:d,onChange:t=>n(t.target.value)})})}),e.jsx("div",{className:"rounded-md border",children:e.jsxs(B,{children:[e.jsx(_,{className:"bg-muted",children:e.jsx(g,{children:r.map(t=>e.jsx(A,{className:"py-2 text-foreground",children:t},t))})}),e.jsx(R,{children:m.map(t=>e.jsx(g,{children:r.map(i=>e.jsx(I,{children:t[i]},i))},t.id))})]})})]})},G=({artifact:s})=>{const a=l.useMemo(()=>{switch(s.type){case"markdown":case"link":return e.jsx(H,{markdown:s.data});case"image":return e.jsx(F,{url:s.data});case"progress":return e.jsx(O,{progress:s.data});case"table":return e.jsx(z,{tableData:s.data});default:return e.jsx("pre",{children:JSON.stringify(s.data,null,2)})}},[s]);return e.jsxs("div",{children:[e.jsx(M,{artifact:s}),a,e.jsx(E,{artifact:s})]})};function Z(){const{id:s}=D.useParams(),{data:a}=y(S(s)),r=T(s);return e.jsx(G,{artifact:r??a})}export{Z as component};
2
- //# sourceMappingURL=artifact._id-67V8kTg9.js.map
1
+ import{j as e,r as l,p as y}from"./vendor-tanstack-BK8oseNA.js";import{B as j,g as p,h as c,bs as u,bB as x,D as w,al as h,q as b,I as v,y as N,O as k,dw as D,dv as S}from"./index-Cd7pM9pk.js";import{a as T}from"./use-get-artifacts-flow-task-runs-BfE433bC.js";import{L as f}from"./lazy-markdown-BoMKGRXo.js";import{u as C,E as L}from"./vendor-codemirror-CXN7nd_v.js";import{T as B,a as _,b as g,c as A,d as R,e as I}from"./table-CEPo6xb_.js";import"./vendor-react-Bce9NwRC.js";import"./vendor-radix-CznP1SOq.js";import"./vendor-recharts-D4imLXNl.js";import"./vendor-forms-DxqqmhL5.js";import"./vendor-date-7GxEwcQM.js";const M=({artifact:s})=>{let a=e.jsx(e.Fragment,{});return s.key?a=e.jsx("div",{className:"flex items-center gap-2",children:e.jsx(j,{children:e.jsxs(p,{children:[e.jsx(c,{children:e.jsx(u,{to:"/artifacts/key/$key",params:{key:s.key},className:"text-xl font-semibold",children:s.key})}),e.jsx(x,{}),e.jsx(c,{className:"text-xl font-semibold",children:s.id})]})})}):a=e.jsx("div",{className:"flex items-center gap-2",children:e.jsx(j,{children:e.jsxs(p,{children:[s.flow_run&&e.jsxs(e.Fragment,{children:[e.jsx(c,{children:e.jsx(u,{to:"/runs/flow-run/$id",params:{id:s.flow_run_id??""},className:"text-xl font-semibold",children:s.flow_run.name})}),e.jsx(x,{})]}),s.task_run&&e.jsxs(e.Fragment,{children:[e.jsx(c,{children:e.jsx(u,{to:"/runs/task-run/$id",params:{id:s.task_run_id??""},className:"text-xl font-semibold",children:s.task_run.name})}),e.jsx(x,{})]}),e.jsx(c,{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(w,{id:"artifacts-guide",label:"Documentation"})]}),s.description&&e.jsx("div",{className:"",children:e.jsx(h,{variant:"h2",className:"my-4 font-bold prose lg:prose-xl",children:e.jsx(f,{children:s.description})})}),e.jsx("hr",{})]})},E=({artifact:s})=>{const[a,r]=l.useState(!1),d=()=>{r(o=>!o)},n=l.useRef(null),m={highlightActiveLine:!1,foldGutter:!1,highlightActiveLineGutter:!1},{setContainer:t}=C({container:n.current,extensions:[L.lineWrapping],value:String(s.data),indentWithTab:!1,editable:!0,basicSetup:m});l.useEffect(()=>{n.current&&t(n.current)},[t]);const i=o=>{N.success("Copied to clipboard"),navigator.clipboard.writeText(o)};return e.jsxs("div",{className:"flex flex-col justify-center items-center",children:[e.jsxs(b,{"data-testid":"show-raw-data-button",variant:"outline",onClick:d,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:o=>{n.current=o},"data-testid":"raw-data-display",children:e.jsx(b,{onClick:()=>i(s.data),variant:"ghost",size:"icon",className:"absolute top-0 right-0 z-10","aria-label":"copy",children:e.jsx(v,{id:"Copy",className:"size-2"})})})]})},F=({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(h,{variant:"bodyLarge",children:["Image URL:"," ",e.jsx("a",{className:"text-blue-700 hover:underline",target:"_blank",href:s,rel:"noreferrer",children:s})]})]}),H=({markdown:s})=>e.jsx("div",{"data-testid":"markdown-display",className:"mt-4 prose",children:e.jsx(f,{children:s})}),O=({progress:s})=>e.jsxs(h,{"data-testid":"progress-display",variant:"bodyLarge",children:["Progress: ",s,"%"]}),z=({tableData:s})=>{const a=JSON.parse(s),r=Object.keys(a[0]),[d,n]=l.useState(""),m=l.useMemo(()=>a.filter(t=>Object.values(t).some(i=>String(i).toLowerCase().includes(d.toLowerCase()))),[d,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(k,{placeholder:"Search",value:d,onChange:t=>n(t.target.value)})})}),e.jsx("div",{className:"rounded-md border",children:e.jsxs(B,{children:[e.jsx(_,{className:"bg-muted",children:e.jsx(g,{children:r.map(t=>e.jsx(A,{className:"py-2 text-foreground",children:t},t))})}),e.jsx(R,{children:m.map(t=>e.jsx(g,{children:r.map(i=>e.jsx(I,{children:t[i]},i))},t.id))})]})})]})},G=({artifact:s})=>{const a=l.useMemo(()=>{switch(s.type){case"markdown":case"link":return e.jsx(H,{markdown:s.data});case"image":return e.jsx(F,{url:s.data});case"progress":return e.jsx(O,{progress:s.data});case"table":return e.jsx(z,{tableData:s.data});default:return e.jsx("pre",{children:JSON.stringify(s.data,null,2)})}},[s]);return e.jsxs("div",{children:[e.jsx(M,{artifact:s}),a,e.jsx(E,{artifact:s})]})};function Z(){const{id:s}=D.useParams(),{data:a}=y(S(s)),r=T(s);return e.jsx(G,{artifact:r??a})}export{Z as component};
2
+ //# sourceMappingURL=artifact._id-C7yJhkKY.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifact._id-67V8kTg9.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/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\";\nimport { Typography } from \"@/components/ui/typography\";\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<Typography variant=\"h2\" className=\"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</Typography>\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","import { Typography } from \"@/components/ui/typography\";\n\nexport 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<Typography variant=\"bodyLarge\">\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</Typography>\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","import { Typography } from \"@/components/ui/typography\";\n\nexport type DetailProgressProps = {\n\tprogress: number;\n};\n\nexport const DetailProgress = ({ progress }: DetailProgressProps) => {\n\treturn (\n\t\t<Typography data-testid=\"progress-display\" variant=\"bodyLarge\">\n\t\t\tProgress: {progress}%\n\t\t</Typography>\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\">\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 { 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\";\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{mapArtifactHoc}\n\t\t\t<ArtifactDataDisplay artifact={artifact} />\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","Typography","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","ArtifactDetailPage","mapArtifactHoc","RouteComponent","id","Route","useParams","data","useSuspenseQuery","buildGetArtifactQuery","artifactWithMetadata","useGetArtifactFlowTaskRuns"],"mappings":"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"}
1
+ {"version":3,"file":"artifact._id-C7yJhkKY.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/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\";\nimport { Typography } from \"@/components/ui/typography\";\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<Typography variant=\"h2\" className=\"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</Typography>\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","import { Typography } from \"@/components/ui/typography\";\n\nexport 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<Typography variant=\"bodyLarge\">\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</Typography>\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","import { Typography } from \"@/components/ui/typography\";\n\nexport type DetailProgressProps = {\n\tprogress: number;\n};\n\nexport const DetailProgress = ({ progress }: DetailProgressProps) => {\n\treturn (\n\t\t<Typography data-testid=\"progress-display\" variant=\"bodyLarge\">\n\t\t\tProgress: {progress}%\n\t\t</Typography>\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\">\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 { 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\";\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{mapArtifactHoc}\n\t\t\t<ArtifactDataDisplay artifact={artifact} />\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","Typography","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","ArtifactDetailPage","mapArtifactHoc","RouteComponent","id","Route","useParams","data","useSuspenseQuery","buildGetArtifactQuery","artifactWithMetadata","useGetArtifactFlowTaskRuns"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{j as e,r as m,s as L,L as Ue}from"./vendor-tanstack-BK8oseNA.js";import{a as Be}from"./zod-DgSl2Nua.js";import{g as _,p as E,q as Qe,Z as Fe,c as ze}from"./vendor-forms-DxqqmhL5.js";import{S as B,a as Q,b as z,c as J,d as De,dh as Je,e as G,p as X,al as re,b5 as Ge,br as He,ac as D,ad as R,ae as O,af as M,ah as W,ag as V,ai as F,aj as N,be as Ye,ab as ie,bN as Re,I as Z,M as me,d1 as Oe,bm as Ke,bp as Xe,di as Ze,q as U,i as pe,aW as et,a_ as tt,ap as st,cO as xe,ak as ge,aq as je,aw as rt,ax as nt,ay as ve,az as Se,L as ot,C as at,o as lt,dj as ct}from"./index-BvSl3DKP.js";import{b as w,c as S,d as b,e as y,a as k,F as it}from"./form-CVSlEnl8.js";import{u as ut,S as dt}from"./use-stepper-C1wm66U2.js";import{U as ee,T as Me,A as ht}from"./automation-schema-ClcP8M93.js";import{S as mt,R as pt,a as We,b as be,c as ft}from"./index-DODEq1Pi.js";import{T as Ve}from"./textarea-BAtfAxtV.js";import{R as xt,a as gt}from"./radio-group-D0van45v.js";import{u as jt,C as vt,a as St,b as bt}from"./collapsible-DM-Ze5-Y.js";import{T as wt}from"./tags-input-Ci2JQ-k3.js";const we={"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"},yt=({index:t})=>{const s=_();return e.jsx(w,{control:s.control,name:`actions.${t}.type`,render:({field:n})=>e.jsxs(S,{children:[e.jsx(b,{children:"Action Type"}),e.jsx(y,{children:e.jsxs(B,{...n,onValueChange:r=>{n.onChange(r);const l=Ct({index:t,type:r});l&&s.setValue(l,ee)},children:[e.jsx(Q,{"aria-label":"select action",className:"w-full",children:e.jsx(z,{placeholder:"Select action"})}),e.jsx(J,{children:e.jsxs(De,{children:[e.jsx(Je,{children:"Actions"}),Object.keys(we).map(r=>e.jsx(G,{value:r,children:we[r]},r))]})})]})})]})})};function Ct({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 Nt=({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(S,{children:[e.jsx(b,{children:"State"}),e.jsx(y,{children:e.jsx(mt,{value:r.value,onValueChange:r.onChange})}),e.jsx(k,{})]})}),e.jsx(w,{control:s.control,name:`actions.${t}.name`,render:({field:r})=>e.jsxs(S,{children:[e.jsx(b,{children:"Name"}),e.jsx(y,{children:e.jsx(X,{type:"text",...r,value:r.value??"",placeholder:n?pt[n]:void 0})}),e.jsx(k,{})]})}),e.jsx(w,{control:s.control,name:`actions.${t}.message`,render:({field:r})=>e.jsxs(S,{children:[e.jsx(b,{children:"Message"}),e.jsx(y,{children:e.jsx(Ve,{...r,placeholder:"State changed by Automation <id>"})}),e.jsx(k,{})]})})]})},ae=({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(re,{variant:"bodySmall",className:"text-muted-foreground",children:s})},kt=4,te=({length:t=kt})=>Array.from({length:t},(s,n)=>e.jsx(Ge,{className:"mt-2 p-4 h-2 w-full"},n)),H={value:ee,name:"Infer Automation"},_t=(t,s)=>{if(s===H.value)return H.name;const n=t?.find(r=>r.id===s);if(n)return n.name},ye=({action:t,index:s})=>{const[n,r]=m.useState(""),l=_(),{data:o,isSuccess:a}=L(He()),h=m.useDeferredValue(n),p=m.useMemo(()=>o?o.filter(c=>c.name.toLowerCase().includes(h.toLowerCase())):[],[o,h]),u=H.name.toLowerCase().includes(h.toLowerCase());return e.jsx(w,{control:l.control,name:`actions.${s}.automation_id`,render:({field:c})=>{const f=_t(o,c.value);return e.jsxs(S,{className:"flex flex-col",children:[e.jsxs(b,{children:["Automation To ",t]}),e.jsxs(D,{children:[e.jsx(R,{selected:!!f,"aria-label":`Select Automation to ${t}`,children:f??"Select automation"}),e.jsxs(O,{children:[e.jsx(M,{value:n,onValueChange:r,placeholder:"Search for an automation..."}),e.jsx(W,{children:"No automation found"}),e.jsx(V,{children:e.jsxs(F,{children:[u&&e.jsx(N,{selected:c.value===H.value,onSelect:i=>{c.onChange(i),r("")},value:H.value,children:H.name}),a?p.map(i=>e.jsx(N,{selected:c.value===i.id,onSelect:d=>{c.onChange(d),r("")},value:i.id,children:i.name},i.id)):e.jsx(te,{})]})})]})]}),e.jsx(k,{})]})}})},Tt=(t={page:1,limit:100,sort:"NAME_ASC"})=>{const{data:s,status:n}=L(Ye(t)),r=new Set(s?.results.map(a=>a.flow_id)),{data:l,status:o}=L(ie({flows:{operator:"or_",id:{any_:Array.from(r)}},sort:"NAME_DESC",offset:0},{enabled:r.size>0}));return m.useMemo(()=>{if(l&&s){const a=new Map(l.map(d=>[d.id,d])),h=s.results.map(d=>({...d,flow:a.get(d.flow_id)})),{count:p,limit:u,pages:c,page:f}=s;return{data:{count:p,limit:u,pages:c,page:f,results:h},status:"success"}}return o==="error"||n==="error"?{data:void 0,status:"error"}:{data:void 0,status:"pending"}},[s,n,l,o])},q={value:ee,name:"Infer Deployment"},At=(t,s)=>{if(s===q.value)return q.name;const n=t?.find(r=>r.id===s);if(n)return e.jsx(Ie,{deploymentWithFlow:n})},le=({action:t,index:s})=>{const[n,r]=m.useState(""),l=_(),o=l.watch(`actions.${s}.type`),a=E({name:`actions.${s}.deployment_id`}),h=Re(n,500),{data:p}=Tt({page:1,sort:"NAME_ASC",deployments:{operator:"or_",flow_or_deployment_name:{like_:h}}}),u=q.name.toLowerCase().includes(n.toLowerCase()),c=p?.results;return e.jsxs(e.Fragment,{children:[e.jsx(w,{control:l.control,name:`actions.${s}.deployment_id`,render:({field:f})=>{const i=At(c,f.value);return e.jsxs(S,{className:"flex flex-col",children:[e.jsxs(b,{children:["Deployment To ",t]}),e.jsxs(D,{children:[e.jsx(R,{selected:!!i,"aria-label":`Select Deployment to ${t}`,children:i??"Select deployment"}),e.jsxs(O,{children:[e.jsx(M,{value:n,onValueChange:r,placeholder:"Search for an deployment..."}),e.jsx(W,{children:"No deployment found"}),e.jsx(V,{children:e.jsxs(F,{children:[u&&e.jsx(N,{selected:f.value===q.value,onSelect:f.onChange,value:q.value,children:q.name}),c?c.map(d=>e.jsx(N,{"aria-label":d.name,selected:f.value===d.id,onSelect:f.onChange,value:d.id,children:e.jsx(Ie,{deploymentWithFlow:d})},d.id)):e.jsx(te,{})]})})]})]}),e.jsx(k,{})]})}}),a!==q.value&&o==="run-deployment"&&e.jsx("div",{children:"TODO: Additional fields"})]})},Ie=({deploymentWithFlow:t})=>t.flow?e.jsxs("div",{className:"flex items-center gap-0.5",children:[e.jsx("div",{children:t.flow.name}),e.jsx(Z,{className:"size-4",id:"ChevronRight"}),e.jsx("div",{children:t.name})]}):t.name,Y={value:ee,name:"Infer Work Pool"},Et=(t,s)=>{if(s===Y.value)return Y.name;const n=t?.find(r=>r.id===s);if(n)return n.name},Ce=({action:t,index:s})=>{const[n,r]=m.useState(""),l=_(),{data:o,isSuccess:a}=L(me()),h=m.useDeferredValue(n),p=m.useMemo(()=>o?o.filter(c=>c.name.toLowerCase().includes(h.toLowerCase())):[],[o,h]),u=Y.name.toLowerCase().includes(h.toLowerCase());return e.jsx(w,{control:l.control,name:`actions.${s}.work_pool_id`,render:({field:c})=>{const f=Et(o,c.value);return e.jsxs(S,{className:"flex flex-col",children:[e.jsxs(b,{children:["Work Pool To ",t]}),e.jsxs(D,{children:[e.jsx(R,{selected:!!f,"aria-label":`Select Work Pool to ${t}`,children:f??"Select Work Pool"}),e.jsxs(O,{children:[e.jsx(M,{value:n,onValueChange:r,placeholder:"Search for a work pool..."}),e.jsx(W,{children:"No work pool found"}),e.jsx(V,{children:e.jsxs(F,{children:[u&&e.jsx(N,{selected:c.value===Y.value,onSelect:i=>{c.onChange(i),r("")},value:Y.value,children:Y.name}),a?p.map(i=>e.jsx(N,{selected:c.value===i.id,onSelect:d=>{c.onChange(d),r("")},value:i.id,children:i.name},i.id)):e.jsx(te,{})]})})]})]}),e.jsx(k,{})]})}})},K={value:ee,name:"Infer Work Queue"},Lt=(t,s)=>{if(s===K.value)return K.name;const n=t?.find(r=>r.id===s);if(n)return n.name},Ne=({action:t,index:s})=>{const[n,r]=m.useState(""),l=_(),{data:o}=L(Oe()),a=m.useDeferredValue(n),h=m.useMemo(()=>{if(!o)return;const u=new Map,c=o.filter(f=>f.name.toLowerCase().includes(a.toLowerCase()));for(const f of c){const{work_pool_name:i}=f;if(!i)throw new Error("'work_pool_name expected");u.set(i,[...u.get(i)??[],f])}return u},[o,a]),p=K.name.toLowerCase().includes(a.toLowerCase());return e.jsx(w,{control:l.control,name:`actions.${s}.work_queue_id`,render:({field:u})=>{const c=Lt(o,u.value);return e.jsxs(S,{className:"flex flex-col",children:[e.jsxs(b,{children:["Work Queue To ",t]}),e.jsxs(D,{children:[e.jsx(R,{selected:!!c,"aria-label":`Select Work Queue to ${t}`,children:c??"Select Work Queue"}),e.jsxs(O,{children:[e.jsx(M,{value:n,onValueChange:r,placeholder:"Search for a work queue..."}),e.jsx(W,{children:"No work queue found"}),e.jsx(V,{children:e.jsxs(F,{children:[p&&e.jsx(N,{selected:u.value===K.value,onSelect:f=>{u.onChange(f),r("")},value:K.value,children:K.name}),h?Array.from(h).map(([f,i])=>e.jsxs("div",{className:"border-b",children:[e.jsx(N,{disabled:!0,children:f}),i.map(d=>e.jsx(N,{selected:u.value===d.id,onSelect:g=>{u.onChange(g),r("")},value:d.id,children:d.name},d.id))]},f)):e.jsx(te,{})]})})]})]}),e.jsx(k,{})]})}})},Ft=({index:t})=>{const s=_(),[n,r]=m.useState(""),{data:l,isLoading:o}=L(Ke({offset:0,block_schemas:{operator:"and_",block_capabilities:{all_:["notify"]}}})),a=m.useMemo(()=>l?.map(d=>d.slug)??[],[l]),{data:h,isLoading:p}=L(Xe({block_types:a.length>0?{slug:{any_:a}}:void 0,include_secrets:!1,sort:"BLOCK_TYPE_AND_NAME_ASC",offset:0},{enabled:a.length>0})),u=o||p,c=m.useMemo(()=>!l||!h?[]:l.map(d=>({blockType:d,documents:h.filter(g=>g.block_type_id===d.id)})).filter(d=>d.documents.length>0),[l,h]),f=m.useMemo(()=>{if(!n)return c;const d=n.toLowerCase();return c.map(g=>({...g,documents:g.documents.filter(v=>v.name?.toLowerCase().includes(d))})).filter(g=>g.documents.length>0)},[c,n]),i=m.useCallback(d=>{if(!(!d||!h))return h.find(g=>g.id===d)},[h]);return e.jsxs("div",{className:"space-y-4",children:[e.jsx(w,{control:s.control,name:`actions.${t}.block_document_id`,render:({field:d})=>{const g=i(d.value);return e.jsxs(S,{className:"flex flex-col",children:[e.jsx(b,{children:"Block"}),e.jsxs(D,{children:[e.jsx(R,{selected:!!g,"aria-label":"Select notification block",children:g?g.name:"Select a notification block"}),e.jsxs(O,{children:[e.jsx(M,{value:n,onValueChange:r,placeholder:"Search for a block..."}),e.jsx(W,{children:"No notification blocks found"}),e.jsx(V,{children:u?e.jsx(te,{}):f.map(v=>e.jsx(F,{heading:v.blockType.name,children:v.documents.map(I=>e.jsx(N,{value:I.id,selected:d.value===I.id,onSelect:d.onChange,children:I.name},I.id))},v.blockType.id))})]})]}),e.jsx(k,{})]})}}),e.jsx(ke,{index:t,name:"subject",label:"Subject",placeholder:"Enter notification subject..."}),e.jsx(ke,{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(Z,{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"}),"."]})]})]})},ke=({index:t,name:s,label:n,placeholder:r,multiline:l=!1})=>{const o=_(),{validateTemplate:a}=Ze(),[h,p]=m.useState(null),[u,c]=m.useState(!1),f=o.watch(`actions.${t}.${s}`),i=Re(f,1e3);m.useEffect(()=>{(async()=>{if(!i||i.trim()===""){p(null);return}c(!0);try{const v=await a(i);v.valid?p(null):p(v.error)}catch{p(null)}finally{c(!1)}})()},[i,a]);const d=l?Ve:X;return e.jsx(w,{control:o.control,name:`actions.${t}.${s}`,render:({field:g})=>e.jsxs(S,{children:[e.jsxs(b,{className:"flex items-center gap-2",children:[n,u&&e.jsx(Z,{id:"Loader2",className:"size-3 animate-spin"})]}),e.jsx(y,{children:e.jsx(d,{...g,value:g.value??"",placeholder:r,className:h?"border-destructive":""})}),h&&e.jsx("p",{className:"text-sm text-destructive",children:h}),e.jsx(k,{})]})})},Dt=({index:t,onRemove:s})=>e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsxs(re,{variant:"body",className:"font-semibold",children:["Action ",t+1]}),e.jsx(U,{size:"icon","aria-label":`remove action ${t+1}`,onClick:s,variant:"outline",children:e.jsx(Z,{id:"Trash2",className:"size-4"})})]}),e.jsx(yt,{index:t}),e.jsx(Rt,{index:t}),e.jsx("hr",{className:"my-8"})]},t),Rt=({index:t})=>{switch(E({name:`actions.${t}.type`})){case"change-flow-run-state":return e.jsx(Nt,{index:t});case"run-deployment":return e.jsx(le,{action:"Run",index:t});case"pause-deployment":return e.jsx(le,{action:"Pause",index:t});case"resume-deployment":return e.jsx(le,{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(Ce,{action:"Pause",index:t});case"resume-work-pool":return e.jsx(Ce,{action:"Resume",index:t});case"pause-automation":return e.jsx(ye,{action:"Pause",index:t});case"resume-automation":return e.jsx(ye,{action:"Resume",index:t});case"send-notification":return e.jsx(Ft,{index:t});case"cancel-flow-run":return e.jsx(ae,{action:"Cancel"});case"suspend-flow-run":return e.jsx(ae,{action:"Suspend"});case"resume-flow-run":return e.jsx(ae,{action:"Resume"});default:return null}},Ot=()=>{const t=_(),{fields:s,append:n,remove:r}=Qe({control:t.control,name:"actions",shouldUnregister:!1,rules:{minLength:1}});return e.jsxs("div",{children:[s.map(({id:l},o)=>e.jsx(Dt,{index:o,onRemove:()=>r(o)},l)),e.jsxs(U,{type:"button",variant:"outline",onClick:()=>n({type:"cancel-flow-run"}),children:[e.jsx(Z,{id:"Plus",className:"mr-2 size-4"})," Add Action"]})]})},Mt=()=>{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(S,{children:[e.jsx(b,{children:"Automation Name"}),e.jsx(y,{children:e.jsx(X,{type:"text",...s,value:s.value??""})}),e.jsx(k,{})]})}),e.jsx(w,{control:t.control,name:"description",render:({field:s})=>e.jsxs(S,{children:[e.jsx(b,{children:"Description (Optional)"}),e.jsx(y,{children:e.jsx(X,{type:"text",...s,value:s.value??""})}),e.jsx(k,{})]})})]})},Wt=[{value:"Reactive",label:"Observe"},{value:"Proactive",label:"Don't observe"}],Vt=30,It=()=>{const t=_(),s=n=>{const r=t.getValues("trigger.posture");if(t.setValue("trigger.posture",n),r==="Reactive"&&n==="Proactive"){const l=t.getValues("trigger.expect")??[];t.setValue("trigger.after",l),t.setValue("trigger.expect",[]),t.getValues("trigger.within")===0&&t.setValue("trigger.within",Vt)}else if(r==="Proactive"&&n==="Reactive"){const l=t.getValues("trigger.after")??[];t.setValue("trigger.expect",l),t.setValue("trigger.after",[])}};return e.jsx(w,{control:t.control,name:"trigger.posture",render:({field:n})=>e.jsxs(S,{children:[e.jsx(b,{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(gt,{value:r.value,id:`custom-${r.value}`}),e.jsx(pe,{htmlFor:`custom-${r.value}`,children:r.label})]},r.value))})})]})})},ue=60,de=3600,he=86400,Pt=[{label:"Seconds",value:1},{label:"Minutes",value:ue},{label:"Hours",value:de},{label:"Days",value:he}];function $t(t){return t>0&&t%he===0?he:t>0&&t%de===0?de:t>0&&t%ue===0?ue:1}function se({value:t,onChange:s,min:n=0,max:r,className:l,disabled:o=!1}){const[a,h]=m.useState(()=>$t(t)),p=m.useMemo(()=>Pt.filter(i=>i.value>=n),[n]),u=m.useMemo(()=>t/a,[t,a]),c=m.useCallback(i=>{let d=i*a;r!==void 0&&d>r&&(d=r),s(d)},[s,a,r]),f=m.useCallback(i=>{const d=Number(i),g=a;h(d);let v=t/g*d;r!==void 0&&v>r&&(v=r),s(v)},[s,a,t,r]);return m.useEffect(()=>{if(!p.some(i=>i.value===a)){const i=p[0];i&&h(i.value)}},[p,a]),e.jsxs("div",{className:et("grid grid-cols-[1fr_7rem] gap-2 w-full",l),children:[e.jsx(X,{type:"number",min:0,value:u,onChange:i=>c(Number(i.target.value)),disabled:o,"aria-label":"Duration quantity"}),e.jsxs(B,{value:String(a),onValueChange:f,disabled:o,children:[e.jsx(Q,{"aria-label":"Duration unit",children:e.jsx(z,{})}),e.jsx(J,{children:p.map(i=>e.jsx(G,{value:String(i.value),children:i.label},i.value))})]})]})}const qt=2,Ut=40;function _e({selectedResourceIds:t,onToggleResource:s,emptyMessage:n="All resources"}){const[r,l]=m.useState(""),o=m.useDeferredValue(r),[a,h]=m.useState(0),p=m.useRef(null),u=m.useRef(null);m.useEffect(()=>{const x=p.current;if(!x)return;const j=new ResizeObserver(C=>{for(const T of C)h(T.contentRect.width)});return j.observe(x),()=>j.disconnect()},[]);const{resourceOptions:c}=jt(),f=m.useMemo(()=>{const x=[{label:"Automations",options:[]},{label:"Blocks",options:[]},{label:"Deployments",options:[]},{label:"Flows",options:[]},{label:"Work Pools",options:[]},{label:"Work Queues",options:[]}];for(const j of c){const C={label:j.name,value:j.resourceId};switch(j.type){case"automation":x[0].options.push(C);break;case"block":x[1].options.push(C);break;case"deployment":x[2].options.push(C);break;case"flow":x[3].options.push(C);break;case"work-pool":x[4].options.push(C);break;case"work-queue":x[5].options.push(C);break}}return x.map(j=>({...j,options:j.options.sort((C,T)=>C.label.localeCompare(T.label))})).filter(j=>j.options.length>0)},[c]),i=m.useMemo(()=>{if(!o)return f;const x=o.toLowerCase();return f.map(j=>({...j,options:j.options.filter(C=>C.label.toLowerCase().includes(x)||C.value.toLowerCase().includes(x))})).filter(j=>j.options.length>0)},[f,o]),d=m.useMemo(()=>{if(!o.trim()||!o.includes("."))return!1;const x=o.toLowerCase();return!c.some(j=>j.resourceId.toLowerCase()===x)},[o,c]),g=m.useCallback(x=>{const j=u.current;if(!j||a===0||x.length===0)return Math.min(x.length,qt);const C=x.length>1?a-Ut:a;let T=0;for(let A=0;A<x.length&&(j.textContent=x.slice(0,A+1).join(", "),j.offsetWidth<=C);A++)T=A+1;return T===x.length?x.length:Math.max(1,T)},[a]),v=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:n});const x=t.map(A=>c.find(qe=>qe.resourceId===A)?.name??A),j=g(x),C=x.slice(0,j),T=x.length-j;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:C.join(", ")})}),T>0&&e.jsxs(re,{variant:"bodySmall",className:"shrink-0",children:["+ ",T]}),e.jsx("div",{ref:u,className:"absolute invisible whitespace-nowrap","aria-hidden":"true"})]})},I=x=>{s(x),l("")};return e.jsxs(D,{children:[e.jsx(R,{selected:t.length>0,children:v()}),e.jsxs(O,{children:[e.jsx(M,{value:r,onValueChange:l,placeholder:"Search resources..."}),e.jsxs(V,{children:[e.jsx(W,{children:"No resources found"}),d&&e.jsx(F,{children:e.jsxs(N,{selected:t.includes(o),onSelect:()=>I(o),closeOnSelect:!1,value:o,children:['Add "',o,'"']},"__custom__")}),i.map(x=>e.jsx(F,{heading:x.label,children:x.options.map(j=>e.jsx(N,{selected:t.includes(j.value),onSelect:()=>I(j.value),closeOnSelect:!1,value:j.value,children:j.label},j.value))},x.label))]})]})]})}function Bt(t){const s=new Map;for(const n of t){const r=n.split(".");for(let l=1;l<r.length;l++){const o=r.slice(0,l).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 Te({selectedEvents:t,onToggleEvent:s,emptyMessage:n="All events"}){const[r,l]=m.useState(""),o=m.useDeferredValue(r),[a]=m.useState(()=>({since:new Date(Date.now()-10080*60*1e3).toISOString(),until:new Date().toISOString()})),{data:h=[]}=L(tt("event",{filter:{occurred:a,order:"DESC"},time_unit:"day",time_interval:1})),p=m.useMemo(()=>{const d=h.map(v=>v.label),g=Bt(d);return[...d,...g].sort((v,I)=>v.localeCompare(I))},[h]),u=m.useMemo(()=>{if(!o)return p;const d=o.toLowerCase();return p.filter(g=>g.toLowerCase().includes(d))},[p,o]),c=m.useMemo(()=>{if(!o.trim())return!1;const d=o.toLowerCase();return!p.some(g=>g.toLowerCase()===d)},[o,p]),f=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:n});const d=t.slice(0,2),g=t.length-d.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:d.join(", ")}),g>0&&e.jsxs("span",{className:"shrink-0 text-muted-foreground",children:["+",g]})]})},i=d=>{s(d),l("")};return e.jsxs(D,{children:[e.jsx(R,{selected:t.length>0,children:f()}),e.jsxs(O,{children:[e.jsx(M,{value:r,onValueChange:l,placeholder:"Search events..."}),e.jsxs(V,{children:[e.jsx(W,{children:"No events found"}),e.jsxs(F,{children:[c&&e.jsxs(N,{selected:t.includes(o),onSelect:()=>i(o),closeOnSelect:!1,value:o,children:['Add "',o,'"']},"__custom__"),u.map(d=>e.jsx(N,{selected:t.includes(d),onSelect:()=>i(d),closeOnSelect:!1,value:d,children:d},d))]})]})]})]})}const Qt=()=>{const t=_(),s=E({name:"trigger.posture"});return e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex items-end gap-4",children:e.jsx(It,{})}),e.jsx(w,{control:t.control,name:"trigger.expect",render:({field:n})=>{const r=n.value??[];return e.jsxs(S,{children:[e.jsx(b,{children:"Any event matching"}),e.jsx(y,{children:e.jsx(Te,{selectedEvents:r,onToggleEvent:l=>{const o=r.includes(l)?r.filter(a=>a!==l):[...r,l];n.onChange(o)}})}),e.jsx(k,{})]})}}),e.jsx(w,{control:t.control,name:"trigger.match",render:({field:n})=>{const r=n.value?.["prefect.resource.id"]??[],l=Array.isArray(r)?r:[r];return e.jsxs(S,{children:[e.jsx(b,{children:"From the following resources"}),e.jsx(y,{children:e.jsx(_e,{selectedResourceIds:l,onToggleResource:o=>{const a=l.includes(o)?l.filter(h=>h!==o):[...l,o];a.length>0?n.onChange({"prefect.resource.id":a}):n.onChange({})}})}),e.jsx(k,{})]})}}),e.jsxs("div",{className:"flex items-end gap-2",children:[e.jsx(w,{control:t.control,name:"trigger.threshold",render:({field:n})=>e.jsxs(S,{className:"w-20",children:[e.jsx(y,{children:e.jsx(X,{type:"number",min:1,...n,onChange:r=>n.onChange(Number(r.target.value))})}),e.jsx(k,{})]})}),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(S,{children:[e.jsx(y,{children:e.jsx(se,{value:n.value??0,onChange:n.onChange,min:s==="Proactive"?10:0})}),e.jsx(k,{})]})})]}),e.jsxs(vt,{children:[e.jsxs(St,{className:"flex items-center gap-2 text-sm font-medium",children:[e.jsx(st,{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(S,{children:[e.jsx(b,{children:"Evaluate trigger only after observing an event matching"}),e.jsx(y,{children:e.jsx(Te,{selectedEvents:r,onToggleEvent:l=>{const o=r.includes(l)?r.filter(a=>a!==l):[...r,l];n.onChange(o)}})}),e.jsx(k,{})]})}}),e.jsx(w,{control:t.control,name:"trigger.match_related",render:({field:n})=>{const r=n.value?.["prefect.resource.id"]??[],l=Array.isArray(r)?r:[r];return e.jsxs(S,{children:[e.jsx(b,{children:"Filter for events related to"}),e.jsx(y,{children:e.jsx(_e,{selectedResourceIds:l,onToggleResource:o=>{const a=l.includes(o)?l.filter(h=>h!==o):[...l,o];a.length>0?n.onChange({"prefect.resource.id":a}):n.onChange({})}})}),e.jsx(k,{})]})}})]})]})]})},zt=2,Jt=40,Gt=({selectedDeploymentIds:t,onSelectDeploymentIds:s})=>{const[n,r]=m.useState(""),l=m.useDeferredValue(n),[o,a]=m.useState(0),h=m.useRef(null),p=m.useRef(null),u=m.useMemo(()=>new Set(t),[t]);m.useEffect(()=>{const x=h.current;if(!x)return;const j=new ResizeObserver(C=>{for(const T of C)a(T.contentRect.width)});return j.observe(x),()=>j.disconnect()},[]);const{data:c=[]}=L(xe({deployments:l?{operator:"and_",name:{like_:l}}:void 0,limit:100,offset:0,sort:"NAME_ASC"})),{data:f=[]}=L(xe({deployments:u.size>0?{operator:"and_",id:{any_:t}}:void 0,limit:u.size||1,offset:0,sort:"NAME_ASC"},{enabled:u.size>0})),i=x=>{const j=new Set(u);u.has(x)?j.delete(x):j.add(x),s(Array.from(j))},d=()=>{s([])},g=m.useCallback(x=>{const j=p.current;if(!j||o===0||x.length===0)return Math.min(x.length,zt);const C=x.length>1?o-Jt:o;let T=0;for(let A=0;A<x.length&&(j.textContent=x.slice(0,A+1).join(", "),j.offsetWidth<=C);A++)T=A+1;return T===x.length?x.length:Math.max(1,T)},[o]),v=()=>{if(u.size===0)return"All deployments";const x=f.filter(A=>u.has(A.id)).map(A=>A.name),j=g(x),C=x.slice(0,j),T=x.length-j;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:C.join(", ")})}),T>0&&e.jsxs(re,{variant:"bodySmall",className:"shrink-0",children:["+ ",T]}),e.jsx("div",{ref:p,className:"absolute invisible whitespace-nowrap","aria-hidden":"true"})]})},I=m.useMemo(()=>c.filter(x=>!l||x.name.toLowerCase().includes(l.toLowerCase())),[c,l]);return e.jsxs(D,{children:[e.jsx(R,{"aria-label":"Select deployments",selected:u.size===0,children:v()}),e.jsxs(O,{children:[e.jsx(M,{value:n,onValueChange:r,placeholder:"Search deployments..."}),e.jsxs(V,{children:[e.jsx(W,{children:"No deployments found"}),e.jsxs(F,{children:[e.jsxs(N,{"aria-label":"All deployments",onSelect:d,closeOnSelect:!1,value:"__all__",children:[e.jsx(ge,{checked:u.size===0}),"All deployments"]}),I.map(x=>e.jsxs(N,{"aria-label":x.name,onSelect:()=>i(x.id),closeOnSelect:!1,value:x.id,children:[e.jsx(ge,{checked:u.has(x.id)}),x.name]},x.id))]})]})]})]})},Ht=[{value:"Reactive",label:"Enters"},{value:"Proactive",label:"Stays in"}],Yt=30,ne=()=>{const t=_();return e.jsx(w,{control:t.control,name:"trigger.posture",render:({field:s})=>e.jsx(S,{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 l=t.getValues("trigger.expect")??[];t.setValue("trigger.after",l),t.setValue("trigger.expect",[]),t.getValues("trigger.within")===0&&t.setValue("trigger.within",Yt)}else if(r==="Proactive"&&n==="Reactive"){const l=t.getValues("trigger.after")??[];t.setValue("trigger.expect",l),t.setValue("trigger.after",[])}},children:[e.jsx(Q,{"aria-label":"select posture",className:"w-[160px]",children:e.jsx(z,{placeholder:"Select posture"})}),e.jsx(J,{children:Ht.map(n=>e.jsx(G,{value:n.value,children:n.label},n.value))})]})})})})},Kt=86400,Xt=30*Kt,Zt=[{value:"prefect.deployment.ready",label:"Ready"},{value:"prefect.deployment.not-ready",label:"Not Ready"},{value:"prefect.deployment.disabled",label:"Disabled"}],Pe="prefect.deployment.",$e="prefect.deployment.*",es=t=>t?(Array.isArray(t)?t:[t]).filter(n=>n!==$e).map(n=>n.replace(Pe,"")):[],ts=t=>t.length===0?$e:t.map(s=>`${Pe}${s}`),ss=()=>{const t=_(),s=E({name:"trigger.posture"}),n=E({name:"trigger.match"}),r=m.useMemo(()=>{const a=n?.["prefect.resource.id"];return es(a)},[n]),l=m.useCallback(o=>{const a=t.getValues("trigger.match")??{};t.setValue("trigger.match",{...a,"prefect.resource.id":ts(o)})},[t]);return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(S,{children:[e.jsx(b,{children:"Deployments"}),e.jsx(y,{children:e.jsx(Gt,{selectedDeploymentIds:r,onSelectDeploymentIds:l})})]}),e.jsxs(S,{children:[e.jsx(b,{children:"Deployment"}),e.jsxs("div",{className:"grid gap-2",style:{gridTemplateColumns:"10rem 1fr"},children:[e.jsx(ne,{}),e.jsx(w,{control:t.control,name:"trigger.expect",render:({field:o})=>{const a=o.value?.[0];return e.jsxs(B,{value:a??"",onValueChange:h=>o.onChange([h]),children:[e.jsx(Q,{className:"w-full",children:e.jsx(z,{placeholder:"Select status"})}),e.jsx(J,{children:Zt.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(S,{children:[e.jsx(b,{children:"Within"}),e.jsx(y,{children:e.jsx(se,{value:o.value??0,onChange:o.onChange,min:10,max:Xt})}),e.jsx(k,{})]})})]})},rs=2;function ns({selectedFlowIds:t,onToggleFlow:s,emptyMessage:n="Any flow"}){const[r,l]=m.useState(""),o=m.useDeferredValue(r),{data:a=[]}=L(ie({flows:o?{operator:"and_",name:{like_:o}}:void 0,limit:100,offset:0,sort:"NAME_ASC"})),{data:h=[]}=L(ie({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(()=>a.filter(c=>!o||c.name.toLowerCase().includes(o.toLowerCase())),[a,o]),u=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:n});const f=h.filter(d=>t.includes(d.id)).map(d=>d.name).slice(0,rs),i=t.length-f.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:f.join(", ")}),i>0&&e.jsxs("span",{className:"shrink-0 text-muted-foreground",children:["+",i]})]})};return e.jsxs(D,{children:[e.jsx(R,{selected:t.length>0,children:u()}),e.jsxs(O,{children:[e.jsx(M,{value:r,onValueChange:l,placeholder:"Search flows..."}),e.jsxs(V,{children:[e.jsx(W,{children:"No flows found"}),e.jsx(F,{children:p.map(c=>e.jsx(N,{selected:t.includes(c.id),onSelect:()=>{s(c.id),l("")},closeOnSelect:!1,value:c.id,children:c.name},c.id))})]})]})]})}const P="All run states",$="All except scheduled";function os(t){return t.length!==We.length-1?!1:!t.includes("Scheduled")}function as({selectedStates:t,onStateChange:s,emptyMessage:n="Any state"}){const[r,l]=m.useState(""),o=m.useDeferredValue(r),a=m.useMemo(()=>t.length===0?P:os(t)?$:t,[t]),h=m.useMemo(()=>{const i=o.toLowerCase();return We.filter(d=>d.toLowerCase().includes(i))},[o]),p=m.useMemo(()=>{const i=o.toLowerCase();return P.toLowerCase().includes(i)||$.toLowerCase().includes(i)},[o]),u=i=>{i===P?s([]):i===$&&s([...ft]),l("")},c=i=>{t.includes(i)?s(t.filter(d=>d!==i)):s([...t,i]),l("")},f=()=>a===P?e.jsx("span",{className:"text-muted-foreground",children:n}):a===$?e.jsx("span",{children:"All except scheduled"}):e.jsx("div",{className:"flex flex-wrap gap-1",children:t.map(i=>e.jsx(je,{type:be[i],name:i,className:"cursor-pointer"},i))});return e.jsxs(D,{children:[e.jsx(R,{selected:t.length>0,children:f()}),e.jsxs(O,{children:[e.jsx(M,{value:r,onValueChange:l,placeholder:"Search states..."}),e.jsx(W,{children:"No state found"}),e.jsx(V,{children:e.jsxs(F,{children:[p&&e.jsxs(e.Fragment,{children:[e.jsx(N,{selected:a===P,onSelect:()=>u(P),value:P,closeOnSelect:!1,children:"All run states"},P),e.jsx(N,{selected:a===$,onSelect:()=>u($),value:$,closeOnSelect:!1,children:"All except scheduled"},$)]}),h.map(i=>e.jsx(N,{selected:t.includes(i),onSelect:()=>c(i),value:i,closeOnSelect:!1,children:e.jsx(je,{type:be[i],name:i})},i))]})})]})]})}function ls(t){return t.length===0?["prefect.flow-run.*"]:t.map(s=>`prefect.flow-run.${s}`)}function cs(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 is(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 us(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 Ae(t,s){const n=t.map(a=>`prefect.flow.${a}`),r=s.map(a=>`prefect.tag.${a}`);if(n.length===0&&r.length===0)return{};const l=n.length>0?"flow":"tag",o=[...n,...r];return{"prefect.resource.role":l,"prefect.resource.id":o}}const ds=()=>{const t=_(),s=E({name:"trigger.posture"}),n=s==="Proactive"?"trigger.after":"trigger.expect",r=E({name:"trigger.match_related"}),l=is(r),o=us(r),a=u=>{const c=l,f=c.includes(u)?c.filter(d=>d!==u):[...c,u],i=f.length>0?[]:o;t.setValue("trigger.match_related",Ae(f,i))},h=u=>{t.setValue("trigger.match_related",Ae(l,u))},p=l.length===0;return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(S,{children:[e.jsx(b,{children:"Flows"}),e.jsx(y,{children:e.jsx(ns,{selectedFlowIds:l,onToggleFlow:a,emptyMessage:"All flows"})})]}),p&&e.jsxs(S,{children:[e.jsx(b,{children:"Flow Run Tags"}),e.jsx(y,{children:e.jsx(wt,{value:o,onChange:h,placeholder:"All tags"})})]}),e.jsxs(S,{children:[e.jsx(b,{children:"Flow Run"}),e.jsxs("div",{className:"grid grid-cols-[10rem_1fr] gap-2",children:[e.jsx(ne,{}),e.jsx(w,{control:t.control,name:n,render:({field:u})=>{const c=u.value??[],f=cs(c);return e.jsx(y,{children:e.jsx(as,{selectedStates:f,onStateChange:i=>{u.onChange(ls(i))},emptyMessage:"Any state"})})}})]})]}),s==="Proactive"&&e.jsx(w,{control:t.control,name:"trigger.within",render:({field:u})=>e.jsxs(S,{children:[e.jsx(b,{children:"For"}),e.jsx(y,{children:e.jsx(se,{value:u.value??0,onChange:u.onChange,min:0})}),e.jsx(k,{})]})})]})},hs=({defaultValue:t="Form",value:s,onValueChange:n,formContent:r,jsonContent:l})=>{const o=s!==void 0?{value:s,onValueChange:n}:{defaultValue:t};return e.jsxs(rt,{...o,children:[e.jsx("div",{className:"flex justify-center",children:e.jsxs(nt,{children:[e.jsx(ve,{value:"Form",children:"Form"}),e.jsx(ve,{value:"JSON",children:"JSON"})]})}),e.jsx(Se,{value:"Form",children:r}),e.jsx(Se,{value:"JSON",children:l})]})},ms=({value:t,onChange:s,error:n})=>{const[r,l]=m.useState(null),o=()=>{try{const h=JSON.parse(t);s(JSON.stringify(h,null,2))}catch{}},a=h=>{try{const p=JSON.parse(h);return Me.parse(p),l(null),!0}catch(p){return p instanceof SyntaxError?l("Invalid JSON syntax"):p instanceof Fe&&l(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(ot,{value:t,onChange:s,onBlur:()=>a(t)}),(r||n)&&e.jsx("p",{className:"text-sm text-destructive",children:r||n})]})},Ee={"deployment-status":"Deployment status","flow-run-state":"Flow run state","work-pool-status":"Work pool status","work-queue-status":"Work queue status",custom:"Custom"},ps=({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(Q,{id:"automations-trigger-template-select",className:"w-full",children:e.jsx(z,{placeholder:"Select template"})}),e.jsx(J,{children:e.jsx(De,{children:Object.keys(Ee).map(n=>e.jsx(G,{value:n,children:Ee[n]},n))})})]})]}),fs=({onTemplateChange:t})=>{const s=_();return e.jsx(w,{control:s.control,name:"triggerTemplate",render:({field:n})=>e.jsx(S,{children:e.jsx(y,{children:e.jsx(ps,{value:n.value,onValueChange:r=>{n.onChange(r),t?.(r)}})})})})},xs={type:"event",posture:"Reactive",threshold:1,within:0},gs=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 xs}};function js({selectedWorkPoolIds:t,onToggleWorkPool:s,emptyMessage:n="All work pools"}){const[r,l]=m.useState(""),o=m.useDeferredValue(r),{data:a=[]}=L(me()),h=m.useMemo(()=>a.filter(c=>c.status!==null).filter(c=>!o||c.name.toLowerCase().includes(o.toLowerCase())),[a,o]),p=m.useMemo(()=>a.filter(c=>t.includes(c.id)),[a,t]),u=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:n});const c=p.map(f=>f.name);return e.jsx("span",{className:"truncate min-w-0 text-left",children:c.join(", ")})};return e.jsxs(D,{children:[e.jsx(R,{selected:t.length>0,children:u()}),e.jsxs(O,{children:[e.jsx(M,{value:r,onValueChange:l,placeholder:"Search work pools..."}),e.jsxs(V,{children:[e.jsx(W,{children:"No work pools found"}),e.jsx(F,{children:h.map(c=>e.jsx(N,{selected:t.includes(c.id),onSelect:()=>{s(c.id),l("")},closeOnSelect:!1,value:c.id,children:c.name},c.id))})]})]})]})}const oe=[{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 Le(t){if(!t||t.length===0)return"not_ready";for(const s of oe)if(s.events.some(n=>t.includes(n)))return s.value;return"not_ready"}function vs(t){const s=oe.find(n=>n.value===t);return s?[...s.events]:[]}function Ss(t){return oe.filter(s=>s.value!==t).flatMap(s=>[...s.events])}function bs(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 ws(t){return t.length===0?{"prefect.resource.id":"prefect.work-pool.*"}:{"prefect.resource.id":t.map(s=>`prefect.work-pool.${s}`)}}const ys=()=>{const t=_(),s=E({name:"trigger.posture"}),n=E({name:"trigger.expect"}),r=E({name:"trigger.after"}),l=Le(s==="Proactive"?r:n),o=a=>{const h=vs(a),p=Ss(a);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:l,onValueChange:o,children:[e.jsx(Q,{"aria-label":"select status",className:"min-w-0 flex-1",children:e.jsx(z,{placeholder:"Select status"})}),e.jsx(J,{children:oe.map(a=>e.jsx(G,{value:a.value,children:a.label},a.value))})]})},Cs=()=>{const t=_(),s=E({name:"trigger.posture"}),n=E({name:"trigger.match"}),r=bs(n),l=o=>{const a=r,h=a.includes(o)?a.filter(p=>p!==o):[...a,o];t.setValue("trigger.match",ws(h))};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(S,{children:[e.jsx(b,{children:"Work Pools"}),e.jsx(y,{children:e.jsx(js,{selectedWorkPoolIds:r,onToggleWorkPool:l,emptyMessage:"All work pools"})})]}),e.jsxs(S,{children:[e.jsx(b,{children:"Work Pool"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ne,{}),e.jsx(ys,{})]})]}),s==="Proactive"&&e.jsx(w,{control:t.control,name:"trigger.within",render:({field:o})=>e.jsxs(S,{children:[e.jsx(b,{children:"For"}),e.jsx(y,{children:e.jsx(se,{value:o.value??30,onChange:o.onChange,min:0})}),e.jsx(k,{})]})})]})};function Ns({selectedWorkPoolIds:t,onToggleWorkPool:s,emptyMessage:n="All work pools"}){const[r,l]=m.useState(""),o=m.useDeferredValue(r),{data:a=[]}=L(me({limit:100,offset:0})),h=m.useMemo(()=>a.filter(u=>u.status?o?u.name.toLowerCase().includes(o.toLowerCase()):!0:!1),[a,o]),p=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:n});const u=a.filter(c=>t.includes(c.id)).map(c=>c.name);return e.jsx("span",{className:"truncate min-w-0 text-left",children:u.join(", ")})};return e.jsxs(D,{children:[e.jsx(R,{selected:t.length>0,children:p()}),e.jsxs(O,{children:[e.jsx(M,{value:r,onValueChange:l,placeholder:"Search work pools..."}),e.jsxs(V,{children:[e.jsx(W,{children:"No work pools found"}),e.jsx(F,{children:h.map(u=>e.jsx(N,{selected:t.includes(u.id),onSelect:()=>{s(u.id),l("")},closeOnSelect:!1,value:u.id,children:u.name},u.id))})]})]})]})}function ks({selectedWorkQueueIds:t,onToggleWorkQueue:s,workPoolIds:n=[],emptyMessage:r="All work queues"}){const[l,o]=m.useState(""),a=m.useDeferredValue(l),{data:h=[]}=L(Oe({limit:100,offset:0})),p=m.useMemo(()=>h.filter(f=>n.length>0&&(!f.work_pool_id||!n.includes(f.work_pool_id))?!1:a?f.name.toLowerCase().includes(a.toLowerCase()):!0),[h,n,a]),u=m.useMemo(()=>{const f={};for(const d of p){const g=d.work_pool_name??"Unknown";f[g]||(f[g]=[]),f[g].push(d)}return Object.keys(f).sort((d,g)=>d.localeCompare(g)).map(d=>({poolName:d,queues:f[d].sort((g,v)=>g.name.localeCompare(v.name))}))},[p]),c=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:r});const f=h.filter(i=>t.includes(i.id)).map(i=>i.name);return e.jsx("span",{className:"truncate min-w-0 text-left",children:f.join(", ")})};return e.jsxs(D,{children:[e.jsx(R,{selected:t.length>0,children:c()}),e.jsxs(O,{children:[e.jsx(M,{value:l,onValueChange:o,placeholder:"Search work queues..."}),e.jsxs(V,{children:[e.jsx(W,{children:"No work queues found"}),u.map(f=>e.jsx(F,{heading:f.poolName,children:f.queues.map(i=>e.jsx(N,{selected:t.includes(i.id),onSelect:()=>{s(i.id),o("")},closeOnSelect:!1,value:i.id,children:i.name},i.id))},f.poolName))]})]})]})}const _s=[{value:"prefect.work-queue.ready",label:"Ready"},{value:"prefect.work-queue.not-ready",label:"Not Ready"},{value:"prefect.work-queue.paused",label:"Paused"}];function Ts(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 As(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 Es(t){return t.length===0?{}:{"prefect.resource.role":"work-pool","prefect.resource.id":t.map(n=>`prefect.work-pool.${n}`)}}function Ls(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=E({name:"trigger.posture"}),n=E({name:"trigger.match_related"}),r=E({name:"trigger.match"}),l=Ts(n),o=As(r),a=p=>{const u=l,c=u.includes(p)?u.filter(f=>f!==p):[...u,p];t.setValue("trigger.match_related",Es(c))},h=p=>{const u=o,c=u.includes(p)?u.filter(f=>f!==p):[...u,p];t.setValue("trigger.match",Ls(c))};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(S,{children:[e.jsx(b,{children:"Work Pools"}),e.jsx(y,{children:e.jsx(Ns,{selectedWorkPoolIds:l,onToggleWorkPool:a,emptyMessage:"All work pools"})})]}),e.jsxs(S,{children:[e.jsx(b,{children:"Work Queues"}),e.jsx(y,{children:e.jsx(ks,{selectedWorkQueueIds:o,onToggleWorkQueue:h,workPoolIds:l,emptyMessage:"All work queues"})})]}),e.jsxs(S,{children:[e.jsx(b,{children:"Work Queue"}),e.jsxs("div",{className:"grid grid-cols-[10rem_1fr] gap-2",children:[e.jsx(ne,{}),e.jsx(w,{control:t.control,name:"trigger.expect",render:({field:p})=>{const u=p.value?.[0];return e.jsx(y,{children:e.jsxs(B,{value:u??"",onValueChange:c=>p.onChange([c]),children:[e.jsx(Q,{className:"w-full",children:e.jsx(z,{placeholder:"Select status"})}),e.jsx(J,{children:_s.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(S,{children:[e.jsx(b,{children:"For"}),e.jsx(y,{children:e.jsx(se,{value:p.value??0,onChange:p.onChange,min:0})}),e.jsx(k,{})]})})]})},Ds=()=>{const t=_(),s=t.watch("triggerTemplate"),n=t.watch("trigger"),[r,l]=m.useState("Form"),[o,a]=m.useState(""),[h,p]=m.useState(void 0),u=m.useCallback(()=>JSON.stringify(n,null,2),[n]);m.useEffect(()=>{r==="Form"&&a(u())},[r,u]);const c=m.useCallback(g=>{try{const v=JSON.parse(g);return{valid:!0,trigger:Me.parse(v)}}catch(v){return v instanceof SyntaxError?{valid:!1,error:"Invalid JSON syntax"}:v instanceof Fe?{valid:!1,error:v.errors[0]?.message??"Invalid trigger configuration"}:{valid:!1,error:"Unknown error"}}},[]),f=m.useCallback(g=>{if(r!==g){if(g==="Form"){const v=c(o);if(!v.valid){p(v.error);return}v.trigger&&t.setValue("trigger",v.trigger),p(void 0)}else a(u()),p(void 0);l(g)}},[r,o,c,t,u]),i=m.useCallback(g=>{a(g);const v=c(g);v.valid&&v.trigger&&(t.setValue("trigger",v.trigger),p(void 0))},[c,t]),d=g=>{const v=gs(g);t.setValue("trigger",v),a(JSON.stringify(v,null,2)),p(void 0)};return e.jsxs("div",{className:"space-y-6",children:[e.jsx(fs,{onTemplateChange:d}),s&&e.jsx(hs,{value:r,onValueChange:f,formContent:e.jsx(Rs,{template:s}),jsonContent:e.jsx(ms,{value:o,onChange:i,error:h})})]})},Rs=({template:t})=>{switch(t){case"flow-run-state":return e.jsx(ds,{});case"deployment-status":return e.jsx(ss,{});case"work-pool-status":return e.jsx(Cs,{});case"work-queue-status":return e.jsx(Fs,{});case"custom":return e.jsx(Qt,{});default:return null}},ce=["Trigger","Actions","Details"],Os={actions:[{type:void 0}],trigger:{type:"event",posture:"Reactive",threshold:1,within:0}},Gs=({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]),a=ut(ce.length,0,o),h=ze({resolver:Be(ht),defaultValues:{...Os,...t}}),p=ce[a.currentStep],u={Trigger:{render:()=>e.jsx(Ds,{}),trigger:()=>h.trigger("trigger")},Actions:{render:()=>e.jsx(Ot,{}),trigger:()=>h.trigger("actions")},Details:{render:()=>e.jsx(Mt,{}),trigger:()=>h.trigger(["description","name"])}},c=async f=>{await u[f].trigger()&&a.incrementStep()};return e.jsx(it,{...h,children:e.jsx("form",{onSubmit:f=>{h.handleSubmit(s)(f)},children:e.jsxs("div",{className:"flex flex-col gap-8",children:[e.jsx(dt,{steps:ce,currentStepNum:a.currentStep,onClick:f=>a.changeStep(f.stepNum),completedSteps:a.completedStepsSet,visitedSteps:a.visitedStepsSet}),e.jsxs(at,{className:"p-4 pt-8",children:[e.jsxs(lt,{children:[u[p].render(),e.jsx(k,{children:h.formState.errors.root?.message})]}),e.jsxs(ct,{className:"mt-6 flex gap-2 justify-end",children:[e.jsx(U,{type:"button",variant:"outline",children:e.jsx(Ue,{to:"/automations",children:"Cancel"})}),e.jsx(U,{disabled:a.isStartingStep,type:"button",variant:"outline",onClick:a.decrementStep,children:"Previous"}),a.isFinalStep?e.jsx(U,{type:"submit",loading:r,children:n},"save"):e.jsx(U,{type:"button",onClick:()=>{c(p)},children:"Next"},"next")]})]})]})})})};export{Gs as A};
2
- //# sourceMappingURL=automation-wizard-DuxZ47Nn.js.map
1
+ import{j as e,r as m,s as L,L as Ue}from"./vendor-tanstack-BK8oseNA.js";import{a as Be}from"./zod-DgSl2Nua.js";import{g as _,p as E,q as Qe,Z as Fe,c as ze}from"./vendor-forms-DxqqmhL5.js";import{S as B,a as Q,b as z,c as J,d as De,dh as Je,e as G,p as X,al as re,b5 as Ge,br as He,ac as D,ad as R,ae as M,af as O,ah as W,ag as V,ai as F,aj as N,be as Ye,ab as ie,bN as Re,I as Z,M as me,d2 as Me,bm as Ke,bp as Xe,di as Ze,q as U,i as pe,aW as et,a_ as tt,ap as st,cP as xe,ak as ge,aq as je,aw as rt,ax as nt,ay as ve,az as Se,L as ot,C as at,o as lt,dj as ct}from"./index-Cd7pM9pk.js";import{b as w,c as S,d as b,e as y,a as k,F as it}from"./form-rC8pxeRl.js";import{u as ut,S as dt}from"./use-stepper-CVy1_GBw.js";import{U as ee,T as Oe,A as ht}from"./automation-schema-ClcP8M93.js";import{S as mt,R as pt,a as We,b as be,c as ft}from"./index-BdgomKuA.js";import{T as Ve}from"./textarea-BX8KbLGx.js";import{R as xt,a as gt}from"./radio-group-DeNK-Ob0.js";import{u as jt,C as vt,a as St,b as bt}from"./collapsible-D45P93xU.js";import{T as wt}from"./tags-input-DJiZSVHp.js";const we={"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"},yt=({index:t})=>{const s=_();return e.jsx(w,{control:s.control,name:`actions.${t}.type`,render:({field:n})=>e.jsxs(S,{children:[e.jsx(b,{children:"Action Type"}),e.jsx(y,{children:e.jsxs(B,{...n,onValueChange:r=>{n.onChange(r);const l=Ct({index:t,type:r});l&&s.setValue(l,ee)},children:[e.jsx(Q,{"aria-label":"select action",className:"w-full",children:e.jsx(z,{placeholder:"Select action"})}),e.jsx(J,{children:e.jsxs(De,{children:[e.jsx(Je,{children:"Actions"}),Object.keys(we).map(r=>e.jsx(G,{value:r,children:we[r]},r))]})})]})})]})})};function Ct({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 Nt=({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(S,{children:[e.jsx(b,{children:"State"}),e.jsx(y,{children:e.jsx(mt,{value:r.value,onValueChange:r.onChange})}),e.jsx(k,{})]})}),e.jsx(w,{control:s.control,name:`actions.${t}.name`,render:({field:r})=>e.jsxs(S,{children:[e.jsx(b,{children:"Name"}),e.jsx(y,{children:e.jsx(X,{type:"text",...r,value:r.value??"",placeholder:n?pt[n]:void 0})}),e.jsx(k,{})]})}),e.jsx(w,{control:s.control,name:`actions.${t}.message`,render:({field:r})=>e.jsxs(S,{children:[e.jsx(b,{children:"Message"}),e.jsx(y,{children:e.jsx(Ve,{...r,placeholder:"State changed by Automation <id>"})}),e.jsx(k,{})]})})]})},ae=({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(re,{variant:"bodySmall",className:"text-muted-foreground",children:s})},kt=4,te=({length:t=kt})=>Array.from({length:t},(s,n)=>e.jsx(Ge,{className:"mt-2 p-4 h-2 w-full"},n)),H={value:ee,name:"Infer Automation"},_t=(t,s)=>{if(s===H.value)return H.name;const n=t?.find(r=>r.id===s);if(n)return n.name},ye=({action:t,index:s})=>{const[n,r]=m.useState(""),l=_(),{data:o,isSuccess:a}=L(He()),h=m.useDeferredValue(n),p=m.useMemo(()=>o?o.filter(c=>c.name.toLowerCase().includes(h.toLowerCase())):[],[o,h]),u=H.name.toLowerCase().includes(h.toLowerCase());return e.jsx(w,{control:l.control,name:`actions.${s}.automation_id`,render:({field:c})=>{const f=_t(o,c.value);return e.jsxs(S,{className:"flex flex-col",children:[e.jsxs(b,{children:["Automation To ",t]}),e.jsxs(D,{children:[e.jsx(R,{selected:!!f,"aria-label":`Select Automation to ${t}`,children:f??"Select automation"}),e.jsxs(M,{children:[e.jsx(O,{value:n,onValueChange:r,placeholder:"Search for an automation..."}),e.jsx(W,{children:"No automation found"}),e.jsx(V,{children:e.jsxs(F,{children:[u&&e.jsx(N,{selected:c.value===H.value,onSelect:i=>{c.onChange(i),r("")},value:H.value,children:H.name}),a?p.map(i=>e.jsx(N,{selected:c.value===i.id,onSelect:d=>{c.onChange(d),r("")},value:i.id,children:i.name},i.id)):e.jsx(te,{})]})})]})]}),e.jsx(k,{})]})}})},Tt=(t={page:1,limit:100,sort:"NAME_ASC"})=>{const{data:s,status:n}=L(Ye(t)),r=new Set(s?.results.map(a=>a.flow_id)),{data:l,status:o}=L(ie({flows:{operator:"or_",id:{any_:Array.from(r)}},sort:"NAME_DESC",offset:0},{enabled:r.size>0}));return m.useMemo(()=>{if(l&&s){const a=new Map(l.map(d=>[d.id,d])),h=s.results.map(d=>({...d,flow:a.get(d.flow_id)})),{count:p,limit:u,pages:c,page:f}=s;return{data:{count:p,limit:u,pages:c,page:f,results:h},status:"success"}}return o==="error"||n==="error"?{data:void 0,status:"error"}:{data:void 0,status:"pending"}},[s,n,l,o])},q={value:ee,name:"Infer Deployment"},At=(t,s)=>{if(s===q.value)return q.name;const n=t?.find(r=>r.id===s);if(n)return e.jsx(Ie,{deploymentWithFlow:n})},le=({action:t,index:s})=>{const[n,r]=m.useState(""),l=_(),o=l.watch(`actions.${s}.type`),a=E({name:`actions.${s}.deployment_id`}),h=Re(n,500),{data:p}=Tt({page:1,sort:"NAME_ASC",deployments:{operator:"or_",flow_or_deployment_name:{like_:h}}}),u=q.name.toLowerCase().includes(n.toLowerCase()),c=p?.results;return e.jsxs(e.Fragment,{children:[e.jsx(w,{control:l.control,name:`actions.${s}.deployment_id`,render:({field:f})=>{const i=At(c,f.value);return e.jsxs(S,{className:"flex flex-col",children:[e.jsxs(b,{children:["Deployment To ",t]}),e.jsxs(D,{children:[e.jsx(R,{selected:!!i,"aria-label":`Select Deployment to ${t}`,children:i??"Select deployment"}),e.jsxs(M,{children:[e.jsx(O,{value:n,onValueChange:r,placeholder:"Search for an deployment..."}),e.jsx(W,{children:"No deployment found"}),e.jsx(V,{children:e.jsxs(F,{children:[u&&e.jsx(N,{selected:f.value===q.value,onSelect:f.onChange,value:q.value,children:q.name}),c?c.map(d=>e.jsx(N,{"aria-label":d.name,selected:f.value===d.id,onSelect:f.onChange,value:d.id,children:e.jsx(Ie,{deploymentWithFlow:d})},d.id)):e.jsx(te,{})]})})]})]}),e.jsx(k,{})]})}}),a!==q.value&&o==="run-deployment"&&e.jsx("div",{children:"TODO: Additional fields"})]})},Ie=({deploymentWithFlow:t})=>t.flow?e.jsxs("div",{className:"flex items-center gap-0.5",children:[e.jsx("div",{children:t.flow.name}),e.jsx(Z,{className:"size-4",id:"ChevronRight"}),e.jsx("div",{children:t.name})]}):t.name,Y={value:ee,name:"Infer Work Pool"},Et=(t,s)=>{if(s===Y.value)return Y.name;const n=t?.find(r=>r.id===s);if(n)return n.name},Ce=({action:t,index:s})=>{const[n,r]=m.useState(""),l=_(),{data:o,isSuccess:a}=L(me()),h=m.useDeferredValue(n),p=m.useMemo(()=>o?o.filter(c=>c.name.toLowerCase().includes(h.toLowerCase())):[],[o,h]),u=Y.name.toLowerCase().includes(h.toLowerCase());return e.jsx(w,{control:l.control,name:`actions.${s}.work_pool_id`,render:({field:c})=>{const f=Et(o,c.value);return e.jsxs(S,{className:"flex flex-col",children:[e.jsxs(b,{children:["Work Pool To ",t]}),e.jsxs(D,{children:[e.jsx(R,{selected:!!f,"aria-label":`Select Work Pool to ${t}`,children:f??"Select Work Pool"}),e.jsxs(M,{children:[e.jsx(O,{value:n,onValueChange:r,placeholder:"Search for a work pool..."}),e.jsx(W,{children:"No work pool found"}),e.jsx(V,{children:e.jsxs(F,{children:[u&&e.jsx(N,{selected:c.value===Y.value,onSelect:i=>{c.onChange(i),r("")},value:Y.value,children:Y.name}),a?p.map(i=>e.jsx(N,{selected:c.value===i.id,onSelect:d=>{c.onChange(d),r("")},value:i.id,children:i.name},i.id)):e.jsx(te,{})]})})]})]}),e.jsx(k,{})]})}})},K={value:ee,name:"Infer Work Queue"},Lt=(t,s)=>{if(s===K.value)return K.name;const n=t?.find(r=>r.id===s);if(n)return n.name},Ne=({action:t,index:s})=>{const[n,r]=m.useState(""),l=_(),{data:o}=L(Me()),a=m.useDeferredValue(n),h=m.useMemo(()=>{if(!o)return;const u=new Map,c=o.filter(f=>f.name.toLowerCase().includes(a.toLowerCase()));for(const f of c){const{work_pool_name:i}=f;if(!i)throw new Error("'work_pool_name expected");u.set(i,[...u.get(i)??[],f])}return u},[o,a]),p=K.name.toLowerCase().includes(a.toLowerCase());return e.jsx(w,{control:l.control,name:`actions.${s}.work_queue_id`,render:({field:u})=>{const c=Lt(o,u.value);return e.jsxs(S,{className:"flex flex-col",children:[e.jsxs(b,{children:["Work Queue To ",t]}),e.jsxs(D,{children:[e.jsx(R,{selected:!!c,"aria-label":`Select Work Queue to ${t}`,children:c??"Select Work Queue"}),e.jsxs(M,{children:[e.jsx(O,{value:n,onValueChange:r,placeholder:"Search for a work queue..."}),e.jsx(W,{children:"No work queue found"}),e.jsx(V,{children:e.jsxs(F,{children:[p&&e.jsx(N,{selected:u.value===K.value,onSelect:f=>{u.onChange(f),r("")},value:K.value,children:K.name}),h?Array.from(h).map(([f,i])=>e.jsxs("div",{className:"border-b",children:[e.jsx(N,{disabled:!0,children:f}),i.map(d=>e.jsx(N,{selected:u.value===d.id,onSelect:g=>{u.onChange(g),r("")},value:d.id,children:d.name},d.id))]},f)):e.jsx(te,{})]})})]})]}),e.jsx(k,{})]})}})},Ft=({index:t})=>{const s=_(),[n,r]=m.useState(""),{data:l,isLoading:o}=L(Ke({offset:0,block_schemas:{operator:"and_",block_capabilities:{all_:["notify"]}}})),a=m.useMemo(()=>l?.map(d=>d.slug)??[],[l]),{data:h,isLoading:p}=L(Xe({block_types:a.length>0?{slug:{any_:a}}:void 0,include_secrets:!1,sort:"BLOCK_TYPE_AND_NAME_ASC",offset:0},{enabled:a.length>0})),u=o||p,c=m.useMemo(()=>!l||!h?[]:l.map(d=>({blockType:d,documents:h.filter(g=>g.block_type_id===d.id)})).filter(d=>d.documents.length>0),[l,h]),f=m.useMemo(()=>{if(!n)return c;const d=n.toLowerCase();return c.map(g=>({...g,documents:g.documents.filter(v=>v.name?.toLowerCase().includes(d))})).filter(g=>g.documents.length>0)},[c,n]),i=m.useCallback(d=>{if(!(!d||!h))return h.find(g=>g.id===d)},[h]);return e.jsxs("div",{className:"space-y-4",children:[e.jsx(w,{control:s.control,name:`actions.${t}.block_document_id`,render:({field:d})=>{const g=i(d.value);return e.jsxs(S,{className:"flex flex-col",children:[e.jsx(b,{children:"Block"}),e.jsxs(D,{children:[e.jsx(R,{selected:!!g,"aria-label":"Select notification block",children:g?g.name:"Select a notification block"}),e.jsxs(M,{children:[e.jsx(O,{value:n,onValueChange:r,placeholder:"Search for a block..."}),e.jsx(W,{children:"No notification blocks found"}),e.jsx(V,{children:u?e.jsx(te,{}):f.map(v=>e.jsx(F,{heading:v.blockType.name,children:v.documents.map(I=>e.jsx(N,{value:I.id,selected:d.value===I.id,onSelect:d.onChange,children:I.name},I.id))},v.blockType.id))})]})]}),e.jsx(k,{})]})}}),e.jsx(ke,{index:t,name:"subject",label:"Subject",placeholder:"Enter notification subject..."}),e.jsx(ke,{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(Z,{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"}),"."]})]})]})},ke=({index:t,name:s,label:n,placeholder:r,multiline:l=!1})=>{const o=_(),{validateTemplate:a}=Ze(),[h,p]=m.useState(null),[u,c]=m.useState(!1),f=o.watch(`actions.${t}.${s}`),i=Re(f,1e3);m.useEffect(()=>{(async()=>{if(!i||i.trim()===""){p(null);return}c(!0);try{const v=await a(i);v.valid?p(null):p(v.error)}catch{p(null)}finally{c(!1)}})()},[i,a]);const d=l?Ve:X;return e.jsx(w,{control:o.control,name:`actions.${t}.${s}`,render:({field:g})=>e.jsxs(S,{children:[e.jsxs(b,{className:"flex items-center gap-2",children:[n,u&&e.jsx(Z,{id:"Loader2",className:"size-3 animate-spin"})]}),e.jsx(y,{children:e.jsx(d,{...g,value:g.value??"",placeholder:r,className:h?"border-destructive":""})}),h&&e.jsx("p",{className:"text-sm text-destructive",children:h}),e.jsx(k,{})]})})},Dt=({index:t,onRemove:s})=>e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsxs(re,{variant:"body",className:"font-semibold",children:["Action ",t+1]}),e.jsx(U,{size:"icon","aria-label":`remove action ${t+1}`,onClick:s,variant:"outline",children:e.jsx(Z,{id:"Trash2",className:"size-4"})})]}),e.jsx(yt,{index:t}),e.jsx(Rt,{index:t}),e.jsx("hr",{className:"my-8"})]},t),Rt=({index:t})=>{switch(E({name:`actions.${t}.type`})){case"change-flow-run-state":return e.jsx(Nt,{index:t});case"run-deployment":return e.jsx(le,{action:"Run",index:t});case"pause-deployment":return e.jsx(le,{action:"Pause",index:t});case"resume-deployment":return e.jsx(le,{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(Ce,{action:"Pause",index:t});case"resume-work-pool":return e.jsx(Ce,{action:"Resume",index:t});case"pause-automation":return e.jsx(ye,{action:"Pause",index:t});case"resume-automation":return e.jsx(ye,{action:"Resume",index:t});case"send-notification":return e.jsx(Ft,{index:t});case"cancel-flow-run":return e.jsx(ae,{action:"Cancel"});case"suspend-flow-run":return e.jsx(ae,{action:"Suspend"});case"resume-flow-run":return e.jsx(ae,{action:"Resume"});default:return null}},Mt=()=>{const t=_(),{fields:s,append:n,remove:r}=Qe({control:t.control,name:"actions",shouldUnregister:!1,rules:{minLength:1}});return e.jsxs("div",{children:[s.map(({id:l},o)=>e.jsx(Dt,{index:o,onRemove:()=>r(o)},l)),e.jsxs(U,{type:"button",variant:"outline",onClick:()=>n({type:"cancel-flow-run"}),children:[e.jsx(Z,{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(S,{children:[e.jsx(b,{children:"Automation Name"}),e.jsx(y,{children:e.jsx(X,{type:"text",...s,value:s.value??""})}),e.jsx(k,{})]})}),e.jsx(w,{control:t.control,name:"description",render:({field:s})=>e.jsxs(S,{children:[e.jsx(b,{children:"Description (Optional)"}),e.jsx(y,{children:e.jsx(X,{type:"text",...s,value:s.value??""})}),e.jsx(k,{})]})})]})},Wt=[{value:"Reactive",label:"Observe"},{value:"Proactive",label:"Don't observe"}],Vt=30,It=()=>{const t=_(),s=n=>{const r=t.getValues("trigger.posture");if(t.setValue("trigger.posture",n),r==="Reactive"&&n==="Proactive"){const l=t.getValues("trigger.expect")??[];t.setValue("trigger.after",l),t.setValue("trigger.expect",[]),t.getValues("trigger.within")===0&&t.setValue("trigger.within",Vt)}else if(r==="Proactive"&&n==="Reactive"){const l=t.getValues("trigger.after")??[];t.setValue("trigger.expect",l),t.setValue("trigger.after",[])}};return e.jsx(w,{control:t.control,name:"trigger.posture",render:({field:n})=>e.jsxs(S,{children:[e.jsx(b,{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(gt,{value:r.value,id:`custom-${r.value}`}),e.jsx(pe,{htmlFor:`custom-${r.value}`,children:r.label})]},r.value))})})]})})},ue=60,de=3600,he=86400,Pt=[{label:"Seconds",value:1},{label:"Minutes",value:ue},{label:"Hours",value:de},{label:"Days",value:he}];function $t(t){return t>0&&t%he===0?he:t>0&&t%de===0?de:t>0&&t%ue===0?ue:1}function se({value:t,onChange:s,min:n=0,max:r,className:l,disabled:o=!1}){const[a,h]=m.useState(()=>$t(t)),p=m.useMemo(()=>Pt.filter(i=>i.value>=n),[n]),u=m.useMemo(()=>t/a,[t,a]),c=m.useCallback(i=>{let d=i*a;r!==void 0&&d>r&&(d=r),s(d)},[s,a,r]),f=m.useCallback(i=>{const d=Number(i),g=a;h(d);let v=t/g*d;r!==void 0&&v>r&&(v=r),s(v)},[s,a,t,r]);return m.useEffect(()=>{if(!p.some(i=>i.value===a)){const i=p[0];i&&h(i.value)}},[p,a]),e.jsxs("div",{className:et("grid grid-cols-[1fr_7rem] gap-2 w-full",l),children:[e.jsx(X,{type:"number",min:0,value:u,onChange:i=>c(Number(i.target.value)),disabled:o,"aria-label":"Duration quantity"}),e.jsxs(B,{value:String(a),onValueChange:f,disabled:o,children:[e.jsx(Q,{"aria-label":"Duration unit",children:e.jsx(z,{})}),e.jsx(J,{children:p.map(i=>e.jsx(G,{value:String(i.value),children:i.label},i.value))})]})]})}const qt=2,Ut=40;function _e({selectedResourceIds:t,onToggleResource:s,emptyMessage:n="All resources"}){const[r,l]=m.useState(""),o=m.useDeferredValue(r),[a,h]=m.useState(0),p=m.useRef(null),u=m.useRef(null);m.useEffect(()=>{const x=p.current;if(!x)return;const j=new ResizeObserver(C=>{for(const T of C)h(T.contentRect.width)});return j.observe(x),()=>j.disconnect()},[]);const{resourceOptions:c}=jt(),f=m.useMemo(()=>{const x=[{label:"Automations",options:[]},{label:"Blocks",options:[]},{label:"Deployments",options:[]},{label:"Flows",options:[]},{label:"Work Pools",options:[]},{label:"Work Queues",options:[]}];for(const j of c){const C={label:j.name,value:j.resourceId};switch(j.type){case"automation":x[0].options.push(C);break;case"block":x[1].options.push(C);break;case"deployment":x[2].options.push(C);break;case"flow":x[3].options.push(C);break;case"work-pool":x[4].options.push(C);break;case"work-queue":x[5].options.push(C);break}}return x.map(j=>({...j,options:j.options.sort((C,T)=>C.label.localeCompare(T.label))})).filter(j=>j.options.length>0)},[c]),i=m.useMemo(()=>{if(!o)return f;const x=o.toLowerCase();return f.map(j=>({...j,options:j.options.filter(C=>C.label.toLowerCase().includes(x)||C.value.toLowerCase().includes(x))})).filter(j=>j.options.length>0)},[f,o]),d=m.useMemo(()=>{if(!o.trim()||!o.includes("."))return!1;const x=o.toLowerCase();return!c.some(j=>j.resourceId.toLowerCase()===x)},[o,c]),g=m.useCallback(x=>{const j=u.current;if(!j||a===0||x.length===0)return Math.min(x.length,qt);const C=x.length>1?a-Ut:a;let T=0;for(let A=0;A<x.length&&(j.textContent=x.slice(0,A+1).join(", "),j.offsetWidth<=C);A++)T=A+1;return T===x.length?x.length:Math.max(1,T)},[a]),v=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:n});const x=t.map(A=>c.find(qe=>qe.resourceId===A)?.name??A),j=g(x),C=x.slice(0,j),T=x.length-j;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:C.join(", ")})}),T>0&&e.jsxs(re,{variant:"bodySmall",className:"shrink-0",children:["+ ",T]}),e.jsx("div",{ref:u,className:"absolute invisible whitespace-nowrap","aria-hidden":"true"})]})},I=x=>{s(x),l("")};return e.jsxs(D,{children:[e.jsx(R,{selected:t.length>0,children:v()}),e.jsxs(M,{children:[e.jsx(O,{value:r,onValueChange:l,placeholder:"Search resources..."}),e.jsxs(V,{children:[e.jsx(W,{children:"No resources found"}),d&&e.jsx(F,{children:e.jsxs(N,{selected:t.includes(o),onSelect:()=>I(o),closeOnSelect:!1,value:o,children:['Add "',o,'"']},"__custom__")}),i.map(x=>e.jsx(F,{heading:x.label,children:x.options.map(j=>e.jsx(N,{selected:t.includes(j.value),onSelect:()=>I(j.value),closeOnSelect:!1,value:j.value,children:j.label},j.value))},x.label))]})]})]})}function Bt(t){const s=new Map;for(const n of t){const r=n.split(".");for(let l=1;l<r.length;l++){const o=r.slice(0,l).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 Te({selectedEvents:t,onToggleEvent:s,emptyMessage:n="All events"}){const[r,l]=m.useState(""),o=m.useDeferredValue(r),[a]=m.useState(()=>({since:new Date(Date.now()-10080*60*1e3).toISOString(),until:new Date().toISOString()})),{data:h=[]}=L(tt("event",{filter:{occurred:a,order:"DESC"},time_unit:"day",time_interval:1})),p=m.useMemo(()=>{const d=h.map(v=>v.label),g=Bt(d);return[...d,...g].sort((v,I)=>v.localeCompare(I))},[h]),u=m.useMemo(()=>{if(!o)return p;const d=o.toLowerCase();return p.filter(g=>g.toLowerCase().includes(d))},[p,o]),c=m.useMemo(()=>{if(!o.trim())return!1;const d=o.toLowerCase();return!p.some(g=>g.toLowerCase()===d)},[o,p]),f=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:n});const d=t.slice(0,2),g=t.length-d.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:d.join(", ")}),g>0&&e.jsxs("span",{className:"shrink-0 text-muted-foreground",children:["+",g]})]})},i=d=>{s(d),l("")};return e.jsxs(D,{children:[e.jsx(R,{selected:t.length>0,children:f()}),e.jsxs(M,{children:[e.jsx(O,{value:r,onValueChange:l,placeholder:"Search events..."}),e.jsxs(V,{children:[e.jsx(W,{children:"No events found"}),e.jsxs(F,{children:[c&&e.jsxs(N,{selected:t.includes(o),onSelect:()=>i(o),closeOnSelect:!1,value:o,children:['Add "',o,'"']},"__custom__"),u.map(d=>e.jsx(N,{selected:t.includes(d),onSelect:()=>i(d),closeOnSelect:!1,value:d,children:d},d))]})]})]})]})}const Qt=()=>{const t=_(),s=E({name:"trigger.posture"});return e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex items-end gap-4",children:e.jsx(It,{})}),e.jsx(w,{control:t.control,name:"trigger.expect",render:({field:n})=>{const r=n.value??[];return e.jsxs(S,{children:[e.jsx(b,{children:"Any event matching"}),e.jsx(y,{children:e.jsx(Te,{selectedEvents:r,onToggleEvent:l=>{const o=r.includes(l)?r.filter(a=>a!==l):[...r,l];n.onChange(o)}})}),e.jsx(k,{})]})}}),e.jsx(w,{control:t.control,name:"trigger.match",render:({field:n})=>{const r=n.value?.["prefect.resource.id"]??[],l=Array.isArray(r)?r:[r];return e.jsxs(S,{children:[e.jsx(b,{children:"From the following resources"}),e.jsx(y,{children:e.jsx(_e,{selectedResourceIds:l,onToggleResource:o=>{const a=l.includes(o)?l.filter(h=>h!==o):[...l,o];a.length>0?n.onChange({"prefect.resource.id":a}):n.onChange({})}})}),e.jsx(k,{})]})}}),e.jsxs("div",{className:"flex items-end gap-2",children:[e.jsx(w,{control:t.control,name:"trigger.threshold",render:({field:n})=>e.jsxs(S,{className:"w-20",children:[e.jsx(y,{children:e.jsx(X,{type:"number",min:1,...n,onChange:r=>n.onChange(Number(r.target.value))})}),e.jsx(k,{})]})}),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(S,{children:[e.jsx(y,{children:e.jsx(se,{value:n.value??0,onChange:n.onChange,min:s==="Proactive"?10:0})}),e.jsx(k,{})]})})]}),e.jsxs(vt,{children:[e.jsxs(St,{className:"flex items-center gap-2 text-sm font-medium",children:[e.jsx(st,{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(S,{children:[e.jsx(b,{children:"Evaluate trigger only after observing an event matching"}),e.jsx(y,{children:e.jsx(Te,{selectedEvents:r,onToggleEvent:l=>{const o=r.includes(l)?r.filter(a=>a!==l):[...r,l];n.onChange(o)}})}),e.jsx(k,{})]})}}),e.jsx(w,{control:t.control,name:"trigger.match_related",render:({field:n})=>{const r=n.value?.["prefect.resource.id"]??[],l=Array.isArray(r)?r:[r];return e.jsxs(S,{children:[e.jsx(b,{children:"Filter for events related to"}),e.jsx(y,{children:e.jsx(_e,{selectedResourceIds:l,onToggleResource:o=>{const a=l.includes(o)?l.filter(h=>h!==o):[...l,o];a.length>0?n.onChange({"prefect.resource.id":a}):n.onChange({})}})}),e.jsx(k,{})]})}})]})]})]})},zt=2,Jt=40,Gt=({selectedDeploymentIds:t,onSelectDeploymentIds:s})=>{const[n,r]=m.useState(""),l=m.useDeferredValue(n),[o,a]=m.useState(0),h=m.useRef(null),p=m.useRef(null),u=m.useMemo(()=>new Set(t),[t]);m.useEffect(()=>{const x=h.current;if(!x)return;const j=new ResizeObserver(C=>{for(const T of C)a(T.contentRect.width)});return j.observe(x),()=>j.disconnect()},[]);const{data:c=[]}=L(xe({deployments:l?{operator:"and_",name:{like_:l}}:void 0,limit:100,offset:0,sort:"NAME_ASC"})),{data:f=[]}=L(xe({deployments:u.size>0?{operator:"and_",id:{any_:t}}:void 0,limit:u.size||1,offset:0,sort:"NAME_ASC"},{enabled:u.size>0})),i=x=>{const j=new Set(u);u.has(x)?j.delete(x):j.add(x),s(Array.from(j))},d=()=>{s([])},g=m.useCallback(x=>{const j=p.current;if(!j||o===0||x.length===0)return Math.min(x.length,zt);const C=x.length>1?o-Jt:o;let T=0;for(let A=0;A<x.length&&(j.textContent=x.slice(0,A+1).join(", "),j.offsetWidth<=C);A++)T=A+1;return T===x.length?x.length:Math.max(1,T)},[o]),v=()=>{if(u.size===0)return"All deployments";const x=f.filter(A=>u.has(A.id)).map(A=>A.name),j=g(x),C=x.slice(0,j),T=x.length-j;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:C.join(", ")})}),T>0&&e.jsxs(re,{variant:"bodySmall",className:"shrink-0",children:["+ ",T]}),e.jsx("div",{ref:p,className:"absolute invisible whitespace-nowrap","aria-hidden":"true"})]})},I=m.useMemo(()=>c.filter(x=>!l||x.name.toLowerCase().includes(l.toLowerCase())),[c,l]);return e.jsxs(D,{children:[e.jsx(R,{"aria-label":"Select deployments",selected:u.size===0,children:v()}),e.jsxs(M,{children:[e.jsx(O,{value:n,onValueChange:r,placeholder:"Search deployments..."}),e.jsxs(V,{children:[e.jsx(W,{children:"No deployments found"}),e.jsxs(F,{children:[e.jsxs(N,{"aria-label":"All deployments",onSelect:d,closeOnSelect:!1,value:"__all__",children:[e.jsx(ge,{checked:u.size===0}),"All deployments"]}),I.map(x=>e.jsxs(N,{"aria-label":x.name,onSelect:()=>i(x.id),closeOnSelect:!1,value:x.id,children:[e.jsx(ge,{checked:u.has(x.id)}),x.name]},x.id))]})]})]})]})},Ht=[{value:"Reactive",label:"Enters"},{value:"Proactive",label:"Stays in"}],Yt=30,ne=()=>{const t=_();return e.jsx(w,{control:t.control,name:"trigger.posture",render:({field:s})=>e.jsx(S,{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 l=t.getValues("trigger.expect")??[];t.setValue("trigger.after",l),t.setValue("trigger.expect",[]),t.getValues("trigger.within")===0&&t.setValue("trigger.within",Yt)}else if(r==="Proactive"&&n==="Reactive"){const l=t.getValues("trigger.after")??[];t.setValue("trigger.expect",l),t.setValue("trigger.after",[])}},children:[e.jsx(Q,{"aria-label":"select posture",className:"w-[160px]",children:e.jsx(z,{placeholder:"Select posture"})}),e.jsx(J,{children:Ht.map(n=>e.jsx(G,{value:n.value,children:n.label},n.value))})]})})})})},Kt=86400,Xt=30*Kt,Zt=[{value:"prefect.deployment.ready",label:"Ready"},{value:"prefect.deployment.not-ready",label:"Not Ready"},{value:"prefect.deployment.disabled",label:"Disabled"}],Pe="prefect.deployment.",$e="prefect.deployment.*",es=t=>t?(Array.isArray(t)?t:[t]).filter(n=>n!==$e).map(n=>n.replace(Pe,"")):[],ts=t=>t.length===0?$e:t.map(s=>`${Pe}${s}`),ss=()=>{const t=_(),s=E({name:"trigger.posture"}),n=E({name:"trigger.match"}),r=m.useMemo(()=>{const a=n?.["prefect.resource.id"];return es(a)},[n]),l=m.useCallback(o=>{const a=t.getValues("trigger.match")??{};t.setValue("trigger.match",{...a,"prefect.resource.id":ts(o)})},[t]);return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(S,{children:[e.jsx(b,{children:"Deployments"}),e.jsx(y,{children:e.jsx(Gt,{selectedDeploymentIds:r,onSelectDeploymentIds:l})})]}),e.jsxs(S,{children:[e.jsx(b,{children:"Deployment"}),e.jsxs("div",{className:"grid gap-2",style:{gridTemplateColumns:"10rem 1fr"},children:[e.jsx(ne,{}),e.jsx(w,{control:t.control,name:"trigger.expect",render:({field:o})=>{const a=o.value?.[0];return e.jsxs(B,{value:a??"",onValueChange:h=>o.onChange([h]),children:[e.jsx(Q,{className:"w-full",children:e.jsx(z,{placeholder:"Select status"})}),e.jsx(J,{children:Zt.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(S,{children:[e.jsx(b,{children:"Within"}),e.jsx(y,{children:e.jsx(se,{value:o.value??0,onChange:o.onChange,min:10,max:Xt})}),e.jsx(k,{})]})})]})},rs=2;function ns({selectedFlowIds:t,onToggleFlow:s,emptyMessage:n="Any flow"}){const[r,l]=m.useState(""),o=m.useDeferredValue(r),{data:a=[]}=L(ie({flows:o?{operator:"and_",name:{like_:o}}:void 0,limit:100,offset:0,sort:"NAME_ASC"})),{data:h=[]}=L(ie({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(()=>a.filter(c=>!o||c.name.toLowerCase().includes(o.toLowerCase())),[a,o]),u=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:n});const f=h.filter(d=>t.includes(d.id)).map(d=>d.name).slice(0,rs),i=t.length-f.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:f.join(", ")}),i>0&&e.jsxs("span",{className:"shrink-0 text-muted-foreground",children:["+",i]})]})};return e.jsxs(D,{children:[e.jsx(R,{selected:t.length>0,children:u()}),e.jsxs(M,{children:[e.jsx(O,{value:r,onValueChange:l,placeholder:"Search flows..."}),e.jsxs(V,{children:[e.jsx(W,{children:"No flows found"}),e.jsx(F,{children:p.map(c=>e.jsx(N,{selected:t.includes(c.id),onSelect:()=>{s(c.id),l("")},closeOnSelect:!1,value:c.id,children:c.name},c.id))})]})]})]})}const P="All run states",$="All except scheduled";function os(t){return t.length!==We.length-1?!1:!t.includes("Scheduled")}function as({selectedStates:t,onStateChange:s,emptyMessage:n="Any state"}){const[r,l]=m.useState(""),o=m.useDeferredValue(r),a=m.useMemo(()=>t.length===0?P:os(t)?$:t,[t]),h=m.useMemo(()=>{const i=o.toLowerCase();return We.filter(d=>d.toLowerCase().includes(i))},[o]),p=m.useMemo(()=>{const i=o.toLowerCase();return P.toLowerCase().includes(i)||$.toLowerCase().includes(i)},[o]),u=i=>{i===P?s([]):i===$&&s([...ft]),l("")},c=i=>{t.includes(i)?s(t.filter(d=>d!==i)):s([...t,i]),l("")},f=()=>a===P?e.jsx("span",{className:"text-muted-foreground",children:n}):a===$?e.jsx("span",{children:"All except scheduled"}):e.jsx("div",{className:"flex flex-wrap gap-1",children:t.map(i=>e.jsx(je,{type:be[i],name:i,className:"cursor-pointer"},i))});return e.jsxs(D,{children:[e.jsx(R,{selected:t.length>0,children:f()}),e.jsxs(M,{children:[e.jsx(O,{value:r,onValueChange:l,placeholder:"Search states..."}),e.jsx(W,{children:"No state found"}),e.jsx(V,{children:e.jsxs(F,{children:[p&&e.jsxs(e.Fragment,{children:[e.jsx(N,{selected:a===P,onSelect:()=>u(P),value:P,closeOnSelect:!1,children:"All run states"},P),e.jsx(N,{selected:a===$,onSelect:()=>u($),value:$,closeOnSelect:!1,children:"All except scheduled"},$)]}),h.map(i=>e.jsx(N,{selected:t.includes(i),onSelect:()=>c(i),value:i,closeOnSelect:!1,children:e.jsx(je,{type:be[i],name:i})},i))]})})]})]})}function ls(t){return t.length===0?["prefect.flow-run.*"]:t.map(s=>`prefect.flow-run.${s}`)}function cs(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 is(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 us(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 Ae(t,s){const n=t.map(a=>`prefect.flow.${a}`),r=s.map(a=>`prefect.tag.${a}`);if(n.length===0&&r.length===0)return{};const l=n.length>0?"flow":"tag",o=[...n,...r];return{"prefect.resource.role":l,"prefect.resource.id":o}}const ds=()=>{const t=_(),s=E({name:"trigger.posture"}),n=s==="Proactive"?"trigger.after":"trigger.expect",r=E({name:"trigger.match_related"}),l=is(r),o=us(r),a=u=>{const c=l,f=c.includes(u)?c.filter(d=>d!==u):[...c,u],i=f.length>0?[]:o;t.setValue("trigger.match_related",Ae(f,i))},h=u=>{t.setValue("trigger.match_related",Ae(l,u))},p=l.length===0;return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(S,{children:[e.jsx(b,{children:"Flows"}),e.jsx(y,{children:e.jsx(ns,{selectedFlowIds:l,onToggleFlow:a,emptyMessage:"All flows"})})]}),p&&e.jsxs(S,{children:[e.jsx(b,{children:"Flow Run Tags"}),e.jsx(y,{children:e.jsx(wt,{value:o,onChange:h,placeholder:"All tags"})})]}),e.jsxs(S,{children:[e.jsx(b,{children:"Flow Run"}),e.jsxs("div",{className:"grid grid-cols-[10rem_1fr] gap-2",children:[e.jsx(ne,{}),e.jsx(w,{control:t.control,name:n,render:({field:u})=>{const c=u.value??[],f=cs(c);return e.jsx(y,{children:e.jsx(as,{selectedStates:f,onStateChange:i=>{u.onChange(ls(i))},emptyMessage:"Any state"})})}})]})]}),s==="Proactive"&&e.jsx(w,{control:t.control,name:"trigger.within",render:({field:u})=>e.jsxs(S,{children:[e.jsx(b,{children:"For"}),e.jsx(y,{children:e.jsx(se,{value:u.value??0,onChange:u.onChange,min:0})}),e.jsx(k,{})]})})]})},hs=({defaultValue:t="Form",value:s,onValueChange:n,formContent:r,jsonContent:l})=>{const o=s!==void 0?{value:s,onValueChange:n}:{defaultValue:t};return e.jsxs(rt,{...o,children:[e.jsx("div",{className:"flex justify-center",children:e.jsxs(nt,{children:[e.jsx(ve,{value:"Form",children:"Form"}),e.jsx(ve,{value:"JSON",children:"JSON"})]})}),e.jsx(Se,{value:"Form",children:r}),e.jsx(Se,{value:"JSON",children:l})]})},ms=({value:t,onChange:s,error:n})=>{const[r,l]=m.useState(null),o=()=>{try{const h=JSON.parse(t);s(JSON.stringify(h,null,2))}catch{}},a=h=>{try{const p=JSON.parse(h);return Oe.parse(p),l(null),!0}catch(p){return p instanceof SyntaxError?l("Invalid JSON syntax"):p instanceof Fe&&l(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(ot,{value:t,onChange:s,onBlur:()=>a(t)}),(r||n)&&e.jsx("p",{className:"text-sm text-destructive",children:r||n})]})},Ee={"deployment-status":"Deployment status","flow-run-state":"Flow run state","work-pool-status":"Work pool status","work-queue-status":"Work queue status",custom:"Custom"},ps=({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(Q,{id:"automations-trigger-template-select",className:"w-full",children:e.jsx(z,{placeholder:"Select template"})}),e.jsx(J,{children:e.jsx(De,{children:Object.keys(Ee).map(n=>e.jsx(G,{value:n,children:Ee[n]},n))})})]})]}),fs=({onTemplateChange:t})=>{const s=_();return e.jsx(w,{control:s.control,name:"triggerTemplate",render:({field:n})=>e.jsx(S,{children:e.jsx(y,{children:e.jsx(ps,{value:n.value,onValueChange:r=>{n.onChange(r),t?.(r)}})})})})},xs={type:"event",posture:"Reactive",threshold:1,within:0},gs=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 xs}};function js({selectedWorkPoolIds:t,onToggleWorkPool:s,emptyMessage:n="All work pools"}){const[r,l]=m.useState(""),o=m.useDeferredValue(r),{data:a=[]}=L(me()),h=m.useMemo(()=>a.filter(c=>c.status!==null).filter(c=>!o||c.name.toLowerCase().includes(o.toLowerCase())),[a,o]),p=m.useMemo(()=>a.filter(c=>t.includes(c.id)),[a,t]),u=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:n});const c=p.map(f=>f.name);return e.jsx("span",{className:"truncate min-w-0 text-left",children:c.join(", ")})};return e.jsxs(D,{children:[e.jsx(R,{selected:t.length>0,children:u()}),e.jsxs(M,{children:[e.jsx(O,{value:r,onValueChange:l,placeholder:"Search work pools..."}),e.jsxs(V,{children:[e.jsx(W,{children:"No work pools found"}),e.jsx(F,{children:h.map(c=>e.jsx(N,{selected:t.includes(c.id),onSelect:()=>{s(c.id),l("")},closeOnSelect:!1,value:c.id,children:c.name},c.id))})]})]})]})}const oe=[{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 Le(t){if(!t||t.length===0)return"not_ready";for(const s of oe)if(s.events.some(n=>t.includes(n)))return s.value;return"not_ready"}function vs(t){const s=oe.find(n=>n.value===t);return s?[...s.events]:[]}function Ss(t){return oe.filter(s=>s.value!==t).flatMap(s=>[...s.events])}function bs(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 ws(t){return t.length===0?{"prefect.resource.id":"prefect.work-pool.*"}:{"prefect.resource.id":t.map(s=>`prefect.work-pool.${s}`)}}const ys=()=>{const t=_(),s=E({name:"trigger.posture"}),n=E({name:"trigger.expect"}),r=E({name:"trigger.after"}),l=Le(s==="Proactive"?r:n),o=a=>{const h=vs(a),p=Ss(a);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:l,onValueChange:o,children:[e.jsx(Q,{"aria-label":"select status",className:"min-w-0 flex-1",children:e.jsx(z,{placeholder:"Select status"})}),e.jsx(J,{children:oe.map(a=>e.jsx(G,{value:a.value,children:a.label},a.value))})]})},Cs=()=>{const t=_(),s=E({name:"trigger.posture"}),n=E({name:"trigger.match"}),r=bs(n),l=o=>{const a=r,h=a.includes(o)?a.filter(p=>p!==o):[...a,o];t.setValue("trigger.match",ws(h))};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(S,{children:[e.jsx(b,{children:"Work Pools"}),e.jsx(y,{children:e.jsx(js,{selectedWorkPoolIds:r,onToggleWorkPool:l,emptyMessage:"All work pools"})})]}),e.jsxs(S,{children:[e.jsx(b,{children:"Work Pool"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ne,{}),e.jsx(ys,{})]})]}),s==="Proactive"&&e.jsx(w,{control:t.control,name:"trigger.within",render:({field:o})=>e.jsxs(S,{children:[e.jsx(b,{children:"For"}),e.jsx(y,{children:e.jsx(se,{value:o.value??30,onChange:o.onChange,min:0})}),e.jsx(k,{})]})})]})};function Ns({selectedWorkPoolIds:t,onToggleWorkPool:s,emptyMessage:n="All work pools"}){const[r,l]=m.useState(""),o=m.useDeferredValue(r),{data:a=[]}=L(me({limit:100,offset:0})),h=m.useMemo(()=>a.filter(u=>u.status?o?u.name.toLowerCase().includes(o.toLowerCase()):!0:!1),[a,o]),p=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:n});const u=a.filter(c=>t.includes(c.id)).map(c=>c.name);return e.jsx("span",{className:"truncate min-w-0 text-left",children:u.join(", ")})};return e.jsxs(D,{children:[e.jsx(R,{selected:t.length>0,children:p()}),e.jsxs(M,{children:[e.jsx(O,{value:r,onValueChange:l,placeholder:"Search work pools..."}),e.jsxs(V,{children:[e.jsx(W,{children:"No work pools found"}),e.jsx(F,{children:h.map(u=>e.jsx(N,{selected:t.includes(u.id),onSelect:()=>{s(u.id),l("")},closeOnSelect:!1,value:u.id,children:u.name},u.id))})]})]})]})}function ks({selectedWorkQueueIds:t,onToggleWorkQueue:s,workPoolIds:n=[],emptyMessage:r="All work queues"}){const[l,o]=m.useState(""),a=m.useDeferredValue(l),{data:h=[]}=L(Me({limit:100,offset:0})),p=m.useMemo(()=>h.filter(f=>n.length>0&&(!f.work_pool_id||!n.includes(f.work_pool_id))?!1:a?f.name.toLowerCase().includes(a.toLowerCase()):!0),[h,n,a]),u=m.useMemo(()=>{const f={};for(const d of p){const g=d.work_pool_name??"Unknown";f[g]||(f[g]=[]),f[g].push(d)}return Object.keys(f).sort((d,g)=>d.localeCompare(g)).map(d=>({poolName:d,queues:f[d].sort((g,v)=>g.name.localeCompare(v.name))}))},[p]),c=()=>{if(t.length===0)return e.jsx("span",{className:"text-muted-foreground",children:r});const f=h.filter(i=>t.includes(i.id)).map(i=>i.name);return e.jsx("span",{className:"truncate min-w-0 text-left",children:f.join(", ")})};return e.jsxs(D,{children:[e.jsx(R,{selected:t.length>0,children:c()}),e.jsxs(M,{children:[e.jsx(O,{value:l,onValueChange:o,placeholder:"Search work queues..."}),e.jsxs(V,{children:[e.jsx(W,{children:"No work queues found"}),u.map(f=>e.jsx(F,{heading:f.poolName,children:f.queues.map(i=>e.jsx(N,{selected:t.includes(i.id),onSelect:()=>{s(i.id),o("")},closeOnSelect:!1,value:i.id,children:i.name},i.id))},f.poolName))]})]})]})}const _s=[{value:"prefect.work-queue.ready",label:"Ready"},{value:"prefect.work-queue.not-ready",label:"Not Ready"},{value:"prefect.work-queue.paused",label:"Paused"}];function Ts(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 As(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 Es(t){return t.length===0?{}:{"prefect.resource.role":"work-pool","prefect.resource.id":t.map(n=>`prefect.work-pool.${n}`)}}function Ls(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=E({name:"trigger.posture"}),n=E({name:"trigger.match_related"}),r=E({name:"trigger.match"}),l=Ts(n),o=As(r),a=p=>{const u=l,c=u.includes(p)?u.filter(f=>f!==p):[...u,p];t.setValue("trigger.match_related",Es(c))},h=p=>{const u=o,c=u.includes(p)?u.filter(f=>f!==p):[...u,p];t.setValue("trigger.match",Ls(c))};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(S,{children:[e.jsx(b,{children:"Work Pools"}),e.jsx(y,{children:e.jsx(Ns,{selectedWorkPoolIds:l,onToggleWorkPool:a,emptyMessage:"All work pools"})})]}),e.jsxs(S,{children:[e.jsx(b,{children:"Work Queues"}),e.jsx(y,{children:e.jsx(ks,{selectedWorkQueueIds:o,onToggleWorkQueue:h,workPoolIds:l,emptyMessage:"All work queues"})})]}),e.jsxs(S,{children:[e.jsx(b,{children:"Work Queue"}),e.jsxs("div",{className:"grid grid-cols-[10rem_1fr] gap-2",children:[e.jsx(ne,{}),e.jsx(w,{control:t.control,name:"trigger.expect",render:({field:p})=>{const u=p.value?.[0];return e.jsx(y,{children:e.jsxs(B,{value:u??"",onValueChange:c=>p.onChange([c]),children:[e.jsx(Q,{className:"w-full",children:e.jsx(z,{placeholder:"Select status"})}),e.jsx(J,{children:_s.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(S,{children:[e.jsx(b,{children:"For"}),e.jsx(y,{children:e.jsx(se,{value:p.value??0,onChange:p.onChange,min:0})}),e.jsx(k,{})]})})]})},Ds=()=>{const t=_(),s=t.watch("triggerTemplate"),n=t.watch("trigger"),[r,l]=m.useState("Form"),[o,a]=m.useState(""),[h,p]=m.useState(void 0),u=m.useCallback(()=>JSON.stringify(n,null,2),[n]);m.useEffect(()=>{r==="Form"&&a(u())},[r,u]);const c=m.useCallback(g=>{try{const v=JSON.parse(g);return{valid:!0,trigger:Oe.parse(v)}}catch(v){return v instanceof SyntaxError?{valid:!1,error:"Invalid JSON syntax"}:v instanceof Fe?{valid:!1,error:v.errors[0]?.message??"Invalid trigger configuration"}:{valid:!1,error:"Unknown error"}}},[]),f=m.useCallback(g=>{if(r!==g){if(g==="Form"){const v=c(o);if(!v.valid){p(v.error);return}v.trigger&&t.setValue("trigger",v.trigger),p(void 0)}else a(u()),p(void 0);l(g)}},[r,o,c,t,u]),i=m.useCallback(g=>{a(g);const v=c(g);v.valid&&v.trigger&&(t.setValue("trigger",v.trigger),p(void 0))},[c,t]),d=g=>{const v=gs(g);t.setValue("trigger",v),a(JSON.stringify(v,null,2)),p(void 0)};return e.jsxs("div",{className:"space-y-6",children:[e.jsx(fs,{onTemplateChange:d}),s&&e.jsx(hs,{value:r,onValueChange:f,formContent:e.jsx(Rs,{template:s}),jsonContent:e.jsx(ms,{value:o,onChange:i,error:h})})]})},Rs=({template:t})=>{switch(t){case"flow-run-state":return e.jsx(ds,{});case"deployment-status":return e.jsx(ss,{});case"work-pool-status":return e.jsx(Cs,{});case"work-queue-status":return e.jsx(Fs,{});case"custom":return e.jsx(Qt,{});default:return null}},ce=["Trigger","Actions","Details"],Ms={actions:[{type:void 0}],trigger:{type:"event",posture:"Reactive",threshold:1,within:0}},Gs=({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]),a=ut(ce.length,0,o),h=ze({resolver:Be(ht),defaultValues:{...Ms,...t}}),p=ce[a.currentStep],u={Trigger:{render:()=>e.jsx(Ds,{}),trigger:()=>h.trigger("trigger")},Actions:{render:()=>e.jsx(Mt,{}),trigger:()=>h.trigger("actions")},Details:{render:()=>e.jsx(Ot,{}),trigger:()=>h.trigger(["description","name"])}},c=async f=>{await u[f].trigger()&&a.incrementStep()};return e.jsx(it,{...h,children:e.jsx("form",{onSubmit:f=>{h.handleSubmit(s)(f)},children:e.jsxs("div",{className:"flex flex-col gap-8",children:[e.jsx(dt,{steps:ce,currentStepNum:a.currentStep,onClick:f=>a.changeStep(f.stepNum),completedSteps:a.completedStepsSet,visitedSteps:a.visitedStepsSet}),e.jsxs(at,{className:"p-4 pt-8",children:[e.jsxs(lt,{children:[u[p].render(),e.jsx(k,{children:h.formState.errors.root?.message})]}),e.jsxs(ct,{className:"mt-6 flex gap-2 justify-end",children:[e.jsx(U,{type:"button",variant:"outline",children:e.jsx(Ue,{to:"/automations",children:"Cancel"})}),e.jsx(U,{disabled:a.isStartingStep,type:"button",variant:"outline",onClick:a.decrementStep,children:"Previous"}),a.isFinalStep?e.jsx(U,{type:"submit",loading:r,children:n},"save"):e.jsx(U,{type:"button",onClick:()=>{c(p)},children:"Next"},"next")]})]})]})})})};export{Gs as A};
2
+ //# sourceMappingURL=automation-wizard-BLI4sqs9.js.map