prefect 3.7.7.dev2__py3-none-any.whl → 3.7.8.dev2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- prefect/_build_info.py +3 -3
- prefect/runner/_workspace_resolver.py +17 -12
- prefect/server/AGENTS.md +1 -1
- prefect/server/api/_ui_static.py +0 -1
- prefect/server/api/server.py +3 -21
- prefect/server/api/workers.py +1 -0
- prefect/server/models/artifacts.py +0 -2
- prefect/server/models/work_queues.py +2 -2
- prefect/server/models/workers.py +1 -1
- prefect/server/schemas/core.py +1 -1
- prefect/server/services/task_run_recorder.py +9 -4
- prefect/server/ui-v2/assets/{admin-BAL15Uwl.js → admin-BwmAgV1B.js} +2 -2
- prefect/server/ui-v2/assets/{admin-BAL15Uwl.js.map → admin-BwmAgV1B.js.map} +1 -1
- prefect/server/ui-v2/assets/{artifact._id-D_htSbFc.js → artifact._id-DClBSNAc.js} +2 -2
- prefect/server/ui-v2/assets/{artifact._id-D_htSbFc.js.map → artifact._id-DClBSNAc.js.map} +1 -1
- prefect/server/ui-v2/assets/{artifact._id-C4vG8kN1.js → artifact._id-iTe860fK.js} +2 -2
- prefect/server/ui-v2/assets/{artifact._id-C4vG8kN1.js.map → artifact._id-iTe860fK.js.map} +1 -1
- prefect/server/ui-v2/assets/{artifacts-C94H1frM.js → artifacts-1uXI5WqD.js} +2 -2
- prefect/server/ui-v2/assets/{artifacts-C94H1frM.js.map → artifacts-1uXI5WqD.js.map} +1 -1
- prefect/server/ui-v2/assets/{artifacts-Dp1Cpics.js → artifacts-DK4EqGvl.js} +2 -2
- prefect/server/ui-v2/assets/{artifacts-Dp1Cpics.js.map → artifacts-DK4EqGvl.js.map} +1 -1
- prefect/server/ui-v2/assets/{automation-wizard-DHwU3ycN.js → automation-wizard-BY0XuXdq.js} +2 -2
- prefect/server/ui-v2/assets/{automation-wizard-DHwU3ycN.js.map → automation-wizard-BY0XuXdq.js.map} +1 -1
- prefect/server/ui-v2/assets/{automation._id-DVj5sQsY.js → automation._id-CjmsSv3o.js} +2 -2
- prefect/server/ui-v2/assets/{automation._id-DVj5sQsY.js.map → automation._id-CjmsSv3o.js.map} +1 -1
- prefect/server/ui-v2/assets/{automation._id-BPP0PFKR.js → automation._id-D9vm0dSK.js} +2 -2
- prefect/server/ui-v2/assets/{automation._id-BPP0PFKR.js.map → automation._id-D9vm0dSK.js.map} +1 -1
- prefect/server/ui-v2/assets/{automation_._id.edit-DXzu8308.js → automation_._id.edit-BsdiStqs.js} +2 -2
- prefect/server/ui-v2/assets/{automation_._id.edit-DXzu8308.js.map → automation_._id.edit-BsdiStqs.js.map} +1 -1
- prefect/server/ui-v2/assets/{automation_._id.edit-k_rZNDO5.js → automation_._id.edit-DYOqiH15.js} +2 -2
- prefect/server/ui-v2/assets/{automation_._id.edit-k_rZNDO5.js.map → automation_._id.edit-DYOqiH15.js.map} +1 -1
- prefect/server/ui-v2/assets/{automations-BBolpYje.js → automations-Dy7MEBCd.js} +2 -2
- prefect/server/ui-v2/assets/{automations-BBolpYje.js.map → automations-Dy7MEBCd.js.map} +1 -1
- prefect/server/ui-v2/assets/{automations-DEbtnaKI.js → automations-I0rut3oU.js} +2 -2
- prefect/server/ui-v2/assets/{automations-DEbtnaKI.js.map → automations-I0rut3oU.js.map} +1 -1
- prefect/server/ui-v2/assets/{automations-DXpkq-mg.js → automations-_spzfcQs.js} +2 -2
- prefect/server/ui-v2/assets/{automations-DXpkq-mg.js.map → automations-_spzfcQs.js.map} +1 -1
- prefect/server/ui-v2/assets/{automations-header-Bnufh1Se.js → automations-header-C_QvzcNT.js} +2 -2
- prefect/server/ui-v2/assets/{automations-header-Bnufh1Se.js.map → automations-header-C_QvzcNT.js.map} +1 -1
- prefect/server/ui-v2/assets/{automations-wizard-DIhcWuKm.js → automations-wizard-e40bFU9E.js} +2 -2
- prefect/server/ui-v2/assets/{automations-wizard-DIhcWuKm.js.map → automations-wizard-e40bFU9E.js.map} +1 -1
- prefect/server/ui-v2/assets/{badge-fyOQcNnR.js → badge-vurAYgxc.js} +2 -2
- prefect/server/ui-v2/assets/{badge-fyOQcNnR.js.map → badge-vurAYgxc.js.map} +1 -1
- prefect/server/ui-v2/assets/{base-job-template-form-section-xk-gbxny.js → base-job-template-form-section-DTh4Y5Ah.js} +2 -2
- prefect/server/ui-v2/assets/{base-job-template-form-section-xk-gbxny.js.map → base-job-template-form-section-DTh4Y5Ah.js.map} +1 -1
- prefect/server/ui-v2/assets/{block-type-details-Dq_SyCWm.js → block-type-details-CtMrR5QH.js} +2 -2
- prefect/server/ui-v2/assets/{block-type-details-Dq_SyCWm.js.map → block-type-details-CtMrR5QH.js.map} +1 -1
- prefect/server/ui-v2/assets/{block-type-logo-Cc5Lt-3a.js → block-type-logo-1_gehAYP.js} +2 -2
- prefect/server/ui-v2/assets/{block-type-logo-Cc5Lt-3a.js.map → block-type-logo-1_gehAYP.js.map} +1 -1
- prefect/server/ui-v2/assets/{block._id-DJ4swXQO.js → block._id-BrKW8FYY.js} +2 -2
- prefect/server/ui-v2/assets/{block._id-DJ4swXQO.js.map → block._id-BrKW8FYY.js.map} +1 -1
- prefect/server/ui-v2/assets/{block._id-7jcwcanq.js → block._id-D_TLERFK.js} +2 -2
- prefect/server/ui-v2/assets/{block._id-7jcwcanq.js.map → block._id-D_TLERFK.js.map} +1 -1
- prefect/server/ui-v2/assets/{block_._id.edit-CuQ59RzS.js → block_._id.edit-B2yl9C11.js} +2 -2
- prefect/server/ui-v2/assets/{block_._id.edit-CuQ59RzS.js.map → block_._id.edit-B2yl9C11.js.map} +1 -1
- prefect/server/ui-v2/assets/{block_._id.edit-X_LCGBMi.js → block_._id.edit-BbupcySJ.js} +2 -2
- prefect/server/ui-v2/assets/{block_._id.edit-X_LCGBMi.js.map → block_._id.edit-BbupcySJ.js.map} +1 -1
- prefect/server/ui-v2/assets/{blocks-D5uMj6X5.js → blocks-BVpxRYTR.js} +2 -2
- prefect/server/ui-v2/assets/{blocks-D5uMj6X5.js.map → blocks-BVpxRYTR.js.map} +1 -1
- prefect/server/ui-v2/assets/{blocks-CVpOVsR9.js → blocks-SUmL0Ghr.js} +2 -2
- prefect/server/ui-v2/assets/{blocks-CVpOVsR9.js.map → blocks-SUmL0Ghr.js.map} +1 -1
- prefect/server/ui-v2/assets/button-BmBv3lZP.js +3 -0
- prefect/server/ui-v2/assets/{button-D1nS4G4b.js.map → button-BmBv3lZP.js.map} +1 -1
- prefect/server/ui-v2/assets/{card-zAxS3Fox.js → card-BWi7Wr_R.js} +2 -2
- prefect/server/ui-v2/assets/{card-zAxS3Fox.js.map → card-BWi7Wr_R.js.map} +1 -1
- prefect/server/ui-v2/assets/{catalog-Cvuu07RM.js → catalog-2OlitMXZ.js} +2 -2
- prefect/server/ui-v2/assets/{catalog-Cvuu07RM.js.map → catalog-2OlitMXZ.js.map} +1 -1
- prefect/server/ui-v2/assets/{catalog-DBnpD4_R.js → catalog-BcBjU7Yy.js} +2 -2
- prefect/server/ui-v2/assets/{catalog-DBnpD4_R.js.map → catalog-BcBjU7Yy.js.map} +1 -1
- prefect/server/ui-v2/assets/{catalog_._slug-DMHkouWh.js → catalog_._slug-CpeIUyfC.js} +2 -2
- prefect/server/ui-v2/assets/{catalog_._slug-DMHkouWh.js.map → catalog_._slug-CpeIUyfC.js.map} +1 -1
- prefect/server/ui-v2/assets/{catalog_._slug-DwC2yZo9.js → catalog_._slug-DxivsC4n.js} +2 -2
- prefect/server/ui-v2/assets/{catalog_._slug-DwC2yZo9.js.map → catalog_._slug-DxivsC4n.js.map} +1 -1
- prefect/server/ui-v2/assets/{catalog_._slug_.create-DEjqmQ5H.js → catalog_._slug_.create-BfAYCqzV.js} +2 -2
- prefect/server/ui-v2/assets/{catalog_._slug_.create-DEjqmQ5H.js.map → catalog_._slug_.create-BfAYCqzV.js.map} +1 -1
- prefect/server/ui-v2/assets/{catalog_._slug_.create-pWiWaBhm.js → catalog_._slug_.create-DIls_o2s.js} +2 -2
- prefect/server/ui-v2/assets/{catalog_._slug_.create-pWiWaBhm.js.map → catalog_._slug_.create-DIls_o2s.js.map} +1 -1
- prefect/server/ui-v2/assets/{checkbox-CnS0zOAZ.js → checkbox-C61fowvt.js} +2 -2
- prefect/server/ui-v2/assets/{checkbox-CnS0zOAZ.js.map → checkbox-C61fowvt.js.map} +1 -1
- prefect/server/ui-v2/assets/{concurrency-limit._id-C1JAbeF7.js → concurrency-limit._id-BD5OWaxK.js} +2 -2
- prefect/server/ui-v2/assets/{concurrency-limit._id-C1JAbeF7.js.map → concurrency-limit._id-BD5OWaxK.js.map} +1 -1
- prefect/server/ui-v2/assets/{concurrency-limit._id-D2km7zi6.js → concurrency-limit._id-C5IwLXM-.js} +2 -2
- prefect/server/ui-v2/assets/{concurrency-limit._id-D2km7zi6.js.map → concurrency-limit._id-C5IwLXM-.js.map} +1 -1
- prefect/server/ui-v2/assets/{concurrency-limits-CiuVe4lC.js → concurrency-limits-Bc84E04d.js} +2 -2
- prefect/server/ui-v2/assets/{concurrency-limits-CiuVe4lC.js.map → concurrency-limits-Bc84E04d.js.map} +1 -1
- prefect/server/ui-v2/assets/{concurrency-limits-Bo4VHM4m.js → concurrency-limits-DbbgieMK.js} +2 -2
- prefect/server/ui-v2/assets/{concurrency-limits-Bo4VHM4m.js.map → concurrency-limits-DbbgieMK.js.map} +1 -1
- prefect/server/ui-v2/assets/{create-DC_F9Vc2.js → create-B5swJNpx.js} +2 -2
- prefect/server/ui-v2/assets/{create-DC_F9Vc2.js.map → create-B5swJNpx.js.map} +1 -1
- prefect/server/ui-v2/assets/{create-CXr3hIap.js → create-CLSh2YYJ.js} +2 -2
- prefect/server/ui-v2/assets/{create-CXr3hIap.js.map → create-CLSh2YYJ.js.map} +1 -1
- prefect/server/ui-v2/assets/{create-KsVh0LQQ.js → create-DR2ACvWj.js} +2 -2
- prefect/server/ui-v2/assets/{create-KsVh0LQQ.js.map → create-DR2ACvWj.js.map} +1 -1
- prefect/server/ui-v2/assets/{create-B8bILmAp.js → create-DUZ4ILfd.js} +2 -2
- prefect/server/ui-v2/assets/{create-B8bILmAp.js.map → create-DUZ4ILfd.js.map} +1 -1
- prefect/server/ui-v2/assets/{cron-input-B9vmWBhI.js → cron-input-DTg4XKWR.js} +2 -2
- prefect/server/ui-v2/assets/{cron-input-B9vmWBhI.js.map → cron-input-DTg4XKWR.js.map} +1 -1
- prefect/server/ui-v2/assets/{data-table-C_Co3B-8.js → data-table-BeZEMPPj.js} +2 -2
- prefect/server/ui-v2/assets/{data-table-C_Co3B-8.js.map → data-table-BeZEMPPj.js.map} +1 -1
- prefect/server/ui-v2/assets/{data-table-hPoc29Gc.js → data-table-CYvl_mU7.js} +2 -2
- prefect/server/ui-v2/assets/{data-table-hPoc29Gc.js.map → data-table-CYvl_mU7.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment-form-CrL1aiF2.js → deployment-form-BdWBEIGb.js} +3 -3
- prefect/server/ui-v2/assets/{deployment-form-CrL1aiF2.js.map → deployment-form-BdWBEIGb.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment-links-CtiX6W-O.js → deployment-links-DcaHRana.js} +2 -2
- prefect/server/ui-v2/assets/{deployment-links-CtiX6W-O.js.map → deployment-links-DcaHRana.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment._id-8DHzBBqN.js → deployment._id-DSpkCkrD.js} +2 -2
- prefect/server/ui-v2/assets/{deployment._id-8DHzBBqN.js.map → deployment._id-DSpkCkrD.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment._id-B5njgUVH.js → deployment._id-QB9oUwli.js} +2 -2
- prefect/server/ui-v2/assets/{deployment._id-B5njgUVH.js.map → deployment._id-QB9oUwli.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment_._id.duplicate-P68wrx5d.js → deployment_._id.duplicate-Buq607hT.js} +2 -2
- prefect/server/ui-v2/assets/{deployment_._id.duplicate-P68wrx5d.js.map → deployment_._id.duplicate-Buq607hT.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment_._id.duplicate-DSE5qVrl.js → deployment_._id.duplicate-CxoXM02K.js} +2 -2
- prefect/server/ui-v2/assets/{deployment_._id.duplicate-DSE5qVrl.js.map → deployment_._id.duplicate-CxoXM02K.js.map} +1 -1
- prefect/server/ui-v2/assets/deployment_._id.edit-B4-TptEu.js +2 -0
- prefect/server/ui-v2/assets/{deployment_._id.edit-BmCwRQfG.js.map → deployment_._id.edit-B4-TptEu.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment_._id.edit-BRk2Bs0U.js → deployment_._id.edit-BLbczGE6.js} +2 -2
- prefect/server/ui-v2/assets/{deployment_._id.edit-BRk2Bs0U.js.map → deployment_._id.edit-BLbczGE6.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment_._id.run-SWWrS_XP.js → deployment_._id.run-OoFiqasU.js} +2 -2
- prefect/server/ui-v2/assets/{deployment_._id.run-SWWrS_XP.js.map → deployment_._id.run-OoFiqasU.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment_._id.run-Bqnf9Hd8.js → deployment_._id.run-aNTvRx3C.js} +2 -2
- prefect/server/ui-v2/assets/{deployment_._id.run-Bqnf9Hd8.js.map → deployment_._id.run-aNTvRx3C.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployments-B5DW6oSd.js → deployments-Bg48iYTk.js} +2 -2
- prefect/server/ui-v2/assets/{deployments-B5DW6oSd.js.map → deployments-Bg48iYTk.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployments-vfpjs2Zu.js → deployments-C9hCXqaw.js} +2 -2
- prefect/server/ui-v2/assets/{deployments-vfpjs2Zu.js.map → deployments-C9hCXqaw.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployments-C1tmJw6Q.js → deployments-f9_6GjVM.js} +2 -2
- prefect/server/ui-v2/assets/{deployments-C1tmJw6Q.js.map → deployments-f9_6GjVM.js.map} +1 -1
- prefect/server/ui-v2/assets/{dialog-DIuvBKov.js → dialog-kjByAu2K.js} +2 -2
- prefect/server/ui-v2/assets/{dialog-DIuvBKov.js.map → dialog-kjByAu2K.js.map} +1 -1
- prefect/server/ui-v2/assets/{dist-BWGcVrLy.js → dist-D70cmkC4.js} +2 -2
- prefect/server/ui-v2/assets/{dist-BWGcVrLy.js.map → dist-D70cmkC4.js.map} +1 -1
- prefect/server/ui-v2/assets/{event-resource-display-Bb5tg3Sp.js → event-resource-display-BbTlxvM0.js} +2 -2
- prefect/server/ui-v2/assets/{event-resource-display-Bb5tg3Sp.js.map → event-resource-display-BbTlxvM0.js.map} +1 -1
- prefect/server/ui-v2/assets/{event._eventDate._eventId-DSEdek1y.js → event._eventDate._eventId-52Pjmxbr.js} +2 -2
- prefect/server/ui-v2/assets/{event._eventDate._eventId-DSEdek1y.js.map → event._eventDate._eventId-52Pjmxbr.js.map} +1 -1
- prefect/server/ui-v2/assets/{event._eventDate._eventId-i_o9_8J0.js → event._eventDate._eventId-CxWp57nP.js} +2 -2
- prefect/server/ui-v2/assets/{event._eventDate._eventId-i_o9_8J0.js.map → event._eventDate._eventId-CxWp57nP.js.map} +1 -1
- prefect/server/ui-v2/assets/{events-Ba2H0nXG.js → events-DCxvBjip.js} +2 -2
- prefect/server/ui-v2/assets/{events-Ba2H0nXG.js.map → events-DCxvBjip.js.map} +1 -1
- prefect/server/ui-v2/assets/{events-DEk8mDv8.js → events-Vcoo_bS9.js} +2 -2
- prefect/server/ui-v2/assets/{events-DEk8mDv8.js.map → events-Vcoo_bS9.js.map} +1 -1
- prefect/server/ui-v2/assets/{events-timeline-BcJ4EZ3S.js → events-timeline-CnmVZdtM.js} +2 -2
- prefect/server/ui-v2/assets/{events-timeline-BcJ4EZ3S.js.map → events-timeline-CnmVZdtM.js.map} +1 -1
- prefect/server/ui-v2/assets/{flow-run-graph-C7Yv3ssM.js → flow-run-graph-CbD29Wck.js} +2 -2
- prefect/server/ui-v2/assets/{flow-run-graph-C7Yv3ssM.js.map → flow-run-graph-CbD29Wck.js.map} +1 -1
- prefect/server/ui-v2/assets/{flow-run._id-m92ddStD.js → flow-run._id-Bz9FocWM.js} +2 -2
- prefect/server/ui-v2/assets/{flow-run._id-m92ddStD.js.map → flow-run._id-Bz9FocWM.js.map} +1 -1
- prefect/server/ui-v2/assets/{flow-run._id-MIyYC3qx.js → flow-run._id-DbsY1HyI.js} +3 -3
- prefect/server/ui-v2/assets/{flow-run._id-MIyYC3qx.js.map → flow-run._id-DbsY1HyI.js.map} +1 -1
- prefect/server/ui-v2/assets/{flow-run._id-CuDYZEu4.js → flow-run._id-DqyOqm6l.js} +2 -2
- prefect/server/ui-v2/assets/{flow-run._id-CuDYZEu4.js.map → flow-run._id-DqyOqm6l.js.map} +1 -1
- prefect/server/ui-v2/assets/{flow-runs-Aasu1lzC.js → flow-runs-BlvuNAbf.js} +2 -2
- prefect/server/ui-v2/assets/{flow-runs-Aasu1lzC.js.map → flow-runs-BlvuNAbf.js.map} +1 -1
- prefect/server/ui-v2/assets/{flow._id-XXB9UBEF.js → flow._id-C7Rk6PoH.js} +2 -2
- prefect/server/ui-v2/assets/{flow._id-XXB9UBEF.js.map → flow._id-C7Rk6PoH.js.map} +1 -1
- prefect/server/ui-v2/assets/{flow._id-BRbwflJa.js → flow._id-DgOouag4.js} +2 -2
- prefect/server/ui-v2/assets/{flow._id-BRbwflJa.js.map → flow._id-DgOouag4.js.map} +1 -1
- prefect/server/ui-v2/assets/{flows-DeHBhtYq.js → flows-BKgvWEsn.js} +2 -2
- prefect/server/ui-v2/assets/{flows-DeHBhtYq.js.map → flows-BKgvWEsn.js.map} +1 -1
- prefect/server/ui-v2/assets/{flows-DxzYYVqT.js → flows-BmMWNEVL.js} +2 -2
- prefect/server/ui-v2/assets/{flows-DxzYYVqT.js.map → flows-BmMWNEVL.js.map} +1 -1
- prefect/server/ui-v2/assets/{flows-GKacvQcS.js → flows-C-NRpuYa.js} +2 -2
- prefect/server/ui-v2/assets/{flows-GKacvQcS.js.map → flows-C-NRpuYa.js.map} +1 -1
- prefect/server/ui-v2/assets/{header-DLLIG_v_.js → header-B--ytya-.js} +2 -2
- prefect/server/ui-v2/assets/{header-DLLIG_v_.js.map → header-B--ytya-.js.map} +1 -1
- prefect/server/ui-v2/assets/{header-C1Kl0PQt.js → header-Bn60nLKw.js} +2 -2
- prefect/server/ui-v2/assets/{header-C1Kl0PQt.js.map → header-Bn60nLKw.js.map} +1 -1
- prefect/server/ui-v2/assets/{header-BmLqNPjl.js → header-BvXtnaKL.js} +2 -2
- prefect/server/ui-v2/assets/{header-BmLqNPjl.js.map → header-BvXtnaKL.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-DpPA2bX1.js → index-SebwJ2h3.js} +7 -7
- prefect/server/ui-v2/assets/index-SebwJ2h3.js.map +1 -0
- prefect/server/ui-v2/assets/{index-BNTLwS1u.css → index-iPs14a-7.css} +1 -1
- prefect/server/ui-v2/assets/{input-BaSLpSlc.js → input-Dr0oypOO.js} +2 -2
- prefect/server/ui-v2/assets/{input-BaSLpSlc.js.map → input-Dr0oypOO.js.map} +1 -1
- prefect/server/ui-v2/assets/{json-input-Ck4wcenx.js → json-input-C4f9tary.js} +2 -2
- prefect/server/ui-v2/assets/{json-input-Ck4wcenx.js.map → json-input-C4f9tary.js.map} +1 -1
- prefect/server/ui-v2/assets/{key-value-C2vDi3xo.js → key-value-C6T0AQJ-.js} +2 -2
- prefect/server/ui-v2/assets/{key-value-C2vDi3xo.js.map → key-value-C6T0AQJ-.js.map} +1 -1
- prefect/server/ui-v2/assets/{key._key-D_htSbFc.js → key._key-DClBSNAc.js} +2 -2
- prefect/server/ui-v2/assets/{key._key-D_htSbFc.js.map → key._key-DClBSNAc.js.map} +1 -1
- prefect/server/ui-v2/assets/{key._key-DZrY5Jq5.js → key._key-XPS7oVq5.js} +2 -2
- prefect/server/ui-v2/assets/{key._key-DZrY5Jq5.js.map → key._key-XPS7oVq5.js.map} +1 -1
- prefect/server/ui-v2/assets/{label-WfC7LL4G.js → label-K0MrFuta.js} +2 -2
- prefect/server/ui-v2/assets/{label-WfC7LL4G.js.map → label-K0MrFuta.js.map} +1 -1
- prefect/server/ui-v2/assets/{lazy-markdown-CCDNtAxT.js → lazy-markdown-uVUtgyxS.js} +2 -2
- prefect/server/ui-v2/assets/{lazy-markdown-CCDNtAxT.js.map → lazy-markdown-uVUtgyxS.js.map} +1 -1
- prefect/server/ui-v2/assets/{login-BeT_TSuo.js → login-BrODzAEz.js} +2 -2
- prefect/server/ui-v2/assets/{login-BeT_TSuo.js.map → login-BrODzAEz.js.map} +1 -1
- prefect/server/ui-v2/assets/{markdown-input-4x3dDfbx.js → markdown-input-tBIKaGf7.js} +2 -2
- prefect/server/ui-v2/assets/{markdown-input-4x3dDfbx.js.map → markdown-input-tBIKaGf7.js.map} +1 -1
- prefect/server/ui-v2/assets/{popover-wLn6-LQK.js → popover-DxOdMf4-.js} +2 -2
- prefect/server/ui-v2/assets/{popover-wLn6-LQK.js.map → popover-DxOdMf4-.js.map} +1 -1
- prefect/server/ui-v2/assets/python-example-snippet-BfhCQ6Qd.js +3 -0
- prefect/server/ui-v2/assets/{python-example-snippet-BxNh5JeI.js.map → python-example-snippet-BfhCQ6Qd.js.map} +1 -1
- prefect/server/ui-v2/assets/{python-input-WU0VDfRW.js → python-input-CsGs2knT.js} +2 -2
- prefect/server/ui-v2/assets/{python-input-WU0VDfRW.js.map → python-input-CsGs2knT.js.map} +1 -1
- prefect/server/ui-v2/assets/{route-error-state-DChqMSir.js → route-error-state-D3zpyudZ.js} +2 -2
- prefect/server/ui-v2/assets/{route-error-state-DChqMSir.js.map → route-error-state-D3zpyudZ.js.map} +1 -1
- prefect/server/ui-v2/assets/{run-logs-CRosV4hp.js → run-logs-Cg817JNc.js} +2 -2
- prefect/server/ui-v2/assets/{run-logs-CRosV4hp.js.map → run-logs-Cg817JNc.js.map} +1 -1
- prefect/server/ui-v2/assets/{runs-BJ5vg2mD.js → runs-BLE8kTnW.js} +2 -2
- prefect/server/ui-v2/assets/{runs-BJ5vg2mD.js.map → runs-BLE8kTnW.js.map} +1 -1
- prefect/server/ui-v2/assets/{runs-CDLtNNwI.js → runs-r6c5QXLm.js} +2 -2
- prefect/server/ui-v2/assets/{runs-CDLtNNwI.js.map → runs-r6c5QXLm.js.map} +1 -1
- prefect/server/ui-v2/assets/{schedule-badge-CMgyQe0S.js → schedule-badge-W3ssm5sb.js} +2 -2
- prefect/server/ui-v2/assets/{schedule-badge-CMgyQe0S.js.map → schedule-badge-W3ssm5sb.js.map} +1 -1
- prefect/server/ui-v2/assets/{schema-form-Dj8aocnY.js → schema-form-C_mXU59h.js} +3 -3
- prefect/server/ui-v2/assets/{schema-form-Dj8aocnY.js.map → schema-form-C_mXU59h.js.map} +1 -1
- prefect/server/ui-v2/assets/{select-Cvo9G-Ih.js → select-y2lIflCz.js} +2 -2
- prefect/server/ui-v2/assets/{select-Cvo9G-Ih.js.map → select-y2lIflCz.js.map} +1 -1
- prefect/server/ui-v2/assets/{service-DqISgcwD.js → service-DQBoCx1F.js} +2 -2
- prefect/server/ui-v2/assets/{service-DqISgcwD.js.map → service-DQBoCx1F.js.map} +1 -1
- prefect/server/ui-v2/assets/{settings-DnjyoScP.js → settings-9Ww5jBq4.js} +2 -2
- prefect/server/ui-v2/assets/{settings-DnjyoScP.js.map → settings-9Ww5jBq4.js.map} +1 -1
- prefect/server/ui-v2/assets/{skeleton-DArRq_9V.js → skeleton-CPJoizSQ.js} +2 -2
- prefect/server/ui-v2/assets/{skeleton-DArRq_9V.js.map → skeleton-CPJoizSQ.js.map} +1 -1
- prefect/server/ui-v2/assets/{state-badge-ngrQ67nq.js → state-badge-DFFq5COZ.js} +2 -2
- prefect/server/ui-v2/assets/{state-badge-ngrQ67nq.js.map → state-badge-DFFq5COZ.js.map} +1 -1
- prefect/server/ui-v2/assets/{state-select-bUmduh8e.js → state-select-TCSj7IPn.js} +2 -2
- prefect/server/ui-v2/assets/{state-select-bUmduh8e.js.map → state-select-TCSj7IPn.js.map} +1 -1
- prefect/server/ui-v2/assets/{status-badge-BCzVdEts.js → status-badge-5pEl4xty.js} +2 -2
- prefect/server/ui-v2/assets/{status-badge-BCzVdEts.js.map → status-badge-5pEl4xty.js.map} +1 -1
- prefect/server/ui-v2/assets/{tag-badge-group-BYDgVfl7.js → tag-badge-group-vf-EXVLw.js} +2 -2
- prefect/server/ui-v2/assets/{tag-badge-group-BYDgVfl7.js.map → tag-badge-group-vf-EXVLw.js.map} +1 -1
- prefect/server/ui-v2/assets/{tag-badge-DTVaiChx.js → tag-badge-mp5HxqMT.js} +2 -2
- prefect/server/ui-v2/assets/{tag-badge-DTVaiChx.js.map → tag-badge-mp5HxqMT.js.map} +1 -1
- prefect/server/ui-v2/assets/{tags-input-hwPEN4A8.js → tags-input-DS8uhDId.js} +2 -2
- prefect/server/ui-v2/assets/{tags-input-hwPEN4A8.js.map → tags-input-DS8uhDId.js.map} +1 -1
- prefect/server/ui-v2/assets/{task-run-concurrency-limits-reset-dialog-C9Cd2k_x.js → task-run-concurrency-limits-reset-dialog-DVCB_sAN.js} +2 -2
- prefect/server/ui-v2/assets/{task-run-concurrency-limits-reset-dialog-C9Cd2k_x.js.map → task-run-concurrency-limits-reset-dialog-DVCB_sAN.js.map} +1 -1
- prefect/server/ui-v2/assets/{task-run._id-Bh4SxXPB.js → task-run._id-BF5yIJbu.js} +2 -2
- prefect/server/ui-v2/assets/{task-run._id-Bh4SxXPB.js.map → task-run._id-BF5yIJbu.js.map} +1 -1
- prefect/server/ui-v2/assets/{task-run._id-CRu9NFG7.js → task-run._id-DwniCJAS.js} +2 -2
- prefect/server/ui-v2/assets/{task-run._id-CRu9NFG7.js.map → task-run._id-DwniCJAS.js.map} +1 -1
- prefect/server/ui-v2/assets/{task-runs-ChRc-e48.js → task-runs-juaJgpw8.js} +2 -2
- prefect/server/ui-v2/assets/{task-runs-ChRc-e48.js.map → task-runs-juaJgpw8.js.map} +1 -1
- prefect/server/ui-v2/assets/{timezone-select-C5FfG9pp.js → timezone-select-BxW5YhB3.js} +2 -2
- prefect/server/ui-v2/assets/{timezone-select-C5FfG9pp.js.map → timezone-select-BxW5YhB3.js.map} +1 -1
- prefect/server/ui-v2/assets/{toggle-group-_u3r2CNw.js → toggle-group-cZa2kNKg.js} +2 -2
- prefect/server/ui-v2/assets/{toggle-group-_u3r2CNw.js.map → toggle-group-cZa2kNKg.js.map} +1 -1
- prefect/server/ui-v2/assets/{tooltip-C9wxoNDR.js → tooltip-BzlEotat.js} +2 -2
- prefect/server/ui-v2/assets/{tooltip-C9wxoNDR.js.map → tooltip-BzlEotat.js.map} +1 -1
- prefect/server/ui-v2/assets/{trigger-details-CHNjlEuw.js → trigger-details-Bv6ZRMq5.js} +2 -2
- prefect/server/ui-v2/assets/{trigger-details-CHNjlEuw.js.map → trigger-details-Bv6ZRMq5.js.map} +1 -1
- prefect/server/ui-v2/assets/{ui-settings-CaRokgmg.js → ui-settings-Hapar41k.js} +2 -2
- prefect/server/ui-v2/assets/{ui-settings-CaRokgmg.js.map → ui-settings-Hapar41k.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-delete-automation-confirmation-dialog-BughSutx.js → use-delete-automation-confirmation-dialog-Bk5-cKjd.js} +2 -2
- prefect/server/ui-v2/assets/{use-delete-automation-confirmation-dialog-BughSutx.js.map → use-delete-automation-confirmation-dialog-Bk5-cKjd.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-CKHqokBH.js → use-delete-block-document-confirmation-dialog-CYyZ4sTs.js} +2 -2
- prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-CKHqokBH.js.map → use-delete-block-document-confirmation-dialog-CYyZ4sTs.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-delete-deployment-confirmation-dialog-C3ycZNgq.js → use-delete-deployment-confirmation-dialog-CHPDQ8vA.js} +2 -2
- prefect/server/ui-v2/assets/{use-delete-deployment-confirmation-dialog-C3ycZNgq.js.map → use-delete-deployment-confirmation-dialog-CHPDQ8vA.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-DhfQBVCF.js → use-get-artifacts-flow-task-runs-3svJ-Wms.js} +2 -2
- prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-DhfQBVCF.js.map → use-get-artifacts-flow-task-runs-3svJ-Wms.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-page-size-preference-h2fMa3uB.js → use-page-size-preference-IOpF1ai0.js} +2 -2
- prefect/server/ui-v2/assets/{use-page-size-preference-h2fMa3uB.js.map → use-page-size-preference-IOpF1ai0.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-resource-options-D89EKwub.js → use-resource-options-BEKWTTOl.js} +2 -2
- prefect/server/ui-v2/assets/{use-resource-options-D89EKwub.js.map → use-resource-options-BEKWTTOl.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-stepper-EHPLdSM1.js → use-stepper-C1f9nvnR.js} +2 -2
- prefect/server/ui-v2/assets/{use-stepper-EHPLdSM1.js.map → use-stepper-C1f9nvnR.js.map} +1 -1
- prefect/server/ui-v2/assets/{variables-CNffa7fL.js → variables-BWiRHQ3L.js} +2 -2
- prefect/server/ui-v2/assets/{variables-CNffa7fL.js.map → variables-BWiRHQ3L.js.map} +1 -1
- prefect/server/ui-v2/assets/{variables-CuEJhTIi.js → variables-CxOLIk60.js} +2 -2
- prefect/server/ui-v2/assets/{variables-CuEJhTIi.js.map → variables-CxOLIk60.js.map} +1 -1
- prefect/server/ui-v2/assets/vendor-radix-CTETmXwX.js +42 -0
- prefect/server/ui-v2/assets/vendor-radix-CTETmXwX.js.map +1 -0
- prefect/server/ui-v2/assets/{vendor-react-BIruhmht.js → vendor-react-Db0NSBGF.js} +2 -2
- prefect/server/ui-v2/assets/{vendor-react-BIruhmht.js.map → vendor-react-Db0NSBGF.js.map} +1 -1
- prefect/server/ui-v2/assets/{vendor-recharts-CPNKWlI4.js → vendor-recharts-CnUR3BGJ.js} +2 -2
- prefect/server/ui-v2/assets/{vendor-recharts-CPNKWlI4.js.map → vendor-recharts-CnUR3BGJ.js.map} +1 -1
- prefect/server/ui-v2/assets/vendor-tanstack-Dx3GObhk.js +5 -0
- prefect/server/ui-v2/assets/vendor-tanstack-Dx3GObhk.js.map +1 -0
- prefect/server/ui-v2/assets/{work-pool-queue-form-D2p9bV5H.js → work-pool-queue-form-Bq2X5LHj.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool-queue-form-D2p9bV5H.js.map → work-pool-queue-form-Bq2X5LHj.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool-queue-toggle-mpNXNH8j.js → work-pool-queue-toggle-J85yKGTD.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool-queue-toggle-mpNXNH8j.js.map → work-pool-queue-toggle-J85yKGTD.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool._workPoolName-yitWW_tk.js → work-pool._workPoolName-YCXOdHVr.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool._workPoolName-yitWW_tk.js.map → work-pool._workPoolName-YCXOdHVr.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool._workPoolName-CE8bmrct.js → work-pool._workPoolName-bUofZYwQ.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool._workPoolName-CE8bmrct.js.map → work-pool._workPoolName-bUofZYwQ.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-D0nx4Eah.js → work-pool_._workPoolName.edit-CYfVbRNf.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-D0nx4Eah.js.map → work-pool_._workPoolName.edit-CYfVbRNf.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-DA2UEqLu.js → work-pool_._workPoolName.edit-DiXs_liC.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-DA2UEqLu.js.map → work-pool_._workPoolName.edit-DiXs_liC.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-JXuxoDuG.js → work-pool_._workPoolName.queue._workQueueName-BQuxeqDJ.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-JXuxoDuG.js.map → work-pool_._workPoolName.queue._workQueueName-BQuxeqDJ.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-DBjFQl5l.js → work-pool_._workPoolName.queue._workQueueName-DKeaiBcU.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-DBjFQl5l.js.map → work-pool_._workPoolName.queue._workQueueName-DKeaiBcU.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue.create-D66B3TgZ.js → work-pool_._workPoolName.queue.create-BOXgjauS.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue.create-D66B3TgZ.js.map → work-pool_._workPoolName.queue.create-BOXgjauS.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue.create-C4-aNOiQ.js → work-pool_._workPoolName.queue.create-D13u2idT.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue.create-C4-aNOiQ.js.map → work-pool_._workPoolName.queue.create-D13u2idT.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue_._workQueueName.edit-D0mwu3Qq.js → work-pool_._workPoolName.queue_._workQueueName.edit-B9IWAocA.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue_._workQueueName.edit-D0mwu3Qq.js.map → work-pool_._workPoolName.queue_._workQueueName.edit-B9IWAocA.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue_._workQueueName.edit-BhfkkDyJ.js → work-pool_._workPoolName.queue_._workQueueName.edit-IUEqbb8N.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue_._workQueueName.edit-BhfkkDyJ.js.map → work-pool_._workPoolName.queue_._workQueueName.edit-IUEqbb8N.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pools-CGC3mSny.js → work-pools-CF0R3DPQ.js} +2 -2
- prefect/server/ui-v2/assets/{work-pools-CGC3mSny.js.map → work-pools-CF0R3DPQ.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pools-CfA9RMA9.js → work-pools-CFgVsLNa.js} +2 -2
- prefect/server/ui-v2/assets/{work-pools-CfA9RMA9.js.map → work-pools-CFgVsLNa.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pools-CN3RyiZN.js → work-pools-Ca2SI6yr.js} +2 -2
- prefect/server/ui-v2/assets/{work-pools-CN3RyiZN.js.map → work-pools-Ca2SI6yr.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-queue-icon-text-9KRWnE0A.js → work-queue-icon-text-D1EV2W3e.js} +2 -2
- prefect/server/ui-v2/assets/{work-queue-icon-text-9KRWnE0A.js.map → work-queue-icon-text-D1EV2W3e.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-queue-select-CLtC0i-b.js → work-queue-select-DRgR5_TX.js} +2 -2
- prefect/server/ui-v2/assets/{work-queue-select-CLtC0i-b.js.map → work-queue-select-DRgR5_TX.js.map} +1 -1
- prefect/server/ui-v2/index.html +30 -30
- prefect/server/utilities/worker_channel.py +17 -2
- {prefect-3.7.7.dev2.dist-info → prefect-3.7.8.dev2.dist-info}/METADATA +2 -2
- {prefect-3.7.7.dev2.dist-info → prefect-3.7.8.dev2.dist-info}/RECORD +313 -313
- prefect/server/ui-v2/assets/button-D1nS4G4b.js +0 -3
- prefect/server/ui-v2/assets/deployment_._id.edit-BmCwRQfG.js +0 -2
- prefect/server/ui-v2/assets/index-DpPA2bX1.js.map +0 -1
- prefect/server/ui-v2/assets/python-example-snippet-BxNh5JeI.js +0 -3
- prefect/server/ui-v2/assets/vendor-radix-Dlx3ZkX2.js +0 -42
- prefect/server/ui-v2/assets/vendor-radix-Dlx3ZkX2.js.map +0 -1
- prefect/server/ui-v2/assets/vendor-tanstack-CghpeqA9.js +0 -5
- prefect/server/ui-v2/assets/vendor-tanstack-CghpeqA9.js.map +0 -1
- {prefect-3.7.7.dev2.dist-info → prefect-3.7.8.dev2.dist-info}/WHEEL +0 -0
- {prefect-3.7.7.dev2.dist-info → prefect-3.7.8.dev2.dist-info}/entry_points.txt +0 -0
- {prefect-3.7.7.dev2.dist-info → prefect-3.7.8.dev2.dist-info}/licenses/LICENSE +0 -0
prefect/_build_info.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Generated by versioningit
|
|
2
|
-
__version__ = "3.7.
|
|
3
|
-
__build_date__ = "2026-07-
|
|
4
|
-
__git_commit__ = "
|
|
2
|
+
__version__ = "3.7.8.dev2"
|
|
3
|
+
__build_date__ = "2026-07-07 09:14:19.574605+00:00"
|
|
4
|
+
__git_commit__ = "3f47d765fea655c92f2d700fedee8635ea2d4d2f"
|
|
5
5
|
__dirty__ = False
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import argparse
|
|
4
|
-
import builtins
|
|
5
4
|
import contextlib
|
|
6
5
|
import os
|
|
7
6
|
import sys
|
|
@@ -20,7 +19,8 @@ from prefect.deployments.steps.core import (
|
|
|
20
19
|
run_steps,
|
|
21
20
|
)
|
|
22
21
|
from prefect.filesystems import LocalFileSystem
|
|
23
|
-
from prefect.logging.
|
|
22
|
+
from prefect.logging.handlers import APILogHandler
|
|
23
|
+
from prefect.logging.loggers import PrefectLogAdapter, flow_run_logger
|
|
24
24
|
from prefect.utilities.filesystem import relative_path_to_current_platform
|
|
25
25
|
from prefect.utilities.processutils import get_sys_executable
|
|
26
26
|
|
|
@@ -29,7 +29,6 @@ if TYPE_CHECKING:
|
|
|
29
29
|
from prefect.client.schemas.objects import FlowRun
|
|
30
30
|
from prefect.client.schemas.responses import DeploymentResponse
|
|
31
31
|
|
|
32
|
-
LOGGER = get_logger("prefect.runner.workspace_resolver")
|
|
33
32
|
STORAGE_BASE_PATH_PLACEHOLDER = "$STORAGE_BASE_PATH"
|
|
34
33
|
|
|
35
34
|
|
|
@@ -67,11 +66,6 @@ def get_workspace_resolver_command(
|
|
|
67
66
|
]
|
|
68
67
|
|
|
69
68
|
|
|
70
|
-
def _stderr_print(*args: Any, **kwargs: Any) -> None:
|
|
71
|
-
kwargs.pop("style", None)
|
|
72
|
-
builtins.print(*args, file=sys.stderr, **kwargs)
|
|
73
|
-
|
|
74
|
-
|
|
75
69
|
def _resolve_runtime_entrypoint(entrypoint: str) -> str:
|
|
76
70
|
if ":" not in entrypoint:
|
|
77
71
|
return entrypoint
|
|
@@ -211,6 +205,7 @@ async def _ensure_entrypoint_in_workspace(
|
|
|
211
205
|
workspace_root: Path,
|
|
212
206
|
source_cwd: Path,
|
|
213
207
|
storage_base_path: Path | None,
|
|
208
|
+
logger: PrefectLogAdapter,
|
|
214
209
|
) -> Path:
|
|
215
210
|
if _has_entrypoint_file(deployment.entrypoint, workspace_root):
|
|
216
211
|
return workspace_root
|
|
@@ -229,6 +224,7 @@ async def _ensure_entrypoint_in_workspace(
|
|
|
229
224
|
workspace_root,
|
|
230
225
|
source_cwd,
|
|
231
226
|
storage_base_path,
|
|
227
|
+
logger,
|
|
232
228
|
)
|
|
233
229
|
return workspace_root
|
|
234
230
|
|
|
@@ -259,6 +255,7 @@ async def _pull_storage_into_workspace(
|
|
|
259
255
|
workspace_root: Path,
|
|
260
256
|
source_cwd: Path,
|
|
261
257
|
storage_base_path: Path | None,
|
|
258
|
+
logger: PrefectLogAdapter,
|
|
262
259
|
) -> Path:
|
|
263
260
|
local_path = _workspace_destination_for_deployment_path(
|
|
264
261
|
deployment.path, workspace_root, storage_base_path
|
|
@@ -285,7 +282,7 @@ async def _pull_storage_into_workspace(
|
|
|
285
282
|
)
|
|
286
283
|
storage_block = LocalFileSystem(basepath=from_path)
|
|
287
284
|
|
|
288
|
-
|
|
285
|
+
logger.info("Downloading flow code from storage at %r", from_path)
|
|
289
286
|
await storage_block.get_directory(from_path=from_path, local_path=str(local_path))
|
|
290
287
|
return local_path
|
|
291
288
|
|
|
@@ -301,6 +298,8 @@ async def prepare_workspace(
|
|
|
301
298
|
f"Deployment {deployment.id} does not have an entrypoint and can not be run."
|
|
302
299
|
)
|
|
303
300
|
|
|
301
|
+
run_logger = flow_run_logger(flow_run)
|
|
302
|
+
|
|
304
303
|
source_cwd = Path.cwd().resolve()
|
|
305
304
|
storage_base_path = _get_configured_storage_base_path()
|
|
306
305
|
resolved_workspace_root = Path(workspace_root).expanduser().resolve()
|
|
@@ -314,6 +313,7 @@ async def prepare_workspace(
|
|
|
314
313
|
resolved_workspace_root,
|
|
315
314
|
source_cwd,
|
|
316
315
|
storage_base_path,
|
|
316
|
+
run_logger,
|
|
317
317
|
)
|
|
318
318
|
local_runtime_directory = _resolve_local_runtime_directory(
|
|
319
319
|
deployment.path, source_cwd, storage_base_path
|
|
@@ -326,7 +326,9 @@ async def prepare_workspace(
|
|
|
326
326
|
working_directory = resolved_workspace_root
|
|
327
327
|
step_selected_working_directory = False
|
|
328
328
|
os.chdir(resolved_workspace_root)
|
|
329
|
-
|
|
329
|
+
run_logger.info(
|
|
330
|
+
"Running %s deployment pull step(s)", len(deployment.pull_steps)
|
|
331
|
+
)
|
|
330
332
|
|
|
331
333
|
def _track_step_workspace(
|
|
332
334
|
_step: dict[str, Any],
|
|
@@ -359,10 +361,10 @@ async def prepare_workspace(
|
|
|
359
361
|
with _observe_step_completion(_track_step_workspace):
|
|
360
362
|
await run_steps(
|
|
361
363
|
deployment.pull_steps,
|
|
362
|
-
print_function=
|
|
364
|
+
print_function=run_logger.warning,
|
|
363
365
|
deployment=deployment,
|
|
364
366
|
flow_run=flow_run,
|
|
365
|
-
logger=
|
|
367
|
+
logger=run_logger,
|
|
366
368
|
)
|
|
367
369
|
finally:
|
|
368
370
|
_PULL_STEP_SOURCE_CWD.reset(source_cwd_token)
|
|
@@ -374,6 +376,7 @@ async def prepare_workspace(
|
|
|
374
376
|
resolved_workspace_root,
|
|
375
377
|
source_cwd,
|
|
376
378
|
storage_base_path,
|
|
379
|
+
run_logger,
|
|
377
380
|
)
|
|
378
381
|
|
|
379
382
|
os.chdir(working_directory)
|
|
@@ -436,6 +439,8 @@ async def _main_async(argv: list[str] | None = None) -> int:
|
|
|
436
439
|
sys.stdout.write(result.model_dump_json())
|
|
437
440
|
sys.stdout.write("\n")
|
|
438
441
|
return 1
|
|
442
|
+
finally:
|
|
443
|
+
await APILogHandler.aflush()
|
|
439
444
|
|
|
440
445
|
result = PreparedWorkspaceResult(status="success", workspace=workspace)
|
|
441
446
|
sys.stdout.write(result.model_dump_json())
|
prefect/server/AGENTS.md
CHANGED
|
@@ -67,7 +67,7 @@ alembic_revision("description") # Create a new migration
|
|
|
67
67
|
|
|
68
68
|
## UI Serving Architecture
|
|
69
69
|
|
|
70
|
-
Both V1 and V2 UI bundles are served simultaneously when available: V1 at `PREFECT_UI_SERVE_BASE` (default `/`), V2 at `{base_url}/v2`. The `redirect_to_preferred_ui` middleware routes neutral entry points using the `prefect_ui_version` cookie. `PREFECT_SERVER_UI_V2_ENABLED` sets the *default* for browsers with no saved preference — it does not remove V1 or force all users to V2. Both bundles must be built before packaging (`PREFECT_REQUIRE_PACKAGED_UI_BUNDLES=1` enforces this via `hatch_build.py`).
|
|
70
|
+
Both V1 and V2 UI bundles are served simultaneously when available: V1 at `PREFECT_UI_SERVE_BASE` (default `/`), V2 at `{base_url}/v2`. The `redirect_to_preferred_ui` middleware routes neutral entry points using the `prefect_ui_version` cookie. `PREFECT_SERVER_UI_V2_ENABLED` sets the *default* for browsers with no saved preference — it does not remove V1 or force all users to V2. Both bundles must be built before packaging (`PREFECT_REQUIRE_PACKAGED_UI_BUNDLES=1` enforces this via `hatch_build.py`). **The version-redirect `Location` header must be a relative path** — using `request.url.replace(...)` builds an absolute URL that embeds the internal Host behind a reverse proxy and leaks it to the client.
|
|
71
71
|
|
|
72
72
|
## Main Subsystems
|
|
73
73
|
|
prefect/server/api/_ui_static.py
CHANGED
prefect/server/api/server.py
CHANGED
|
@@ -43,7 +43,6 @@ from fastapi.openapi.utils import get_openapi
|
|
|
43
43
|
from fastapi.responses import JSONResponse, RedirectResponse
|
|
44
44
|
from fastapi.staticfiles import StaticFiles
|
|
45
45
|
from packaging.version import Version
|
|
46
|
-
from starlette.exceptions import HTTPException
|
|
47
46
|
from typing_extensions import Self
|
|
48
47
|
|
|
49
48
|
import prefect
|
|
@@ -176,21 +175,6 @@ def _install_sqlite_locked_log_filter() -> None:
|
|
|
176
175
|
_SQLITE_LOCKED_LOG_FILTER = filter_
|
|
177
176
|
|
|
178
177
|
|
|
179
|
-
class SPAStaticFiles(StaticFiles):
|
|
180
|
-
"""
|
|
181
|
-
Implementation of `StaticFiles` for serving single page applications.
|
|
182
|
-
|
|
183
|
-
Adds `get_response` handling to ensure that when a resource isn't found the
|
|
184
|
-
application still returns the index.
|
|
185
|
-
"""
|
|
186
|
-
|
|
187
|
-
async def get_response(self, path: str, scope: Any) -> Response:
|
|
188
|
-
try:
|
|
189
|
-
return await super().get_response(path, scope)
|
|
190
|
-
except HTTPException:
|
|
191
|
-
return await super().get_response("./index.html", scope)
|
|
192
|
-
|
|
193
|
-
|
|
194
178
|
def _normalize_ui_base_url(base_url: str) -> str:
|
|
195
179
|
if not base_url:
|
|
196
180
|
return "/"
|
|
@@ -616,7 +600,6 @@ def create_ui_app(ephemeral: bool) -> FastAPI:
|
|
|
616
600
|
static_dir=build_static_dir("v1", str(prefect.__ui_static_subpath__)),
|
|
617
601
|
base_url=v1_base_url,
|
|
618
602
|
cache_key=f"v1:{prefect.__version__}:{v1_base_url}",
|
|
619
|
-
mount_name="ui_v1",
|
|
620
603
|
),
|
|
621
604
|
UIBundle(
|
|
622
605
|
version="v2",
|
|
@@ -624,7 +607,6 @@ def create_ui_app(ephemeral: bool) -> FastAPI:
|
|
|
624
607
|
static_dir=build_static_dir("v2", str(prefect.__ui_v2_static_subpath__)),
|
|
625
608
|
base_url=v2_base_url,
|
|
626
609
|
cache_key=f"v2:{prefect.__version__}:{v2_base_url}",
|
|
627
|
-
mount_name="ui_v2",
|
|
628
610
|
),
|
|
629
611
|
]
|
|
630
612
|
|
|
@@ -767,10 +749,10 @@ def create_ui_app(ephemeral: bool) -> FastAPI:
|
|
|
767
749
|
if bundle is None:
|
|
768
750
|
continue
|
|
769
751
|
|
|
770
|
-
ui_app.
|
|
752
|
+
ui_app.frontend(
|
|
771
753
|
bundle.base_url,
|
|
772
|
-
|
|
773
|
-
|
|
754
|
+
directory=bundle.static_dir,
|
|
755
|
+
fallback="index.html",
|
|
774
756
|
)
|
|
775
757
|
|
|
776
758
|
return ui_app
|
prefect/server/api/workers.py
CHANGED
|
@@ -1148,6 +1148,7 @@ async def worker_channel_connect(
|
|
|
1148
1148
|
work_pool_id=ready.payload.initial_snapshot.work_pool.id,
|
|
1149
1149
|
consumer_id=hello.payload.consumer_id,
|
|
1150
1150
|
worker_name=hello.payload.worker_name,
|
|
1151
|
+
work_pool_updated=ready.payload.initial_snapshot.work_pool.updated,
|
|
1151
1152
|
cleanup_queue=(
|
|
1152
1153
|
cleanup_queue
|
|
1153
1154
|
if CLEANUP_DELIVERY_CAPABILITY
|
|
@@ -309,7 +309,6 @@ async def read_artifacts(
|
|
|
309
309
|
task_run_filter: Only select artifacts whose task runs matching this filter
|
|
310
310
|
deployment_filter: Only select artifacts whose flow runs belong to deployments matching this filter
|
|
311
311
|
flow_filter: Only select artifacts whose flow runs belong to flows matching this filter
|
|
312
|
-
work_pool_filter: Only select artifacts whose flow runs belong to work pools matching this filter
|
|
313
312
|
"""
|
|
314
313
|
query = sa.select(db.Artifact).order_by(*sort.as_sql_sort())
|
|
315
314
|
|
|
@@ -357,7 +356,6 @@ async def read_latest_artifacts(
|
|
|
357
356
|
task_run_filter: Only select artifacts whose task runs matching this filter
|
|
358
357
|
deployment_filter: Only select artifacts whose flow runs belong to deployments matching this filter
|
|
359
358
|
flow_filter: Only select artifacts whose flow runs belong to flows matching this filter
|
|
360
|
-
work_pool_filter: Only select artifacts whose flow runs belong to work pools matching this filter
|
|
361
359
|
"""
|
|
362
360
|
query = sa.select(db.ArtifactCollection).order_by(*sort.as_sql_sort())
|
|
363
361
|
query = await _apply_artifact_collection_filters(
|
|
@@ -294,11 +294,11 @@ async def read_work_queue_by_name(
|
|
|
294
294
|
db: PrefectDBInterface, session: AsyncSession, name: str
|
|
295
295
|
) -> Optional[orm_models.WorkQueue]:
|
|
296
296
|
"""
|
|
297
|
-
Reads a WorkQueue by
|
|
297
|
+
Reads a WorkQueue by name.
|
|
298
298
|
|
|
299
299
|
Args:
|
|
300
300
|
session (AsyncSession): A database session
|
|
301
|
-
|
|
301
|
+
name (str): a WorkQueue name
|
|
302
302
|
|
|
303
303
|
Returns:
|
|
304
304
|
orm_models.WorkQueue: the WorkQueue
|
prefect/server/models/workers.py
CHANGED
|
@@ -325,7 +325,7 @@ async def update_work_pool(
|
|
|
325
325
|
Args:
|
|
326
326
|
session (AsyncSession): A database session
|
|
327
327
|
work_pool_id (UUID): a WorkPool id
|
|
328
|
-
|
|
328
|
+
work_pool: the work pool data
|
|
329
329
|
emit_status_change: function to call when work pool
|
|
330
330
|
status is changed
|
|
331
331
|
emit_update_event: whether to emit an event for updated non-status fields
|
prefect/server/schemas/core.py
CHANGED
|
@@ -1046,7 +1046,7 @@ class WorkQueueHealthPolicy(PrefectBaseModel):
|
|
|
1046
1046
|
Given empirical information about the state of the work queue, evaluate its health status.
|
|
1047
1047
|
|
|
1048
1048
|
Args:
|
|
1049
|
-
|
|
1049
|
+
late_runs_count: the count of late runs for the work queue.
|
|
1050
1050
|
last_polled: the last time the work queue was polled, if available.
|
|
1051
1051
|
|
|
1052
1052
|
Returns:
|
|
@@ -484,13 +484,18 @@ async def consumer(
|
|
|
484
484
|
raise
|
|
485
485
|
|
|
486
486
|
async def flush_periodically():
|
|
487
|
-
|
|
488
|
-
|
|
487
|
+
while True:
|
|
488
|
+
try:
|
|
489
489
|
await asyncio.sleep(flush_every)
|
|
490
490
|
if queue.qsize():
|
|
491
491
|
await flush()
|
|
492
|
-
|
|
493
|
-
|
|
492
|
+
except asyncio.CancelledError:
|
|
493
|
+
return
|
|
494
|
+
except Exception:
|
|
495
|
+
# flush() re-raises when events are dropped; this task is never
|
|
496
|
+
# awaited, so letting that propagate would kill periodic
|
|
497
|
+
# flushing silently and strand queued events (issue #21057)
|
|
498
|
+
logger.exception("Error during periodic flush; continuing")
|
|
494
499
|
|
|
495
500
|
async def message_handler(message: Message):
|
|
496
501
|
event: ReceivedEvent = ReceivedEvent.model_validate_json(message.data)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{E as e,F as t,O as n}from"./vendor-tanstack-
|
|
2
|
-
//# sourceMappingURL=admin-
|
|
1
|
+
import{E as e,F as t,O as n}from"./vendor-tanstack-Dx3GObhk.js";import{n as r}from"./service-DQBoCx1F.js";var i={settings:()=>[`settings`],version:()=>[`version`],defaultResultStorage:()=>[`default-result-storage`]},a=()=>n({queryKey:i.version(),queryFn:async()=>{let e=await(await r()).GET(`/admin/version`);if(!e.data)throw Error(`'data' expected`);return e.data}}),o=()=>n({queryKey:i.settings(),queryFn:async()=>{let e=await(await r()).GET(`/admin/settings`);if(!e.data)throw Error(`'data' expected`);return e.data}}),s=()=>n({queryKey:i.defaultResultStorage(),queryFn:async()=>{let e=await(await r()).GET(`/admin/storage`);if(!e.data)throw Error(`'data' expected`);return e.data}}),c=()=>{let n=t(),{mutate:a,...o}=e({mutationFn:async e=>{let t=await(await r()).PUT(`/admin/storage`,{body:e});if(!t.data)throw Error(`'data' expected`);return t.data},onSuccess:e=>{n.setQueryData(i.defaultResultStorage(),e),n.invalidateQueries({queryKey:i.defaultResultStorage()})}});return{updateDefaultResultStorage:a,...o}},l=()=>{let n=t(),{mutate:a,...o}=e({mutationFn:async()=>(await r()).DELETE(`/admin/storage`),onSuccess:()=>{n.setQueryData(i.defaultResultStorage(),{default_result_storage_block_id:null}),n.invalidateQueries({queryKey:i.defaultResultStorage()})}});return{clearDefaultResultStorage:a,...o}};export{l as a,i,o as n,c as o,a as r,s as t};
|
|
2
|
+
//# sourceMappingURL=admin-BwmAgV1B.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-
|
|
1
|
+
{"version":3,"file":"admin-BwmAgV1B.js","names":[],"sources":["../../src/api/admin/admin.ts"],"sourcesContent":["import {\n\tqueryOptions,\n\tuseMutation,\n\tuseQueryClient,\n} from \"@tanstack/react-query\";\nimport type { components } from \"@/api/prefect\";\nimport { getQueryService } from \"@/api/service\";\n\n/**\n * ```\n * 🏗️ Admin queries construction 👷\n * settings => ['settings'] // key to match ['settings']\n * version => ['version'] // key to match ['version']\n * defaultResultStorage => ['default-result-storage'] // key to match ['default-result-storage']\n * ```\n * */\nexport const queryKeyFactory = {\n\tsettings: () => [\"settings\"] as const,\n\tversion: () => [\"version\"] as const,\n\tdefaultResultStorage: () => [\"default-result-storage\"] as const,\n};\n\nexport type ServerDefaultResultStorage =\n\tcomponents[\"schemas\"][\"ServerDefaultResultStorage\"];\nexport type ServerDefaultResultStorageUpdate =\n\tcomponents[\"schemas\"][\"ServerDefaultResultStorageUpdate\"];\n\n// ----- 🔑 Queries 🗄️\n// ----------------------------\n\n/**\n *\n * @returns react query options object for getting the Prefect's version number\n */\nexport const buildGetVersionQuery = () =>\n\tqueryOptions({\n\t\tqueryKey: queryKeyFactory.version(),\n\t\tqueryFn: async () => {\n\t\t\tconst res = await (await getQueryService()).GET(\"/admin/version\");\n\t\t\tif (!res.data) {\n\t\t\t\tthrow new Error(\"'data' expected\");\n\t\t\t}\n\t\t\treturn res.data;\n\t\t},\n\t});\n\n/**\n *\n * @returns react query options object for getting the Prefect server's settings information\n */\nexport const buildGetSettingsQuery = () =>\n\tqueryOptions({\n\t\tqueryKey: queryKeyFactory.settings(),\n\t\tqueryFn: async () => {\n\t\t\tconst res = await (await getQueryService()).GET(\"/admin/settings\");\n\t\t\tif (!res.data) {\n\t\t\t\tthrow new Error(\"'data' expected\");\n\t\t\t}\n\t\t\treturn res.data;\n\t\t},\n\t});\n\n/**\n *\n * @returns react query options object for getting the server default result storage block\n */\nexport const buildGetDefaultResultStorageQuery = () =>\n\tqueryOptions({\n\t\tqueryKey: queryKeyFactory.defaultResultStorage(),\n\t\tqueryFn: async () => {\n\t\t\tconst res = await (await getQueryService()).GET(\"/admin/storage\");\n\t\t\tif (!res.data) {\n\t\t\t\tthrow new Error(\"'data' expected\");\n\t\t\t}\n\t\t\treturn res.data;\n\t\t},\n\t});\n\nexport const useUpdateDefaultResultStorage = () => {\n\tconst queryClient = useQueryClient();\n\n\tconst { mutate: updateDefaultResultStorage, ...rest } = useMutation({\n\t\tmutationFn: async (body: ServerDefaultResultStorageUpdate) => {\n\t\t\tconst res = await (await getQueryService()).PUT(\"/admin/storage\", {\n\t\t\t\tbody,\n\t\t\t});\n\t\t\tif (!res.data) {\n\t\t\t\tthrow new Error(\"'data' expected\");\n\t\t\t}\n\t\t\treturn res.data;\n\t\t},\n\t\tonSuccess: (data) => {\n\t\t\tqueryClient.setQueryData(queryKeyFactory.defaultResultStorage(), data);\n\t\t\tvoid queryClient.invalidateQueries({\n\t\t\t\tqueryKey: queryKeyFactory.defaultResultStorage(),\n\t\t\t});\n\t\t},\n\t});\n\n\treturn { updateDefaultResultStorage, ...rest };\n};\n\nexport const useClearDefaultResultStorage = () => {\n\tconst queryClient = useQueryClient();\n\n\tconst { mutate: clearDefaultResultStorage, ...rest } = useMutation({\n\t\tmutationFn: async () => (await getQueryService()).DELETE(\"/admin/storage\"),\n\t\tonSuccess: () => {\n\t\t\tqueryClient.setQueryData(queryKeyFactory.defaultResultStorage(), {\n\t\t\t\tdefault_result_storage_block_id: null,\n\t\t\t} satisfies ServerDefaultResultStorage);\n\t\t\tvoid queryClient.invalidateQueries({\n\t\t\t\tqueryKey: queryKeyFactory.defaultResultStorage(),\n\t\t\t});\n\t\t},\n\t});\n\n\treturn { clearDefaultResultStorage, ...rest };\n};\n"],"mappings":"0GAgBA,IAAa,EAAkB,CAC9B,aAAgB,CAAC,UAAU,EAC3B,YAAe,CAAC,SAAS,EACzB,yBAA4B,CAAC,wBAAwB,CACtD,EAca,MACZ,EAAa,CACZ,SAAU,EAAgB,QAAQ,EAClC,QAAS,SAAY,CACpB,IAAM,EAAM,MAAO,MAAM,EAAgB,EAAA,CAAG,IAAI,gBAAgB,EAChE,GAAI,CAAC,EAAI,KACR,MAAU,MAAM,iBAAiB,EAElC,OAAO,EAAI,IACZ,CACD,CAAC,EAMW,MACZ,EAAa,CACZ,SAAU,EAAgB,SAAS,EACnC,QAAS,SAAY,CACpB,IAAM,EAAM,MAAO,MAAM,EAAgB,EAAA,CAAG,IAAI,iBAAiB,EACjE,GAAI,CAAC,EAAI,KACR,MAAU,MAAM,iBAAiB,EAElC,OAAO,EAAI,IACZ,CACD,CAAC,EAMW,MACZ,EAAa,CACZ,SAAU,EAAgB,qBAAqB,EAC/C,QAAS,SAAY,CACpB,IAAM,EAAM,MAAO,MAAM,EAAgB,EAAA,CAAG,IAAI,gBAAgB,EAChE,GAAI,CAAC,EAAI,KACR,MAAU,MAAM,iBAAiB,EAElC,OAAO,EAAI,IACZ,CACD,CAAC,EAEW,MAAsC,CAClD,IAAM,EAAc,EAAe,EAE7B,CAAE,OAAQ,EAA4B,GAAG,GAAS,EAAY,CACnE,WAAY,KAAO,IAA2C,CAC7D,IAAM,EAAM,MAAO,MAAM,EAAgB,EAAA,CAAG,IAAI,iBAAkB,CACjE,MACD,CAAC,EACD,GAAI,CAAC,EAAI,KACR,MAAU,MAAM,iBAAiB,EAElC,OAAO,EAAI,IACZ,EACA,UAAY,GAAS,CACpB,EAAY,aAAa,EAAgB,qBAAqB,EAAG,CAAI,EACrE,EAAiB,kBAAkB,CAClC,SAAU,EAAgB,qBAAqB,CAChD,CAAC,CACF,CACD,CAAC,EAED,MAAO,CAAE,6BAA4B,GAAG,CAAK,CAC9C,EAEa,MAAqC,CACjD,IAAM,EAAc,EAAe,EAE7B,CAAE,OAAQ,EAA2B,GAAG,GAAS,EAAY,CAClE,WAAY,UAAa,MAAM,EAAgB,EAAA,CAAG,OAAO,gBAAgB,EACzE,cAAiB,CAChB,EAAY,aAAa,EAAgB,qBAAqB,EAAG,CAChE,gCAAiC,IAClC,CAAsC,EACtC,EAAiB,kBAAkB,CAClC,SAAU,EAAgB,qBAAqB,CAChD,CAAC,CACF,CACD,CAAC,EAED,MAAO,CAAE,4BAA2B,GAAG,CAAK,CAC7C"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{o as e}from"./vendor-codemirror-Bs7Yv0L9.js";import{t}from"./error-utils-CRZTwdQh.js";import{t as n}from"./route-error-state-
|
|
2
|
-
//# sourceMappingURL=artifact._id-
|
|
1
|
+
import{o as e}from"./vendor-codemirror-Bs7Yv0L9.js";import{t}from"./error-utils-CRZTwdQh.js";import{t as n}from"./route-error-state-D3zpyudZ.js";var r=e(),i=function({error:e,reset:i}){let a=t(e,`Failed to load artifact`);if(a.type!==`server-error`&&a.type!==`client-error`)throw e;return(0,r.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,r.jsx)(`div`,{children:(0,r.jsx)(`h1`,{className:`text-2xl font-semibold`,children:`Artifact`})}),(0,r.jsx)(n,{error:a,onRetry:i})]})};export{i as errorComponent};
|
|
2
|
+
//# sourceMappingURL=artifact._id-DClBSNAc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact._id-
|
|
1
|
+
{"version":3,"file":"artifact._id-DClBSNAc.js","names":["categorizeError","RouteErrorState","SplitErrorComponent","ArtifactDetailErrorComponent","error","reset","ErrorComponentProps","serverError","type","errorComponent"],"sources":["../../src/routes/artifacts/artifact.$id.tsx?tsr-split=errorComponent"],"sourcesContent":["import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport type { ErrorComponentProps } from \"@tanstack/react-router\";\nimport { createFileRoute } from \"@tanstack/react-router\";\nimport { zodValidator } from \"@tanstack/zod-adapter\";\nimport { z } from \"zod\";\nimport { buildGetArtifactQuery } from \"@/api/artifacts\";\nimport { useGetArtifactFlowTaskRuns } from \"@/api/artifacts/use-get-artifacts-flow-task-runs/use-get-artifacts-flow-task-runs\";\nimport { categorizeError } from \"@/api/error-utils\";\nimport { ArtifactDetailPage } from \"@/components/artifacts/artifact/artifact-detail-page\";\nimport { RouteErrorState } from \"@/components/ui/route-error-state\";\n\n/**\n * Schema for validating URL search parameters for the Artifact Detail page\n * @property {\"Artifact\" | \"Details\" | \"Raw\"} tab used to designate which tab view to display\n */\nconst searchParams = z.object({\n\ttab: z.enum([\"Artifact\", \"Details\", \"Raw\"]).default(\"Artifact\"),\n});\n\nexport type ArtifactDetailTabOptions = z.infer<typeof searchParams>[\"tab\"];\n\nexport const Route = createFileRoute(\"/artifacts/artifact/$id\")({\n\tvalidateSearch: zodValidator(searchParams),\n\tcomponent: function RouteComponent() {\n\t\tconst { id } = Route.useParams();\n\n\t\tconst { data: artifact } = useSuspenseQuery(buildGetArtifactQuery(id));\n\n\t\tconst artifactWithMetadata = useGetArtifactFlowTaskRuns(id);\n\n\t\treturn <ArtifactDetailPage artifact={artifactWithMetadata ?? artifact} />;\n\t},\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\terrorComponent: function ArtifactDetailErrorComponent({\n\t\terror,\n\t\treset,\n\t}: ErrorComponentProps) {\n\t\tconst serverError = categorizeError(error, \"Failed to load artifact\");\n\t\tif (\n\t\t\tserverError.type !== \"server-error\" &&\n\t\t\tserverError.type !== \"client-error\"\n\t\t) {\n\t\t\tthrow error;\n\t\t}\n\t\treturn (\n\t\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t\t<div>\n\t\t\t\t\t<h1 className=\"text-2xl font-semibold\">Artifact</h1>\n\t\t\t\t</div>\n\t\t\t\t<RouteErrorState error={serverError} onRetry={reset} />\n\t\t\t</div>\n\t\t);\n\t},\n});\n"],"mappings":"2JAWAE,EA8BiB,SAAsC,CACrDE,QACAC,SACuB,CACvB,IAAME,EAAcP,EAAgBI,EAAO,yBAAyB,EACpE,GACCG,EAAYC,OAAS,gBACrBD,EAAYC,OAAS,eAErB,MAAMJ,EAEP,OACC,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,+BAAf,EACC,EAAA,EAAA,IAAA,CAAC,MAAD,CAAA,UACC,EAAA,EAAA,IAAA,CAAC,KAAD,CAAI,UAAU,kCAAyB,UAAY,CAAA,CAC/C,CAAA,GACL,EAAA,EAAA,IAAA,CAAC,EAAD,CAAiB,MAAOG,EAAa,QAASF,CAAM,CAAA,CAChD,GAEP"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,o as n,r,s as i}from"./vendor-codemirror-Bs7Yv0L9.js";import{_ as a,a as o,g as s,i as c,j as l,o as u,r as d}from"./vendor-tanstack-CghpeqA9.js";import{g as f,h as p,t as m,u as h}from"./button-D1nS4G4b.js";import{n as g}from"./dist-BWGcVrLy.js";import{n as _}from"./input-BaSLpSlc.js";import{t as v}from"./tag-badge-DTVaiChx.js";import{Ar as y,Dr as b,Er as x,K as S,Kr as C,Ln as w,Or as T,Tr as E,cr as D,ir as O,jr as k,lr as A,m as j,or as M,sr as N}from"./index-DpPA2bX1.js";import{t as P}from"./key-value-C2vDi3xo.js";import{n as F}from"./use-get-artifacts-flow-task-runs-DhfQBVCF.js";import{t as I}from"./lazy-markdown-CCDNtAxT.js";import{t as L}from"./data-table-C_Co3B-8.js";var R=e(i(),1),z=n(),B=({artifact:e})=>(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e.key?(0,z.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:(0,z.jsx)(E,{className:`min-w-0`,children:(0,z.jsxs)(T,{className:`flex-nowrap`,children:[(0,z.jsx)(x,{className:`min-w-0`,children:(0,z.jsx)(b,{to:`/artifacts/key/$key`,params:{key:e.key},className:`text-xl font-semibold truncate block`,title:e.key,children:e.key})}),(0,z.jsx)(y,{}),(0,z.jsx)(x,{className:`text-xl font-semibold min-w-0`,children:(0,z.jsx)(`span`,{className:`font-mono truncate block`,title:e.id,children:e.id})})]})})}):(0,z.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:(0,z.jsx)(E,{className:`min-w-0`,children:(0,z.jsxs)(T,{className:`flex-nowrap`,children:[e.flow_run&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(x,{className:`min-w-0`,children:(0,z.jsx)(b,{to:`/runs/flow-run/$id`,params:{id:e.flow_run_id??``},className:`text-xl font-semibold truncate block`,title:e.flow_run.name,children:e.flow_run.name})}),(0,z.jsx)(y,{})]}),e.task_run&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(x,{className:`min-w-0`,children:(0,z.jsx)(b,{to:`/runs/task-run/$id`,params:{id:e.task_run_id??``},className:`text-xl font-semibold truncate block`,title:e.task_run.name,children:e.task_run.name})}),(0,z.jsx)(y,{})]}),(0,z.jsx)(x,{className:`text-xl font-semibold min-w-0`,children:(0,z.jsx)(`span`,{className:`font-mono truncate block`,title:e.id,children:e.id})})]})})}),(0,z.jsx)(O,{id:`artifacts-guide`,label:`Documentation`})]}),e.description&&(0,z.jsx)(`div`,{className:`text-sm text-muted-foreground my-2`,children:(0,z.jsx)(I,{children:e.description})}),(0,z.jsx)(`hr`,{})]}),V=({artifact:e})=>{let[n,i]=(0,R.useState)(!1),a=()=>{i(e=>!e)},o=(0,R.useRef)(null),{resolvedTheme:s}=C(),{setContainer:c}=r({container:o.current,extensions:[t.lineWrapping],value:String(e.data),indentWithTab:!1,editable:!0,basicSetup:{highlightActiveLine:!1,foldGutter:!1,highlightActiveLineGutter:!1},theme:s===`dark`?`dark`:`light`});(0,R.useEffect)(()=>{o.current&&c(o.current)},[c]);let l=e=>{g.success(`Copied to clipboard`),navigator.clipboard.writeText(e)};return(0,z.jsxs)(`div`,{className:`flex flex-col justify-center items-center`,children:[(0,z.jsxs)(m,{"data-testid":`show-raw-data-button`,variant:`outline`,onClick:a,className:`my-4`,children:[n?`Hide`:`Show`,` Raw Data`]}),(0,z.jsx)(`div`,{className:`rounded-md border shadow-xs focus-within:outline-hidden focus-within:ring-1 focus-within:ring-ring relative`,style:{display:n?`block`:`none`},ref:e=>{o.current=e},"data-testid":`raw-data-display`,children:(0,z.jsx)(m,{onClick:()=>l(e.data),variant:`ghost`,size:`icon`,className:`absolute top-0 right-0 z-10`,"aria-label":`copy`,children:(0,z.jsx)(f,{id:`Copy`,className:`size-2`})})})]})},ee=s(`/artifacts/artifact/$id`),H=({artifact:e,artifactContent:t,detailsContent:n})=>{let{tab:r}=ee.useSearch(),i=U(e,t,n);return(0,z.jsxs)(M,{defaultValue:`Artifact`,value:r,children:[(0,z.jsx)(D,{children:i.map(({value:e,hiddenOnDesktop:t,LinkComponent:n})=>(0,z.jsx)(n,{className:p(t&&`lg:hidden`)},e))}),i.map(({value:e,ViewComponent:t})=>(0,z.jsx)(t,{},e))]})};function U(e,t,n){return(0,R.useMemo)(()=>{let r=[];return r.push({value:`Artifact`,LinkComponent:({className:e})=>(0,z.jsx)(a,{to:`.`,search:{tab:`Artifact`},children:(0,z.jsx)(A,{value:`Artifact`,className:e,children:`Artifact`})}),ViewComponent:()=>(0,z.jsxs)(N,{value:`Artifact`,children:[t,(0,z.jsx)(V,{artifact:e})]})}),r.push({value:`Details`,hiddenOnDesktop:!0,LinkComponent:({className:e})=>(0,z.jsx)(a,{to:`.`,search:{tab:`Details`},children:(0,z.jsx)(A,{value:`Details`,className:e,children:`Details`})}),ViewComponent:()=>(0,z.jsx)(N,{value:`Details`,children:n})}),r.push({value:`Raw`,LinkComponent:({className:e})=>(0,z.jsx)(a,{to:`.`,search:{tab:`Raw`},children:(0,z.jsx)(A,{value:`Raw`,className:e,children:`Raw`})}),ViewComponent:()=>(0,z.jsx)(N,{value:`Raw`,children:(0,z.jsx)(W,{artifact:e})})}),r},[e,t,n])}function W({artifact:e}){return(0,z.jsx)(`pre`,{className:`whitespace-pre-wrap break-words rounded-md border bg-muted p-4 text-sm`,children:typeof e.data==`string`?e.data:JSON.stringify(e.data,null,2)})}var G=({url:e})=>(0,z.jsxs)(`div`,{"data-testid":e,className:`prose dark:prose-invert mt-2`,children:[(0,z.jsx)(`img`,{"data-testid":`image-${e}`,src:e,alt:`artifact-image`,className:`w-full`}),(0,z.jsxs)(`p`,{className:`text-lg`,children:[`Image URL:`,` `,(0,z.jsx)(`a`,{className:`text-link hover:text-link-hover hover:underline`,target:`_blank`,href:e,rel:`noreferrer`,children:e})]})]}),K=({markdown:e})=>(0,z.jsx)(`div`,{"data-testid":`markdown-display`,className:`mt-4 prose dark:prose-invert`,children:(0,z.jsx)(I,{children:e})}),q=({progress:e})=>(0,z.jsxs)(`p`,{"data-testid":`progress-display`,className:`text-lg`,children:[`Progress: `,e,`%`]}),J=c(),Y=({tableData:e})=>{let t=(0,R.useMemo)(()=>JSON.parse(e),[e]),n=(0,R.useMemo)(()=>Object.keys(t[0]??{}),[t]),[r,i]=(0,R.useState)(``),a=(0,R.useMemo)(()=>n.map(e=>J.display({id:e,header:()=>e,cell:({row:t})=>{let n=String(t.original[e]??``);return(0,z.jsx)(`span`,{className:`truncate block`,title:n,children:n})}})),[n]),s=d({data:(0,R.useMemo)(()=>r?t.filter(e=>Object.values(e).some(e=>String(e).toLowerCase().includes(r.toLowerCase()))):t,[r,t]),columns:a,getCoreRowModel:o(),getPaginationRowModel:u(),initialState:{pagination:{pageIndex:0,pageSize:10}}});return(0,z.jsxs)(`div`,{"data-testid":`table-display`,className:`mt-4`,children:[(0,z.jsx)(`div`,{className:`flex flex-row justify-end items-center mb-2`,children:(0,z.jsx)(_,{placeholder:`Search`,value:r,onChange:e=>i(e.target.value)})}),(0,z.jsx)(L,{table:s})]})},X=({artifact:e})=>{let t=(0,R.useMemo)(()=>e.created?h(e.created,`dateTime`):null,[e.created]);return(0,z.jsxs)(`div`,{className:`mt-4`,children:[(0,z.jsx)(`p`,{className:`text-base font-semibold`,children:`Artifact`}),(0,z.jsxs)(`div`,{className:`mt-3 flex flex-col gap-3`,children:[(0,z.jsx)(P,{label:`Key`,value:(0,z.jsx)(`span`,{className:`font-mono`,children:e.key??`None`})}),(0,z.jsx)(P,{label:`Type`,value:(0,z.jsx)(`span`,{className:`font-mono`,children:e.type??`None`})}),(0,z.jsx)(P,{label:`Created`,value:(0,z.jsx)(`span`,{children:t??`None`})})]})]})},Z=e(k(),1),Q=({flowRun:e})=>{let t=(0,R.useMemo)(()=>e.start_time?h(e.start_time,`dateTime`):null,[e.start_time]),n=(0,R.useMemo)(()=>e.estimated_run_time?(0,Z.default)(Math.ceil(e.estimated_run_time)*1e3):null,[e.estimated_run_time]),r=(0,R.useMemo)(()=>e.created?h(e.created,`dateTime`):null,[e.created]),i=(0,R.useMemo)(()=>e.updated?h(e.updated,`dateTime`):null,[e.updated]);return(0,z.jsxs)(`div`,{className:`mt-4`,children:[(0,z.jsx)(`p`,{className:`text-lg font-bold`,children:`Flow Run`}),(0,z.jsxs)(`div`,{className:`mt-3 flex flex-col gap-3`,children:[(0,z.jsx)(P,{label:`Start time`,value:(0,z.jsxs)(`span`,{className:`font-mono flex items-center`,children:[(0,z.jsx)(f,{id:`Calendar`,className:`inline w-4 mr-2`}),t??`None`]})}),(0,z.jsx)(P,{label:`Duration`,value:(0,z.jsxs)(`span`,{className:`font-mono flex items-center`,children:[(0,z.jsx)(f,{id:`Clock`,className:`inline w-4 mr-2`}),n??`None`]})}),(0,z.jsx)(P,{label:`Created`,value:(0,z.jsx)(`span`,{className:`font-mono`,children:r??`None`})}),(0,z.jsx)(P,{label:`Last Updated`,value:(0,z.jsx)(`span`,{className:`font-mono`,children:i??`None`})}),(0,z.jsx)(P,{label:`Tags`,value:e.tags&&e.tags.length>0?(0,z.jsx)(`div`,{className:`flex flex-wrap`,children:e.tags.map(e=>(0,z.jsx)(v,{tag:e},e))}):(0,z.jsx)(`span`,{className:`font-mono`,children:`None`})}),(0,z.jsx)(P,{label:`State Message`,value:(0,z.jsx)(`span`,{className:`font-mono`,children:e.state?.message??`None`})})]})]})},$=({artifact:e})=>{let{flow_run:t,task_run:n}=e;return e.key||t||n?(0,z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[e.key&&(0,z.jsx)(P,{label:`Artifact`,value:(0,z.jsx)(a,{to:`/artifacts/key/$key`,params:{key:e.key},className:`text-link hover:text-link-hover hover:underline`,children:e.key})}),t&&(0,z.jsx)(P,{label:`Flow Run`,value:(0,z.jsx)(a,{to:`/runs/flow-run/$id`,params:{id:t.id},className:`text-link hover:text-link-hover hover:underline`,children:t.name})}),n&&(0,z.jsx)(P,{label:`Task Run`,value:(0,z.jsx)(a,{to:`/runs/task-run/$id`,params:{id:n.id},className:`text-link hover:text-link-hover hover:underline`,children:n.name})}),(0,z.jsx)(`hr`,{className:`mt-2 border-border`})]}):null},te=({taskRun:e})=>{let t=(0,R.useMemo)(()=>e.created?h(e.created,`dateTime`):null,[e.created]),n=(0,R.useMemo)(()=>e.updated?h(e.updated,`dateTime`):null,[e.updated]);return(0,z.jsxs)(`div`,{className:`mt-4`,children:[(0,z.jsx)(`p`,{className:`text-lg font-bold`,children:`Task Run`}),(0,z.jsxs)(`div`,{className:`mt-3 flex flex-col gap-3`,children:[(0,z.jsx)(P,{label:`Created`,value:(0,z.jsx)(`span`,{className:`font-mono`,children:t??`None`})}),(0,z.jsx)(P,{label:`Last Updated`,value:(0,z.jsx)(`span`,{className:`font-mono`,children:n??`None`})}),(0,z.jsx)(P,{label:`Tags`,value:e.tags&&e.tags.length>0?(0,z.jsx)(`div`,{className:`flex flex-wrap`,children:e.tags.map(e=>(0,z.jsx)(v,{tag:e},e))}):(0,z.jsx)(`span`,{className:`font-mono`,children:`None`})})]})]})},ne=({artifact:e})=>{let{flow_run:t,task_run:n}=e;return(0,z.jsxs)(`div`,{className:`flex flex-col gap-4 pt-4`,children:[(0,z.jsx)($,{artifact:e}),(0,z.jsx)(X,{artifact:e}),(t||n)&&(0,z.jsx)(`hr`,{className:`mt-4 border-border`}),t&&(0,z.jsx)(Q,{flowRun:t}),t&&n&&(0,z.jsx)(`hr`,{className:`mt-4 border-border`}),n&&(0,z.jsx)(te,{taskRun:n})]})},re=({artifact:e})=>{let t=(0,R.useMemo)(()=>{switch(e.type){case`markdown`:case`link`:return(0,z.jsx)(K,{markdown:e.data});case`image`:return(0,z.jsx)(G,{url:e.data});case`progress`:return(0,z.jsx)(q,{progress:e.data});case`table`:return(0,z.jsx)(Y,{tableData:e.data});default:return(0,z.jsx)(`pre`,{children:JSON.stringify(e.data,null,2)})}},[e]),n=(0,z.jsx)(ne,{artifact:e});return(0,z.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,z.jsx)(B,{artifact:e}),(0,z.jsxs)(`div`,{className:`flex flex-col lg:flex-row lg:gap-6`,children:[(0,z.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,z.jsx)(H,{artifact:e,artifactContent:t,detailsContent:n})}),(0,z.jsx)(w,{children:n})]})]})},ie=function(){let{id:e}=j.useParams(),{data:t}=l(S(e));return(0,z.jsx)(re,{artifact:F(e)??t})};export{ie as component};
|
|
2
|
-
//# sourceMappingURL=artifact._id-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,o as n,r,s as i}from"./vendor-codemirror-Bs7Yv0L9.js";import{_ as a,a as o,g as s,i as c,j as l,o as u,r as d}from"./vendor-tanstack-Dx3GObhk.js";import{g as f,h as p,t as m,u as h}from"./button-BmBv3lZP.js";import{n as g}from"./dist-D70cmkC4.js";import{n as _}from"./input-Dr0oypOO.js";import{t as v}from"./tag-badge-mp5HxqMT.js";import{Ar as y,Dr as b,Er as x,K as S,Kr as C,Ln as w,Or as T,Tr as E,cr as D,ir as O,jr as k,lr as A,m as j,or as M,sr as N}from"./index-SebwJ2h3.js";import{t as P}from"./key-value-C6T0AQJ-.js";import{n as F}from"./use-get-artifacts-flow-task-runs-3svJ-Wms.js";import{t as I}from"./lazy-markdown-uVUtgyxS.js";import{t as L}from"./data-table-BeZEMPPj.js";var R=e(i(),1),z=n(),B=({artifact:e})=>(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e.key?(0,z.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:(0,z.jsx)(E,{className:`min-w-0`,children:(0,z.jsxs)(T,{className:`flex-nowrap`,children:[(0,z.jsx)(x,{className:`min-w-0`,children:(0,z.jsx)(b,{to:`/artifacts/key/$key`,params:{key:e.key},className:`text-xl font-semibold truncate block`,title:e.key,children:e.key})}),(0,z.jsx)(y,{}),(0,z.jsx)(x,{className:`text-xl font-semibold min-w-0`,children:(0,z.jsx)(`span`,{className:`font-mono truncate block`,title:e.id,children:e.id})})]})})}):(0,z.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:(0,z.jsx)(E,{className:`min-w-0`,children:(0,z.jsxs)(T,{className:`flex-nowrap`,children:[e.flow_run&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(x,{className:`min-w-0`,children:(0,z.jsx)(b,{to:`/runs/flow-run/$id`,params:{id:e.flow_run_id??``},className:`text-xl font-semibold truncate block`,title:e.flow_run.name,children:e.flow_run.name})}),(0,z.jsx)(y,{})]}),e.task_run&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(x,{className:`min-w-0`,children:(0,z.jsx)(b,{to:`/runs/task-run/$id`,params:{id:e.task_run_id??``},className:`text-xl font-semibold truncate block`,title:e.task_run.name,children:e.task_run.name})}),(0,z.jsx)(y,{})]}),(0,z.jsx)(x,{className:`text-xl font-semibold min-w-0`,children:(0,z.jsx)(`span`,{className:`font-mono truncate block`,title:e.id,children:e.id})})]})})}),(0,z.jsx)(O,{id:`artifacts-guide`,label:`Documentation`})]}),e.description&&(0,z.jsx)(`div`,{className:`text-sm text-muted-foreground my-2`,children:(0,z.jsx)(I,{children:e.description})}),(0,z.jsx)(`hr`,{})]}),V=({artifact:e})=>{let[n,i]=(0,R.useState)(!1),a=()=>{i(e=>!e)},o=(0,R.useRef)(null),{resolvedTheme:s}=C(),{setContainer:c}=r({container:o.current,extensions:[t.lineWrapping],value:String(e.data),indentWithTab:!1,editable:!0,basicSetup:{highlightActiveLine:!1,foldGutter:!1,highlightActiveLineGutter:!1},theme:s===`dark`?`dark`:`light`});(0,R.useEffect)(()=>{o.current&&c(o.current)},[c]);let l=e=>{g.success(`Copied to clipboard`),navigator.clipboard.writeText(e)};return(0,z.jsxs)(`div`,{className:`flex flex-col justify-center items-center`,children:[(0,z.jsxs)(m,{"data-testid":`show-raw-data-button`,variant:`outline`,onClick:a,className:`my-4`,children:[n?`Hide`:`Show`,` Raw Data`]}),(0,z.jsx)(`div`,{className:`rounded-md border shadow-xs focus-within:outline-hidden focus-within:ring-1 focus-within:ring-ring relative`,style:{display:n?`block`:`none`},ref:e=>{o.current=e},"data-testid":`raw-data-display`,children:(0,z.jsx)(m,{onClick:()=>l(e.data),variant:`ghost`,size:`icon`,className:`absolute top-0 right-0 z-10`,"aria-label":`copy`,children:(0,z.jsx)(f,{id:`Copy`,className:`size-2`})})})]})},ee=s(`/artifacts/artifact/$id`),H=({artifact:e,artifactContent:t,detailsContent:n})=>{let{tab:r}=ee.useSearch(),i=U(e,t,n);return(0,z.jsxs)(M,{defaultValue:`Artifact`,value:r,children:[(0,z.jsx)(D,{children:i.map(({value:e,hiddenOnDesktop:t,LinkComponent:n})=>(0,z.jsx)(n,{className:p(t&&`lg:hidden`)},e))}),i.map(({value:e,ViewComponent:t})=>(0,z.jsx)(t,{},e))]})};function U(e,t,n){return(0,R.useMemo)(()=>{let r=[];return r.push({value:`Artifact`,LinkComponent:({className:e})=>(0,z.jsx)(a,{to:`.`,search:{tab:`Artifact`},children:(0,z.jsx)(A,{value:`Artifact`,className:e,children:`Artifact`})}),ViewComponent:()=>(0,z.jsxs)(N,{value:`Artifact`,children:[t,(0,z.jsx)(V,{artifact:e})]})}),r.push({value:`Details`,hiddenOnDesktop:!0,LinkComponent:({className:e})=>(0,z.jsx)(a,{to:`.`,search:{tab:`Details`},children:(0,z.jsx)(A,{value:`Details`,className:e,children:`Details`})}),ViewComponent:()=>(0,z.jsx)(N,{value:`Details`,children:n})}),r.push({value:`Raw`,LinkComponent:({className:e})=>(0,z.jsx)(a,{to:`.`,search:{tab:`Raw`},children:(0,z.jsx)(A,{value:`Raw`,className:e,children:`Raw`})}),ViewComponent:()=>(0,z.jsx)(N,{value:`Raw`,children:(0,z.jsx)(W,{artifact:e})})}),r},[e,t,n])}function W({artifact:e}){return(0,z.jsx)(`pre`,{className:`whitespace-pre-wrap break-words rounded-md border bg-muted p-4 text-sm`,children:typeof e.data==`string`?e.data:JSON.stringify(e.data,null,2)})}var G=({url:e})=>(0,z.jsxs)(`div`,{"data-testid":e,className:`prose dark:prose-invert mt-2`,children:[(0,z.jsx)(`img`,{"data-testid":`image-${e}`,src:e,alt:`artifact-image`,className:`w-full`}),(0,z.jsxs)(`p`,{className:`text-lg`,children:[`Image URL:`,` `,(0,z.jsx)(`a`,{className:`text-link hover:text-link-hover hover:underline`,target:`_blank`,href:e,rel:`noreferrer`,children:e})]})]}),K=({markdown:e})=>(0,z.jsx)(`div`,{"data-testid":`markdown-display`,className:`mt-4 prose dark:prose-invert`,children:(0,z.jsx)(I,{children:e})}),q=({progress:e})=>(0,z.jsxs)(`p`,{"data-testid":`progress-display`,className:`text-lg`,children:[`Progress: `,e,`%`]}),J=c(),Y=({tableData:e})=>{let t=(0,R.useMemo)(()=>JSON.parse(e),[e]),n=(0,R.useMemo)(()=>Object.keys(t[0]??{}),[t]),[r,i]=(0,R.useState)(``),a=(0,R.useMemo)(()=>n.map(e=>J.display({id:e,header:()=>e,cell:({row:t})=>{let n=String(t.original[e]??``);return(0,z.jsx)(`span`,{className:`truncate block`,title:n,children:n})}})),[n]),s=d({data:(0,R.useMemo)(()=>r?t.filter(e=>Object.values(e).some(e=>String(e).toLowerCase().includes(r.toLowerCase()))):t,[r,t]),columns:a,getCoreRowModel:o(),getPaginationRowModel:u(),initialState:{pagination:{pageIndex:0,pageSize:10}}});return(0,z.jsxs)(`div`,{"data-testid":`table-display`,className:`mt-4`,children:[(0,z.jsx)(`div`,{className:`flex flex-row justify-end items-center mb-2`,children:(0,z.jsx)(_,{placeholder:`Search`,value:r,onChange:e=>i(e.target.value)})}),(0,z.jsx)(L,{table:s})]})},X=({artifact:e})=>{let t=(0,R.useMemo)(()=>e.created?h(e.created,`dateTime`):null,[e.created]);return(0,z.jsxs)(`div`,{className:`mt-4`,children:[(0,z.jsx)(`p`,{className:`text-base font-semibold`,children:`Artifact`}),(0,z.jsxs)(`div`,{className:`mt-3 flex flex-col gap-3`,children:[(0,z.jsx)(P,{label:`Key`,value:(0,z.jsx)(`span`,{className:`font-mono`,children:e.key??`None`})}),(0,z.jsx)(P,{label:`Type`,value:(0,z.jsx)(`span`,{className:`font-mono`,children:e.type??`None`})}),(0,z.jsx)(P,{label:`Created`,value:(0,z.jsx)(`span`,{children:t??`None`})})]})]})},Z=e(k(),1),Q=({flowRun:e})=>{let t=(0,R.useMemo)(()=>e.start_time?h(e.start_time,`dateTime`):null,[e.start_time]),n=(0,R.useMemo)(()=>e.estimated_run_time?(0,Z.default)(Math.ceil(e.estimated_run_time)*1e3):null,[e.estimated_run_time]),r=(0,R.useMemo)(()=>e.created?h(e.created,`dateTime`):null,[e.created]),i=(0,R.useMemo)(()=>e.updated?h(e.updated,`dateTime`):null,[e.updated]);return(0,z.jsxs)(`div`,{className:`mt-4`,children:[(0,z.jsx)(`p`,{className:`text-lg font-bold`,children:`Flow Run`}),(0,z.jsxs)(`div`,{className:`mt-3 flex flex-col gap-3`,children:[(0,z.jsx)(P,{label:`Start time`,value:(0,z.jsxs)(`span`,{className:`font-mono flex items-center`,children:[(0,z.jsx)(f,{id:`Calendar`,className:`inline w-4 mr-2`}),t??`None`]})}),(0,z.jsx)(P,{label:`Duration`,value:(0,z.jsxs)(`span`,{className:`font-mono flex items-center`,children:[(0,z.jsx)(f,{id:`Clock`,className:`inline w-4 mr-2`}),n??`None`]})}),(0,z.jsx)(P,{label:`Created`,value:(0,z.jsx)(`span`,{className:`font-mono`,children:r??`None`})}),(0,z.jsx)(P,{label:`Last Updated`,value:(0,z.jsx)(`span`,{className:`font-mono`,children:i??`None`})}),(0,z.jsx)(P,{label:`Tags`,value:e.tags&&e.tags.length>0?(0,z.jsx)(`div`,{className:`flex flex-wrap`,children:e.tags.map(e=>(0,z.jsx)(v,{tag:e},e))}):(0,z.jsx)(`span`,{className:`font-mono`,children:`None`})}),(0,z.jsx)(P,{label:`State Message`,value:(0,z.jsx)(`span`,{className:`font-mono`,children:e.state?.message??`None`})})]})]})},$=({artifact:e})=>{let{flow_run:t,task_run:n}=e;return e.key||t||n?(0,z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[e.key&&(0,z.jsx)(P,{label:`Artifact`,value:(0,z.jsx)(a,{to:`/artifacts/key/$key`,params:{key:e.key},className:`text-link hover:text-link-hover hover:underline`,children:e.key})}),t&&(0,z.jsx)(P,{label:`Flow Run`,value:(0,z.jsx)(a,{to:`/runs/flow-run/$id`,params:{id:t.id},className:`text-link hover:text-link-hover hover:underline`,children:t.name})}),n&&(0,z.jsx)(P,{label:`Task Run`,value:(0,z.jsx)(a,{to:`/runs/task-run/$id`,params:{id:n.id},className:`text-link hover:text-link-hover hover:underline`,children:n.name})}),(0,z.jsx)(`hr`,{className:`mt-2 border-border`})]}):null},te=({taskRun:e})=>{let t=(0,R.useMemo)(()=>e.created?h(e.created,`dateTime`):null,[e.created]),n=(0,R.useMemo)(()=>e.updated?h(e.updated,`dateTime`):null,[e.updated]);return(0,z.jsxs)(`div`,{className:`mt-4`,children:[(0,z.jsx)(`p`,{className:`text-lg font-bold`,children:`Task Run`}),(0,z.jsxs)(`div`,{className:`mt-3 flex flex-col gap-3`,children:[(0,z.jsx)(P,{label:`Created`,value:(0,z.jsx)(`span`,{className:`font-mono`,children:t??`None`})}),(0,z.jsx)(P,{label:`Last Updated`,value:(0,z.jsx)(`span`,{className:`font-mono`,children:n??`None`})}),(0,z.jsx)(P,{label:`Tags`,value:e.tags&&e.tags.length>0?(0,z.jsx)(`div`,{className:`flex flex-wrap`,children:e.tags.map(e=>(0,z.jsx)(v,{tag:e},e))}):(0,z.jsx)(`span`,{className:`font-mono`,children:`None`})})]})]})},ne=({artifact:e})=>{let{flow_run:t,task_run:n}=e;return(0,z.jsxs)(`div`,{className:`flex flex-col gap-4 pt-4`,children:[(0,z.jsx)($,{artifact:e}),(0,z.jsx)(X,{artifact:e}),(t||n)&&(0,z.jsx)(`hr`,{className:`mt-4 border-border`}),t&&(0,z.jsx)(Q,{flowRun:t}),t&&n&&(0,z.jsx)(`hr`,{className:`mt-4 border-border`}),n&&(0,z.jsx)(te,{taskRun:n})]})},re=({artifact:e})=>{let t=(0,R.useMemo)(()=>{switch(e.type){case`markdown`:case`link`:return(0,z.jsx)(K,{markdown:e.data});case`image`:return(0,z.jsx)(G,{url:e.data});case`progress`:return(0,z.jsx)(q,{progress:e.data});case`table`:return(0,z.jsx)(Y,{tableData:e.data});default:return(0,z.jsx)(`pre`,{children:JSON.stringify(e.data,null,2)})}},[e]),n=(0,z.jsx)(ne,{artifact:e});return(0,z.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,z.jsx)(B,{artifact:e}),(0,z.jsxs)(`div`,{className:`flex flex-col lg:flex-row lg:gap-6`,children:[(0,z.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,z.jsx)(H,{artifact:e,artifactContent:t,detailsContent:n})}),(0,z.jsx)(w,{children:n})]})]})},ie=function(){let{id:e}=j.useParams(),{data:t}=l(S(e));return(0,z.jsx)(re,{artifact:F(e)??t})};export{ie as component};
|
|
2
|
+
//# sourceMappingURL=artifact._id-iTe860fK.js.map
|