prefect 3.7.2.dev3__py3-none-any.whl → 3.7.2.dev4__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/__init__.py +5 -0
- prefect/_build_info.py +3 -3
- prefect/cli/_app.py +8 -1
- prefect/runner/runner.py +12 -12
- prefect/server/api/work_queues.py +18 -1
- prefect/server/api/workers.py +68 -117
- prefect/server/ui-v2/assets/{artifact._id-D23OOK0A.js → artifact._id-Cy3gxEon.js} +2 -2
- prefect/server/ui-v2/assets/{artifact._id-D23OOK0A.js.map → artifact._id-Cy3gxEon.js.map} +1 -1
- prefect/server/ui-v2/assets/{artifacts-CvDEkgjn.js → artifacts-CGpjzJK6.js} +2 -2
- prefect/server/ui-v2/assets/{artifacts-CvDEkgjn.js.map → artifacts-CGpjzJK6.js.map} +1 -1
- prefect/server/ui-v2/assets/{automation-wizard-DlL0f2vg.js → automation-wizard-FMVO2jEO.js} +2 -2
- prefect/server/ui-v2/assets/{automation-wizard-DlL0f2vg.js.map → automation-wizard-FMVO2jEO.js.map} +1 -1
- prefect/server/ui-v2/assets/{automation._id-CjbxAkhm.js → automation._id-DbPjf3XE.js} +2 -2
- prefect/server/ui-v2/assets/{automation._id-CjbxAkhm.js.map → automation._id-DbPjf3XE.js.map} +1 -1
- prefect/server/ui-v2/assets/{automation_._id.edit-DRlNq_Xo.js → automation_._id.edit-B9au_aHe.js} +2 -2
- prefect/server/ui-v2/assets/{automation_._id.edit-DRlNq_Xo.js.map → automation_._id.edit-B9au_aHe.js.map} +1 -1
- prefect/server/ui-v2/assets/{automations-FJSll7oH.js → automations-BnMq0fGo.js} +2 -2
- prefect/server/ui-v2/assets/{automations-FJSll7oH.js.map → automations-BnMq0fGo.js.map} +1 -1
- prefect/server/ui-v2/assets/{automations-CzT09aEv.js → automations-DnZuuNqM.js} +2 -2
- prefect/server/ui-v2/assets/{automations-CzT09aEv.js.map → automations-DnZuuNqM.js.map} +1 -1
- prefect/server/ui-v2/assets/{automations-header-BN3NoIB2.js → automations-header-DL19PBKX.js} +2 -2
- prefect/server/ui-v2/assets/{automations-header-BN3NoIB2.js.map → automations-header-DL19PBKX.js.map} +1 -1
- prefect/server/ui-v2/assets/{automations-wizard-BnZEGQS-.js → automations-wizard-g9JT-fcT.js} +2 -2
- prefect/server/ui-v2/assets/{automations-wizard-BnZEGQS-.js.map → automations-wizard-g9JT-fcT.js.map} +1 -1
- prefect/server/ui-v2/assets/{base-job-template-form-section-nREgqsv4.js → base-job-template-form-section-D6Rocz7H.js} +2 -2
- prefect/server/ui-v2/assets/{base-job-template-form-section-nREgqsv4.js.map → base-job-template-form-section-D6Rocz7H.js.map} +1 -1
- prefect/server/ui-v2/assets/{block-type-details-1ju9eLqv.js → block-type-details-B8wr10f_.js} +2 -2
- prefect/server/ui-v2/assets/{block-type-details-1ju9eLqv.js.map → block-type-details-B8wr10f_.js.map} +1 -1
- prefect/server/ui-v2/assets/{block._id-DsFiU6aB.js → block._id-DR9F09i0.js} +2 -2
- prefect/server/ui-v2/assets/{block._id-DsFiU6aB.js.map → block._id-DR9F09i0.js.map} +1 -1
- prefect/server/ui-v2/assets/{block_._id.edit-BEo6xquI.js → block_._id.edit-ocD-wt_8.js} +2 -2
- prefect/server/ui-v2/assets/{block_._id.edit-BEo6xquI.js.map → block_._id.edit-ocD-wt_8.js.map} +1 -1
- prefect/server/ui-v2/assets/{blocks-DYS0gw-c.js → blocks-D1vkcTSk.js} +2 -2
- prefect/server/ui-v2/assets/{blocks-DYS0gw-c.js.map → blocks-D1vkcTSk.js.map} +1 -1
- prefect/server/ui-v2/assets/{catalog-B5r5YNsL.js → catalog-BYZdEi7B.js} +2 -2
- prefect/server/ui-v2/assets/{catalog-B5r5YNsL.js.map → catalog-BYZdEi7B.js.map} +1 -1
- prefect/server/ui-v2/assets/{catalog_._slug-DzanzERG.js → catalog_._slug-CaWuGNkI.js} +2 -2
- prefect/server/ui-v2/assets/{catalog_._slug-DzanzERG.js.map → catalog_._slug-CaWuGNkI.js.map} +1 -1
- prefect/server/ui-v2/assets/{catalog_._slug_.create-BZ9mrp-t.js → catalog_._slug_.create-BhSfGb6L.js} +2 -2
- prefect/server/ui-v2/assets/{catalog_._slug_.create-BZ9mrp-t.js.map → catalog_._slug_.create-BhSfGb6L.js.map} +1 -1
- prefect/server/ui-v2/assets/{concurrency-limit._id-DAteTOkx.js → concurrency-limit._id-BmJ1ilWZ.js} +2 -2
- prefect/server/ui-v2/assets/{concurrency-limit._id-DAteTOkx.js.map → concurrency-limit._id-BmJ1ilWZ.js.map} +1 -1
- prefect/server/ui-v2/assets/{concurrency-limits-6wrWT40K.js → concurrency-limits-r6uqKU4n.js} +2 -2
- prefect/server/ui-v2/assets/{concurrency-limits-6wrWT40K.js.map → concurrency-limits-r6uqKU4n.js.map} +1 -1
- prefect/server/ui-v2/assets/{create-DNHZMzSg.js → create-BraajOs6.js} +2 -2
- prefect/server/ui-v2/assets/{create-DNHZMzSg.js.map → create-BraajOs6.js.map} +1 -1
- prefect/server/ui-v2/assets/{create-rAm-skQJ.js → create-DzOteDgB.js} +2 -2
- prefect/server/ui-v2/assets/{create-rAm-skQJ.js.map → create-DzOteDgB.js.map} +1 -1
- prefect/server/ui-v2/assets/{data-table-C9cUZ4mJ.js → data-table-fAMnsEao.js} +2 -2
- prefect/server/ui-v2/assets/{data-table-C9cUZ4mJ.js.map → data-table-fAMnsEao.js.map} +1 -1
- prefect/server/ui-v2/assets/{data-table-DTqeGWDm.js → data-table-ylRuiwEf.js} +2 -2
- prefect/server/ui-v2/assets/{data-table-DTqeGWDm.js.map → data-table-ylRuiwEf.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment-form-BcCbt9ZS.js → deployment-form-qnUH-H_h.js} +2 -2
- prefect/server/ui-v2/assets/{deployment-form-BcCbt9ZS.js.map → deployment-form-qnUH-H_h.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment-links-BylnNedU.js → deployment-links-DZbgNxc0.js} +2 -2
- prefect/server/ui-v2/assets/{deployment-links-BylnNedU.js.map → deployment-links-DZbgNxc0.js.map} +1 -1
- prefect/server/ui-v2/assets/deployment._id-8vH-TMKk.js +2 -0
- prefect/server/ui-v2/assets/{deployment._id-Bit0Zg0o.js.map → deployment._id-8vH-TMKk.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment_._id.duplicate-Dt0cV3y8.js → deployment_._id.duplicate-cBXK4e7m.js} +2 -2
- prefect/server/ui-v2/assets/{deployment_._id.duplicate-Dt0cV3y8.js.map → deployment_._id.duplicate-cBXK4e7m.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment_._id.edit-BHDQGqwT.js → deployment_._id.edit-RokhParH.js} +2 -2
- prefect/server/ui-v2/assets/{deployment_._id.edit-BHDQGqwT.js.map → deployment_._id.edit-RokhParH.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployment_._id.run-BVrGb_An.js → deployment_._id.run-D_A0f9ro.js} +2 -2
- prefect/server/ui-v2/assets/{deployment_._id.run-BVrGb_An.js.map → deployment_._id.run-D_A0f9ro.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployments-D-JFwDxb.js → deployments-CL4UsB5L.js} +2 -2
- prefect/server/ui-v2/assets/{deployments-D-JFwDxb.js.map → deployments-CL4UsB5L.js.map} +1 -1
- prefect/server/ui-v2/assets/{deployments-CAM9osT1.js → deployments-DIvZzmmm.js} +2 -2
- prefect/server/ui-v2/assets/{deployments-CAM9osT1.js.map → deployments-DIvZzmmm.js.map} +1 -1
- prefect/server/ui-v2/assets/{event-resource-display-DiO3S7Ia.js → event-resource-display-BPgNIz3b.js} +2 -2
- prefect/server/ui-v2/assets/{event-resource-display-DiO3S7Ia.js.map → event-resource-display-BPgNIz3b.js.map} +1 -1
- prefect/server/ui-v2/assets/{event._eventDate._eventId-fivz-QA-.js → event._eventDate._eventId-C5T_C1ie.js} +2 -2
- prefect/server/ui-v2/assets/{event._eventDate._eventId-fivz-QA-.js.map → event._eventDate._eventId-C5T_C1ie.js.map} +1 -1
- prefect/server/ui-v2/assets/{events-BZqz8fGT.js → events-CjzDiMQY.js} +2 -2
- prefect/server/ui-v2/assets/{events-BZqz8fGT.js.map → events-CjzDiMQY.js.map} +1 -1
- prefect/server/ui-v2/assets/{events-timeline-C_Xm4tt5.js → events-timeline-DBf6Hv6P.js} +2 -2
- prefect/server/ui-v2/assets/{events-timeline-C_Xm4tt5.js.map → events-timeline-DBf6Hv6P.js.map} +1 -1
- prefect/server/ui-v2/assets/{flow-run-graph-pTdeDpdv.js → flow-run-graph-B-Rn3JP8.js} +2 -2
- prefect/server/ui-v2/assets/{flow-run-graph-pTdeDpdv.js.map → flow-run-graph-B-Rn3JP8.js.map} +1 -1
- prefect/server/ui-v2/assets/flow-run._id-CToRTFL-.js +4 -0
- prefect/server/ui-v2/assets/flow-run._id-CToRTFL-.js.map +1 -0
- prefect/server/ui-v2/assets/{flow-run._id-BVoaPGk2.js → flow-run._id-D8o5rDLy.js} +2 -2
- prefect/server/ui-v2/assets/{flow-run._id-BVoaPGk2.js.map → flow-run._id-D8o5rDLy.js.map} +1 -1
- prefect/server/ui-v2/assets/{flow._id-B_bM6teo.js → flow._id-B2_rJFUs.js} +2 -2
- prefect/server/ui-v2/assets/{flow._id-B_bM6teo.js.map → flow._id-B2_rJFUs.js.map} +1 -1
- prefect/server/ui-v2/assets/{flow._id-R2bbOegi.js → flow._id-CLyUkJ0y.js} +2 -2
- prefect/server/ui-v2/assets/{flow._id-R2bbOegi.js.map → flow._id-CLyUkJ0y.js.map} +1 -1
- prefect/server/ui-v2/assets/{flows-CfkNT6RY.js → flows-Be7fDUCY.js} +2 -2
- prefect/server/ui-v2/assets/{flows-CfkNT6RY.js.map → flows-Be7fDUCY.js.map} +1 -1
- prefect/server/ui-v2/assets/{header-YxYTenAS.js → header-CGI3ycxQ.js} +2 -2
- prefect/server/ui-v2/assets/{header-YxYTenAS.js.map → header-CGI3ycxQ.js.map} +1 -1
- prefect/server/ui-v2/assets/{header-BZRaOSZD.js → header-DNoe-API.js} +2 -2
- prefect/server/ui-v2/assets/{header-BZRaOSZD.js.map → header-DNoe-API.js.map} +1 -1
- prefect/server/ui-v2/assets/{header-BGEBYoZ-.js → header-KOK4VdzF.js} +2 -2
- prefect/server/ui-v2/assets/{header-BGEBYoZ-.js.map → header-KOK4VdzF.js.map} +1 -1
- prefect/server/ui-v2/assets/{index-CY3vSgYi.js → index-Dycuvz2J.js} +4 -4
- prefect/server/ui-v2/assets/{index-CY3vSgYi.js.map → index-Dycuvz2J.js.map} +1 -1
- prefect/server/ui-v2/assets/index-xyno1SY-.css +2 -0
- prefect/server/ui-v2/assets/{json-input-Do44mFlz.js → json-input-Bgo1Ygii.js} +2 -2
- prefect/server/ui-v2/assets/{json-input-Do44mFlz.js.map → json-input-Bgo1Ygii.js.map} +1 -1
- prefect/server/ui-v2/assets/{key._key-BLDfIhNp.js → key._key-CwysWbyi.js} +2 -2
- prefect/server/ui-v2/assets/{key._key-BLDfIhNp.js.map → key._key-CwysWbyi.js.map} +1 -1
- prefect/server/ui-v2/assets/{lazy-markdown-BjhaJhp1.js → lazy-markdown-Ai8LTUwb.js} +2 -2
- prefect/server/ui-v2/assets/{lazy-markdown-BjhaJhp1.js.map → lazy-markdown-Ai8LTUwb.js.map} +1 -1
- prefect/server/ui-v2/assets/{login-BE8b3bjj.js → login-BcJSfLAz.js} +2 -2
- prefect/server/ui-v2/assets/{login-BE8b3bjj.js.map → login-BcJSfLAz.js.map} +1 -1
- prefect/server/ui-v2/assets/{runs-DHK0p2Av.js → runs-DLlt4RrO.js} +2 -2
- prefect/server/ui-v2/assets/runs-DLlt4RrO.js.map +1 -0
- prefect/server/ui-v2/assets/{runs-Br4nP5uA.js → runs-DneBEhCC.js} +2 -2
- prefect/server/ui-v2/assets/{runs-Br4nP5uA.js.map → runs-DneBEhCC.js.map} +1 -1
- prefect/server/ui-v2/assets/schedule-badge-DJkmg_N6.js +2 -0
- prefect/server/ui-v2/assets/schedule-badge-DJkmg_N6.js.map +1 -0
- prefect/server/ui-v2/assets/{schema-form-XywN3FrH.js → schema-form-Dbum_VTi.js} +2 -2
- prefect/server/ui-v2/assets/{schema-form-XywN3FrH.js.map → schema-form-Dbum_VTi.js.map} +1 -1
- prefect/server/ui-v2/assets/{settings-oOggsziV.js → settings-B-4SW2Mu.js} +2 -2
- prefect/server/ui-v2/assets/{settings-oOggsziV.js.map → settings-B-4SW2Mu.js.map} +1 -1
- prefect/server/ui-v2/assets/{task-run-concurrency-limits-reset-dialog-8cabbGHT.js → task-run-concurrency-limits-reset-dialog-D8z4zOxf.js} +2 -2
- prefect/server/ui-v2/assets/{task-run-concurrency-limits-reset-dialog-8cabbGHT.js.map → task-run-concurrency-limits-reset-dialog-D8z4zOxf.js.map} +1 -1
- prefect/server/ui-v2/assets/task-run._id-CoIn7jv8.js +3 -0
- prefect/server/ui-v2/assets/task-run._id-CoIn7jv8.js.map +1 -0
- prefect/server/ui-v2/assets/{timezone-select-DSV-9cEy.js → timezone-select-OdKUezlX.js} +2 -2
- prefect/server/ui-v2/assets/{timezone-select-DSV-9cEy.js.map → timezone-select-OdKUezlX.js.map} +1 -1
- prefect/server/ui-v2/assets/{toggle-group-Dwz58eC-.js → toggle-group-BnFyTwhJ.js} +2 -2
- prefect/server/ui-v2/assets/{toggle-group-Dwz58eC-.js.map → toggle-group-BnFyTwhJ.js.map} +1 -1
- prefect/server/ui-v2/assets/{trigger-details-C7nDNnJH.js → trigger-details-BAy-SDc-.js} +2 -2
- prefect/server/ui-v2/assets/{trigger-details-C7nDNnJH.js.map → trigger-details-BAy-SDc-.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-delete-automation-confirmation-dialog-XbluRW9V.js → use-delete-automation-confirmation-dialog-D-ORZsfs.js} +2 -2
- prefect/server/ui-v2/assets/{use-delete-automation-confirmation-dialog-XbluRW9V.js.map → use-delete-automation-confirmation-dialog-D-ORZsfs.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-CysIwpSk.js → use-delete-block-document-confirmation-dialog-BoaoY_pG.js} +2 -2
- prefect/server/ui-v2/assets/{use-delete-block-document-confirmation-dialog-CysIwpSk.js.map → use-delete-block-document-confirmation-dialog-BoaoY_pG.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-delete-deployment-confirmation-dialog-DB1oJWcJ.js → use-delete-deployment-confirmation-dialog-BNNa18jE.js} +2 -2
- prefect/server/ui-v2/assets/{use-delete-deployment-confirmation-dialog-DB1oJWcJ.js.map → use-delete-deployment-confirmation-dialog-BNNa18jE.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-DOlsD-Pl.js → use-get-artifacts-flow-task-runs-Bexw8m2K.js} +2 -2
- prefect/server/ui-v2/assets/{use-get-artifacts-flow-task-runs-DOlsD-Pl.js.map → use-get-artifacts-flow-task-runs-Bexw8m2K.js.map} +1 -1
- prefect/server/ui-v2/assets/{use-resource-options-C6pEfujv.js → use-resource-options-D0i2RjFP.js} +2 -2
- prefect/server/ui-v2/assets/{use-resource-options-C6pEfujv.js.map → use-resource-options-D0i2RjFP.js.map} +1 -1
- prefect/server/ui-v2/assets/{variables-DkUAhh1H.js → variables-AaYxzC89.js} +2 -2
- prefect/server/ui-v2/assets/{variables-DkUAhh1H.js.map → variables-AaYxzC89.js.map} +1 -1
- prefect/server/ui-v2/assets/{variables-sBYSE_mP.js → variables-DkIFxchZ.js} +2 -2
- prefect/server/ui-v2/assets/{variables-sBYSE_mP.js.map → variables-DkIFxchZ.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool-queue-form-Bxeyezof.js → work-pool-queue-form-AHaHHvwS.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool-queue-form-Bxeyezof.js.map → work-pool-queue-form-AHaHHvwS.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool-queue-toggle-muLrGLwM.js → work-pool-queue-toggle-C603ySur.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool-queue-toggle-muLrGLwM.js.map → work-pool-queue-toggle-C603ySur.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool._workPoolName-MttgBNwZ.js → work-pool._workPoolName-BsXx6Dxq.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool._workPoolName-MttgBNwZ.js.map → work-pool._workPoolName-BsXx6Dxq.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-BYy4ldSB.js → work-pool_._workPoolName.edit-DZ1dHbJL.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.edit-BYy4ldSB.js.map → work-pool_._workPoolName.edit-DZ1dHbJL.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-BZafK2IY.js → work-pool_._workPoolName.queue._workQueueName-CMWqN4_F.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue._workQueueName-BZafK2IY.js.map → work-pool_._workPoolName.queue._workQueueName-CMWqN4_F.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue.create-BQfLUjar.js → work-pool_._workPoolName.queue.create-DE17hjpw.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue.create-BQfLUjar.js.map → work-pool_._workPoolName.queue.create-DE17hjpw.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue_._workQueueName.edit-DhDW_J7h.js → work-pool_._workPoolName.queue_._workQueueName.edit-B_N9M0mq.js} +2 -2
- prefect/server/ui-v2/assets/{work-pool_._workPoolName.queue_._workQueueName.edit-DhDW_J7h.js.map → work-pool_._workPoolName.queue_._workQueueName.edit-B_N9M0mq.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pools-BkEYDe8L.js → work-pools-DHZlm7_7.js} +2 -2
- prefect/server/ui-v2/assets/{work-pools-BkEYDe8L.js.map → work-pools-DHZlm7_7.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-pools-B9HaoZod.js → work-pools-DUEdkdTT.js} +2 -2
- prefect/server/ui-v2/assets/{work-pools-B9HaoZod.js.map → work-pools-DUEdkdTT.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-queue-icon-text-BjEy9we8.js → work-queue-icon-text-qwYXV0Ds.js} +2 -2
- prefect/server/ui-v2/assets/{work-queue-icon-text-BjEy9we8.js.map → work-queue-icon-text-qwYXV0Ds.js.map} +1 -1
- prefect/server/ui-v2/assets/{work-queue-select-C0CRDgEa.js → work-queue-select-DjFsJGAV.js} +2 -2
- prefect/server/ui-v2/assets/{work-queue-select-C0CRDgEa.js.map → work-queue-select-DjFsJGAV.js.map} +1 -1
- prefect/server/ui-v2/index.html +2 -2
- prefect/server/utilities/worker_channel.py +336 -0
- prefect/settings/sources.py +7 -1
- {prefect-3.7.2.dev3.dist-info → prefect-3.7.2.dev4.dist-info}/METADATA +1 -1
- {prefect-3.7.2.dev3.dist-info → prefect-3.7.2.dev4.dist-info}/RECORD +169 -168
- prefect/server/ui-v2/assets/deployment._id-Bit0Zg0o.js +0 -2
- prefect/server/ui-v2/assets/flow-run._id-Dmt9kWk3.js +0 -4
- prefect/server/ui-v2/assets/flow-run._id-Dmt9kWk3.js.map +0 -1
- prefect/server/ui-v2/assets/index-DX6fk7gn.css +0 -2
- prefect/server/ui-v2/assets/runs-DHK0p2Av.js.map +0 -1
- prefect/server/ui-v2/assets/schedule-badge-D3JRXiqi.js +0 -2
- prefect/server/ui-v2/assets/schedule-badge-D3JRXiqi.js.map +0 -1
- prefect/server/ui-v2/assets/task-run._id-DFALJgrE.js +0 -3
- prefect/server/ui-v2/assets/task-run._id-DFALJgrE.js.map +0 -1
- {prefect-3.7.2.dev3.dist-info → prefect-3.7.2.dev4.dist-info}/WHEEL +0 -0
- {prefect-3.7.2.dev3.dist-info → prefect-3.7.2.dev4.dist-info}/entry_points.txt +0 -0
- {prefect-3.7.2.dev3.dist-info → prefect-3.7.2.dev4.dist-info}/licenses/LICENSE +0 -0
prefect/__init__.py
CHANGED
|
@@ -113,6 +113,11 @@ def _initialize_plugins() -> None:
|
|
|
113
113
|
# Re-raise SystemExit from strict mode
|
|
114
114
|
raise
|
|
115
115
|
except Exception as e:
|
|
116
|
+
from pydantic_settings.exceptions import SettingsError
|
|
117
|
+
|
|
118
|
+
if isinstance(e, SettingsError):
|
|
119
|
+
return
|
|
120
|
+
|
|
116
121
|
# Log but don't crash on plugin errors
|
|
117
122
|
try:
|
|
118
123
|
from prefect.logging import get_logger
|
prefect/_build_info.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Generated by versioningit
|
|
2
|
-
__version__ = "3.7.2.
|
|
3
|
-
__build_date__ = "2026-05-
|
|
4
|
-
__git_commit__ = "
|
|
2
|
+
__version__ = "3.7.2.dev4"
|
|
3
|
+
__build_date__ = "2026-05-21 09:17:34.991867+00:00"
|
|
4
|
+
__git_commit__ = "354623c1258b2e75de62230b8e3f0400f2722cf1"
|
|
5
5
|
__dirty__ = False
|
prefect/cli/_app.py
CHANGED
|
@@ -158,7 +158,14 @@ def app() -> None:
|
|
|
158
158
|
|
|
159
159
|
print(prefect.__version__)
|
|
160
160
|
raise SystemExit(0)
|
|
161
|
-
|
|
161
|
+
|
|
162
|
+
from pydantic_settings.exceptions import SettingsError
|
|
163
|
+
|
|
164
|
+
try:
|
|
165
|
+
_app.meta(_normalize_top_level_flags(args))
|
|
166
|
+
except SettingsError as exc:
|
|
167
|
+
console.print(f"[red]{exc}[/red]")
|
|
168
|
+
raise SystemExit(1)
|
|
162
169
|
|
|
163
170
|
|
|
164
171
|
# =============================================================================
|
prefect/runner/runner.py
CHANGED
|
@@ -215,7 +215,7 @@ class Runner:
|
|
|
215
215
|
def goodbye_flow(name):
|
|
216
216
|
print(f"goodbye {name}")
|
|
217
217
|
|
|
218
|
-
if __name__ == "__main__"
|
|
218
|
+
if __name__ == "__main__":
|
|
219
219
|
runner = Runner(name="my-runner")
|
|
220
220
|
|
|
221
221
|
# Will be runnable via the API
|
|
@@ -614,17 +614,17 @@ class Runner:
|
|
|
614
614
|
def goodbye_flow(name):
|
|
615
615
|
print(f"goodbye {name}")
|
|
616
616
|
|
|
617
|
-
|
|
618
|
-
|
|
617
|
+
if __name__ == "__main__":
|
|
618
|
+
runner = Runner(name="my-runner")
|
|
619
619
|
|
|
620
|
-
|
|
621
|
-
|
|
620
|
+
# Will be runnable via the API
|
|
621
|
+
runner.add_flow(hello_flow)
|
|
622
622
|
|
|
623
|
-
|
|
624
|
-
|
|
623
|
+
# Run on a cron schedule
|
|
624
|
+
runner.add_flow(goodbye_flow, schedule={"cron": "0 * * * *"})
|
|
625
625
|
|
|
626
|
-
|
|
627
|
-
|
|
626
|
+
asyncio.run(runner.start())
|
|
627
|
+
```
|
|
628
628
|
"""
|
|
629
629
|
from prefect.runner.server import start_webserver
|
|
630
630
|
|
|
@@ -781,9 +781,9 @@ class Runner:
|
|
|
781
781
|
# The process may be a multiprocessing.context.SpawnProcess, in which case it will have an `exitcode` attribute
|
|
782
782
|
# but no `returncode` attribute
|
|
783
783
|
if (
|
|
784
|
-
getattr(process, "returncode", None)
|
|
785
|
-
|
|
786
|
-
)
|
|
784
|
+
getattr(process, "returncode", None) is None
|
|
785
|
+
and getattr(process, "exitcode", None) is None
|
|
786
|
+
):
|
|
787
787
|
await self._add_flow_run_process_map_entry(
|
|
788
788
|
flow_run.id, ProcessMapEntry(pid=process.pid, flow_run=flow_run)
|
|
789
789
|
)
|
|
@@ -78,6 +78,15 @@ async def update_work_queue(
|
|
|
78
78
|
Updates an existing work queue.
|
|
79
79
|
"""
|
|
80
80
|
async with db.session_context(begin_transaction=True) as session:
|
|
81
|
+
existing_work_queue = await models.work_queues.read_work_queue(
|
|
82
|
+
session=session, work_queue_id=work_queue_id
|
|
83
|
+
)
|
|
84
|
+
if existing_work_queue is None:
|
|
85
|
+
raise HTTPException(
|
|
86
|
+
status_code=status.HTTP_404_NOT_FOUND,
|
|
87
|
+
detail=f"Work Queue {work_queue_id} not found",
|
|
88
|
+
)
|
|
89
|
+
|
|
81
90
|
result = await models.work_queues.update_work_queue(
|
|
82
91
|
session=session,
|
|
83
92
|
work_queue_id=work_queue_id,
|
|
@@ -86,7 +95,8 @@ async def update_work_queue(
|
|
|
86
95
|
)
|
|
87
96
|
if not result:
|
|
88
97
|
raise HTTPException(
|
|
89
|
-
status_code=status.HTTP_404_NOT_FOUND,
|
|
98
|
+
status_code=status.HTTP_404_NOT_FOUND,
|
|
99
|
+
detail=f"Work Queue {work_queue_id} not found",
|
|
90
100
|
)
|
|
91
101
|
|
|
92
102
|
|
|
@@ -239,6 +249,13 @@ async def delete_work_queue(
|
|
|
239
249
|
Delete a work queue by id.
|
|
240
250
|
"""
|
|
241
251
|
async with db.session_context(begin_transaction=True) as session:
|
|
252
|
+
existing_work_queue = await models.work_queues.read_work_queue(
|
|
253
|
+
session=session, work_queue_id=work_queue_id
|
|
254
|
+
)
|
|
255
|
+
if existing_work_queue is None:
|
|
256
|
+
raise HTTPException(
|
|
257
|
+
status_code=status.HTTP_404_NOT_FOUND, detail="work queue not found"
|
|
258
|
+
)
|
|
242
259
|
result = await models.work_queues.delete_work_queue(
|
|
243
260
|
session=session, work_queue_id=work_queue_id
|
|
244
261
|
)
|
prefect/server/api/workers.py
CHANGED
|
@@ -26,14 +26,11 @@ import prefect.server.schemas as schemas
|
|
|
26
26
|
from prefect._internal.uuid7 import uuid7
|
|
27
27
|
from prefect.client.schemas.worker_channel import (
|
|
28
28
|
WORK_POOL_SNAPSHOT_CAPABILITY,
|
|
29
|
-
WORKER_CHANNEL_CLOSE_POLICIES,
|
|
30
29
|
WORKER_HEARTBEAT_CAPABILITY,
|
|
31
30
|
WorkerChannelCloseReason,
|
|
32
31
|
WorkerChannelProtocolError,
|
|
33
|
-
WorkerHeartbeatFrame,
|
|
34
32
|
WorkerHelloFrame,
|
|
35
33
|
WorkerReadyFrame,
|
|
36
|
-
WorkPoolSnapshot,
|
|
37
34
|
WorkPoolSnapshotPayload,
|
|
38
35
|
select_worker_channel_version,
|
|
39
36
|
validate_worker_channel_frame,
|
|
@@ -49,6 +46,7 @@ from prefect.server.models.work_queues import (
|
|
|
49
46
|
from prefect.server.models.workers import emit_work_pool_status_event
|
|
50
47
|
from prefect.server.schemas.statuses import WorkQueueStatus
|
|
51
48
|
from prefect.server.utilities import subscriptions
|
|
49
|
+
from prefect.server.utilities import worker_channel as worker_channel_utils
|
|
52
50
|
from prefect.server.utilities.server import PrefectRouter
|
|
53
51
|
from prefect.types import DateTime
|
|
54
52
|
from prefect.types._datetime import now
|
|
@@ -185,13 +183,6 @@ class WorkerChannelWorkPoolUpdateEvent:
|
|
|
185
183
|
changed_fields: dict[str, dict[str, Any]]
|
|
186
184
|
|
|
187
185
|
|
|
188
|
-
async def _close_worker_channel(
|
|
189
|
-
websocket: WebSocket, close_reason: WorkerChannelCloseReason
|
|
190
|
-
) -> None:
|
|
191
|
-
policy = WORKER_CHANNEL_CLOSE_POLICIES[close_reason]
|
|
192
|
-
await websocket.close(code=policy.websocket_code, reason=close_reason.value)
|
|
193
|
-
|
|
194
|
-
|
|
195
186
|
async def _receive_worker_hello(websocket: WebSocket) -> WorkerHelloFrame:
|
|
196
187
|
try:
|
|
197
188
|
message = await websocket.receive_json()
|
|
@@ -295,25 +286,6 @@ async def _resolve_worker_channel_work_queues(
|
|
|
295
286
|
return work_queues
|
|
296
287
|
|
|
297
288
|
|
|
298
|
-
async def _build_worker_channel_work_pool_snapshot(
|
|
299
|
-
session: AsyncSession,
|
|
300
|
-
work_pool: "ORMWorkPool",
|
|
301
|
-
) -> WorkPoolSnapshot:
|
|
302
|
-
work_pool_response = schemas.responses.WorkPoolResponse.model_validate(
|
|
303
|
-
work_pool, from_attributes=True
|
|
304
|
-
)
|
|
305
|
-
|
|
306
|
-
if work_pool_response.concurrency_limit is not None:
|
|
307
|
-
work_pool_response.active_slots = (
|
|
308
|
-
await models.workers.count_work_pool_active_slots(
|
|
309
|
-
session=session,
|
|
310
|
-
work_pool_id=work_pool.id,
|
|
311
|
-
)
|
|
312
|
-
)
|
|
313
|
-
|
|
314
|
-
return WorkPoolSnapshot.model_validate(work_pool_response.model_dump(mode="json"))
|
|
315
|
-
|
|
316
|
-
|
|
317
289
|
async def _build_worker_ready_frame(
|
|
318
290
|
session: AsyncSession,
|
|
319
291
|
work_pool_name: str,
|
|
@@ -392,7 +364,7 @@ async def _build_worker_ready_frame(
|
|
|
392
364
|
initial_snapshot = WorkPoolSnapshotPayload(
|
|
393
365
|
snapshot_sequence=1,
|
|
394
366
|
reason="initial",
|
|
395
|
-
work_pool=await
|
|
367
|
+
work_pool=await worker_channel_utils.build_worker_channel_work_pool_snapshot(
|
|
396
368
|
session=session,
|
|
397
369
|
work_pool=refreshed_work_pool,
|
|
398
370
|
),
|
|
@@ -433,27 +405,6 @@ async def _build_worker_ready_frame(
|
|
|
433
405
|
)
|
|
434
406
|
|
|
435
407
|
|
|
436
|
-
async def _persist_worker_channel_heartbeat(
|
|
437
|
-
session: AsyncSession,
|
|
438
|
-
work_pool_name: str,
|
|
439
|
-
frame: WorkerHeartbeatFrame,
|
|
440
|
-
) -> None:
|
|
441
|
-
work_pool = await models.workers.read_work_pool_by_name(
|
|
442
|
-
session=session,
|
|
443
|
-
work_pool_name=work_pool_name,
|
|
444
|
-
)
|
|
445
|
-
if work_pool is None:
|
|
446
|
-
raise RuntimeError("Worker channel work pool no longer exists")
|
|
447
|
-
|
|
448
|
-
await models.workers.record_worker_heartbeat(
|
|
449
|
-
session=session,
|
|
450
|
-
work_pool=work_pool,
|
|
451
|
-
worker_name=frame.payload.worker_name,
|
|
452
|
-
heartbeat_interval_seconds=frame.payload.heartbeat_interval_seconds,
|
|
453
|
-
emit_status_change=emit_work_pool_status_event,
|
|
454
|
-
)
|
|
455
|
-
|
|
456
|
-
|
|
457
408
|
# -----------------------------------------------------
|
|
458
409
|
# --
|
|
459
410
|
# --
|
|
@@ -642,13 +593,23 @@ async def update_work_pool(
|
|
|
642
593
|
work_pool_id = await worker_lookups._get_work_pool_id_from_name(
|
|
643
594
|
session=session, work_pool_name=work_pool_name
|
|
644
595
|
)
|
|
645
|
-
await models.workers.update_work_pool(
|
|
596
|
+
updated = await models.workers.update_work_pool(
|
|
646
597
|
session=session,
|
|
647
598
|
work_pool_id=work_pool_id,
|
|
648
599
|
work_pool=work_pool,
|
|
649
600
|
emit_status_change=emit_work_pool_status_event,
|
|
650
601
|
)
|
|
651
602
|
|
|
603
|
+
if updated and worker_channel_utils.work_pool_update_triggers_snapshot(
|
|
604
|
+
update_values
|
|
605
|
+
):
|
|
606
|
+
await worker_channel_utils.publish_snapshot_invalidation(
|
|
607
|
+
worker_channel_utils.WorkerChannelSnapshotInvalidation(
|
|
608
|
+
work_pool_id=work_pool_id,
|
|
609
|
+
reason="work_pool_updated",
|
|
610
|
+
)
|
|
611
|
+
)
|
|
612
|
+
|
|
652
613
|
|
|
653
614
|
@router.delete("/{name}", status_code=status.HTTP_204_NO_CONTENT)
|
|
654
615
|
async def delete_work_pool(
|
|
@@ -674,10 +635,19 @@ async def delete_work_pool(
|
|
|
674
635
|
session=session, work_pool_name=work_pool_name
|
|
675
636
|
)
|
|
676
637
|
|
|
677
|
-
await models.workers.delete_work_pool(
|
|
638
|
+
deleted = await models.workers.delete_work_pool(
|
|
678
639
|
session=session, work_pool_id=work_pool_id
|
|
679
640
|
)
|
|
680
641
|
|
|
642
|
+
if deleted:
|
|
643
|
+
await worker_channel_utils.publish_snapshot_invalidation(
|
|
644
|
+
worker_channel_utils.WorkerChannelSnapshotInvalidation(
|
|
645
|
+
work_pool_id=work_pool_id,
|
|
646
|
+
reason="work_pool_deleted",
|
|
647
|
+
work_pool_deleted=True,
|
|
648
|
+
)
|
|
649
|
+
)
|
|
650
|
+
|
|
681
651
|
|
|
682
652
|
@router.post("/{name}/concurrency_status")
|
|
683
653
|
async def read_work_pool_concurrency_status(
|
|
@@ -1013,8 +983,11 @@ async def update_work_queue(
|
|
|
1013
983
|
"""
|
|
1014
984
|
Update a work pool queue
|
|
1015
985
|
"""
|
|
1016
|
-
|
|
1017
986
|
async with db.session_context(begin_transaction=True) as session:
|
|
987
|
+
await worker_lookups._get_work_pool_id_from_name(
|
|
988
|
+
session=session,
|
|
989
|
+
work_pool_name=work_pool_name,
|
|
990
|
+
)
|
|
1018
991
|
work_queue_id = await worker_lookups._get_work_queue_id_from_name(
|
|
1019
992
|
work_pool_name=work_pool_name,
|
|
1020
993
|
work_queue_name=work_queue_name,
|
|
@@ -1045,6 +1018,10 @@ async def delete_work_queue(
|
|
|
1045
1018
|
"""
|
|
1046
1019
|
|
|
1047
1020
|
async with db.session_context(begin_transaction=True) as session:
|
|
1021
|
+
await worker_lookups._get_work_pool_id_from_name(
|
|
1022
|
+
session=session,
|
|
1023
|
+
work_pool_name=work_pool_name,
|
|
1024
|
+
)
|
|
1048
1025
|
work_queue_id = await worker_lookups._get_work_queue_id_from_name(
|
|
1049
1026
|
session=session,
|
|
1050
1027
|
work_pool_name=work_pool_name,
|
|
@@ -1081,84 +1058,58 @@ async def worker_channel_connect(
|
|
|
1081
1058
|
|
|
1082
1059
|
try:
|
|
1083
1060
|
hello = await _receive_worker_hello(websocket)
|
|
1084
|
-
async with
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
)
|
|
1090
|
-
|
|
1091
|
-
if work_pool_update_event is not None:
|
|
1092
|
-
async with db.session_context() as session:
|
|
1093
|
-
work_pool = await models.workers.read_work_pool(
|
|
1094
|
-
session=session,
|
|
1095
|
-
work_pool_id=work_pool_update_event.work_pool_id,
|
|
1096
|
-
)
|
|
1097
|
-
assert work_pool is not None
|
|
1098
|
-
await models.workers.emit_work_pool_updated_event(
|
|
1061
|
+
async with worker_channel_utils.messaging.ephemeral_subscription(
|
|
1062
|
+
worker_channel_utils.WORKER_CHANNEL_SNAPSHOT_TOPIC,
|
|
1063
|
+
) as consumer_kwargs:
|
|
1064
|
+
async with db.session_context(begin_transaction=True) as session:
|
|
1065
|
+
ready, work_pool_update_event = await _build_worker_ready_frame(
|
|
1099
1066
|
session=session,
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
)
|
|
1103
|
-
|
|
1104
|
-
await websocket.send_json(ready.model_dump(mode="json"))
|
|
1105
|
-
|
|
1106
|
-
while True:
|
|
1107
|
-
try:
|
|
1108
|
-
message = await websocket.receive_json()
|
|
1109
|
-
frame = validate_worker_channel_frame(message)
|
|
1110
|
-
except ValidationError:
|
|
1111
|
-
await _close_worker_channel(
|
|
1112
|
-
websocket, WorkerChannelCloseReason.PROTOCOL_ERROR
|
|
1113
|
-
)
|
|
1114
|
-
return
|
|
1115
|
-
except ValueError:
|
|
1116
|
-
await _close_worker_channel(
|
|
1117
|
-
websocket, WorkerChannelCloseReason.PROTOCOL_ERROR
|
|
1118
|
-
)
|
|
1119
|
-
return
|
|
1120
|
-
|
|
1121
|
-
if not isinstance(frame, WorkerHeartbeatFrame):
|
|
1122
|
-
await _close_worker_channel(
|
|
1123
|
-
websocket, WorkerChannelCloseReason.PROTOCOL_ERROR
|
|
1124
|
-
)
|
|
1125
|
-
return
|
|
1126
|
-
|
|
1127
|
-
if (
|
|
1128
|
-
frame.payload.consumer_id != hello.payload.consumer_id
|
|
1129
|
-
or frame.payload.worker_name != hello.payload.worker_name
|
|
1130
|
-
):
|
|
1131
|
-
await _close_worker_channel(
|
|
1132
|
-
websocket, WorkerChannelCloseReason.PROTOCOL_ERROR
|
|
1067
|
+
work_pool_name=work_pool_name,
|
|
1068
|
+
hello=hello,
|
|
1133
1069
|
)
|
|
1134
|
-
return
|
|
1135
1070
|
|
|
1136
|
-
|
|
1137
|
-
async with db.session_context(
|
|
1138
|
-
await
|
|
1071
|
+
if work_pool_update_event is not None:
|
|
1072
|
+
async with db.session_context() as session:
|
|
1073
|
+
work_pool = await models.workers.read_work_pool(
|
|
1074
|
+
session=session,
|
|
1075
|
+
work_pool_id=work_pool_update_event.work_pool_id,
|
|
1076
|
+
)
|
|
1077
|
+
assert work_pool is not None
|
|
1078
|
+
await models.workers.emit_work_pool_updated_event(
|
|
1139
1079
|
session=session,
|
|
1140
|
-
|
|
1141
|
-
|
|
1080
|
+
work_pool=work_pool,
|
|
1081
|
+
changed_fields=work_pool_update_event.changed_fields,
|
|
1082
|
+
)
|
|
1083
|
+
await worker_channel_utils.publish_snapshot_invalidation(
|
|
1084
|
+
worker_channel_utils.WorkerChannelSnapshotInvalidation(
|
|
1085
|
+
work_pool_id=work_pool_update_event.work_pool_id,
|
|
1086
|
+
reason="work_pool_updated",
|
|
1142
1087
|
)
|
|
1143
|
-
except Exception:
|
|
1144
|
-
logger.exception("Worker channel heartbeat persistence failed")
|
|
1145
|
-
await _close_worker_channel(
|
|
1146
|
-
websocket,
|
|
1147
|
-
WorkerChannelCloseReason.HEARTBEAT_PERSISTENCE_FAILED,
|
|
1148
1088
|
)
|
|
1149
|
-
|
|
1089
|
+
|
|
1090
|
+
connection = worker_channel_utils.WorkerChannelConnection(
|
|
1091
|
+
websocket=websocket,
|
|
1092
|
+
db=db,
|
|
1093
|
+
work_pool_name=work_pool_name,
|
|
1094
|
+
work_pool_id=ready.payload.initial_snapshot.work_pool.id,
|
|
1095
|
+
consumer_id=hello.payload.consumer_id,
|
|
1096
|
+
worker_name=hello.payload.worker_name,
|
|
1097
|
+
)
|
|
1098
|
+
await connection.run(ready, consumer_kwargs)
|
|
1150
1099
|
|
|
1151
1100
|
except WorkerChannelSetupError as exc:
|
|
1152
1101
|
logger.info("Worker channel setup failed: %s", exc.detail)
|
|
1153
|
-
await
|
|
1102
|
+
await worker_channel_utils.close_worker_channel(websocket, exc.close_reason)
|
|
1154
1103
|
except HTTPException as exc:
|
|
1155
1104
|
logger.info("Worker channel setup failed HTTP validation: %s", exc.detail)
|
|
1156
|
-
await
|
|
1105
|
+
await worker_channel_utils.close_worker_channel(
|
|
1106
|
+
websocket, WorkerChannelCloseReason.PROTOCOL_ERROR
|
|
1107
|
+
)
|
|
1157
1108
|
except subscriptions.NORMAL_DISCONNECT_EXCEPTIONS:
|
|
1158
1109
|
return
|
|
1159
1110
|
except Exception:
|
|
1160
1111
|
logger.exception("Worker channel setup failed due to a transient server error")
|
|
1161
|
-
await
|
|
1112
|
+
await worker_channel_utils.close_worker_channel(
|
|
1162
1113
|
websocket, WorkerChannelCloseReason.TRANSIENT_SERVER_ERROR
|
|
1163
1114
|
)
|
|
1164
1115
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{a as t,o as n,r,s as i}from"./vendor-codemirror-bBfSEHi1.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-QgMid0cA.js";import{g as f,h as p,t as m,u as h}from"./button-D8P8WefN.js";import{n as g}from"./dist-B1M6i_WJ.js";import{n as _}from"./input-D-Xs4C8i.js";import{t as v}from"./tag-badge-DcOR5Kjz.js";import{Dr as y,Er as b,K as x,Mr as S,Or as C,Rn as w,ar as T,cr as E,jr as D,kr as O,lr as k,m as A,sr as j,ur as M}from"./index-CY3vSgYi.js";import{t as N}from"./key-value-D9773LpZ.js";import{n as P}from"./use-get-artifacts-flow-task-runs-DOlsD-Pl.js";import{t as F}from"./lazy-markdown-BjhaJhp1.js";import{t as I}from"./data-table-DTqeGWDm.js";var L=e(i(),1),R=n(),z=({artifact:e})=>(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e.key?(0,R.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:(0,R.jsx)(b,{className:`min-w-0`,children:(0,R.jsxs)(O,{className:`flex-nowrap`,children:[(0,R.jsx)(y,{className:`min-w-0`,children:(0,R.jsx)(C,{to:`/artifacts/key/$key`,params:{key:e.key},className:`text-xl font-semibold truncate block`,title:e.key,children:e.key})}),(0,R.jsx)(D,{}),(0,R.jsx)(y,{className:`text-xl font-semibold min-w-0`,children:(0,R.jsx)(`span`,{className:`font-mono truncate block`,title:e.id,children:e.id})})]})})}):(0,R.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:(0,R.jsx)(b,{className:`min-w-0`,children:(0,R.jsxs)(O,{className:`flex-nowrap`,children:[e.flow_run&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(y,{className:`min-w-0`,children:(0,R.jsx)(C,{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,R.jsx)(D,{})]}),e.task_run&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(y,{className:`min-w-0`,children:(0,R.jsx)(C,{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,R.jsx)(D,{})]}),(0,R.jsx)(y,{className:`text-xl font-semibold min-w-0`,children:(0,R.jsx)(`span`,{className:`font-mono truncate block`,title:e.id,children:e.id})})]})})}),(0,R.jsx)(T,{id:`artifacts-guide`,label:`Documentation`})]}),e.description&&(0,R.jsx)(`div`,{className:`text-sm text-muted-foreground my-2`,children:(0,R.jsx)(F,{children:e.description})}),(0,R.jsx)(`hr`,{})]}),B=({artifact:e})=>{let[n,i]=(0,L.useState)(!1),a=()=>{i(e=>!e)},o=(0,L.useRef)(null),{setContainer:s}=r({container:o.current,extensions:[t.lineWrapping],value:String(e.data),indentWithTab:!1,editable:!0,basicSetup:{highlightActiveLine:!1,foldGutter:!1,highlightActiveLineGutter:!1}});(0,L.useEffect)(()=>{o.current&&s(o.current)},[s]);let c=e=>{g.success(`Copied to clipboard`),navigator.clipboard.writeText(e)};return(0,R.jsxs)(`div`,{className:`flex flex-col justify-center items-center`,children:[(0,R.jsxs)(m,{"data-testid":`show-raw-data-button`,variant:`outline`,onClick:a,className:`my-4`,children:[n?`Hide`:`Show`,` Raw Data`]}),(0,R.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,R.jsx)(m,{onClick:()=>c(e.data),variant:`ghost`,size:`icon`,className:`absolute top-0 right-0 z-10`,"aria-label":`copy`,children:(0,R.jsx)(f,{id:`Copy`,className:`size-2`})})})]})},ee=s(`/artifacts/artifact/$id`),V=({artifact:e,artifactContent:t,detailsContent:n})=>{let{tab:r}=ee.useSearch(),i=H(e,t,n);return(0,R.jsxs)(j,{defaultValue:`Artifact`,value:r,children:[(0,R.jsx)(k,{children:i.map(({value:e,hiddenOnDesktop:t,LinkComponent:n})=>(0,R.jsx)(n,{className:p(t&&`lg:hidden`)},e))}),i.map(({value:e,ViewComponent:t})=>(0,R.jsx)(t,{},e))]})};function H(e,t,n){return(0,L.useMemo)(()=>{let r=[];return r.push({value:`Artifact`,LinkComponent:({className:e})=>(0,R.jsx)(a,{to:`.`,search:{tab:`Artifact`},children:(0,R.jsx)(M,{value:`Artifact`,className:e,children:`Artifact`})}),ViewComponent:()=>(0,R.jsxs)(E,{value:`Artifact`,children:[t,(0,R.jsx)(B,{artifact:e})]})}),r.push({value:`Details`,hiddenOnDesktop:!0,LinkComponent:({className:e})=>(0,R.jsx)(a,{to:`.`,search:{tab:`Details`},children:(0,R.jsx)(M,{value:`Details`,className:e,children:`Details`})}),ViewComponent:()=>(0,R.jsx)(E,{value:`Details`,children:n})}),r.push({value:`Raw`,LinkComponent:({className:e})=>(0,R.jsx)(a,{to:`.`,search:{tab:`Raw`},children:(0,R.jsx)(M,{value:`Raw`,className:e,children:`Raw`})}),ViewComponent:()=>(0,R.jsx)(E,{value:`Raw`,children:(0,R.jsx)(U,{artifact:e})})}),r},[e,t,n])}function U({artifact:e}){return(0,R.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 W=({url:e})=>(0,R.jsxs)(`div`,{"data-testid":e,className:`prose mt-2`,children:[(0,R.jsx)(`img`,{"data-testid":`image-${e}`,src:e,alt:`artifact-image`,className:`w-full`}),(0,R.jsxs)(`p`,{className:`text-lg`,children:[`Image URL:`,` `,(0,R.jsx)(`a`,{className:`text-link hover:text-link-hover hover:underline`,target:`_blank`,href:e,rel:`noreferrer`,children:e})]})]}),G=({markdown:e})=>(0,R.jsx)(`div`,{"data-testid":`markdown-display`,className:`mt-4 prose`,children:(0,R.jsx)(F,{children:e})}),K=({progress:e})=>(0,R.jsxs)(`p`,{"data-testid":`progress-display`,className:`text-lg`,children:[`Progress: `,e,`%`]}),q=c(),J=({tableData:e})=>{let t=(0,L.useMemo)(()=>JSON.parse(e),[e]),n=(0,L.useMemo)(()=>Object.keys(t[0]??{}),[t]),[r,i]=(0,L.useState)(``),a=(0,L.useMemo)(()=>n.map(e=>q.display({id:e,header:()=>e,cell:({row:t})=>{let n=String(t.original[e]??``);return(0,R.jsx)(`span`,{className:`truncate block`,title:n,children:n})}})),[n]),s=d({data:(0,L.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,R.jsxs)(`div`,{"data-testid":`table-display`,className:`mt-4`,children:[(0,R.jsx)(`div`,{className:`flex flex-row justify-end items-center mb-2`,children:(0,R.jsx)(_,{placeholder:`Search`,value:r,onChange:e=>i(e.target.value)})}),(0,R.jsx)(I,{table:s})]})},Y=({artifact:e})=>{let t=(0,L.useMemo)(()=>e.created?h(e.created,`dateTime`):null,[e.created]);return(0,R.jsxs)(`div`,{className:`mt-4`,children:[(0,R.jsx)(`p`,{className:`text-base font-semibold`,children:`Artifact`}),(0,R.jsxs)(`div`,{className:`mt-3 flex flex-col gap-3`,children:[(0,R.jsx)(N,{label:`Key`,value:(0,R.jsx)(`span`,{className:`font-mono`,children:e.key??`None`})}),(0,R.jsx)(N,{label:`Type`,value:(0,R.jsx)(`span`,{className:`font-mono`,children:e.type??`None`})}),(0,R.jsx)(N,{label:`Created`,value:(0,R.jsx)(`span`,{children:t??`None`})})]})]})},X=e(S(),1),Z=({flowRun:e})=>{let t=(0,L.useMemo)(()=>e.start_time?h(e.start_time,`dateTime`):null,[e.start_time]),n=(0,L.useMemo)(()=>e.estimated_run_time?(0,X.default)(Math.ceil(e.estimated_run_time)*1e3):null,[e.estimated_run_time]),r=(0,L.useMemo)(()=>e.created?h(e.created,`dateTime`):null,[e.created]),i=(0,L.useMemo)(()=>e.updated?h(e.updated,`dateTime`):null,[e.updated]);return(0,R.jsxs)(`div`,{className:`mt-4`,children:[(0,R.jsx)(`p`,{className:`text-lg font-bold`,children:`Flow Run`}),(0,R.jsxs)(`div`,{className:`mt-3 flex flex-col gap-3`,children:[(0,R.jsx)(N,{label:`Start time`,value:(0,R.jsxs)(`span`,{className:`font-mono flex items-center`,children:[(0,R.jsx)(f,{id:`Calendar`,className:`inline w-4 mr-2`}),t??`None`]})}),(0,R.jsx)(N,{label:`Duration`,value:(0,R.jsxs)(`span`,{className:`font-mono flex items-center`,children:[(0,R.jsx)(f,{id:`Clock`,className:`inline w-4 mr-2`}),n??`None`]})}),(0,R.jsx)(N,{label:`Created`,value:(0,R.jsx)(`span`,{className:`font-mono`,children:r??`None`})}),(0,R.jsx)(N,{label:`Last Updated`,value:(0,R.jsx)(`span`,{className:`font-mono`,children:i??`None`})}),(0,R.jsx)(N,{label:`Tags`,value:e.tags&&e.tags.length>0?(0,R.jsx)(`div`,{className:`flex flex-wrap`,children:e.tags.map(e=>(0,R.jsx)(v,{tag:e},e))}):(0,R.jsx)(`span`,{className:`font-mono`,children:`None`})}),(0,R.jsx)(N,{label:`State Message`,value:(0,R.jsx)(`span`,{className:`font-mono`,children:e.state?.message??`None`})})]})]})},Q=({artifact:e})=>{let{flow_run:t,task_run:n}=e;return e.key||t||n?(0,R.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[e.key&&(0,R.jsx)(N,{label:`Artifact`,value:(0,R.jsx)(a,{to:`/artifacts/key/$key`,params:{key:e.key},className:`text-link hover:text-link-hover hover:underline`,children:e.key})}),t&&(0,R.jsx)(N,{label:`Flow Run`,value:(0,R.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,R.jsx)(N,{label:`Task Run`,value:(0,R.jsx)(a,{to:`/runs/task-run/$id`,params:{id:n.id},className:`text-link hover:text-link-hover hover:underline`,children:n.name})}),(0,R.jsx)(`hr`,{className:`mt-2 border-border`})]}):null},$=({taskRun:e})=>{let t=(0,L.useMemo)(()=>e.created?h(e.created,`dateTime`):null,[e.created]),n=(0,L.useMemo)(()=>e.updated?h(e.updated,`dateTime`):null,[e.updated]);return(0,R.jsxs)(`div`,{className:`mt-4`,children:[(0,R.jsx)(`p`,{className:`text-lg font-bold`,children:`Task Run`}),(0,R.jsxs)(`div`,{className:`mt-3 flex flex-col gap-3`,children:[(0,R.jsx)(N,{label:`Created`,value:(0,R.jsx)(`span`,{className:`font-mono`,children:t??`None`})}),(0,R.jsx)(N,{label:`Last Updated`,value:(0,R.jsx)(`span`,{className:`font-mono`,children:n??`None`})}),(0,R.jsx)(N,{label:`Tags`,value:e.tags&&e.tags.length>0?(0,R.jsx)(`div`,{className:`flex flex-wrap`,children:e.tags.map(e=>(0,R.jsx)(v,{tag:e},e))}):(0,R.jsx)(`span`,{className:`font-mono`,children:`None`})})]})]})},te=({artifact:e})=>{let{flow_run:t,task_run:n}=e;return(0,R.jsxs)(`div`,{className:`flex flex-col gap-4 pt-4`,children:[(0,R.jsx)(Q,{artifact:e}),(0,R.jsx)(Y,{artifact:e}),(t||n)&&(0,R.jsx)(`hr`,{className:`mt-4 border-border`}),t&&(0,R.jsx)(Z,{flowRun:t}),t&&n&&(0,R.jsx)(`hr`,{className:`mt-4 border-border`}),n&&(0,R.jsx)($,{taskRun:n})]})},ne=({artifact:e})=>{let t=(0,L.useMemo)(()=>{switch(e.type){case`markdown`:case`link`:return(0,R.jsx)(G,{markdown:e.data});case`image`:return(0,R.jsx)(W,{url:e.data});case`progress`:return(0,R.jsx)(K,{progress:e.data});case`table`:return(0,R.jsx)(J,{tableData:e.data});default:return(0,R.jsx)(`pre`,{children:JSON.stringify(e.data,null,2)})}},[e]),n=(0,R.jsx)(te,{artifact:e});return(0,R.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,R.jsx)(z,{artifact:e}),(0,R.jsxs)(`div`,{className:`flex flex-col lg:flex-row lg:gap-6`,children:[(0,R.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,R.jsx)(V,{artifact:e,artifactContent:t,detailsContent:n})}),(0,R.jsx)(w,{children:n})]})]})},re=function(){let{id:e}=A.useParams(),{data:t}=l(x(e));return(0,R.jsx)(ne,{artifact:P(e)??t})};export{re as component};
|
|
2
|
-
//# sourceMappingURL=artifact._id-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{a as t,o as n,r,s as i}from"./vendor-codemirror-bBfSEHi1.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-QgMid0cA.js";import{g as f,h as p,t as m,u as h}from"./button-D8P8WefN.js";import{n as g}from"./dist-B1M6i_WJ.js";import{n as _}from"./input-D-Xs4C8i.js";import{t as v}from"./tag-badge-DcOR5Kjz.js";import{Dr as y,Er as b,K as x,Mr as S,Or as C,Rn as w,ar as T,cr as E,jr as D,kr as O,lr as k,m as A,sr as j,ur as M}from"./index-Dycuvz2J.js";import{t as N}from"./key-value-D9773LpZ.js";import{n as P}from"./use-get-artifacts-flow-task-runs-Bexw8m2K.js";import{t as F}from"./lazy-markdown-Ai8LTUwb.js";import{t as I}from"./data-table-ylRuiwEf.js";var L=e(i(),1),R=n(),z=({artifact:e})=>(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e.key?(0,R.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:(0,R.jsx)(b,{className:`min-w-0`,children:(0,R.jsxs)(O,{className:`flex-nowrap`,children:[(0,R.jsx)(y,{className:`min-w-0`,children:(0,R.jsx)(C,{to:`/artifacts/key/$key`,params:{key:e.key},className:`text-xl font-semibold truncate block`,title:e.key,children:e.key})}),(0,R.jsx)(D,{}),(0,R.jsx)(y,{className:`text-xl font-semibold min-w-0`,children:(0,R.jsx)(`span`,{className:`font-mono truncate block`,title:e.id,children:e.id})})]})})}):(0,R.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:(0,R.jsx)(b,{className:`min-w-0`,children:(0,R.jsxs)(O,{className:`flex-nowrap`,children:[e.flow_run&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(y,{className:`min-w-0`,children:(0,R.jsx)(C,{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,R.jsx)(D,{})]}),e.task_run&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(y,{className:`min-w-0`,children:(0,R.jsx)(C,{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,R.jsx)(D,{})]}),(0,R.jsx)(y,{className:`text-xl font-semibold min-w-0`,children:(0,R.jsx)(`span`,{className:`font-mono truncate block`,title:e.id,children:e.id})})]})})}),(0,R.jsx)(T,{id:`artifacts-guide`,label:`Documentation`})]}),e.description&&(0,R.jsx)(`div`,{className:`text-sm text-muted-foreground my-2`,children:(0,R.jsx)(F,{children:e.description})}),(0,R.jsx)(`hr`,{})]}),B=({artifact:e})=>{let[n,i]=(0,L.useState)(!1),a=()=>{i(e=>!e)},o=(0,L.useRef)(null),{setContainer:s}=r({container:o.current,extensions:[t.lineWrapping],value:String(e.data),indentWithTab:!1,editable:!0,basicSetup:{highlightActiveLine:!1,foldGutter:!1,highlightActiveLineGutter:!1}});(0,L.useEffect)(()=>{o.current&&s(o.current)},[s]);let c=e=>{g.success(`Copied to clipboard`),navigator.clipboard.writeText(e)};return(0,R.jsxs)(`div`,{className:`flex flex-col justify-center items-center`,children:[(0,R.jsxs)(m,{"data-testid":`show-raw-data-button`,variant:`outline`,onClick:a,className:`my-4`,children:[n?`Hide`:`Show`,` Raw Data`]}),(0,R.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,R.jsx)(m,{onClick:()=>c(e.data),variant:`ghost`,size:`icon`,className:`absolute top-0 right-0 z-10`,"aria-label":`copy`,children:(0,R.jsx)(f,{id:`Copy`,className:`size-2`})})})]})},ee=s(`/artifacts/artifact/$id`),V=({artifact:e,artifactContent:t,detailsContent:n})=>{let{tab:r}=ee.useSearch(),i=H(e,t,n);return(0,R.jsxs)(j,{defaultValue:`Artifact`,value:r,children:[(0,R.jsx)(k,{children:i.map(({value:e,hiddenOnDesktop:t,LinkComponent:n})=>(0,R.jsx)(n,{className:p(t&&`lg:hidden`)},e))}),i.map(({value:e,ViewComponent:t})=>(0,R.jsx)(t,{},e))]})};function H(e,t,n){return(0,L.useMemo)(()=>{let r=[];return r.push({value:`Artifact`,LinkComponent:({className:e})=>(0,R.jsx)(a,{to:`.`,search:{tab:`Artifact`},children:(0,R.jsx)(M,{value:`Artifact`,className:e,children:`Artifact`})}),ViewComponent:()=>(0,R.jsxs)(E,{value:`Artifact`,children:[t,(0,R.jsx)(B,{artifact:e})]})}),r.push({value:`Details`,hiddenOnDesktop:!0,LinkComponent:({className:e})=>(0,R.jsx)(a,{to:`.`,search:{tab:`Details`},children:(0,R.jsx)(M,{value:`Details`,className:e,children:`Details`})}),ViewComponent:()=>(0,R.jsx)(E,{value:`Details`,children:n})}),r.push({value:`Raw`,LinkComponent:({className:e})=>(0,R.jsx)(a,{to:`.`,search:{tab:`Raw`},children:(0,R.jsx)(M,{value:`Raw`,className:e,children:`Raw`})}),ViewComponent:()=>(0,R.jsx)(E,{value:`Raw`,children:(0,R.jsx)(U,{artifact:e})})}),r},[e,t,n])}function U({artifact:e}){return(0,R.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 W=({url:e})=>(0,R.jsxs)(`div`,{"data-testid":e,className:`prose mt-2`,children:[(0,R.jsx)(`img`,{"data-testid":`image-${e}`,src:e,alt:`artifact-image`,className:`w-full`}),(0,R.jsxs)(`p`,{className:`text-lg`,children:[`Image URL:`,` `,(0,R.jsx)(`a`,{className:`text-link hover:text-link-hover hover:underline`,target:`_blank`,href:e,rel:`noreferrer`,children:e})]})]}),G=({markdown:e})=>(0,R.jsx)(`div`,{"data-testid":`markdown-display`,className:`mt-4 prose`,children:(0,R.jsx)(F,{children:e})}),K=({progress:e})=>(0,R.jsxs)(`p`,{"data-testid":`progress-display`,className:`text-lg`,children:[`Progress: `,e,`%`]}),q=c(),J=({tableData:e})=>{let t=(0,L.useMemo)(()=>JSON.parse(e),[e]),n=(0,L.useMemo)(()=>Object.keys(t[0]??{}),[t]),[r,i]=(0,L.useState)(``),a=(0,L.useMemo)(()=>n.map(e=>q.display({id:e,header:()=>e,cell:({row:t})=>{let n=String(t.original[e]??``);return(0,R.jsx)(`span`,{className:`truncate block`,title:n,children:n})}})),[n]),s=d({data:(0,L.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,R.jsxs)(`div`,{"data-testid":`table-display`,className:`mt-4`,children:[(0,R.jsx)(`div`,{className:`flex flex-row justify-end items-center mb-2`,children:(0,R.jsx)(_,{placeholder:`Search`,value:r,onChange:e=>i(e.target.value)})}),(0,R.jsx)(I,{table:s})]})},Y=({artifact:e})=>{let t=(0,L.useMemo)(()=>e.created?h(e.created,`dateTime`):null,[e.created]);return(0,R.jsxs)(`div`,{className:`mt-4`,children:[(0,R.jsx)(`p`,{className:`text-base font-semibold`,children:`Artifact`}),(0,R.jsxs)(`div`,{className:`mt-3 flex flex-col gap-3`,children:[(0,R.jsx)(N,{label:`Key`,value:(0,R.jsx)(`span`,{className:`font-mono`,children:e.key??`None`})}),(0,R.jsx)(N,{label:`Type`,value:(0,R.jsx)(`span`,{className:`font-mono`,children:e.type??`None`})}),(0,R.jsx)(N,{label:`Created`,value:(0,R.jsx)(`span`,{children:t??`None`})})]})]})},X=e(S(),1),Z=({flowRun:e})=>{let t=(0,L.useMemo)(()=>e.start_time?h(e.start_time,`dateTime`):null,[e.start_time]),n=(0,L.useMemo)(()=>e.estimated_run_time?(0,X.default)(Math.ceil(e.estimated_run_time)*1e3):null,[e.estimated_run_time]),r=(0,L.useMemo)(()=>e.created?h(e.created,`dateTime`):null,[e.created]),i=(0,L.useMemo)(()=>e.updated?h(e.updated,`dateTime`):null,[e.updated]);return(0,R.jsxs)(`div`,{className:`mt-4`,children:[(0,R.jsx)(`p`,{className:`text-lg font-bold`,children:`Flow Run`}),(0,R.jsxs)(`div`,{className:`mt-3 flex flex-col gap-3`,children:[(0,R.jsx)(N,{label:`Start time`,value:(0,R.jsxs)(`span`,{className:`font-mono flex items-center`,children:[(0,R.jsx)(f,{id:`Calendar`,className:`inline w-4 mr-2`}),t??`None`]})}),(0,R.jsx)(N,{label:`Duration`,value:(0,R.jsxs)(`span`,{className:`font-mono flex items-center`,children:[(0,R.jsx)(f,{id:`Clock`,className:`inline w-4 mr-2`}),n??`None`]})}),(0,R.jsx)(N,{label:`Created`,value:(0,R.jsx)(`span`,{className:`font-mono`,children:r??`None`})}),(0,R.jsx)(N,{label:`Last Updated`,value:(0,R.jsx)(`span`,{className:`font-mono`,children:i??`None`})}),(0,R.jsx)(N,{label:`Tags`,value:e.tags&&e.tags.length>0?(0,R.jsx)(`div`,{className:`flex flex-wrap`,children:e.tags.map(e=>(0,R.jsx)(v,{tag:e},e))}):(0,R.jsx)(`span`,{className:`font-mono`,children:`None`})}),(0,R.jsx)(N,{label:`State Message`,value:(0,R.jsx)(`span`,{className:`font-mono`,children:e.state?.message??`None`})})]})]})},Q=({artifact:e})=>{let{flow_run:t,task_run:n}=e;return e.key||t||n?(0,R.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[e.key&&(0,R.jsx)(N,{label:`Artifact`,value:(0,R.jsx)(a,{to:`/artifacts/key/$key`,params:{key:e.key},className:`text-link hover:text-link-hover hover:underline`,children:e.key})}),t&&(0,R.jsx)(N,{label:`Flow Run`,value:(0,R.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,R.jsx)(N,{label:`Task Run`,value:(0,R.jsx)(a,{to:`/runs/task-run/$id`,params:{id:n.id},className:`text-link hover:text-link-hover hover:underline`,children:n.name})}),(0,R.jsx)(`hr`,{className:`mt-2 border-border`})]}):null},$=({taskRun:e})=>{let t=(0,L.useMemo)(()=>e.created?h(e.created,`dateTime`):null,[e.created]),n=(0,L.useMemo)(()=>e.updated?h(e.updated,`dateTime`):null,[e.updated]);return(0,R.jsxs)(`div`,{className:`mt-4`,children:[(0,R.jsx)(`p`,{className:`text-lg font-bold`,children:`Task Run`}),(0,R.jsxs)(`div`,{className:`mt-3 flex flex-col gap-3`,children:[(0,R.jsx)(N,{label:`Created`,value:(0,R.jsx)(`span`,{className:`font-mono`,children:t??`None`})}),(0,R.jsx)(N,{label:`Last Updated`,value:(0,R.jsx)(`span`,{className:`font-mono`,children:n??`None`})}),(0,R.jsx)(N,{label:`Tags`,value:e.tags&&e.tags.length>0?(0,R.jsx)(`div`,{className:`flex flex-wrap`,children:e.tags.map(e=>(0,R.jsx)(v,{tag:e},e))}):(0,R.jsx)(`span`,{className:`font-mono`,children:`None`})})]})]})},te=({artifact:e})=>{let{flow_run:t,task_run:n}=e;return(0,R.jsxs)(`div`,{className:`flex flex-col gap-4 pt-4`,children:[(0,R.jsx)(Q,{artifact:e}),(0,R.jsx)(Y,{artifact:e}),(t||n)&&(0,R.jsx)(`hr`,{className:`mt-4 border-border`}),t&&(0,R.jsx)(Z,{flowRun:t}),t&&n&&(0,R.jsx)(`hr`,{className:`mt-4 border-border`}),n&&(0,R.jsx)($,{taskRun:n})]})},ne=({artifact:e})=>{let t=(0,L.useMemo)(()=>{switch(e.type){case`markdown`:case`link`:return(0,R.jsx)(G,{markdown:e.data});case`image`:return(0,R.jsx)(W,{url:e.data});case`progress`:return(0,R.jsx)(K,{progress:e.data});case`table`:return(0,R.jsx)(J,{tableData:e.data});default:return(0,R.jsx)(`pre`,{children:JSON.stringify(e.data,null,2)})}},[e]),n=(0,R.jsx)(te,{artifact:e});return(0,R.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,R.jsx)(z,{artifact:e}),(0,R.jsxs)(`div`,{className:`flex flex-col lg:flex-row lg:gap-6`,children:[(0,R.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,R.jsx)(V,{artifact:e,artifactContent:t,detailsContent:n})}),(0,R.jsx)(w,{children:n})]})]})},re=function(){let{id:e}=A.useParams(),{data:t}=l(x(e));return(0,R.jsx)(ne,{artifact:P(e)??t})};export{re as component};
|
|
2
|
+
//# sourceMappingURL=artifact._id-Cy3gxEon.js.map
|