@fudanda/admin-antd 1.20261015.1-beta.1 → 2.20261024.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +58 -42
  3. package/THIRD_PARTY_NOTICES.md +55 -55
  4. package/dist/automation.js +3 -3
  5. package/dist/chunks/App-DNjXLysb.js +79 -0
  6. package/dist/chunks/{AppModal-B_xvSaeq.js → AppModal-DJzQA6FR.js} +1 -1
  7. package/dist/chunks/ArcBaseAdmin-BZrHGq2f.js +1 -0
  8. package/dist/chunks/ConfigurableTable-DzmZDd8F.js +55 -0
  9. package/dist/chunks/{DashboardPage-BTLufKzi.js → DashboardPage-BohGodSl.js} +1 -1
  10. package/dist/chunks/DataScopePanel-B2-x8Jcz.js +1 -0
  11. package/dist/chunks/{DateTimeText-rk9NeYgA.js → DateTimeText-CIt0Qy45.js} +1 -1
  12. package/dist/chunks/DepartmentsPage-DMWY__Y_.js +1 -0
  13. package/dist/chunks/DictTag-2-adKbYg.js +1 -0
  14. package/dist/chunks/DictsPage-DILDyHi-.js +15 -0
  15. package/dist/chunks/EditFormModal-DNHOZHxM.js +1 -0
  16. package/dist/chunks/EntityContextRuntime-DMklAv-k.js +1 -0
  17. package/dist/chunks/{EntityContextRuntime-BrAz-aCV.js → EntityContextRuntime-sslBZqYD.js} +1 -1
  18. package/dist/chunks/{EntityRelationButton-C8Cl8wyh.js → EntityRelationButton-DWn1rC2J.js} +2 -2
  19. package/dist/chunks/{ExportButton-D4IvZKHy.js → ExportButton-AzH4D0oW.js} +1 -1
  20. package/dist/chunks/FileNameCell-DPyi64Rv.js +1 -0
  21. package/dist/chunks/FileStorageConfigsPage-CzuOgeK0.js +15 -0
  22. package/dist/chunks/FileTypeIcon-DIih3XQG.js +1 -0
  23. package/dist/chunks/{FileViewerPreviewPanel-wbXzgqxc.js → FileViewerPreviewPanel-CMqVtGCr.js} +2 -2
  24. package/dist/chunks/FilesPage-BaEBCOCs.js +43 -0
  25. package/dist/chunks/IdentitySecurityPage-BO7nY8id.js +1 -0
  26. package/dist/chunks/{JsonPreviewPanel-D8YpZD1A.js → JsonPreviewPanel-Dhbza-Uu.js} +1 -1
  27. package/dist/chunks/LogStatsScaffold-CLycj3da.js +1 -0
  28. package/dist/chunks/LoginLogsPage-DTmHi8u0.js +1 -0
  29. package/dist/chunks/LoginLogsTable-DVmHnC6V.js +1 -0
  30. package/dist/chunks/{MasterDetailLayout-DDVFodpX.js → MasterDetailLayout-sjPWw8BI.js} +2 -2
  31. package/dist/chunks/{MemberAssignmentSheet-NWm5vThg.js → MemberAssignmentSheet-Czbt6_zv.js} +1 -1
  32. package/dist/chunks/MenuCommandPalette-BCOzf-Kq.js +8 -0
  33. package/dist/chunks/MenusPage-DN8DTGB1.js +1 -0
  34. package/dist/chunks/{ModalFooter-vXDpmYTM.js → ModalFooter-RMlvqrO9.js} +1 -1
  35. package/dist/chunks/NavListPanel-vjIOIqK0.js +1 -0
  36. package/dist/chunks/OnlineSessionsPage-FoHYZKlR.js +1 -0
  37. package/dist/chunks/OperationLogsPage-BeRnGcBJ.js +1 -0
  38. package/dist/chunks/OperationLogsTable-COI-Lp-y.js +1 -0
  39. package/dist/chunks/PDFPreviewPanel-BIQuBnZZ.js +37 -0
  40. package/dist/chunks/PasswordInput-DGEJO9yx.js +1 -0
  41. package/dist/chunks/PositionsPage-DohI0luX.js +1 -0
  42. package/dist/chunks/PreferencesSheetBody-B9niQABW.js +43 -0
  43. package/dist/chunks/ProfilePage-CVTRv7xb.js +15 -0
  44. package/dist/chunks/RelationPanel-B1X6AVaM.js +36 -0
  45. package/dist/chunks/RolesPage-CtUw93L8.js +1 -0
  46. package/dist/chunks/{SearchToolbar-BAh56OAa.js → SearchToolbar-CvgYKUjr.js} +1 -1
  47. package/dist/chunks/{SessionClientTag-DafwXf-o.js → SessionClientTag-DIwnYodW.js} +2 -2
  48. package/dist/chunks/SessionConflictModal-BLNuDsN_.js +1 -0
  49. package/dist/chunks/SettingRow-DVNmTJWC.js +1 -0
  50. package/dist/chunks/SettingsPage-BRnCxYQm.js +26 -0
  51. package/dist/chunks/StatCard-Czjfs0fa.js +4 -0
  52. package/dist/chunks/{UserDisplay-BYhcfa84.js → UserDisplay-J0Re8z-7.js} +1 -1
  53. package/dist/chunks/UserGroupsPage-CNwbejx-.js +1 -0
  54. package/dist/chunks/{UserLogsPanels-3ZlKQsCu.js → UserLogsPanels-BHeSxWrk.js} +2 -2
  55. package/dist/chunks/UserTransferSelect-CAeyxdor.js +22 -0
  56. package/dist/chunks/UsersPage-BXt9fOru.js +36 -0
  57. package/dist/chunks/{archive-D0BSMQmn.js → archive-B_IKvysI.js} +4 -4
  58. package/dist/chunks/chart-data-DImT_Mzn.js +5 -0
  59. package/dist/chunks/{chart-renderer-BWLqOvLF.js → chart-renderer-k-Rd8vdL.js} +1 -1
  60. package/dist/chunks/{user-cC0uCe3d.js → chevron-right-EBApfX6q.js} +2 -2
  61. package/dist/chunks/{clipboard-BKPNFY58.js → clipboard-ERcMSMRH.js} +1 -1
  62. package/dist/chunks/{confirm-CC2F8XXe.js → confirm-BtBBEqk8.js} +1 -1
  63. package/dist/chunks/{data-DPCozzrG.js → data-B05HzECj.js} +1 -1
  64. package/dist/chunks/{deleteAction-NGTDhZud.js → deleteAction-CCocr5uV.js} +1 -1
  65. package/dist/chunks/{diagram-vBbcsoK2.js → diagram-D9cwc7QH.js} +3 -3
  66. package/dist/chunks/dist-Bauqz5on.js +1 -0
  67. package/dist/chunks/{drawing-CUAfa3D5.js → drawing-D2Qrun-P.js} +2 -2
  68. package/dist/chunks/{email-U025DuXM.js → email-ByshRsFv.js} +2 -2
  69. package/dist/chunks/{export-CCaKk9VN.js → export-DlTz5dc2.js} +5 -5
  70. package/dist/chunks/{eye-DNBTmA6c.js → eye-off-BtJoIT5n.js} +1 -8
  71. package/dist/chunks/feedback-BnjMKZpz.js +1 -0
  72. package/dist/chunks/file-utils-DyvnVEoH.js +1 -0
  73. package/dist/chunks/fit-CsnhEncA.js +1 -0
  74. package/dist/chunks/{form-DhQiOMvp.js → form-CQutQFiD.js} +1 -1
  75. package/dist/chunks/geo-DR0fL7r2.js +38 -0
  76. package/dist/chunks/{image-C52XMTxg.js → image-ez9hvzKT.js} +1 -1
  77. package/dist/chunks/{lib-DZsU27Fn.js → lib-BlRm3nk1.js} +4 -4
  78. package/dist/chunks/line-BV7qVRkM.js +1 -0
  79. package/dist/chunks/{msg-DNXH9mKo.js → msg-BzZbudMm.js} +1 -1
  80. package/dist/chunks/{ofd-B0_-rey2.js → ofd-C7DKqJ6Z.js} +1 -1
  81. package/dist/chunks/{openDocument-DW7w0HpR.js → openDocument-DGzqlyJg.js} +1 -1
  82. package/dist/chunks/parse-6ZQGx714.js +1 -0
  83. package/dist/chunks/{parser-BFNqF7wU.js → parser-DC3PvpL4.js} +1 -1
  84. package/dist/chunks/ppt-B0WY5Gks.js +30 -0
  85. package/dist/chunks/pptx-DX5KDFZ7.js +109 -0
  86. package/dist/chunks/{print-mask-DTiml6Ox.js → print-mask-Dguzv0rv.js} +2 -2
  87. package/dist/chunks/{psd-yU36O76Y.js → psd-hjeNFQZ-.js} +1 -1
  88. package/dist/chunks/{search-filters-BoRMIesR.js → search-filters-CRIhZ0gL.js} +1 -1
  89. package/dist/chunks/spreadsheet-BzbBEhmY.js +1 -0
  90. package/dist/chunks/{spreadsheet-DiZ31XlH.js → spreadsheet-LR3SOG-x.js} +3 -3
  91. package/dist/chunks/toolbar-controls-CThS0xuP.js +15 -0
  92. package/dist/chunks/ui-BFsHoY7a.js +1 -0
  93. package/dist/chunks/{useCrudOperationColumn-PObQMk2y.js → useCrudOperationColumn-D935tixd.js} +1 -1
  94. package/dist/chunks/useListPage-CbcOQG4m.js +1 -0
  95. package/dist/chunks/{useStatusToggle-B7KSIN75.js → useStatusToggle-B2qZaoc-.js} +1 -1
  96. package/dist/chunks/wordDoc-BZY3ZnxN.js +152 -0
  97. package/dist/chunks/wordDocx-Bt2mlB3C.js +77 -0
  98. package/dist/chunks/{xmind-B9BtGBNI.js → xmind-CF9YwkOD.js} +2 -2
  99. package/dist/file-viewer/flyfish-viewer-assets.json +5 -5
  100. package/dist/file-viewer/vendor/docx/jszip.min.js +0 -0
  101. package/dist/file-viewer/wasm/data/sql-wasm.wasm +0 -0
  102. package/dist/index.js +1 -1
  103. package/dist/{src-DVwjbBTf.js → src-LbWcrSWe.js} +1 -1
  104. package/dist/styles.css +1 -1
  105. package/package.json +7 -7
  106. package/dist/chunks/App-DX7JOOmP.js +0 -79
  107. package/dist/chunks/ArcBaseAdmin-CdB_roNY.js +0 -1
  108. package/dist/chunks/ConfigurableTable-CyfZLgG0.js +0 -55
  109. package/dist/chunks/DataScopePanel-CubtBhTT.js +0 -1
  110. package/dist/chunks/DepartmentsPage-ECexbzsK.js +0 -1
  111. package/dist/chunks/DictTag-BerYvaUM.js +0 -1
  112. package/dist/chunks/DictsPage-65kAxYFd.js +0 -15
  113. package/dist/chunks/DirectoryLoginModal-rRXvoqV7.js +0 -1
  114. package/dist/chunks/EditFormModal-D68dOnaj.js +0 -1
  115. package/dist/chunks/EntityContextRuntime-D9mWi5xC.js +0 -1
  116. package/dist/chunks/FileNameCell-C_V1k0q-.js +0 -1
  117. package/dist/chunks/FilePreviewModal-D7v5seXB.js +0 -1
  118. package/dist/chunks/FileStorageConfigsPage-D2UYESb5.js +0 -15
  119. package/dist/chunks/FileTypeIcon-C77EVWXZ.js +0 -1
  120. package/dist/chunks/FilesPage-By81A2i7.js +0 -43
  121. package/dist/chunks/ForgotPasswordModal-DTlunJpM.js +0 -1
  122. package/dist/chunks/IdentitySecurityPage-Dp5EP7aT.js +0 -1
  123. package/dist/chunks/LogStatsScaffold-BFwbN_MU.js +0 -1
  124. package/dist/chunks/LoginField-Bu4C0-Mk.js +0 -1
  125. package/dist/chunks/LoginLogsPage-BuMJ6U8I.js +0 -1
  126. package/dist/chunks/LoginLogsTable-DfAlWPZb.js +0 -1
  127. package/dist/chunks/MenuCommandPalette-BvW2kEU4.js +0 -8
  128. package/dist/chunks/MenusPage-DT3kxAfi.js +0 -1
  129. package/dist/chunks/NavListPanel-agMt2kc6.js +0 -1
  130. package/dist/chunks/OnlineSessionsPage-BJJAB2pV.js +0 -1
  131. package/dist/chunks/OperationLogsPage-CP-wUt_N.js +0 -1
  132. package/dist/chunks/OperationLogsTable-BX0vV3fT.js +0 -1
  133. package/dist/chunks/PDFPreviewPanel-D8-74Zqs.js +0 -30
  134. package/dist/chunks/PasswordInput--G8GKd5g.js +0 -1
  135. package/dist/chunks/PositionsPage-Cs7xq89s.js +0 -1
  136. package/dist/chunks/PreferencesSheetBody-CdA4Ig_g.js +0 -43
  137. package/dist/chunks/ProfilePage-Bt3yP6D-.js +0 -15
  138. package/dist/chunks/RelationPanel-B-KAfl9B.js +0 -36
  139. package/dist/chunks/RolesPage-DDNGkGAq.js +0 -1
  140. package/dist/chunks/SessionConflictModal-DgFNCU3j.js +0 -1
  141. package/dist/chunks/SettingRow-BIb1ruW2.js +0 -1
  142. package/dist/chunks/SettingsPage-rhqkPOJ9.js +0 -16
  143. package/dist/chunks/StatCard-BwhGDWpE.js +0 -4
  144. package/dist/chunks/UserGroupsPage-D3_aji58.js +0 -1
  145. package/dist/chunks/UserTransferSelect-S-GUw2Y9.js +0 -1
  146. package/dist/chunks/UsersPage-CLRJX-V9.js +0 -29
  147. package/dist/chunks/WorkflowPrintButton-BVa-xw-8.js +0 -1
  148. package/dist/chunks/chart-data-DOMSCLwj.js +0 -5
  149. package/dist/chunks/chevron-left-DnDEG_PI.js +0 -8
  150. package/dist/chunks/chevron-right-CzizTV5i.js +0 -8
  151. package/dist/chunks/dist-BqNhxPp5.js +0 -1
  152. package/dist/chunks/feedback-D4BIfDNd.js +0 -1
  153. package/dist/chunks/file-utils-DJ9ksj-g.js +0 -1
  154. package/dist/chunks/geo-Bf8ymo43.js +0 -38
  155. package/dist/chunks/line-DSFA8EqT.js +0 -1
  156. package/dist/chunks/mail-Cduf1OFr.js +0 -8
  157. package/dist/chunks/mono-icons-CxCoktev.js +0 -1
  158. package/dist/chunks/plus-Bvdn6bx1.js +0 -8
  159. package/dist/chunks/ppt-C9RgrmNU.js +0 -30
  160. package/dist/chunks/pptx-_T8ZPVQn.js +0 -109
  161. package/dist/chunks/printer-DL8WQci4.js +0 -8
  162. package/dist/chunks/shield-check-DZGK8n9u.js +0 -8
  163. package/dist/chunks/spreadsheet-CHFSQY8j.js +0 -1
  164. package/dist/chunks/table-columns-XaoxVUJN.js +0 -1
  165. package/dist/chunks/toolbar-controls-BFOuV86W.js +0 -8
  166. package/dist/chunks/ui-DoIHGuTR.js +0 -1
  167. package/dist/chunks/useDebouncedValue-DFoJN77o.js +0 -22
  168. package/dist/chunks/useListPage-1Upr_ala.js +0 -1
  169. package/dist/chunks/wordDoc-CtetBfzo.js +0 -152
  170. package/dist/chunks/wordDocx-8ak39HcF.js +0 -77
  171. package/dist/chunks/zoom-8Eo2fTNd.js +0 -1
  172. package/dist/public/monaco/vs/editor/editor.worker.js +0 -1
  173. package/dist/public/monaco/vs/language/css/css.worker.js +0 -66
  174. package/dist/public/monaco/vs/language/html/html.worker.js +0 -443
  175. package/dist/public/monaco/vs/language/json/json.worker.js +0 -17
  176. package/dist/public/monaco/vs/language/typescript/ts.worker.js +0 -67693
@@ -1,15 +1,15 @@
1
- import{n as e}from"./chunks/rolldown-runtime-BKuNeK48.js";import{n as t,t as n}from"./chunks/preload-helper-C-73SErw.js";import{c as r,n as i,o as a,r as o,s}from"./chunks/controls-C5dPckUT.js";import{t as c}from"./chunks/typography-DKK_iHcj.js";import{i as l,r as u}from"./chunks/feedback-D4BIfDNd.js";import{c as d,l as f,n as p,t as m}from"./chunks/ConfigurableTable-CyfZLgG0.js";import{n as h,t as g}from"./chunks/createLucideIcon-BtwfYE6A.js";import{n as _,t as v}from"./chunks/arrow-left-CsxBMzKY.js";import{r as y,s as b}from"./chunks/toolbar-controls-BFOuV86W.js";import{n as x,t as S}from"./chunks/copy-ofLPH1I0.js";import{n as C,t as w}from"./chunks/ellipsis-Dux1Nxa5.js";import{n as T,t as E}from"./chunks/layout-grid-Bp9bwiQZ.js";import{n as D,t as ee}from"./chunks/maximize-CnmQ11E7.js";import{n as te,t as ne}from"./chunks/plus-Bvdn6bx1.js";import{n as re,t as ie}from"./chunks/trash-tHBT8Mpw.js";import{t as O}from"./chunks/form-DhQiOMvp.js";import{_ as k,a as A,b as j,r as M,v as N,w as P}from"./chunks/ui-DoIHGuTR.js";import{i as F,n as ae,r as oe,t as I}from"./chunks/confirm-CC2F8XXe.js";import{n as L,t as R}from"./chunks/useStatusToggle-B7KSIN75.js";import{n as se,t as ce}from"./chunks/ResponsiveTableActions-y54aSdhs.js";import{n as le,t as z}from"./chunks/useListPage-1Upr_ala.js";import{n as B,t as V}from"./chunks/DateTimeText-rk9NeYgA.js";import{c as ue,i as de,o as fe,r as pe,t as me}from"./chunks/table-columns-XaoxVUJN.js";import{a as he,i as ge,n as H,r as _e,t as ve}from"./chunks/EditFormModal-D68dOnaj.js";import{n as ye,t as be}from"./chunks/ModalFooter-vXDpmYTM.js";import{n as xe,r as Se}from"./chunks/clipboard-BKPNFY58.js";import{Suspense as Ce,lazy as we,memo as Te,useCallback as U,useContext as Ee,useEffect as W,useId as G,useMemo as De,useRef as K,useState as q}from"react";import{Fragment as J,jsx as Y,jsxs as X}from"react/jsx-runtime";import{Button as Oe,Checkbox as ke,Input as Z,InputNumber as Ae,Select as je,Space as Me,Table as Ne}from"antd";import{ApiError as Pe,ClientError as Fe,call as Ie}from"@fudanda/client";import{fillPath as Le}from"@fudanda/shared/core";import"dayjs";import{UNSAFE_NavigationContext as Re,useBeforeUnload as ze,useNavigate as Be,useSearchParams as Ve}from"react-router-dom";import{automationContract as Q,automationOperations as He,automationRunStatuses as Ue,automationSchedulePresets as We,automationTimezoneOptions as Ge,automationTriggerLabels as Ke,automationTriggerOptions as qe,blankWorkflowGraph as Je,compareWorkflowDefinitions as Ye,eventDispatchLabels as Xe,inventoryThresholdGraph as Ze,nodeTestContextSchema as Qe,recordConditionLabels as $e,recordConditionOperators as et,recordOperationLabels as tt,recordOperations as nt,recordTriggerChecks as rt,timingTotals as it,triggerCheckLabel as at,triggerCheckValue as ot,triggerDecisionReason as st,workflowChangeKey as ct,workflowInputSchema as lt,workflowReferenceSchema as ut}from"@fudanda/shared/automation";import{api as dt,contractKey as ft,useApiMutation as $,useApiQuery as pt}from"@fudanda/react-core/lib/contract-query";import{formatDateTime as mt}from"@fudanda/react-core/utils/date";import{useListDeepLink as ht}from"@fudanda/react-core/hooks/useListDeepLink";import{usePagination as gt}from"@fudanda/react-core/hooks/usePagination";import{AutomationClientContext as _t,invalidateCredentials as vt,invalidateRunLists as yt,invalidateWorkflowLists as bt,invalidateWorkflowManagement as xt,statuses as St,useAutomationClient as Ct,useCatalog as wt,useCredentialList as Tt,useCredentials as Et,useRunList as Dt,useWorkflowList as Ot}from"@fudanda/react-core/automation/hooks";import{useWorkflowDraft as kt,useWorkflowRunActions as At}from"@fudanda/react-core/automation/editor-controllers";import{useWorkflowEditorState as jt}from"@fudanda/react-core/automation/editor-state";import{useQueryClient as Mt}from"@tanstack/react-query";import{AdminNavigationGuardContext as Nt}from"@fudanda/react-core/admin/navigation-context";import{resultPreview as Pt,schemaToTree as Ft,testInputExample as It,testInputValidation as Lt,testInputValidation as Rt,treeIssues as zt,treeToSchema as Bt,usePanelFocus as Vt,workflowNodeTestRuns as Ht,workflowThemeStyle as Ut}from"@fudanda/workflow/core";import{runKey as Wt,useLiveRun as Gt,useRunQuery as Kt}from"@fudanda/react-core/automation/run-stream";import{runDuration as qt,runRows as Jt,runTimeline as Yt}from"@fudanda/react-core/automation/run-view";import{useEventCallback as Xt}from"@fudanda/react-core/hooks/useEventCallback";import{runNodeLabel as Zt}from"@fudanda/react-core/automation/run-labels";import{useDebugFocus as Qt}from"@fudanda/react-core/automation/debug-focus";import{scopedStorageKey as $t}from"@fudanda/react-core/utils/storage";import{useAllUsers as en}from"@fudanda/react-core/hooks/queries/users";import{eventHasActiveRun as tn,eventOutcomeLabel as nn}from"@fudanda/react-core/automation/event-run-state";import{parseWorkflowImport as rn}from"@fudanda/react-core/automation/workflow-import-validation";var an,on;function sn(){return(sn=e((()=>{
1
+ import{n as e}from"./chunks/rolldown-runtime-BKuNeK48.js";import{n as t,t as n}from"./chunks/preload-helper-C-73SErw.js";import{c as r,n as i,o as a,r as o,s}from"./chunks/controls-C5dPckUT.js";import{t as c}from"./chunks/typography-DKK_iHcj.js";import{i as l,r as u}from"./chunks/feedback-BnjMKZpz.js";import{_ as d,a as f,c as p,g as m,n as h,o as g,r as _,t as v,u as y}from"./chunks/ConfigurableTable-DzmZDd8F.js";import{n as b,t as x}from"./chunks/createLucideIcon-BtwfYE6A.js";import{n as S,t as C}from"./chunks/arrow-left-CsxBMzKY.js";import{c as w,l as T,r as E,s as D}from"./chunks/toolbar-controls-CThS0xuP.js";import{n as O,t as ee}from"./chunks/copy-ofLPH1I0.js";import{n as te,t as ne}from"./chunks/ellipsis-Dux1Nxa5.js";import{n as re,t as k}from"./chunks/layout-grid-Bp9bwiQZ.js";import{n as A,t as j}from"./chunks/maximize-CnmQ11E7.js";import{n as M,t as ie}from"./chunks/trash-tHBT8Mpw.js";import{t as ae}from"./chunks/form-CQutQFiD.js";import{C as N,_ as P,a as F,g as I,r as L,y as R}from"./chunks/ui-BFsHoY7a.js";import{i as z,n as oe,r as se,t as ce}from"./chunks/confirm-BtBBEqk8.js";import{n as B,t as V}from"./chunks/useStatusToggle-B2qZaoc-.js";import{n as le,t as ue}from"./chunks/ResponsiveTableActions-y54aSdhs.js";import{n as de,t as fe}from"./chunks/useListPage-CbcOQG4m.js";import{n as pe,t as me}from"./chunks/DateTimeText-CIt0Qy45.js";import{a as he,n as ge,o as H,r as _e,t as ve}from"./chunks/EditFormModal-DNHOZHxM.js";import{n as ye,t as be}from"./chunks/ModalFooter-RMlvqrO9.js";import{n as xe,r as Se}from"./chunks/clipboard-ERcMSMRH.js";import{Suspense as Ce,lazy as we,memo as Te,useCallback as U,useContext as Ee,useEffect as W,useId as G,useMemo as De,useRef as K,useState as q}from"react";import{Fragment as J,jsx as Y,jsxs as X}from"react/jsx-runtime";import{Button as Oe,Checkbox as ke,Input as Z,InputNumber as Ae,Select as je,Space as Me,Table as Ne}from"antd";import{GoaError as Pe}from"@fudanda/client";import{fillPath as Fe}from"@fudanda/shared/core";import"dayjs";import{UNSAFE_NavigationContext as Ie,useBeforeUnload as Le,useNavigate as Re,useSearchParams as ze}from"react-router-dom";import{automationRunStatuses as Be,automationSchedulePresets as Ve,automationTimezoneOptions as He,automationTriggerLabels as Ue,automationTriggerOptions as We,blankWorkflowGraph as Ge,compareWorkflowDefinitions as Ke,eventDispatchLabels as qe,inventoryThresholdGraph as Je,nodeTestContextSchema as Ye,recordConditionLabels as Xe,recordConditionOperators as Ze,recordOperationLabels as Qe,recordOperations as $e,recordTriggerChecks as et,timingTotals as tt,triggerCheckLabel as nt,triggerCheckValue as rt,triggerDecisionReason as it,workflowChangeKey as at,workflowInputSchema as ot,workflowReferenceSchema as st}from"@fudanda/shared/automation";import{automationContract as Q}from"@fudanda/react-core/lib/native-operations";import{api as ct,contractKey as lt,useApiMutation as $,useApiQuery as ut}from"@fudanda/react-core/lib/contract-query";import{formatDateTime as dt}from"@fudanda/react-core/utils/date";import{useListDeepLink as ft}from"@fudanda/react-core/hooks/useListDeepLink";import{usePagination as pt}from"@fudanda/react-core/hooks/usePagination";import{AutomationClientContext as mt,invalidateCredentials as ht,invalidateRunLists as gt,invalidateWorkflowLists as _t,invalidateWorkflowManagement as vt,statuses as yt,useAutomationClient as bt,useCatalog as xt,useCredentialList as St,useCredentials as Ct,useRunList as wt,useWorkflowList as Tt}from"@fudanda/react-core/automation/hooks";import{useWorkflowDraft as Et,useWorkflowRunActions as Dt}from"@fudanda/react-core/automation/editor-controllers";import{useWorkflowEditorState as Ot}from"@fudanda/react-core/automation/editor-state";import{useQueryClient as kt}from"@tanstack/react-query";import{ApiAutomationWorkflowTriggerSchema as At}from"@fudanda/shared/api/automation";import{AdminNavigationGuardContext as jt}from"@fudanda/react-core/admin/navigation-context";import{resultPreview as Mt,schemaToTree as Nt,testInputExample as Pt,testInputValidation as Ft,testInputValidation as It,treeIssues as Lt,treeToSchema as Rt,usePanelFocus as zt,workflowNodeTestRuns as Bt,workflowThemeStyle as Vt}from"@fudanda/workflow/core";import{runKey as Ht,useLiveRun as Ut,useRunQuery as Wt}from"@fudanda/react-core/automation/run-stream";import{runDuration as Gt,runRows as Kt,runTimeline as qt}from"@fudanda/react-core/automation/run-view";import{useEventCallback as Jt}from"@fudanda/react-core/hooks/useEventCallback";import{runNodeLabel as Yt}from"@fudanda/react-core/automation/run-labels";import{useDebugFocus as Xt}from"@fudanda/react-core/automation/debug-focus";import{scopedStorageKey as Zt}from"@fudanda/react-core/utils/storage";import{useAllUsers as Qt}from"@fudanda/react-core/hooks/queries/users";import{eventHasActiveRun as $t,eventOutcomeLabel as en}from"@fudanda/react-core/automation/event-run-state";import{parseWorkflowImport as tn}from"@fudanda/react-core/automation/workflow-import-validation";var nn,rn;function an(){return(an=e((()=>{
2
2
  /**
3
3
  * @license lucide-react v1.53.0 - ISC
4
4
  *
5
5
  * This source code is licensed under the ISC license.
6
6
  * See the LICENSE file in the root directory of this source tree.
7
7
  */
8
- h(),an={name:`play`,size:24,node:[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]},an.node,on=g(an)})))()}var cn,ln;function un(){return(un=e((()=>{
8
+ b(),nn={name:`play`,size:24,node:[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]},nn.node,rn=x(nn)})))()}var on,sn;function cn(){return(cn=e((()=>{
9
9
  /**
10
10
  * @license lucide-react v1.53.0 - ISC
11
11
  *
12
12
  * This source code is licensed under the ISC license.
13
13
  * See the LICENSE file in the root directory of this source tree.
14
14
  */
15
- h(),cn={name:`workflow`,size:24,node:[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`,key:`by2w9f`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`,key:`xkn7yn`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`,key:`1cgmvn`}]]},cn.node,ln=g(cn)})))()}function dn(){let e=()=>document.body.getAttribute(`theme-mode`)===`dark`?`dark`:`light`,[t,n]=q(e);return W(()=>{let t=new MutationObserver(()=>n(e()));return t.observe(document.body,{attributes:!0,attributeFilter:[`theme-mode`]}),()=>t.disconnect()},[]),t}function fn(){let e=getComputedStyle(document.body);return Object.fromEntries(Object.entries(mn).map(([t,n])=>[t,e.getPropertyValue(n).trim()]).filter(([,e])=>e))}function pn(){let[e,t]=q(fn);return W(()=>{let e=()=>t(e=>{let t=fn();return JSON.stringify(e)===JSON.stringify(t)?e:t}),n=new MutationObserver(e),r={attributes:!0,attributeFilter:[`style`,`class`,`theme-mode`]};return n.observe(document.body,r),n.observe(document.documentElement,r),e(),()=>n.disconnect()},[]),e}var mn;function hn(){return(hn=e((()=>{mn={primary:`--arc-antd-color-primary`,primaryHover:`--arc-antd-color-primary-hover`,primaryActive:`--arc-antd-color-primary-active`,primaryLight:`--arc-antd-color-primary-light-default`,primaryLightHover:`--arc-antd-color-primary-light-hover`,primaryLightActive:`--arc-antd-color-primary-light-active`,background:`--arc-antd-color-bg-0`,surface:`--arc-antd-color-bg-1`,text:`--arc-antd-color-text-0`,muted:`--arc-antd-color-text-2`,border:`--arc-antd-color-border`,fill:`--arc-antd-color-fill-0`}})))()}function gn({client:e,target:t,onClose:n}){let r=dn(),i=pn(),a=pt(Q.version,{params:{id:t?.id??``,version:t?.version??1}},{enabled:!!t,requestOptions:{client:e}}),o=wt(!!t),s=a.error??o.error;return/* @__PURE__ */ X(u,{className:`arc-workflow-snapshot`,title:`原发布快照 · #${t?.id??``} v${t?.version??``}`,visible:!!t,onCancel:n,width:`min(1100px, 100vw)`,children:[/* @__PURE__ */ Y(`p`,{children:`只读展示此发布版本。后续草稿修改和重新发布不会改变它。`}),s&&/* @__PURE__ */ Y(M,{type:`danger`,closeIcon:null,description:/* @__PURE__ */ X(J,{children:[s.message,/* @__PURE__ */ Y(A,{onClick:()=>{a.refetch(),o.refetch()},children:`重试`})]})}),/* @__PURE__ */ Y(`div`,{style:{height:`calc(100vh - 160px)`,minHeight:300},children:a.data&&o.data?/* @__PURE__ */ Y(Ce,{fallback:/* @__PURE__ */ Y(N,{}),children:/* @__PURE__ */ Y(_n,{value:a.data.graph,catalog:o.data.nodes,models:o.data.models,readOnly:!0,theme:r,themeColors:i,height:`100%`},`${t?.id}:${t?.version}`)}):!s&&t?/* @__PURE__ */ Y(N,{}):null})]})}var _n;function vn(){return(vn=e((()=>{P(),hn(),t(),_n=we(async()=>{let e=await n(()=>import(`@fudanda/workflow`),[],import.meta.url);return await n(()=>import(`@fudanda/workflow/styles.css`),[],import.meta.url),{default:e.ArcBaseWorkflowDesigner}})})))()}function yn(e){return/* @__PURE__ */ Y(_t.Provider,{value:e.client,children:/* @__PURE__ */ Y(bn,{})})}function bn(){let e=Be(),t=Ct(),[n,r]=q(),a=le({op:Q.runSummaries,useList:Dt,table:{empty:`暂无符合条件的工作流运行记录`}});ht([`workflowId`,`status`],e=>{let t=ut.safeParse(e.workflowId),n=Ue.find(t=>t===e.status);a.applySearch({...a.submittedParams,...t.success?{workflowId:t.data}:{},...n?{status:n}:{}})});let o=[{title:`运行 ID`,dataIndex:`id`,minWidth:250,render:fe},{title:`工作流`,width:220,render:(t,n)=>/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(A,{className:`arc-run-workflow-link`,theme:`borderless`,title:n.workflowName,onClick:()=>e(`/extensions/automation/designer?id=`+n.workflowUuid),children:n.workflowName}),n.workflowArchived&&/* @__PURE__ */ Y(j,{children:`已归档`})]})},{title:`版本 / 类型`,width:150,render:(e,t)=>/* @__PURE__ */ X(`div`,{children:[t.version===0?/* @__PURE__ */ Y(`span`,{children:`草稿测试`}):/* @__PURE__ */ X(A,{theme:`borderless`,onClick:()=>r({id:t.workflowUuid,version:t.version}),children:[`v`,t.version,` · 原发布快照`]}),/* @__PURE__ */ Y(`small`,{className:`arc-run-type`,children:t.nodeTest?`单节点测试`:t.debug?`断点调试`:`完整流程`})]})},{title:`状态`,dataIndex:`status`,width:120,render:e=>/* @__PURE__ */ Y(j,{color:e===`failed`?`red`:e===`succeeded`?`green`:`violet`,children:St[e]??e})},pe(`创建时间`,`createdAt`),ce({width:130,actions:t=>[{key:`inspect`,label:`查看`,onClick:()=>e(`/extensions/automation/inspect?runId=`+encodeURIComponent(t.id))}]})];return/* @__PURE__ */ X(`div`,{className:`page-container arc-automation-list`,children:[/* @__PURE__ */ Y(`div`,{className:`arc-automation-page-heading`,children:/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(c.Title,{heading:4,children:`运行记录`}),/* @__PURE__ */ Y(c.Text,{type:`tertiary`,children:`发布版本链接打开原始快照;草稿测试的执行定义在运行检查中查看。`})]})}),a.listQuery.error&&/* @__PURE__ */ Y(M,{type:`danger`,closeIcon:null,description:a.listQuery.error.message}),/* @__PURE__ */ Y(m,{searchConfig:d({page:a,filters:[`workflowId`,`status`,[`startTime`,`endTime`]],overrides:{workflowId:e=>/* @__PURE__ */ Y(i,{"aria-label":`筛选工作流 UUID`,placeholder:`工作流 UUID`,showClear:!0,value:String(e.bind(`workflowId`).value??``),onChange:t=>e.bind(`workflowId`).onChange(t||void 0)})}}),columns:o,...a.tableProps}),/* @__PURE__ */ Y(gn,{client:t,target:n,onClose:()=>r(void 0)})]})}function xn(e){return/* @__PURE__ */ Y(_t.Provider,{value:e.client,children:/* @__PURE__ */ Y(Sn,{})})}function Sn(){let e=Ct(),[t,n]=q(),r=le({op:Q.credentialList,useList:Tt,table:{empty:`没有符合条件的连接凭据`}}),i=$(Q.credentialCreate,{requestOptions:{client:e},invalidate:vt}),a=he({entityName:`连接凭据`,save:{isPending:i.isPending,mutateAsync:({values:e})=>i.mutateAsync({body:{...e,name:e.name.trim()}})},defaults:{name:``,kind:`hmac`,secret:``}}),o=$(Q.credentialRemove,{requestOptions:{client:e},invalidate:vt,onError:e=>l.error(e.message)}),s=[{title:`名称`,dataIndex:`name`,minWidth:250},{title:`类型`,dataIndex:`kind`,width:180,render:e=>/* @__PURE__ */ Y(j,{color:`violet`,children:e===`hmac`?`Webhook HMAC`:`HTTP Bearer`})},{title:`状态`,width:180,render:()=>/* @__PURE__ */ Y(j,{color:`green`,children:`秘密已加密配置`})},ce({width:180,actions:e=>[{key:`references`,label:`查看引用`,onClick:()=>n(e)},{key:`delete`,label:`删除`,type:`danger`,disabled:o.isPending,onClick:()=>{oe({title:`删除凭据「${e.name}」?`,content:`包括归档流程在内,仍被草稿或发布版本引用的凭据不能删除。请先查看引用。`,onOk:()=>o.mutateAsync({params:{id:e.id}})})}}]})];return/* @__PURE__ */ X(`div`,{className:`page-container arc-automation-list`,children:[/* @__PURE__ */ Y(`div`,{className:`arc-automation-page-heading`,children:/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(c.Title,{heading:4,children:`连接凭据`}),/* @__PURE__ */ Y(c.Text,{type:`tertiary`,children:`管理 HTTP 认证与 Webhook 签名,秘密仅写入、不回显。`})]})}),r.listQuery.error&&/* @__PURE__ */ Y(M,{type:`danger`,closeIcon:null,description:r.listQuery.error.message}),/* @__PURE__ */ Y(m,{searchConfig:d({page:r,filters:[`keyword`,`kind`],create:/* @__PURE__ */ Y(A,{theme:`solid`,onClick:a.openCreate,children:`新增凭据`})}),columns:s,...r.tableProps}),/* @__PURE__ */ X(H,{modal:a,width:480,header:/* @__PURE__ */ Y(`p`,{children:`凭据通过宿主密钥加密保存,创建后无法查看原始秘密。`}),children:[/* @__PURE__ */ Y(O.Input,{field:`name`,label:`凭据名称`,maxLength:120,rules:[{required:!0,message:`请输入名称`},{validator:(e,t)=>typeof t==`string`&&!!t.trim(),message:`名称不能为空白`}]}),/* @__PURE__ */ Y(O.Select,{field:`kind`,label:`凭据类型`,style:{width:`100%`},optionList:[{value:`hmac`,label:`Webhook HMAC`},{value:`bearer`,label:`HTTP Bearer`}]}),/* @__PURE__ */ Y(O.Input,{field:`secret`,label:`凭据秘密`,mode:`password`,maxLength:4096,rules:[{required:!0,message:`请输入秘密`},{min:16,message:`至少需要 16 个字符`}]})]}),/* @__PURE__ */ Y(Cn,{credential:t,onClose:()=>n(void 0)})]})}function Cn({credential:e,onClose:t}){let n=Ct(),r=Be(),i=gt({pageSize:20,resetKey:e?.id}),[a,o]=q(),s=pt(Q.credentialReferences,{params:{id:e?.id??0},query:{page:i.page,pageSize:i.pageSize}},{enabled:!!e,requestOptions:{client:n}});return/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(u,{className:`arc-credential-references`,title:`凭据引用:${e?.name??``}`,visible:!!e,onCancel:t,width:760,children:/* @__PURE__ */ X(`div`,{className:`arc-automation-settings`,children:[/* @__PURE__ */ Y(`p`,{children:`引用包含草稿、所有发布版本及归档流程。历史版本不可改写,因此被历史引用的凭据不能删除。`}),s.error&&/* @__PURE__ */ Y(M,{type:`danger`,closeIcon:null,description:s.error.message}),/* @__PURE__ */ Y(m,{columns:[{title:`工作流`,dataIndex:`workflowName`,minWidth:200,render:(e,t)=>/* @__PURE__ */ X(`span`,{children:[e,` `,t.archived&&/* @__PURE__ */ Y(j,{children:`已归档`})]})},{title:`引用节点`,dataIndex:`nodePath`,width:200},{title:`版本`,width:160,render:(e,n)=>/* @__PURE__ */ Y(A,{theme:`borderless`,onClick:()=>{n.version?o({id:n.workflowUuid,version:n.version}):(t(),r(`/extensions/automation/designer?id=${n.workflowUuid}`))},children:n.version?`发布快照 v${n.version}`:`当前草稿`})}],dataSource:s.data?.list??[],loading:s.isFetching,rowKey:e=>`${e?.workflowId}:${e?.version}:${e?.nodePath}`,onRefresh:()=>void s.refetch(),empty:`此凭据没有流程引用`,pagination:{currentPage:i.page,pageSize:i.pageSize,total:s.data?.total??0,onPageChange:i.setPage}})]})}),/* @__PURE__ */ Y(gn,{client:n,target:a,onClose:()=>o(void 0)})]})}function wn(){return(wn=e((()=>{P(),z(),de(),ge(),_e(),f(),p(),se(),F(),vn()})))()}function Tn(e){return kt({...e,feedback:l})}function En(e){return At({...e,feedback:l})}function Dn(){return(Dn=e((()=>{P()})))()}function On(e){let{navigator:t}=Ee(Re),n=Ee(Nt),r=K(e);r.current=e,ze(e=>{r.current&&(e.preventDefault(),e.returnValue=``)}),W(()=>{let e=!0,i=!1,a=!1,o=!1,s=Number(globalThis.history.state?.idx??0),c=async()=>{if(i)return!1;i=!0;let t=await ae({title:`离开未保存的工作流?`,content:`当前修改尚未保存。取消后可以继续编辑并保存。`,okText:`放弃修改并离开`});return i=!1,e&&t},l=t.push,u=t.replace,d=(...e)=>{r.current?c().then(t=>{t&&l(...e)}):(l(...e),s=Number(globalThis.history.state?.idx??s))},f=(...e)=>{r.current?c().then(t=>{t&&u(...e)}):u(...e)};t.push=d,t.replace=f;let p=e=>{let t=Number(e.state?.idx??s),n=t-s;o?(o=!1,e.stopImmediatePropagation()):a||!r.current||!n?(a=!1,s=t):(e.stopImmediatePropagation(),o=!0,globalThis.history.go(-n),c().then(e=>{e&&(a=!0,globalThis.history.go(n))}))};return n&&(n.onPop=p),()=>{e=!1,n?.onPop===p&&(n.onPop=void 0),t.push===d&&(t.push=l),t.replace===f&&(t.replace=u)}},[t,n])}function kn(){return(kn=e((()=>{F()})))()}function An(e,t=[]){let n=Array.isArray(e.required)?e.required:[];return Object.entries(Pn(e.properties)?e.properties:{}).flatMap(([e,r])=>{let i=Pn(r)?r:{},a=[...t,e];return i.type===`object`&&Pn(i.properties)&&Object.keys(i.properties).length?An(i,a):[{path:a,schema:i,required:n.includes(e)}]})}function jn(e,t){let n=e;for(let e of t){if(!Pn(n)||!Object.hasOwn(n,e))return;n=n[e]}return n}function Mn(e,t,n){let[r,...i]=t,a={...e};return i.length?a[r]=Mn(Pn(e[r])?e[r]:{},i,n):n===void 0?delete a[r]:Object.defineProperty(a,r,{value:n,enumerable:!0,configurable:!0,writable:!0}),a}function Nn({value:e,schema:t,onChange:n,onValidityChange:c,description:l,visibleFields:u}){let d=G(),f=De(()=>An(t).filter(e=>!u||u.includes(e.path[0])),[t,u]),[p,m]=q(!f.length),[h,g]=q({}),_=De(()=>Lt(e,t),[e,t]),v=Object.entries(h).filter(([e,t])=>{try{let n=JSON.parse(t);return f.find(t=>t.path.join(`.`)===e)?.schema.type===`array`&&!Array.isArray(n)}catch{return!0}}),y=!_.errors.length&&!v.length;W(()=>{c?.(y)},[y,c]);let b=(e,t)=>{_.input&&n(JSON.stringify(Mn(_.input,e,t),null,2))};return/* @__PURE__ */ X(`div`,{className:`coze-test-input`,children:[/* @__PURE__ */ X(`div`,{className:`coze-test-input-header`,children:[/* @__PURE__ */ Y(`strong`,{children:`输入`}),/* @__PURE__ */ X(`label`,{children:[`JSON `,/* @__PURE__ */ Y(s,{"aria-label":`JSON 模式`,size:`small`,checked:p||!f.length,disabled:!f.length||!!v.length,onChange:e=>{m(e),e&&g({})}})]})]}),l&&/* @__PURE__ */ Y(`p`,{children:l}),p||!f.length||!_.input?/* @__PURE__ */ Y(r,{"aria-label":`测试输入`,rows:8,value:e,onChange:n}):/* @__PURE__ */ Y(`div`,{className:`coze-test-input-fields`,children:f.map(({path:e,schema:t,required:n})=>{let s=e.join(`.`),c=jn(_.input,e),l=String(t.type??`unknown`),u=`${d}-test-input-${encodeURIComponent(s)}`,f=_.errors.filter(e=>e.path===s||e.path.startsWith(s+`.`));return/* @__PURE__ */ X(`div`,{"data-input-field":s,children:[/* @__PURE__ */ X(`label`,{children:[/* @__PURE__ */ X(`span`,{children:[/* @__PURE__ */ Y(`span`,{id:u,children:s}),n&&/* @__PURE__ */ Y(`b`,{"aria-label":`必填`,children:` *`})]}),/* @__PURE__ */ Y(`small`,{children:l})]}),Array.isArray(t.enum)?/* @__PURE__ */ Y(a,{"aria-labelledby":u,value:t.enum.findIndex(e=>JSON.stringify(e)===JSON.stringify(c))<0?void 0:String(t.enum.findIndex(e=>JSON.stringify(e)===JSON.stringify(c))),showClear:!0,optionList:t.enum.map((e,t)=>({label:String(e),value:String(t)})),onChange:n=>b(e,n===void 0?void 0:t.enum[Number(n)])}):l===`boolean`?/* @__PURE__ */ Y(a,{"aria-labelledby":u,value:typeof c==`boolean`?String(c):void 0,showClear:!0,optionList:[{value:`true`,label:`true`},{value:`false`,label:`false`}],onChange:t=>b(e,t===void 0?void 0:t===`true`)}):[`integer`,`number`].includes(l)?/* @__PURE__ */ Y(o,{"aria-labelledby":u,value:typeof c==`number`?c:void 0,precision:l===`integer`?0:void 0,placeholder:`请输入数值`,onChange:t=>b(e,typeof t==`number`?t:void 0)}):l===`string`?/* @__PURE__ */ Y(i,{"aria-labelledby":u,value:typeof c==`string`?c:``,placeholder:String(t.description??`请输入`),showClear:!0,onChange:t=>b(e,t)}):/* @__PURE__ */ Y(r,{"aria-labelledby":u,rows:3,placeholder:`输入 JSON`,value:h[s]??(c===void 0?``:JSON.stringify(c,null,2)),onChange:t=>{g(e=>({...e,[s]:t}));try{b(e,JSON.parse(t))}catch{}}}),/* @__PURE__ */ Y(`small`,{children:String(t.description??``)}),f.map((e,t)=>/* @__PURE__ */ Y(`div`,{className:`arc-wf-field-error`,role:`alert`,children:e.message},t)),v.some(([e])=>e===s)&&/* @__PURE__ */ X(`div`,{className:`arc-wf-field-error`,role:`alert`,children:[`请输入合法的 `,l===`array`?`JSON 数组`:`JSON`]})]},s)})}),_.errors.filter(e=>!e.path||p||!f.length||!f.some(t=>e.path===t.path.join(`.`)||e.path.startsWith(t.path.join(`.`)+`.`))).map((e,t)=>/* @__PURE__ */ X(`div`,{className:`arc-wf-field-error`,role:`alert`,children:[e.path&&`${e.path}:`,e.message]},t))]})}var Pn;function Fn(){return(Fn=e((()=>{P(),Pn=e=>typeof e==`object`&&!!e&&!Array.isArray(e)})))()}function In({title:e,header:t,tabs:n,footer:r,children:i,onClose:a,className:o=``,focusKey:s,onFocusRestore:c}){let[l,u]=q(360),d=K(null);Vt(d,s,c);let f=e=>Math.min(546,Math.max(360,e));return/* @__PURE__ */ X(`aside`,{ref:d,"aria-label":e??`节点参数与结果`,className:`arc-antd-side-panel ${o}`,style:{"--coze-panel-width":`${l}px`},onKeyDown:e=>{e.key===`Escape`&&!e.defaultPrevented&&!e.nativeEvent.isComposing&&!e.target.closest(`.ant-popover,.ant-dropdown,.ant-select-dropdown,.cm-tooltip`)&&(e.preventDefault(),e.stopPropagation(),a?.())},children:[/* @__PURE__ */ Y(`div`,{className:`coze-panel-resize`,role:`separator`,tabIndex:0,"aria-label":`调整参数面板宽度`,"aria-orientation":`vertical`,"aria-valuemin":360,"aria-valuemax":546,"aria-valuenow":l,onKeyDown:e=>{(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&(e.preventDefault(),u(f(l+(e.key===`ArrowLeft`?16:-16))))},onPointerDown:e=>{e.preventDefault(),e.stopPropagation(),e.currentTarget.setPointerCapture(e.pointerId)},onPointerMove:e=>{if(e.currentTarget.hasPointerCapture(e.pointerId)){let t=e.currentTarget.parentElement;u(f(t.getBoundingClientRect().right-e.clientX))}},onPointerUp:e=>{e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId)}}),t??/* @__PURE__ */ X(`div`,{className:`coze-side-panel-header`,children:[/* @__PURE__ */ Y(`strong`,{children:e}),/* @__PURE__ */ Y(A,{theme:`borderless`,"aria-label":`关闭测试面板`,onClick:a,children:`×`})]}),n,/* @__PURE__ */ Y(`div`,{className:`coze-inspector-scroll`,children:i}),r&&/* @__PURE__ */ Y(`div`,{className:`coze-side-panel-footer`,children:r})]})}function Ln(){return(Ln=e((()=>{P()})))()}function Rn({schema:e,readOnly:t,onChange:n,onValidation:r}){let[i,a]=q(()=>Ft(e)),o=K(JSON.stringify(e));W(()=>{let t=JSON.stringify(e);t!==o.current&&(o.current=t,a(Ft(e)))},[e]);let s=zt(i),c=JSON.stringify(s),l=K(r);l.current=r,W(()=>{l.current?.(JSON.parse(c))},[c]);let u=t||!n,d=t=>{if(a(t),!zt(t).length){let r=Bt(t,e);o.current=JSON.stringify(r),n?.(r)}},f=(e,t,n=i)=>n.map(n=>n.key===e?{...n,...t}:{...n,children:n.children?f(e,t,n.children):void 0}),p=(e,t=i)=>t.filter(t=>t.key!==e).map(t=>({...t,children:t.children?p(e,t.children):void 0})),m=e=>{let t=e?.children??i,n=`parameter`,r=1;for(;t.some(e=>e.name===n);)n=`parameter`+r++;let a=Ft({properties:{[n]:{type:`string`}}})[0];a.key=a.field=crypto.randomUUID(),d(e?f(e.key,{children:[...t,a]}):[...i,a])};return/* @__PURE__ */ X(`div`,{className:`arc-antd-input-fields`,children:[/* @__PURE__ */ Y(Ne,{size:`small`,pagination:!1,rowKey:`key`,dataSource:i,scroll:{x:680},columns:[{title:`名称`,key:`name`,width:170,render:(e,t)=>/* @__PURE__ */ Y(Z,{"aria-label":`参数名称`,value:t.name,disabled:u||t.readonly,onChange:e=>d(f(t.key,{name:e.target.value}))})},{title:`类型`,key:`type`,width:145,render:(e,t)=>/* @__PURE__ */ Y(je,{"aria-label":`参数类型`,style:{width:`100%`},value:t.type,disabled:u||t.readonly,options:zn.map(e=>({value:e,label:e})),onChange:e=>d(f(t.key,{type:e,children:e===`object`||e===`array-object`?t.children??[]:void 0,defaultValue:void 0}))})},{title:`必填`,key:`required`,width:60,render:(e,t)=>/* @__PURE__ */ Y(ke,{"aria-label":t.name+`必填`,checked:t.required,disabled:u,onChange:e=>d(f(t.key,{required:e.target.checked}))})},{title:`描述`,key:`description`,width:160,render:(e,t)=>/* @__PURE__ */ Y(Z,{"aria-label":t.name+`描述`,value:t.description,disabled:u||t.readonly,onChange:e=>d(f(t.key,{description:e.target.value}))})},{title:`默认值`,key:`default`,width:160,render:(e,t)=>[`number`,`integer`].includes(t.type)?/* @__PURE__ */ Y(Ae,{"aria-label":t.name+`默认值`,value:typeof t.defaultValue==`number`?t.defaultValue:void 0,precision:t.type===`integer`?0:void 0,disabled:u||t.readonly,onChange:e=>d(f(t.key,{defaultValue:e??void 0}))}):t.type===`boolean`?/* @__PURE__ */ Y(je,{"aria-label":t.name+`默认值`,allowClear:!0,value:typeof t.defaultValue==`boolean`?String(t.defaultValue):void 0,disabled:u||t.readonly,options:[{value:`true`,label:`true`},{value:`false`,label:`false`}],onChange:e=>d(f(t.key,{defaultValue:e===void 0?void 0:e===`true`}))}):/* @__PURE__ */ Y(Z,{"aria-label":t.name+`默认值`,value:t.defaultValue===null?`null`:String(t.defaultValue??``),disabled:u||t.readonly,onChange:e=>d(f(t.key,{defaultValue:e.target.value||void 0}))})},{title:`操作`,key:`actions`,width:95,render:(e,t)=>/* @__PURE__ */ X(Me,{children:[/* @__PURE__ */ Y(Oe,{type:`text`,danger:!0,"aria-label":`删除`+t.name,icon:/* @__PURE__ */ Y(ie,{size:14}),disabled:u,onClick:()=>d(p(t.key))}),[`object`,`array-object`].includes(t.type)&&/* @__PURE__ */ Y(Oe,{type:`text`,"aria-label":`添加`+t.name+`子参数`,icon:/* @__PURE__ */ Y(ne,{size:14}),disabled:u||t.readonly,onClick:()=>m(t)})]})}]}),/* @__PURE__ */ Y(Oe,{icon:/* @__PURE__ */ Y(ne,{size:14}),disabled:u,onClick:()=>m(),children:`添加参数`}),s.map(e=>/* @__PURE__ */ X(`p`,{role:`alert`,children:[e.path,`:`,e.message]},e.path))]})}var zn;function Bn(){return(Bn=e((()=>{te(),re(),zn=[`string`,`integer`,`number`,`boolean`,`object`,`array-string`,`array-integer`,`array-number`,`array-boolean`,`array-object`]})))()}function Vn({info:e,actions:t}){return/* @__PURE__ */ X(`header`,{className:`coze-workflow-header`,children:[/* @__PURE__ */ Y(`div`,{className:`coze-workflow-header-left`,children:e}),/* @__PURE__ */ Y(`div`,{className:`coze-workflow-header-right`,children:t})]})}function Hn({name:e}){let t=Gn[e];return/* @__PURE__ */ Y(t,{size:16,"aria-hidden":!0})}function Un({disabled:e,onClick:t}){return/* @__PURE__ */ Y(Oe,{type:`primary`,"aria-label":`测试运行`,"data-testid":`workflow.detail.toolbar.test-run`,className:`coze-toolbar-test-run`,icon:/* @__PURE__ */ Y(on,{size:16}),disabled:e,onClick:t,children:`试运行`})}function Wn({header:e,children:t,onClose:n}){let r=K(null);Vt(r);let[i,a]=q(260),o=e=>Math.max(120,Math.min(420,e));return/* @__PURE__ */ X(`div`,{ref:r,className:`arc-antd-execution-panel-boundary`,style:{height:i},children:[/* @__PURE__ */ Y(`div`,{role:`separator`,"aria-label":`调整运行记录高度`,"aria-orientation":`horizontal`,tabIndex:0,"aria-valuemin":120,"aria-valuemax":420,"aria-valuenow":i,className:`arc-antd-panel-resize`,onKeyDown:e=>{(e.key===`ArrowUp`||e.key===`ArrowDown`)&&(e.preventDefault(),a(o(i+(e.key===`ArrowUp`?16:-16))))},onPointerDown:e=>{e.preventDefault(),e.currentTarget.setPointerCapture(e.pointerId)},onPointerMove:e=>{e.currentTarget.hasPointerCapture(e.pointerId)&&r.current&&a(o(r.current.getBoundingClientRect().bottom-e.clientY))},onPointerUp:e=>e.currentTarget.releasePointerCapture(e.pointerId)}),/* @__PURE__ */ X(`section`,{className:`arc-antd-execution-panel`,"aria-label":`运行记录`,children:[/* @__PURE__ */ X(`div`,{className:`arc-antd-execution-header`,children:[e,/* @__PURE__ */ Y(Oe,{type:`text`,"aria-label":`关闭运行记录`,onClick:n,children:`×`})]}),/* @__PURE__ */ Y(`div`,{className:`arc-antd-execution-body`,children:t})]})]})}var Gn;function Kn(){return(Kn=e((()=>{sn(),_(),x(),re(),C(),te(),D(),un(),T(),Fn(),Ln(),Bn(),Gn={layout:E,fit:ee,copy:S,remove:ie,more:w,add:ne,back:v,play:on,workflow:ln}})))()}function qn({uuid:e,full:t=!1}){return/* @__PURE__ */ X(`span`,{className:`arc-workflow-identity`,title:e,children:[/* @__PURE__ */ Y(`code`,{children:t?e:`${e.slice(0,8)}…${e.slice(-8)}`}),/* @__PURE__ */ Y(A,{size:`small`,theme:`borderless`,"aria-label":`复制工作流 ID`,title:`复制工作流 UUID`,icon:/* @__PURE__ */ Y(S,{size:12}),onClick:t=>{t.stopPropagation(),xe(e)}})]})}function Jn(){return(Jn=e((()=>{P(),x(),Se()})))()}function Yn(e){let t;try{if(t=Zn&&(self.URL||self.webkitURL).createObjectURL(Zn),!t)throw``;let n=new Worker(t,{name:e?.name});return n.addEventListener(`error`,()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch{return new Worker(`data:text/javascript;charset=utf-8,`+encodeURIComponent(Xn),{name:e?.name})}}var Xn,Zn;function Qn(){return(Qn=e((()=>{Xn="(function(){function e(t){return Array.isArray(t)?`[`+t.map(e).join(`,`)+`]`:t&&typeof t==`object`?`{`+Object.entries(t).sort(([e],[t])=>e.localeCompare(t)).map(([t,n])=>JSON.stringify(t)+`:`+e(n)).join(`,`)+`}`:JSON.stringify(t)??`undefined`}function t(e){let n=e.config.body;return![`core.loop`,`core.batch`].includes(e.type)||!Array.isArray(n?.nodes)||!Array.isArray(n?.edges)?e.config:{...e.config,body:{schemaVersion:n.schemaVersion,nodes:[...n.nodes].sort((e,t)=>e.id.localeCompare(t.id)).map(({position:e,...n})=>({...n,config:t(n)})),edges:[...n.edges].sort((e,t)=>e.id.localeCompare(t.id))}}}function n(n,r){let i=[],a=new Map(n.nodes.map(e=>[e.id,e])),o=new Map(r.nodes.map(e=>[e.id,e]));for(let s of[.../* @__PURE__ */ new Set([...n.nodes.map(e=>e.id),...r.nodes.map(e=>e.id)])].sort()){let n=a.get(s),r=o.get(s);if(!n||!r){i.push({kind:n?`removed`:`added`,id:s,fields:[]});continue}let c=[`type`,`version`,`label`,`description`,`config`,`inputs`,`execution`].filter(i=>e(i===`config`?t(n):n[i])!==e(i===`config`?t(r):r[i]));c.length&&i.push({kind:`changed`,id:s,fields:c})}return e([...n.edges].sort((e,t)=>e.id.localeCompare(t.id)))!==e([...r.edges].sort((e,t)=>e.id.localeCompare(t.id)))&&i.push({kind:`changed`,id:`edges`,fields:[`edges`]}),n.schemaVersion!==r.schemaVersion&&i.push({kind:`changed`,id:`schemaVersion`,fields:[`schemaVersion`]}),i}function r(t,r){let i=n(t.graph,r.graph);t.actorId!==r.actorId&&i.push({kind:`changed`,id:`actorId`,fields:[`actorId`]});let a=[`kind`,`source`,`cron`,`timezone`,`inputSchema`].filter(n=>e(t.trigger[n])!==e(r.trigger[n]));return a.length&&i.push({kind:`changed`,id:`trigger`,fields:a}),i}function i(e){let{position:t,...n}=e,r=e.config.body;return{...n,config:r&&[`core.loop`,`core.batch`].includes(e.type)?{...e.config,body:{schemaVersion:r.schemaVersion,nodes:Object.fromEntries(r.nodes.map(e=>[e.id,i(e)])),edges:Object.fromEntries(r.edges.map(e=>[e.id,e]))}}:e.config}}function a(e){return`${e.fields.some(e=>[`actorId`,`kind`,`source`,`cron`,`timezone`,`inputSchema`,`edges`,`schemaVersion`].includes(e))?`metadata`:`node`}:${e.id}`}function o(e,t,n=`node`){if(n===`metadata`){if(t===`actorId`)return e.actorId;if(t===`trigger`)return e.trigger;if(t===`schemaVersion`)return e.graph.schemaVersion;if(t===`edges`)return Object.fromEntries(e.graph.edges.map(e=>[e.id,e]))}let r=e.graph.nodes.find(e=>e.id===t);return r?i(r):void 0}function s(t,n,r=200){let i=[],a=0,o=(t,n,s)=>{if(t===n)return;if(Array.isArray(t)&&Array.isArray(n)){for(let e=0;e<Math.max(t.length,n.length);e++)o(t[e],n[e],`${s}[${e}]`);return}let c=typeof t==`object`&&t&&!Array.isArray(t)?t:void 0,l=typeof n==`object`&&n&&!Array.isArray(n)?n:void 0;if(c&&l)for(let e of[.../* @__PURE__ */ new Set([...Object.keys(c),...Object.keys(l)])].sort())o(c[e],l[e],s?s+`.`+e:e);else e(t)!==e(n)&&(a++,i.length<r&&i.push({path:s||`$value`,kind:t===void 0?`added`:n===void 0?`removed`:`changed`,before:t,after:n}))};return o(t,n,``),{fields:i,total:a}}let c,l,u=/* @__PURE__ */ new Map;function d(e){let t=JSON.stringify(e)??`(不存在)`;return t.length>400?t.slice(0,400)+`…`:t}onmessage=e=>{let t=e.data;try{let e;if(t.kind===`compare`){c=t.before,l=t.after;let n=r(c,l);u=new Map(n.map(e=>[a(e),e])),e=n}else{let n=u.get(t.nodeId);if(!n)throw Error();let r=a(n).startsWith(`metadata:`)?`metadata`:`node`,i=o(c,n.id,r),f=o(l,n.id,r),p=JSON.stringify({before:i??null,after:f??null},null,2);if(t.kind===`download`)e=p;else{let{fields:t,total:n}=s(i,f);e={fields:t.map(e=>({...e,before:d(e.before),after:d(e.after)})),total:n,preview:p.slice(0,16e3),truncated:p.length>16e3}}}postMessage({id:t.id,data:e})}catch{postMessage({id:t.id,error:`版本内容处理失败,请重试`})}}})();",Zn=typeof self<`u`&&self.Blob&&new Blob([`(self.URL || self.webkitURL).revokeObjectURL(self.location.href);`,Xn],{type:`text/javascript;charset=utf-8`})})))()}function $n(e,t,n=!0){let[r,i]=q(0),[a,o]=q();W(()=>{if(!n||!e||!t)return;let r,i=!1;try{r=new er,o({before:e,after:t,session:r}),r.request({kind:`compare`,before:e,after:t}).then(n=>{i||o({before:e,after:t,session:r,changes:n})}).catch(n=>{i||o({before:e,after:t,session:r,error:n.message})})}catch{o({before:e,after:t,error:`浏览器无法处理版本内容,请重试`})}return()=>{i=!0,r?.close()}},[e,t,n,r]);let s=n&&a?.before===e&&a?.after===t?a:void 0;return{session:s?.session,changes:s?.changes,error:s?.error,loading:n&&!!e&&!!t&&!s?.changes&&!s?.error,retry:()=>i(e=>e+1)}}var er;function tr(){return(tr=e((()=>{Qn(),er=class{worker;sequence=0;closed=!1;pending=/* @__PURE__ */ new Map;constructor(e=()=>new Yn){this.worker=e(),this.worker.onmessage=e=>{let t=this.pending.get(e.data.id);t&&(this.pending.delete(e.data.id),clearTimeout(t.timer),e.data.error?t.reject(Error(`版本内容处理失败,请重试`)):t.resolve(e.data.data))},this.worker.onerror=()=>this.close(Error(`浏览器无法处理版本内容,请重试`))}request(e){if(this.closed)return Promise.reject(Error(`版本选择已变更`));let t=++this.sequence;return new Promise((n,r)=>{let i=setTimeout(()=>this.close(Error(`版本内容处理超时,请重试`)),6e4);this.pending.set(t,{resolve:e=>n(e),reject:r,timer:i});try{this.worker.postMessage({...e,id:t})}catch{this.close(Error(`版本内容处理失败,请重试`))}})}close(e=Error(`版本选择已变更`)){if(!this.closed){this.closed=!0,this.worker.terminate();for(let{reject:t,timer:n}of this.pending.values())clearTimeout(n),t(e);this.pending.clear()}}}})))()}function nr({session:e,id:t}){let[n,r]=q(!1),[i,a]=q(0),[o,s]=q(),[c,u]=q(``),[d,f]=q(!1);W(()=>{if(!n)return;let r=!1;return s(void 0),u(``),e.request({kind:`details`,nodeId:t}).then(e=>{r||s(e)}).catch(e=>{r||u(e.message)}),()=>{r=!0}},[n,e,t,i]);async function p(){f(!0);try{let n=await e.request({kind:`download`,nodeId:t}),r=URL.createObjectURL(new Blob([n],{type:`application/json`})),i=document.createElement(`a`);i.href=r,i.download=`workflow-change-`+t.replace(/[^\w.-]/g,`_`)+`.json`,i.click(),setTimeout(()=>URL.revokeObjectURL(r),1e3)}catch(e){l.error(e instanceof Error?e.message:`下载失败`)}finally{f(!1)}}return/* @__PURE__ */ X(`details`,{className:`arc-version-change-details`,onToggle:e=>r(e.currentTarget.open),children:[/* @__PURE__ */ Y(`summary`,{children:`查看变更内容`}),n&&/* @__PURE__ */ X(J,{children:[!o&&!c&&/* @__PURE__ */ Y(N,{}),c&&/* @__PURE__ */ X(`p`,{role:`alert`,children:[c,` `,/* @__PURE__ */ Y(A,{onClick:()=>a(e=>e+1),children:`重试`})]}),o&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ X(`div`,{className:`arc-version-fields`,role:`table`,"aria-label":`字段差异`,children:[/* @__PURE__ */ X(`div`,{role:`row`,children:[/* @__PURE__ */ Y(`strong`,{role:`columnheader`,children:`字段路径`}),/* @__PURE__ */ Y(`strong`,{role:`columnheader`,children:`之前`}),/* @__PURE__ */ Y(`strong`,{role:`columnheader`,children:`之后`})]}),o.fields.map(e=>/* @__PURE__ */ X(`div`,{role:`row`,children:[/* @__PURE__ */ Y(`code`,{role:`cell`,children:e.path}),/* @__PURE__ */ Y(`code`,{role:`cell`,children:e.before}),/* @__PURE__ */ Y(`code`,{role:`cell`,children:e.after})]},e.path))]}),o.total>o.fields.length&&/* @__PURE__ */ X(`p`,{children:[`共 `,o.total,` 处字段变化,先展示前 `,o.fields.length,` 处。`]}),/* @__PURE__ */ Y(`pre`,{children:o.preview}),o.truncated&&/* @__PURE__ */ Y(`p`,{children:`JSON 预览显示前 16000 个字符。`}),/* @__PURE__ */ Y(A,{loading:d,onClick:()=>void p(),children:`下载完整变更`})]})]})]})}function rr({workflow:e,client:t,visible:n,dirty:r,onClose:i,onRestored:o}){let s=G(),l=gt({pageSize:20,resetKey:e.id}),[d,f]=q(),[p,m]=q();W(()=>{f(void 0),m(void 0)},[e.id]);let h=pt(Q.versions,{params:{id:e.uuid},query:{page:l.page,pageSize:l.pageSize}},{enabled:n,requestOptions:{client:t}}),g=pt(Q.version,{params:{id:e.uuid,version:d??1}},{enabled:n&&!!d,requestOptions:{client:t}}),_=pt(Q.version,{params:{id:e.uuid,version:p??1}},{enabled:n&&!!p,requestOptions:{client:t}}),v=$(Q.restore,{requestOptions:{client:t},onSuccess:e=>{o(e),i()}}),y=h.data?.list.map(e=>({value:e.version,label:`v`+e.version+` · `+mt(e.createdAt)}))??[],b=p?_.data:e,x=g.isFetching||!!p&&_.isFetching,S=$n(g.data,b,n&&!x&&!!d),[C,w]=q(100);return W(()=>w(100),[d,p,e.revision]),/* @__PURE__ */ Y(u,{title:`发布历史与版本对比`,visible:n,onCancel:i,width:720,className:`arc-workflow-versions`,children:/* @__PURE__ */ X(`div`,{className:`arc-automation-settings`,children:[/* @__PURE__ */ Y(`p`,{children:`恢复只更新草稿,已发布版本和正在运行的流程保持原快照。`}),/* @__PURE__ */ Y(`div`,{className:`arc-version-list`,children:h.data?.list.map(t=>/* @__PURE__ */ X(`button`,{type:`button`,"aria-label":`选择版本 v`+t.version,"aria-pressed":d===t.version,onClick:()=>f(t.version),children:[/* @__PURE__ */ X(`span`,{children:[/* @__PURE__ */ X(`strong`,{children:[`v`,t.version]}),t.version===e.publishedVersion&&/* @__PURE__ */ Y(j,{color:`green`,children:`当前发布`})]}),/* @__PURE__ */ Y(V,{value:t.createdAt})]},t.version))}),/* @__PURE__ */ X(k,{children:[/* @__PURE__ */ Y(A,{disabled:l.page<=1||h.isFetching,onClick:()=>l.setPage(l.page-1),children:`上一页`}),/* @__PURE__ */ X(`span`,{children:[`第 `,l.page,` 页 · `,h.data?.total??0,` 个版本`]}),/* @__PURE__ */ Y(A,{disabled:!h.data||l.page*l.pageSize>=h.data.total||h.isFetching,onClick:()=>l.setPage(l.page+1),children:`下一页`})]}),/* @__PURE__ */ X(`div`,{className:`arc-version-selectors`,children:[/* @__PURE__ */ X(`label`,{id:s+`-history`,children:[`历史版本`,/* @__PURE__ */ Y(a,{"aria-labelledby":s+`-history`,placeholder:`选择历史版本`,value:d,optionList:y,onChange:e=>f(Number(e))})]}),/* @__PURE__ */ X(`label`,{id:s+`-compare`,children:[`对比版本`,/* @__PURE__ */ Y(a,{"aria-labelledby":s+`-compare`,placeholder:`与当前草稿比较`,showClear:!0,value:p,optionList:y,onChange:e=>m(e?Number(e):void 0)})]})]}),(h.isLoading||x||S.loading)&&/* @__PURE__ */ Y(N,{}),[h.error,g.error,_.error,v.error].filter(Boolean).map((e,t)=>/* @__PURE__ */ X(`p`,{role:`alert`,children:[e?.message,` `,/* @__PURE__ */ Y(A,{onClick:()=>{h.refetch(),d&&g.refetch(),p&&_.refetch()},children:`重试`})]},t)),S.error&&/* @__PURE__ */ X(`p`,{role:`alert`,children:[S.error,` `,/* @__PURE__ */ Y(A,{onClick:S.retry,children:`重试比较`})]}),S.changes&&S.session&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ X(c.Title,{heading:6,children:[`v`,d,` → `,p?`v`+p:`当前草稿`]}),S.changes.slice(0,C).map(t=>/* @__PURE__ */ X(`div`,{className:`arc-version-change`,children:[/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(j,{children:t.kind===`added`?`新增`:t.kind===`removed`?`删除`:`修改`}),` `,/* @__PURE__ */ Y(`strong`,{children:t.id}),/* @__PURE__ */ Y(`span`,{children:t.fields.map(e=>(ir[e]??e)+` (`+e+`)`).join(`、`)})]}),/* @__PURE__ */ Y(nr,{session:S.session,id:ct(t)},d+`-`+p+`-`+e.revision+`-`+ct(t))]},ct(t))),S.changes.length>C&&/* @__PURE__ */ X(A,{onClick:()=>w(e=>e+100),children:[`显示更多变化(`,C,` / `,S.changes.length,`)`]}),!S.changes.length&&/* @__PURE__ */ Y(`p`,{children:`执行定义无语义差异(节点、连线、异常策略、触发配置和执行账号)。`})]}),d&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(A,{theme:`solid`,loading:v.isPending,disabled:e.archived||r||!g.data||v.isPending,onClick:()=>I({okText:`恢复草稿`,okButtonProps:{"aria-label":`确认恢复草稿`},title:`将 v`+d+` 恢复到草稿?`,content:`恢复后需要重新发布才会影响后续触发。`,onOk:()=>v.mutateAsync({params:{id:e.uuid},body:{revision:e.revision,version:d}})}),children:`恢复此版本到草稿`}),r&&/* @__PURE__ */ Y(`p`,{children:`请先保存当前编辑内容再恢复。`})]})]})})}var ir;function ar(){return(ar=e((()=>{P(),B(),F(),tr(),ir={type:`节点类型`,version:`节点版本`,label:`名称`,description:`说明`,config:`配置`,inputs:`变量绑定`,execution:`异常策略`,edges:`连线`,schemaVersion:`图版本`,actorId:`执行账号`,kind:`触发方式`,source:`事件来源`,cron:`定时表达式`,timezone:`时区`,inputSchema:`输入结构`}})))()}function or(e){let t=Mt();return De(()=>({list:t=>Ie(e,Q.prompts,{query:t}),save:async(n,r)=>{let i=r?await Ie(e,Q.updatePrompt,{params:{id:r},body:{name:n.name,description:n.description,content:n.content,revision:n.revision}}):await Ie(e,Q.createPrompt,{body:n});return await t.invalidateQueries({queryKey:ft(Q.prompts)}),r&&await t.invalidateQueries({queryKey:ft(Q.promptVersions,{params:{id:r}})}),i},remove:async(n,r)=>{let i=await Ie(e,Q.removePrompt,{params:{id:n},body:{revision:r}});return await t.invalidateQueries({queryKey:ft(Q.prompts)}),t.removeQueries({queryKey:ft(Q.promptVersions,{params:{id:n}})}),i},versions:(t,n={page:1,pageSize:20})=>Ie(e,Q.promptVersions,{params:{id:t},query:n}),optimize:t=>Ie(e,Q.optimizePrompt,{body:t})}),[e,t])}function sr(){return(sr=e((()=>{})))()}function cr(e){return e==null?me:e<1e3?`${e} ms`:e<6e4?`${(e/1e3).toFixed(1)} s`:`${(e/6e4).toFixed(1)} min`}function lr(){return(lr=e((()=>{de()})))()}function ur({value:e}){return e?/* @__PURE__ */ Y(`time`,{dateTime:e,title:e,children:/* @__PURE__ */ Y(V,{value:e,mode:`absolute`})}):/* @__PURE__ */ Y(J,{children:`未记录`})}function dr({interval:e}){return/* @__PURE__ */ X(`div`,{className:`arc-run-time-segment`,children:[/* @__PURE__ */ X(`strong`,{children:[fr[e.kind],e.attempt>0?` · 第 ${e.attempt} 次`:``,e.outcome===`failed`?` · 失败`:``]}),/* @__PURE__ */ X(`span`,{children:[/* @__PURE__ */ Y(ur,{value:e.startedAt}),` → `,/* @__PURE__ */ Y(ur,{value:e.finishedAt})]}),e.finishedAt?/* @__PURE__ */ Y(`span`,{children:cr(Math.max(0,Date.parse(e.finishedAt)-Date.parse(e.startedAt)))}):/* @__PURE__ */ Y(`span`,{children:e.interruptedAt?/* @__PURE__ */ X(J,{children:[`恢复时发现中断:`,/* @__PURE__ */ Y(ur,{value:e.interruptedAt})]}):`尚未记录结束;取消或断线不代表外部操作已撤销`})]})}var fr,pr,mr;function hr(){return(hr=e((()=>{B(),lr(),fr={execution:`节点执行`,pause:`断点等待`,delay:`持久延时`,"retry-wait":`重试等待`},pr=Te(function({rows:e,selected:t,onSelect:n,limit:r}){let i=De(()=>Yt(e),[e]);return/* @__PURE__ */ X(`div`,{className:`arc-run-timeline`,role:`region`,"aria-label":`真实运行时间轴`,children:[/* @__PURE__ */ Y(`p`,{className:`arc-run-timeline-note`,children:`按服务端记录的开始时间排列;并行条带可以重叠。中断时未写入的结束时间保持未知,旧记录不补造时间。`}),!!i.known.length&&/* @__PURE__ */ X(`div`,{className:`arc-run-time-range`,children:[/* @__PURE__ */ Y(ur,{value:new Date(i.start).toISOString()}),/* @__PURE__ */ X(`span`,{children:[`已记录区间 `,cr(i.end-i.start)]}),/* @__PURE__ */ Y(ur,{value:new Date(i.end).toISOString()})]}),i.known.slice(0,r).map(e=>/* @__PURE__ */ Y(mr,{row:e,start:i.start,span:i.span,selected:t===e.node.nodeId,onSelect:n},e.node.nodeId)),!!i.unknown.length&&/* @__PURE__ */ X(`div`,{className:`arc-run-unknown-time`,children:[/* @__PURE__ */ X(`strong`,{children:[`未记录时间 · `,i.unknown.length,` 个节点`]}),i.unknown.slice(0,Math.max(0,r-i.known.length)).map(e=>/* @__PURE__ */ X(`button`,{type:`button`,onClick:()=>n(e.node.nodeId),children:[e.label,` · `,St[e.node.status]]},e.node.nodeId))]})]})}),mr=Te(function({row:e,start:t,span:n,selected:r,onSelect:i}){let a=e.node.timing,o=De(()=>it(a),[a]);return/* @__PURE__ */ X(`div`,{className:`arc-run-timeline-row${r?` is-selected`:``}`,"data-node-record":e.node.nodeId,children:[/* @__PURE__ */ X(`button`,{type:`button`,"aria-label":`时间轴检查节点 ${e.label}`,"aria-pressed":r,onClick:()=>i(e.node.nodeId),children:[/* @__PURE__ */ Y(`strong`,{title:e.label,children:e.label}),/* @__PURE__ */ Y(`span`,{children:e.handled?`异常已处理`:St[e.node.status]}),/* @__PURE__ */ Y(`div`,{className:`arc-run-time-track`,"aria-hidden":`true`,children:a.segments.map((e,r)=>{let i=Math.max(0,(Date.parse(e.startedAt)-t)/n*100),a=e.finishedAt?Math.max(i,(Date.parse(e.finishedAt)-t)/n*100):i;return/* @__PURE__ */ Y(`span`,{className:`is-${e.kind}${e.outcome===`failed`?` is-failed`:``}${e.finishedAt?``:` is-open`}`,style:{left:`${i}%`,width:`${Math.max(.4,a-i)}%`}},r)})}),/* @__PURE__ */ X(`span`,{className:`arc-run-time-total`,children:[`执行 `,cr(o.execution),` · 等待 `,cr(o.pause+o.delay+o[`retry-wait`]),o.unfinished?` · 有未结束区间`:``]})]}),/* @__PURE__ */ X(`details`,{children:[/* @__PURE__ */ Y(`summary`,{children:`时间与尝试详情`}),/* @__PURE__ */ X(`div`,{className:`arc-run-time-details`,children:[/* @__PURE__ */ X(`div`,{children:[`开始:`,/* @__PURE__ */ Y(ur,{value:a.startedAt}),` · 结束:`,/* @__PURE__ */ Y(ur,{value:a.finishedAt})]}),a.reusedFrom&&/* @__PURE__ */ X(`p`,{children:[`复用已成功结果,未重新执行:`,/* @__PURE__ */ Y(`code`,{children:a.reusedFrom})]}),a.segments.map((e,t)=>/* @__PURE__ */ Y(dr,{interval:e},t))]})]})]})})})))()}function gr({run:e,selected:t,onSelect:n,compact:r=!1}){let[o,s]=q(``),[c,l]=q(`all`),[u,d]=q(50),[f,p]=q(`records`),m=Xt(n),h=G(),g=De(()=>Jt(e),[e]),_=De(()=>g.filter(({node:e,label:t,handled:n})=>(c===`all`||(c===`handled`?n:e.status===c))&&`${t} ${e.nodeId}`.toLowerCase().includes(o.toLowerCase())),[g,o,c]);return/* @__PURE__ */ X(`div`,{className:r?`arc-run-records is-compact`:`arc-run-records`,children:[!r&&/* @__PURE__ */ X(`div`,{className:`arc-run-record-views`,role:`group`,"aria-label":`运行记录展示`,children:[/* @__PURE__ */ Y(A,{"aria-pressed":f===`records`,theme:f===`records`?`light`:`borderless`,onClick:()=>p(`records`),children:`节点记录`}),/* @__PURE__ */ Y(A,{"aria-pressed":f===`timeline`,theme:f===`timeline`?`light`:`borderless`,onClick:()=>p(`timeline`),children:`运行时间轴`})]}),!r&&/* @__PURE__ */ X(`div`,{className:`arc-run-record-filters`,children:[/* @__PURE__ */ Y(i,{"aria-label":`筛选节点记录`,placeholder:`搜索节点名称或执行 ID`,showClear:!0,value:o,onChange:e=>{s(e),d(50)}}),/* @__PURE__ */ Y(`span`,{id:h,className:`arc-run-filter-label`,children:`节点记录状态`}),/* @__PURE__ */ Y(a,{"aria-labelledby":h,value:c,optionList:[{value:`all`,label:`全部状态`},{value:`handled`,label:`异常已处理`},...Object.entries(St).filter(([e])=>e!==`cancelled`).map(([e,t])=>({value:e,label:t}))],onChange:e=>{l(String(e)),d(50)}}),/* @__PURE__ */ X(`span`,{children:[_.length,` 条 · 按流程结构排列`]})]}),f===`timeline`?/* @__PURE__ */ Y(pr,{rows:_,selected:t,onSelect:m,limit:u}):/* @__PURE__ */ Y(`div`,{className:`coze-debug-node-list`,children:_.slice(0,u).map(e=>/* @__PURE__ */ Y(_r,{row:e,compact:r,selected:t===e.node.nodeId,onSelect:m},e.node.nodeId))}),!_.length&&/* @__PURE__ */ Y(`p`,{className:`arc-run-record-empty`,children:g.length?`没有匹配的节点记录`:`等待节点执行记录…`}),_.length>u&&/* @__PURE__ */ X(A,{onClick:()=>d(e=>e+50),children:[`加载更多记录(剩余 `,_.length-u,` 条)`]})]})}var _r;function vr(){return(vr=e((()=>{P(),hr(),_r=Te(function({row:e,compact:t,selected:n,onSelect:r}){let{node:i,label:a,handled:o}=e;return/* @__PURE__ */ X(`button`,{type:`button`,className:`coze-debug-node-row${n?` is-selected`:``}`,"aria-label":`检查节点 ${a}`,"aria-pressed":n,onClick:()=>r(i.nodeId),children:[/* @__PURE__ */ Y(`span`,{className:`coze-node-state is-${o?`handled`:i.status}`,"aria-hidden":`true`,children:i.status===`succeeded`?`✓`:i.status===`failed`?`!`:i.status===`running`?`◷`:i.status===`paused`?`Ⅱ`:`–`}),/* @__PURE__ */ X(`span`,{className:`coze-debug-node-name`,children:[/* @__PURE__ */ Y(`strong`,{title:a,children:a}),/* @__PURE__ */ X(`small`,{children:[o?`异常已处理`:St[i.status],` · `,i.attempts,` 次执行`]})]}),!t&&/* @__PURE__ */ Y(j,{color:o?`orange`:i.status===`failed`?`red`:i.status===`succeeded`?`green`:`grey`,children:o?`异常已处理`:St[i.status]}),/* @__PURE__ */ Y(`span`,{className:`arc-run-node-duration`,children:qt(i.durationMs)}),/* @__PURE__ */ Y(`span`,{"aria-hidden":`true`,children:`›`})]})})})))()}function yr({run:e,props:t,onLoad:n,onInspect:i,onProceed:a}){let o=Mt(),[s,c]=q(!1),[l,u]=q(),[d,f]=q(``),[p,m]=q(!1),h=e.debug.pausedNodeId,g=e.nodes.find(e=>e.nodeId===h),_=!!g&&!g.dataOmitted,v=e.debug.pauseToken;W(()=>{let e=!1;return m(!0),n(h).catch(t=>{e||f(t.message)}).finally(()=>{e||m(!1)}),()=>{e=!0}},[v,h,n]);let y=$(Q.resume,{requestOptions:{client:t.client},onSuccess:e=>{o.setQueryData(Wt(e.id),e),yt(o)},onError:e=>f(e.message)}),b=t=>{let n;if(s)try{if(!_||(n=JSON.parse(l??JSON.stringify(g.input)),!n||typeof n!=`object`||Array.isArray(n)))throw Error()}catch{f(`输入必须为合法 JSON 对象`);return}f(``),a?.(),y.mutate({params:{runId:e.id},body:{pauseToken:v,mode:t,...n?{input:n}:{}}})};return/* @__PURE__ */ X(`div`,{className:`arc-automation-breakpoint-controls`,role:`region`,"aria-label":`断点控制`,"data-workflow-pause-token":v,children:[/* @__PURE__ */ X(`div`,{className:`arc-breakpoint-node`,children:[/* @__PURE__ */ X(`strong`,{"aria-live":`polite`,children:[`暂停于 `,Zt(e.graph,h)]}),/* @__PURE__ */ Y(A,{size:`small`,theme:`borderless`,onClick:()=>i(h),children:`检查节点`})]}),/* @__PURE__ */ Y(`p`,{children:`继续执行会运行至下一个断点;单步执行会暂停在下一个可执行节点。`}),p&&/* @__PURE__ */ Y(N,{size:`small`}),!p&&!_&&/* @__PURE__ */ Y(A,{onClick:()=>{f(``),m(!0),n(h).catch(e=>f(e.message)).finally(()=>m(!1))},children:`重新加载节点输入`}),/* @__PURE__ */ X(`label`,{children:[/* @__PURE__ */ Y(`input`,{type:`checkbox`,"aria-label":`修改当前节点输入`,disabled:!_||p||y.isPending,checked:s,onChange:e=>c(e.target.checked)}),`修改当前节点输入`]}),s&&/* @__PURE__ */ Y(r,{"aria-label":`断点节点输入`,rows:7,value:l??JSON.stringify(g?.input??{},null,2),disabled:!_||y.isPending,onChange:e=>{u(e),f(``)}}),!s&&_&&/* @__PURE__ */ X(`details`,{children:[/* @__PURE__ */ Y(`summary`,{children:`查看暂停输入`}),/* @__PURE__ */ Y(`pre`,{className:`arc-breakpoint-input`,children:JSON.stringify(g.input,null,2).slice(0,16e3)})]}),/* @__PURE__ */ X(k,{wrap:!0,children:[/* @__PURE__ */ Y(A,{"data-workflow-focus-entry":!0,theme:`solid`,loading:y.isPending,disabled:y.isPending||s&&!_,onClick:()=>b(`continue`),children:`继续执行`}),/* @__PURE__ */ Y(A,{disabled:y.isPending||s&&!_,onClick:()=>b(`step`),children:`单步执行`})]}),d&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:d})]})}function br(){return(br=e((()=>{P()})))()}function xr(e){try{return typeof window<`u`&&window.localStorage.getItem(e)===`true`}catch{return!1}}function Sr(e){let t=$t(`automation:canvas:minimap:user:${e}`),[n,r]=q(()=>({key:t,visible:xr(t)}));return{minimapVisible:n.key===t?n.visible:xr(t),onMinimapVisibleChange:U(e=>{r({key:t,visible:e});try{window.localStorage.setItem(t,String(e))}catch{}},[t])}}function Cr(e,t){try{let n=JSON.parse(window.localStorage.getItem(e)??`null`);return t(n)?n:void 0}catch{return}}function wr(e,t){let n=Sr(e),r=$t(`automation:canvas:mode:user:${e}`),i=$t(`automation:canvas:viewport:user:${e}:${t}`),[a,o]=q(()=>({key:r,value:Cr(r,Dr)??`MOUSE`})),s=De(()=>Cr(i,Er),[i]),c=K(void 0),l=K(void 0),u=U(()=>{if(clearTimeout(l.current),c.current){try{window.localStorage.setItem(i,JSON.stringify(c.current))}catch{}c.current=void 0}},[i]);W(()=>(window.addEventListener(`pagehide`,u),window.addEventListener(`blur`,u),()=>{u(),window.removeEventListener(`pagehide`,u),window.removeEventListener(`blur`,u)}),[u]);let d=U(e=>{Er(e)&&(c.current=e,clearTimeout(l.current),l.current=setTimeout(u,150))},[u]),f=U(e=>{o({key:r,value:e});try{window.localStorage.setItem(r,JSON.stringify(e))}catch{}},[r]);return{...n,initialViewport:s,onViewportChange:d,interactionMode:a.key===r?a.value:Cr(r,Dr)??`MOUSE`,onInteractionModeChange:f}}function Tr(e,t){let n=$t(`automation:last-run:user:${e}:workflow:${t}`);return{bookmark:De(()=>Cr(n,e=>!!e&&typeof e==`object`&&typeof e.runId==`string`&&Number.isSafeInteger(e.revision)),[n]),remember:U((e,t)=>{try{e&&t?window.localStorage.setItem(n,JSON.stringify({runId:e,revision:t})):window.localStorage.removeItem(n)}catch{}},[n])}}var Er,Dr;function Or(){return(Or=e((()=>{Er=e=>!!e&&typeof e==`object`&&[`zoom`,`scrollX`,`scrollY`].every(t=>Number.isFinite(e[t]))&&e.zoom>0,Dr=e=>e===`MOUSE`||e===`PAD`})))()}function kr({table:e,value:t,onChange:n,disabled:r}){let c=e.fields.map(e=>({value:e.name,label:e.title})),l=e=>n({...t,...e});return/* @__PURE__ */ X(`div`,{className:`arc-record-trigger`,children:[/* @__PURE__ */ X(`label`,{"data-setting-path":`trigger.record.operations`,children:[/* @__PURE__ */ Y(`strong`,{children:`触发操作`}),/* @__PURE__ */ Y(a,{"aria-label":`数据表触发操作`,multiple:!0,disabled:r,value:t.operations,optionList:nt.filter(t=>e.operations.includes(t)).map(e=>({value:e,label:tt[e]})),onChange:e=>l({operations:e})})]}),t.operations.includes(`updated`)&&/* @__PURE__ */ X(`label`,{"data-setting-path":`trigger.record.watchFields`,children:[/* @__PURE__ */ Y(`strong`,{children:`监听字段`}),/* @__PURE__ */ Y(a,{"aria-label":`监听字段`,multiple:!0,filter:!0,disabled:r,placeholder:`任意业务字段实际变化`,value:t.watchFields,optionList:c.filter(e=>e.value!==`id`),onChange:e=>l({watchFields:e})}),/* @__PURE__ */ Y(`small`,{children:`空选表示任意业务字段变化。重复保存相同值不会触发;系统更新时间不参与监听。`})]}),/* @__PURE__ */ X(`label`,{"data-setting-path":`trigger.record.requiredFields`,children:[/* @__PURE__ */ Y(`strong`,{children:`这些字段不为空时`}),/* @__PURE__ */ Y(a,{"aria-label":`触发必填字段`,multiple:!0,filter:!0,disabled:r,placeholder:`不限制`,value:t.requiredFields,optionList:c,onChange:e=>l({requiredFields:e})}),/* @__PURE__ */ Y(`small`,{children:`删除和成员移除检查变更前记录,其他操作检查变更后记录。0 和 false 均视为已填写。`})]}),/* @__PURE__ */ X(`label`,{"data-setting-path":`trigger.record.conditions`,children:[/* @__PURE__ */ Y(`strong`,{children:`触发限制条件`}),/* @__PURE__ */ Y(a,{"aria-label":`触发条件组合`,disabled:r,value:t.match,optionList:[{value:`all`,label:`同时满足全部条件(AND)`},{value:`any`,label:`满足任一条件(OR)`}],onChange:e=>l({match:e})})]}),t.conditions.map((n,u)=>{let d=e.fields.find(e=>e.name===n.field),f=e=>l({conditions:t.conditions.map((t,n)=>n===u?{...t,...e}:t)}),p=d?.type===`integer`||d?.type===`number`,m=et.filter(e=>p||![`gt`,`gte`,`lt`,`lte`].includes(e)).filter(e=>e!==`contains`||d?.type===`string`);return/* @__PURE__ */ X(`div`,{className:`arc-record-condition`,"data-setting-path":`trigger.record.conditions.${u}`,children:[/* @__PURE__ */ Y(a,{"aria-label":`条件 ${u+1} 数据`,disabled:r,value:n.scope,optionList:[{value:`after`,label:`变更后`},{value:`before`,label:`变更前`}],onChange:e=>f({scope:e})}),/* @__PURE__ */ Y(a,{"aria-label":`条件 ${u+1} 字段`,filter:!0,disabled:r,value:n.field||void 0,placeholder:`选择字段`,optionList:c,onChange:t=>{let n=e.fields.find(e=>e.name===t);f({field:String(t),operator:`eq`,value:n?.type===`boolean`?!0:n?.type===`integer`||n?.type===`number`?0:``})}}),/* @__PURE__ */ Y(a,{"aria-label":`条件 ${u+1} 比较`,disabled:r,value:n.operator,optionList:m.map(e=>({value:e,label:$e[e]})),onChange:e=>f({operator:e})}),![`empty`,`not_empty`].includes(n.operator)&&(p?/* @__PURE__ */ Y(o,{"aria-label":`条件 ${u+1} 值`,disabled:r,value:typeof n.value==`number`?n.value:void 0,onChange:e=>f({value:e})}):d?.type===`boolean`?/* @__PURE__ */ Y(s,{"aria-label":`条件 ${u+1} 值`,disabled:r,checked:n.value===!0,onChange:e=>f({value:e})}):/* @__PURE__ */ Y(i,{"aria-label":`条件 ${u+1} 值`,disabled:r,value:String(n.value??``),onChange:e=>f({value:e})})),/* @__PURE__ */ Y(A,{"aria-label":`删除条件 ${u+1}`,disabled:r,onClick:()=>l({conditions:t.conditions.filter((e,t)=>t!==u)}),children:`删除`})]},u)}),/* @__PURE__ */ Y(A,{disabled:r||t.conditions.length>=32,onClick:()=>l({conditions:[...t.conditions,{field:``,scope:t.operations.every(e=>e===`deleted`||e===`member_removed`)?`before`:`after`,operator:`eq`,value:``}]}),children:`添加触发条件`}),/* @__PURE__ */ Y(`small`,{children:`条件决定是否创建正式运行;事务回滚不触发。流程内的 If 节点继续负责执行后的分支。`})]})}function Ar(){return(Ar=e((()=>{P()})))()}function jr({workflowId:e,client:t,value:n,onChange:r,disabled:i,issues:a}){let c=pt(Q.workflowRuntime,{params:{id:e}},{requestOptions:{client:t},refetchInterval:3e3,refetchIntervalInBackground:!1}),l=e=>a.filter(t=>t.path===e).map((e,t)=>/* @__PURE__ */ Y(`p`,{role:`alert`,className:`arc-automation-error`,children:e.message},t));return/* @__PURE__ */ X(`fieldset`,{disabled:i,children:[/* @__PURE__ */ Y(`legend`,{children:`执行控制`}),/* @__PURE__ */ X(`div`,{className:`arc-settings-field`,"data-setting-path":`limits.maxConcurrency`,tabIndex:-1,children:[/* @__PURE__ */ Y(`strong`,{children:`最大并发运行数`}),/* @__PURE__ */ Y(o,{"aria-label":`最大并发运行数`,disabled:i,min:0,max:128,precision:0,value:n.maxConcurrency,onChange:e=>r({...n,maxConcurrency:e===``?0:Number(e)})}),l(`limits.maxConcurrency`),/* @__PURE__ */ Y(`small`,{children:`0 表示继承宿主整体上限,1 表示串行。所有发布版本共用额度;内部并行节点和批处理保持原设置。`})]}),/* @__PURE__ */ X(`div`,{className:`arc-settings-field`,children:[/* @__PURE__ */ Y(`strong`,{children:`限制执行频率`}),/* @__PURE__ */ Y(s,{"aria-label":`限制执行频率`,disabled:i,checked:!!n.rateLimit,onChange:e=>r({...n,rateLimit:e?{maxStarts:1,periodSeconds:60}:void 0})}),/* @__PURE__ */ Y(`small`,{children:`使用滚动时段限制正式运行的启动数量,包含重试和重新运行。调试使用独立额度。`})]}),n.rateLimit&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ X(`div`,{className:`arc-settings-field`,"data-setting-path":`limits.rateLimit.maxStarts`,tabIndex:-1,children:[/* @__PURE__ */ Y(`strong`,{children:`每时段最多启动`}),/* @__PURE__ */ Y(o,{"aria-label":`每时段最多启动`,disabled:i,min:1,max:1e4,precision:0,value:n.rateLimit.maxStarts,onChange:e=>r({...n,rateLimit:{...n.rateLimit,maxStarts:Number(e)}})}),l(`limits.rateLimit.maxStarts`)]}),/* @__PURE__ */ X(`div`,{className:`arc-settings-field`,"data-setting-path":`limits.rateLimit.periodSeconds`,tabIndex:-1,children:[/* @__PURE__ */ Y(`strong`,{children:`时段长度(秒)`}),/* @__PURE__ */ Y(o,{"aria-label":`频率时段秒数`,disabled:i,min:1,max:86400,precision:0,value:n.rateLimit.periodSeconds,onChange:e=>r({...n,rateLimit:{...n.rateLimit,periodSeconds:Number(e)}})}),l(`limits.rateLimit.periodSeconds`)]})]}),/* @__PURE__ */ X(`div`,{className:`arc-settings-field`,children:[/* @__PURE__ */ Y(`strong`,{children:`超过限制时`}),/* @__PURE__ */ Y(`span`,{children:`持久化排队等待`}),/* @__PURE__ */ Y(`small`,{children:`每次触发都会保留,按流程内入队顺序执行;取消排队任务可释放等待。降低上限不会取消运行中的任务。`})]}),c.isPending&&/* @__PURE__ */ Y(`p`,{role:`status`,children:`正在读取执行队列…`}),c.error&&/* @__PURE__ */ Y(M,{type:`warning`,closeIcon:null,description:`执行队列暂不可用,不能确认当前占用。设置仍可编辑。`}),c.data&&/* @__PURE__ */ X(`div`,{role:`status`,className:`arc-settings-feedback`,children:[/* @__PURE__ */ X(`p`,{children:[`正式运行:运行中 `,c.data.active,` · 排队中 `,c.data.waiting,` · 当前流程有效上限 `,c.data.effectiveConcurrency,` · 宿主整体上限 `,c.data.globalConcurrency]}),/* @__PURE__ */ X(`p`,{children:[`调试运行:运行中 `,c.data.debugActive,` · 排队中 `,c.data.debugWaiting,` · 宿主调试上限 `,c.data.debugConcurrency]}),c.data.limits.rateLimit&&/* @__PURE__ */ X(`p`,{children:[`最近 `,c.data.limits.rateLimit.periodSeconds,` 秒启动 `,c.data.recentStarts,`/`,c.data.limits.rateLimit.maxStarts,` 次`,c.data.nextStartAt&&` · 频率额度预计 ${mt(c.data.nextStartAt)} 恢复(仍需等待并发空位)`]}),/* @__PURE__ */ Y(`small`,{children:`显示的是已保存的执行控制,每 3 秒更新;离开设置页停止查询。`})]}),/* @__PURE__ */ Y(`small`,{children:`执行控制保存后从下一次队列调度生效,作用于该流程所有版本和等待中的正式运行;已有节点结果与外部副作用不受影响。`})]})}function Mr(){return(Mr=e((()=>{P()})))()}function Nr({value:e,onChange:t,onInvalid:n}){let[i,a]=q(()=>JSON.stringify(e,null,2)),[o,s]=q(``),c=JSON.stringify(e),l=K(c),u=K(n);return u.current=n,W(()=>{l.current!==c&&(l.current=c,a(JSON.stringify(e,null,2)),s(``),u.current(!1))},[c,e]),W(()=>()=>u.current(!1),[]),/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(r,{"aria-label":`触发输入 JSON Schema`,rows:8,value:i,onChange:e=>{a(e);try{let n=JSON.parse(e);if(!n||typeof n!=`object`||Array.isArray(n))throw Error();l.current=JSON.stringify(n),s(``),u.current(!1),t(n)}catch{s(`请输入合法 JSON 对象`),u.current(!0)}}}),o&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:o})]})}function Pr({path:e,label:t,errors:n,children:r}){return/* @__PURE__ */ X(`div`,{className:`arc-settings-field`,"data-setting-path":e,tabIndex:-1,children:[/* @__PURE__ */ Y(`strong`,{children:t}),r,n.filter(t=>t.path===e).map((e,t)=>/* @__PURE__ */ Y(`p`,{className:`arc-automation-error`,role:`alert`,children:e.message},t))]})}function Fr({workflow:e,catalog:t,client:n,saving:r,onSave:o,onClose:s,onDirtyChange:c,focusPath:l}){let d=dn(),f=pn(),[p,m]=q(()=>structuredClone({name:e.name,actorId:e.actorId,trigger:e.trigger,limits:e.limits??{maxConcurrency:0}})),h=K(JSON.stringify(p)),[g,_]=q(!1),[v,y]=q([]),[b,x]=q([]),[S,C]=q(),[w,T]=q(),[E,D]=q(),[ee,te]=q(!1),[ne,re]=q(!1),ie=h.current!==JSON.stringify(p)||g||!!v.length;W(()=>(c(ie),()=>c(!1)),[ie,c]);let O=en({client:n,enabled:!0}),k=$(Q.validateSettings,{requestOptions:{client:n}}),M=r||k.isPending,N=K(0),P=K(null),F=e=>{let t=P.current?.querySelector(`[data-setting-path="${e.startsWith(`trigger.inputSchema`)?`trigger.inputSchema`:e.startsWith(`trigger.record.requiredFields.`)?`trigger.record.requiredFields`:e}"]`);t?.scrollIntoView?.({block:`center`}),(t?.querySelector(`input,textarea,[role="combobox"],button`)??t)?.focus()};W(()=>{l&&F(l)},[l]);let oe=e=>{N.current++,m(e),x([]),C(void 0),T(void 0)},I=e=>oe({...p,trigger:{...p.trigger,...e}}),L=b,R=async()=>{let t=N.current,n=lt.safeParse({...e,...V});if(!n.success){let e=n.error.issues.map(e=>({code:`settings_invalid`,path:e.path.join(`.`),message:e.path[0]===`name`?`名称需为 1–120 个字符`:`设置字段格式不正确`}));x(e),F(e[0].path)}else if(g||v.length)F(`trigger.inputSchema`);else{C(void 0);try{let e=await k.mutateAsync({body:n.data});return N.current===t?(x(e.issues),T(e),e.valid||F(e.issues[0].path),e):void 0}catch(e){N.current===t&&C(e)}}},se=async()=>{if((await R())?.valid)try{await o(V),s()}catch(e){C(e)}},ce=async()=>{M||(!ie||await ae({title:`放弃未保存的设置?`,content:`只丢弃本面板修改,画布上已有的草稿修改会保留。`,okText:`放弃设置修改`}))&&s()},le=O.data?.map(e=>({value:e.id,label:`${e.nickname||e.username} (${e.username})${e.status===`enabled`?` · 已启用`:` · 已停用`}`,disabled:e.status!==`enabled`}))??[];le.some(e=>e.value===p.actorId)||le.unshift({value:p.actorId,label:`账号 ${p.actorId} · 状态待确认`,disabled:!0});let z=t.sources.find(e=>e.name===p.trigger.source),B=p.trigger.kind===`event`?z?.schema??{type:`object`}:p.trigger.inputSchema,V=p.trigger.kind===`event`?{...p,trigger:{...p.trigger,inputSchema:B}}:p,ue=t=>{y([]),_(!1);let n=t===`event`?z?.schema??{type:`object`}:t===`schedule`?{type:`object`,properties:{scheduledAt:{type:`string`,format:`date-time`}},required:[`scheduledAt`]}:e.trigger.kind===`api`?e.trigger.inputSchema:{type:`object`};I({kind:t,inputSchema:n,record:t===`event`?p.trigger.record:void 0})},de=ne?`custom`:We.find(e=>e.value!==`custom`&&e.cron===p.trigger.cron)?.value??`custom`,fe=Ge.some(e=>e.value===p.trigger.timezone)?Ge:[...Ge,{value:p.trigger.timezone,label:p.trigger.timezone}],pe=It(B),me=JSON.stringify({input:pe??{},idempotencyKey:`replace-with-unique-business-event-id`},null,2),he=`import { call } from '@fudanda/client';\nimport { automationContract } from '@fudanda/shared/automation';\n\n// 已登录的宿主 Client 复用 Cookie / CSRF\nawait call(client, automationContract.trigger, {\n params: { id: ${JSON.stringify(e.uuid)} },\n body: ${me}\n});`,ge=S instanceof Fe&&S.status===409||S instanceof Pe&&S.code===409;return/* @__PURE__ */ Y(u,{title:`工作流设置`,visible:!0,width:620,className:`arc-workflow-settings`,onCancel:()=>void ce(),footer:/* @__PURE__ */ Y(be,{onCancel:()=>{M||s()},onOk:se,okText:`保存草稿`,loading:M,disabled:g||!!v.length||!!O.error||O.isPending,extra:/* @__PURE__ */ Y(A,{disabled:M||g||!!v.length,onClick:()=>void R(),children:`校验设置`})}),children:/* @__PURE__ */ X(`div`,{ref:P,className:`arc-settings-body`,onKeyDown:e=>{(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`s`&&(e.preventDefault(),e.stopPropagation(),M||se())},children:[/* @__PURE__ */ Y(`p`,{className:`arc-settings-note`,children:`保存将包含当前画布草稿。执行控制保存即生效;流程、执行账号及触发配置需重新发布后用于新的正式运行,已有运行继续使用原版本。`}),S&&/* @__PURE__ */ X(`div`,{role:`alert`,className:`arc-settings-feedback`,children:[/* @__PURE__ */ Y(`p`,{children:ge?`保存发生版本冲突,本地设置和画布修改已保留。`:S.message}),ge&&/* @__PURE__ */ Y(A,{loading:ee,onClick:async()=>{te(!0);try{D(await dt(Q.detail,{params:{id:e.uuid}},{client:n}))}catch(e){C(e)}finally{te(!1)}},children:`查看服务端最新版本`}),E&&/* @__PURE__ */ X(`p`,{children:[`服务端草稿 r`,E.revision,`:`,E.name,`。请对比发布历史与草稿后处理冲突;不会自动覆盖当前编辑内容。`]})]}),/* @__PURE__ */ X(`fieldset`,{disabled:M,children:[/* @__PURE__ */ Y(`legend`,{children:`基础信息`}),/* @__PURE__ */ X(`div`,{className:`arc-settings-workflow-id`,children:[/* @__PURE__ */ Y(`span`,{children:`工作流 ID`}),/* @__PURE__ */ Y(qn,{uuid:e.uuid,full:!0}),/* @__PURE__ */ Y(`small`,{children:`用于接口调用和子流程引用,创建后保持不变。`})]}),/* @__PURE__ */ X(Pr,{path:`name`,label:`工作流名称`,errors:L,children:[/* @__PURE__ */ Y(i,{"aria-label":`工作流名称`,maxLength:120,showClear:!0,value:p.name,onChange:e=>oe({...p,name:e})}),/* @__PURE__ */ X(`small`,{children:[p.name.trim().length,` / 120`]})]})]}),/* @__PURE__ */ X(`fieldset`,{disabled:M,children:[/* @__PURE__ */ Y(`legend`,{children:`执行身份`}),/* @__PURE__ */ X(Pr,{path:`actorId`,label:`执行账号`,errors:L,children:[/* @__PURE__ */ Y(a,{"aria-label":`执行账号`,filter:!0,loading:O.isFetching,disabled:M||!!O.error,value:p.actorId,optionList:le,onChange:e=>oe({...p,actorId:Number(e)})}),O.error&&/* @__PURE__ */ X(`div`,{role:`alert`,children:[`账号加载失败:`,O.error.message,/* @__PURE__ */ Y(A,{loading:O.isFetching,onClick:()=>void O.refetch(),children:`重新加载账号`})]}),/* @__PURE__ */ Y(`small`,{children:`流程以该账号身份执行。停用账号或撤销权限立即影响后续操作;每次执行仍校验权限和数据范围。`})]}),w&&/* @__PURE__ */ X(`p`,{role:`status`,children:[w.issues.some(e=>e.path===`actorId`)?`执行身份预检查未通过`:`执行身份预检查通过 · ${w.permissions.length} 项节点权限`,`。未完成的节点仍需发布校验。`]})]}),/* @__PURE__ */ Y(jr,{workflowId:e.uuid,client:n,value:p.limits??{maxConcurrency:0},onChange:e=>oe({...p,limits:e}),disabled:M,issues:L}),/* @__PURE__ */ X(`fieldset`,{disabled:M,children:[/* @__PURE__ */ Y(`legend`,{children:`触发配置`}),/* @__PURE__ */ X(Pr,{path:`trigger.kind`,label:`触发方式`,errors:L,children:[/* @__PURE__ */ Y(a,{"aria-label":`触发方式`,disabled:M,value:p.trigger.kind,optionList:qe,onChange:e=>ue(e)}),/* @__PURE__ */ Y(`small`,{children:`切换触发方式会更新入口数据结构,请重新检查下游变量绑定。`})]}),p.trigger.kind===`event`&&/* @__PURE__ */ X(Pr,{path:`trigger.source`,label:`数据表或专用业务事件`,errors:L,children:[/* @__PURE__ */ Y(a,{"aria-label":`触发数据表`,filter:!0,disabled:M,placeholder:`选择系统表或业务表`,value:p.trigger.source||void 0,optionList:t.sources.map(e=>({value:e.name,label:e.recordTable?`${e.recordTable.name.startsWith(`system.`)?`系统表`:`业务表`} · ${e.recordTable.title}`:`专用事件 · ${e.title??e.name}`})),onChange:e=>{let n=t.sources.find(t=>t.name===String(e));I({source:String(e),inputSchema:n?.schema??{type:`object`},record:n?.recordTable?{operations:[n.recordTable.operations[0]],watchFields:[],requiredFields:[],match:`all`,conditions:[]}:void 0})}}),z?.description&&/* @__PURE__ */ Y(`small`,{children:z.description}),!t.sources.length&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:`宿主尚未注册业务事件。`}),z?.recordTable&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(kr,{table:z.recordTable,value:p.trigger.record??{operations:[z.recordTable.operations[0]],watchFields:[],requiredFields:[],match:`all`,conditions:[]},onChange:e=>I({record:e}),disabled:M}),L.filter(e=>e.path.startsWith(`trigger.record`)).map((e,t)=>/* @__PURE__ */ Y(`p`,{role:`alert`,children:e.message},t))]}),/* @__PURE__ */ Y(`small`,{children:`只提供已启用且有读取权限的数据表;业务事务提交后触发,不包含查询事件。`})]}),p.trigger.kind===`schedule`&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ X(Pr,{path:`trigger.cron`,label:`执行计划`,errors:L,children:[/* @__PURE__ */ Y(a,{"aria-label":`执行计划快捷配置`,disabled:M,value:de,optionList:We.map(({value:e,label:t})=>({value:e,label:t})),onChange:e=>{re(e===`custom`);let t=We.find(t=>t.value===e);t?.cron&&I({cron:t.cron})}}),/* @__PURE__ */ Y(i,{"aria-label":`六段 Cron`,value:p.trigger.cron,placeholder:`秒 分 时 日 月 周`,onChange:e=>{re(!0),I({cron:e})}}),/* @__PURE__ */ Y(`small`,{children:`六段格式:秒 分 时 日 月 周。例如 0 0 9 * * * 为每天 09:00。`})]}),/* @__PURE__ */ X(Pr,{path:`trigger.timezone`,label:`时区`,errors:L,children:[/* @__PURE__ */ Y(a,{"aria-label":`时区`,filter:!0,allowCreate:!0,disabled:M,value:p.trigger.timezone,optionList:fe,onChange:e=>I({timezone:String(e)})}),/* @__PURE__ */ Y(`small`,{children:`允许输入其他 IANA 时区;Go 按所选时区计算夏令时。`})]}),/* @__PURE__ */ X(`div`,{className:`arc-settings-schedule`,children:[/* @__PURE__ */ Y(A,{disabled:M,loading:k.isPending,onClick:()=>void R(),children:`预览执行时间`}),w&&/* @__PURE__ */ Y(`ol`,{"aria-label":`最近五次执行时间`,children:w.nextRuns.map(e=>/* @__PURE__ */ Y(`li`,{children:new Intl.DateTimeFormat(`zh-CN`,{timeZone:p.trigger.timezone,dateStyle:`medium`,timeStyle:`medium`,hour12:!1}).format(new Date(e))},e))}),/* @__PURE__ */ Y(`small`,{children:`执行输入仅包含系统生成的 scheduledAt,不能要求其他必填参数;停机错过多个时间点时只补最近一次。发布并启用后生效。`})]})]}),p.trigger.kind===`api`&&/* @__PURE__ */ X(`div`,{className:`arc-settings-api`,children:[/* @__PURE__ */ X(j,{children:[`POST `,Le(Q.trigger.fullPath,{id:e.uuid})]}),/* @__PURE__ */ Y(`small`,{children:`调用已发布且启用的版本。使用 Cookie+CSRF 或具备 host:automation:trigger 权限的 API Key;此处不生成或展示秘密。`}),/* @__PURE__ */ X(`details`,{children:[/* @__PURE__ */ Y(`summary`,{children:`调用示例`}),/* @__PURE__ */ Y(`pre`,{children:he}),/* @__PURE__ */ Y(A,{onClick:()=>void xe(he),children:`复制 Client 示例`}),/* @__PURE__ */ Y(`small`,{children:`API Key 示例:将请求 JSON 保存为 workflow-input.json,替换服务地址及受限密钥。`}),/* @__PURE__ */ Y(`pre`,{children:`curl -X POST '<服务地址>${Le(Q.trigger.fullPath,{id:e.uuid})}' \\\n -H 'Authorization: Bearer <受限 API Key>' \\\n -H 'Content-Type: application/json' \\\n --data-binary @workflow-input.json`})]}),/* @__PURE__ */ Y(`small`,{children:`幂等键应使用业务事件的唯一标识;重复提交同一标识不会创建新执行。`})]})]}),/* @__PURE__ */ X(`fieldset`,{disabled:M,children:[/* @__PURE__ */ Y(`legend`,{children:`输入参数`}),/* @__PURE__ */ X(Pr,{path:`trigger.inputSchema`,label:p.trigger.kind===`event`?`事件输入结构(只读)`:`开始节点输入字段`,errors:L,children:[/* @__PURE__ */ Y(`small`,{children:p.trigger.kind===`event`?`由宿主维护,事件切换后自动展示对应结构。`:`与开始节点共用同一输入定义。高级约束会在字段编辑中保留。`}),/* @__PURE__ */ Y(`div`,{className:`arc-workflow-designer arc-wf-theme-${d} arc-settings-input-fields`,style:Ut(f),children:/* @__PURE__ */ Y(Rn,{schema:B,readOnly:M||p.trigger.kind===`event`||B.type!==void 0&&B.type!==`object`,onChange:e=>I({inputSchema:e}),onValidation:y},p.trigger.kind+`:`+p.trigger.source)}),/* @__PURE__ */ X(`details`,{children:[/* @__PURE__ */ Y(`summary`,{children:`高级 JSON Schema`}),p.trigger.kind===`event`?/* @__PURE__ */ Y(`pre`,{children:JSON.stringify(B,null,2)}):/* @__PURE__ */ Y(Nr,{value:B,onChange:e=>I({inputSchema:e}),onInvalid:_},p.trigger.kind)]}),/* @__PURE__ */ X(`details`,{children:[/* @__PURE__ */ Y(`summary`,{children:`示例输入`}),/* @__PURE__ */ Y(`pre`,{children:JSON.stringify(pe??{},null,2)})]})]})]})]})})}function Ir(){return(Ir=e((()=>{Jn(),P(),Bn(),Kn(),ye(),F(),Se(),hn(),Ar(),Mr()})))()}function Lr(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Rr(e,t){return e===t?!0:Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((e,n)=>Rr(e,t[n])):Lr(e)&&Lr(t)?Object.keys(e).length===Object.keys(t).length&&Object.keys(e).every(n=>Object.hasOwn(t,n)&&Rr(e[n],t[n])):!1}function zr(e,t,n){return rt(e,t).filter(e=>e.code!==`condition`).map(e=>({label:at(e,n),valid:e.matched}))}function Br(e){let t=Lr(e.before)?e.before:null,n=Lr(e.after)?e.after:null,r=e.operation,i=[];return(r===`created`||r===`member_added`?e.before!==null||!n:r===`deleted`||r===`member_removed`?e.after!==null||!t:!t||!n)&&i.push(`新增或成员加入需有变更后数据,删除或成员移除需有变更前数据,修改需有前后数据。`),t&&n&&t.id!==n.id&&i.push(`变更前后必须使用同一记录 ID。`),(t&&t.id!==e.recordId||n&&n.id!==e.recordId)&&i.push(`记录 ID 必须与变更数据中的 ID 一致。`),i}function Vr(e,t,n,r,i,a={}){n=t===`created`||t===`member_added`?null:n,r=t===`deleted`||t===`member_removed`?null:r;let o=[.../* @__PURE__ */ new Set([...Object.keys(n??{}),...Object.keys(r??{})])].filter(e=>e!==`id`);return{table:e.name,operation:t,recordId:r?.id??n?.id??a.recordId??1,before:n,after:r,changedFields:o.filter(e=>!Wr(n?.[e],r?.[e])).sort(),actorId:i,requestId:typeof a.requestId==`string`&&a.requestId?a.requestId:`test-event`,occurredAt:typeof a.occurredAt==`string`&&a.occurredAt?a.occurredAt:(/* @__PURE__ */ new Date()).toISOString()}}function Hr(e,t,n,r=t.operations[0]){let i=Lr(e.schema.properties)?e.schema.properties:{},a=/* @__PURE__ */ new Set([`id`,...Array.isArray(e.schema.required)?e.schema.required:[],...t.watchFields,...t.requiredFields,...t.conditions.map(e=>e.field)]);if(r===`updated`&&!t.watchFields.length){let t=e.fields.find(e=>e.name!==`id`&&[`integer`,`number`,`boolean`].includes(e.type))??e.fields.find(e=>e.name!==`id`);t&&a.add(t.name)}let o=Object.fromEntries(e.fields.filter(e=>{let t=i[e.name];return a.has(e.name)||Lr(t)&&Object.hasOwn(t,`default`)}).map(e=>{let t=i[e.name],n=Lr(t)?t:{},r=(/* @__PURE__ */ new Date()).toISOString(),a=n.default??n.const??(Array.isArray(n.enum)?n.enum[0]:void 0)??(e.name===`id`?1:e.type===`integer`||e.type===`number`?Math.max(1,typeof n.minimum==`number`?n.minimum:1):e.type===`boolean`?!0:e.type===`object`?{}:e.type===`array`?[]:n.format===`date`?r.slice(0,10):n.format===`date-time`?r:`测试${e.title}`);return[e.name,a]})),s=structuredClone(o),c=structuredClone(o);for(let n of t.match===`any`?t.conditions.slice(0,1):t.conditions){let t=n.scope===`before`?s:c,r=e.fields.find(e=>e.name===n.field),i=r?.type===`number`||r?.type===`integer`,a=n.value;n.operator===`empty`?a=null:n.operator===`not_empty`?a=t[n.field]??(i?1:`测试值`):n.operator===`neq`?a=typeof a==`number`?a+1:typeof a==`boolean`?!a:`${String(a)}(不同)`:(n.operator===`gt`||n.operator===`lt`)&&(a=typeof a==`number`?a+(n.operator===`gt`?1:-1):a),a!==void 0&&Object.defineProperty(t,n.field,{value:a,enumerable:!0,configurable:!0,writable:!0})}if(t.conditions.some(e=>e.field===`id`&&e.scope===`after`)?s.id=c.id:c.id=s.id,r===`updated`){let n=t.watchFields.length?t.watchFields:e.fields.map(e=>e.name).filter(e=>e!==`id`);if(!n.some(e=>!Wr(s[e],c[e]))){let e=n.find(e=>Object.hasOwn(c,e)&&!t.conditions.some(t=>t.scope===`before`&&t.field===e));if(e){let t=i[e],n=Lr(t)?t:{};Array.isArray(n.enum)?s[e]=n.enum.find(t=>!Wr(t,c[e]))??c[e]:typeof c[e]==`number`?s[e]=[c[e]+1,c[e]-1].find(e=>(typeof n.minimum!=`number`||e>=n.minimum)&&(typeof n.maximum!=`number`||e<=n.maximum))??c[e]:typeof c[e]==`boolean`?s[e]=!c[e]:typeof c[e]==`string`&&(s[e]=c[e]+`(修改前)`)}}}return Vr(e,r,s,c,n)}async function Ur(e,t,n){let r=await Ie(e,Q.runSummaries,{query:{workflowId:t,page:1,pageSize:20}});for(let t of r.list.filter(e=>!e.nodeTest)){let r=await Ie(e,Q.run,{params:{runId:t.id},query:{compact:!0}}),i=r.graph.nodes.find(e=>e.type===`core.trigger`);if(!i||!r.nodes.some(e=>e.nodeId===i.id&&e.status===`succeeded`))continue;let a=await Ie(e,Q.nodeResult,{params:{runId:r.id,nodeId:i.id}});if(a.input.table===n)return{runId:r.id,input:a.input}}throw Error(`最近 20 次运行没有该数据表的完整事件输入,请先生成示例。`)}var Wr;function Gr(){return(Gr=e((()=>{Wr=Rr})))()}function Kr({checks:e,table:t,onNavigate:n}){return/* @__PURE__ */ Y(`div`,{className:`arc-event-checks`,children:e.map((e,r)=>/* @__PURE__ */ X(`div`,{className:e.matched?`is-matched`:`is-unmatched`,children:[/* @__PURE__ */ Y(j,{color:e.matched?`green`:`orange`,children:e.matched?`满足`:`未满足`}),/* @__PURE__ */ Y(`strong`,{children:at(e,t)}),(`actual`in e||`expected`in e)&&/* @__PURE__ */ X(`small`,{children:[`实际:`,qr(ot(e,e.actual,t)),` · 要求:`,qr(ot(e,e.expected,t))]}),!e.matched&&n&&e.path.startsWith(`trigger`)&&/* @__PURE__ */ Y(A,{size:`small`,theme:`borderless`,onClick:()=>n(e.path),children:`定位当前设置`})]},e.path+`:`+r))})}var qr;function Jr(){return(Jr=e((()=>{Kn(),P(),qr=e=>{if(e===void 0)return`未提供`;let t=JSON.stringify(Pt(e,12,160,3).data);return t.length>160?t.slice(0,160)+`…`:t}})))()}var Yr;function Xr(){return(Xr=e((()=>{Yr=[`status`,`match`,`eventId`,`recordId`,[`startTime`,`endTime`]]})))()}function Zr({context:e,onClose:t,onApply:n}){let{client:r,workflowId:i}=e,a=Be(),[o,s]=q(),c=le({op:Q.eventList,useList:(e,t=!0)=>pt(Q.eventList,{params:{id:i},query:e},{enabled:t,requestOptions:{client:r},refetchInterval:3e3,refetchIntervalInBackground:!1}),table:{empty:`当前数据表没有可见的事件`}}),f=pt(Q.eventDetail,{params:{id:i,eventId:o??0}},{enabled:!!o,requestOptions:{client:r},refetchInterval:e=>e.state.data&&([`pending`,`dispatching`,`retrying`].includes(e.state.data.status)||tn(e.state.data))?3e3:!1,refetchIntervalInBackground:!1}),p=pt(Q.runtime,{enabled:!0,requestOptions:{client:r},refetchInterval:1e4,refetchIntervalInBackground:!1}),h=$(Q.retryEvent,{requestOptions:{client:r},invalidate:e=>Promise.all([Q.eventList,Q.eventDetail].map(t=>e.invalidateQueries({queryKey:ft(t)}))),onSuccess:e=>l.success(e.released?`已提交原事件重试`:`事件状态已变化,请刷新`),onError:e=>l.error(e.message)}),g=[{title:`事件`,dataIndex:`eventId`,minWidth:220,render:(t,n)=>/* @__PURE__ */ X(A,{theme:`borderless`,onClick:()=>s(n.id),children:[`#`,n.id,` · `,st(n.decision,e.table)]})},{title:`处理状态`,width:120,render:(e,t)=>/* @__PURE__ */ Y(j,{color:t.status===`retrying`?`orange`:`grey`,children:Xe[t.status]})},{title:`提交时匹配`,width:125,render:(e,t)=>/* @__PURE__ */ Y(j,{color:t.decision?.matched?`green`:`orange`,children:t.decision?t.decision.matched?`已命中`:`未命中`:`无历史判断`})},{title:`工作流运行`,width:150,render:(e,t)=>t.outcomes.length?t.outcomes.map(e=>/* @__PURE__ */ Y(j,{color:e.runStatus===`succeeded`?`green`:e.runStatus===`failed`||e.status===`denied`||e.status===`failed`?`red`:`grey`,children:nn(e)},e.workflowId)):`未创建运行`},{title:`分发次数`,dataIndex:`attempts`,width:100},pe(`提交时间`,`occurredAt`),ce({width:100,actions:e=>[{key:`detail`,label:`详情`,onClick:()=>s(e.id)}]})];return/* @__PURE__ */ X(u,{title:`数据表事件分发记录`,visible:!0,onCancel:t,width:`min(1080px, 100vw)`,className:`arc-event-dispatch-panel`,children:[/* @__PURE__ */ Y(`p`,{children:`匹配原因来自提交时的配置。运行状态自动更新;已处理事件不能重放;失败事件保持原运行 ID,重试时重新检查执行账号与权限。`}),p.data&&/* @__PURE__ */ X(`p`,{role:`status`,children:[`待分发 `,p.data.pendingEvents,` · 分发重试 `,p.data.retryingEvents,` · 待入队 `,p.data.pendingAdmission,p.data.queues.map(e=>/* @__PURE__ */ X(`span`,{children:[` · `,e.name,`:排队 `,e.waiting,`,占用 `,e.active,`/`,e.concurrency]},e.name))]}),p.error&&/* @__PURE__ */ Y(M,{type:`warning`,closeIcon:null,description:`队列状态暂不可用,可继续查看事件;请稍后刷新。`}),c.listQuery.error&&/* @__PURE__ */ Y(M,{type:`danger`,closeIcon:null,description:c.listQuery.error.message}),/* @__PURE__ */ Y(m,{searchConfig:d({page:c,filters:Yr}),columns:g,...c.tableProps}),o&&/* @__PURE__ */ X(`section`,{className:`arc-event-detail`,children:[/* @__PURE__ */ X(`h3`,{children:[`事件 #`,o]}),f.error&&/* @__PURE__ */ Y(M,{type:`danger`,closeIcon:null,description:f.error.message}),` `,f.isFetching&&!f.data&&/* @__PURE__ */ Y(`p`,{role:`status`,children:`正在读取真实事件…`}),f.data&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(`p`,{children:st(f.data.decision,e.table)}),f.data.error&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:f.data.error}),f.data.decision&&/* @__PURE__ */ Y(Kr,{checks:f.data.decision.checks,table:e.table,onNavigate:n=>{t(),e.onNavigate?.(n)}}),/* @__PURE__ */ Y(A,{onClick:()=>n(f.data.input),children:`载入试运行输入`}),/* @__PURE__ */ Y(A,{loading:h.isPending,disabled:f.data.status!==`retrying`||!!f.data.retryAt&&Date.parse(f.data.retryAt)>Date.now(),onClick:()=>h.mutate({params:{id:i,eventId:o},body:{}}),children:`重试失败分发`}),f.data.outcomes.map(e=>/* @__PURE__ */ X(`div`,{className:`arc-event-outcome`,children:[/* @__PURE__ */ X(j,{children:[`发布 v`,e.version]}),/* @__PURE__ */ Y(j,{children:nn(e)}),e.message&&/* @__PURE__ */ Y(`span`,{children:e.message}),e.deduplicated&&/* @__PURE__ */ Y(j,{children:`复用已有运行`}),e.runId&&/* @__PURE__ */ Y(A,{theme:`borderless`,onClick:()=>a(`/extensions/automation/inspect?runId=`+encodeURIComponent(e.runId)),children:`查看运行`})]},e.workflowId))]})]})]})}function Qr(){return(Qr=e((()=>{P(),z(),f(),p(),se(),de(),Jr(),Xr()})))()}function $r({client:e,workflowId:t,input:n,valid:r,onApply:o}){let[c,u]=q(!1),[d,f]=q(1),[p,m]=q(),[h,g]=q(``),_=pt(Q.testCases,{params:{id:t},query:{page:d,pageSize:20,archived:c}},{requestOptions:{client:e},refetchOnWindowFocus:!1}),v=e=>e.invalidateQueries({queryKey:ft(Q.testCases)}),y=e=>{m(e.id),g(e.name),l.success(`测试用例已保存`)},b=e=>l.error(e.message),x=$(Q.createTestCase,{requestOptions:{client:e},invalidate:v,onSuccess:y,onError:b}),S=$(Q.updateTestCase,{requestOptions:{client:e},invalidate:v,onSuccess:y,onError:b}),C=$(Q.renameTestCase,{requestOptions:{client:e},invalidate:v,onSuccess:y,onError:b}),w=$(Q.copyTestCase,{requestOptions:{client:e},invalidate:v,onSuccess:y,onError:b}),T=$(Q.archiveTestCase,{requestOptions:{client:e},invalidate:v,onSuccess:()=>{m(void 0),g(``),l.success(c?`测试用例已恢复`:`测试用例已移除,可在已移除列表恢复`)},onError:b}),E=_.data?.list.find(e=>e.id===p),D=x.isPending||S.isPending||C.isPending||w.isPending||T.isPending,ee=async()=>{E&&await ae({title:c?`恢复测试用例?`:`移除测试用例?`,content:c?`恢复后占用一个活动用例名额,不执行节点。`:`保留输入快照并释放活动名额,可从已移除列表恢复。`,okText:c?`恢复`:`移除`})&&T.mutate({params:{id:t,caseId:E.id},body:{archived:!c,revision:E.revision}})};return/* @__PURE__ */ X(`section`,{className:`arc-event-test-cases`,children:[/* @__PURE__ */ Y(`strong`,{children:`保存的测试用例`}),/* @__PURE__ */ Y(`small`,{children:`最多 20 组活动用例;移除可恢复。选择用例后显式载入,载入不会执行节点。`}),/* @__PURE__ */ X(`label`,{children:[/* @__PURE__ */ Y(s,{"aria-label":`显示已移除用例`,checked:c,onChange:e=>{u(e),f(1),m(void 0),g(``)}}),` 显示已移除用例`]}),_.error&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(M,{type:`danger`,description:_.error.message,closeIcon:null}),/* @__PURE__ */ Y(A,{size:`small`,onClick:()=>void _.refetch(),children:`重新载入用例`})]}),/* @__PURE__ */ Y(a,{"aria-label":`选择事件测试用例`,loading:_.isFetching,placeholder:`选择已有用例`,value:p,optionList:_.data?.list.map(e=>({value:e.id,label:e.name+(e.valid?``:` · 已失效`)}))??[],onChange:e=>{let t=_.data?.list.find(t=>t.id===e);t&&(m(t.id),g(t.name))}}),E&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(j,{children:E.archived?`已移除`:E.valid?`输入有效`:`输入已失效`}),/* @__PURE__ */ X(`small`,{children:[`输入采集于草稿 r`,E.workflowRevision,` · 用例修订 r`,E.revision]}),E.issues.map(e=>/* @__PURE__ */ Y(M,{type:`warning`,description:e,closeIcon:null},e))]}),/* @__PURE__ */ Y(i,{"aria-label":`测试用例名称`,value:h,maxLength:120,placeholder:`例如:数量跨越阈值 / 未跨越阈值`,onChange:g}),/* @__PURE__ */ X(k,{wrap:!0,children:[!c&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(A,{size:`small`,loading:x.isPending,disabled:!r||!h.trim()||D,onClick:()=>n&&x.mutate({params:{id:t},body:{name:h.trim(),input:n}}),children:`保存为新用例`}),/* @__PURE__ */ Y(A,{size:`small`,disabled:!E?.valid||D,onClick:()=>E&&o(E.input,`已载入用例「${E.name}」 · 保存时草稿 r${E.workflowRevision}`),children:`载入用例`}),/* @__PURE__ */ Y(A,{size:`small`,loading:S.isPending,disabled:!E||!r||!h.trim()||D,onClick:()=>E&&n&&S.mutate({params:{id:t,caseId:E.id},body:{name:h.trim(),input:n,revision:E.revision}}),children:`更新选中用例`}),/* @__PURE__ */ Y(A,{size:`small`,loading:w.isPending,disabled:!E?.valid||!h.trim()||D,onClick:()=>E&&w.mutate({params:{id:t,caseId:E.id},body:{name:h.trim(),revision:E.revision}}),children:`复制用例`})]}),/* @__PURE__ */ Y(A,{size:`small`,loading:C.isPending,disabled:!E||!h.trim()||D||E.name===h.trim(),onClick:()=>E&&C.mutate({params:{id:t,caseId:E.id},body:{name:h.trim(),revision:E.revision}}),children:`仅重命名`}),/* @__PURE__ */ Y(A,{size:`small`,loading:T.isPending,disabled:!E||D,onClick:()=>void ee(),children:c?`恢复用例`:`移除用例`})]}),c&&!!_.data&&_.data.total>20&&/* @__PURE__ */ X(k,{children:[/* @__PURE__ */ Y(A,{size:`small`,disabled:d===1,onClick:()=>{f(d-1),m(void 0)},children:`上一页用例`}),/* @__PURE__ */ X(`span`,{children:[d,` / `,Math.ceil(_.data.total/20)]}),/* @__PURE__ */ Y(A,{size:`small`,disabled:d*20>=_.data.total,onClick:()=>{f(d+1),m(void 0)},children:`下一页用例`})]})]})}function ei(){return(ei=e((()=>{P(),F()})))()}function ti({context:e,filter:t,input:n,valid:r,onApply:i}){let{client:a,workflowId:o,revision:s}=e,[c,l]=q(),[u,d]=q(0),[f,p]=q([]),[m,h]=q(!1),[g,_]=q(``),[v,y]=q(!1),[b,x]=q(!1),S=K(0),C=K(!0);W(()=>{let e=S;return C.current=!0,()=>{C.current=!1,e.current++}},[]);let w=$(Q.listenEvents,{requestOptions:{client:a}}),T=pt(Q.pollEvents,{params:{id:o},query:{token:c?.token??``,after:u}},{enabled:!!c,requestOptions:{client:a},refetchInterval:2e3,retry:!1,refetchOnWindowFocus:!1,gcTime:0});W(()=>{T.data&&c&&(d(T.data.cursor),p(e=>[...new Map([...e,...T.data.events].map(e=>[e.id,e])).values()].slice(-50)))},[T.data,c]),W(()=>{T.error&&(_(T.error.message),l(void 0))},[T.error]),W(()=>{c&&c.revision!==s&&(l(void 0),_(`草稿修订已变化,请重新等待事件。`))},[s,c]);let E=async()=>{let t=++S.current;h(!0),_(``);try{let n=await e.prepareListen();if(!C.current||t!==S.current)return;let r=await w.mutateAsync({params:{id:o},body:{revision:n}});C.current&&t===S.current&&(l(r),d(r.after),p([]))}catch(e){C.current&&t===S.current&&_(e instanceof Error?e.message:`开始监听失败`)}finally{C.current&&t===S.current&&h(!1)}},D=()=>{S.current++,l(void 0)};return/* @__PURE__ */ X(`div`,{className:`arc-event-debug-tools`,children:[/* @__PURE__ */ X(`div`,{className:`arc-record-test-tools`,children:[/* @__PURE__ */ Y(A,{size:`small`,disabled:m||w.isPending,onClick:()=>c?D():void E(),children:c?`停止监听`:`等待真实事件`}),/* @__PURE__ */ Y(A,{size:`small`,onClick:()=>x(e=>!e),children:`测试用例`}),/* @__PURE__ */ Y(A,{size:`small`,onClick:()=>y(!0),children:`分发记录`})]}),c&&/* @__PURE__ */ X(`p`,{role:`status`,children:[`正在等待已提交的表变更。可在原业务页面操作;监听不会自动试运行。截止 `,/* @__PURE__ */ Y(V,{value:c.expiresAt,mode:`absolute`}),`。`]}),(m||w.isPending)&&/* @__PURE__ */ Y(`p`,{role:`status`,children:`正在准备监听…`}),g&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:g}),f.length>0&&/* @__PURE__ */ X(`details`,{open:!0,children:[/* @__PURE__ */ X(`summary`,{children:[`已捕获 `,f.length,` 条事件(最多保留最近 50 条)`]}),f.map(n=>/* @__PURE__ */ X(`div`,{className:`arc-event-capture`,children:[/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ X(j,{children:[tt[n.input.operation],` · #`,String(n.input.recordId)]}),/* @__PURE__ */ X(j,{children:[`采集时:`,Xe[n.status]]}),/* @__PURE__ */ Y(V,{value:n.occurredAt,mode:`absolute`})]}),/* @__PURE__ */ Y(`p`,{children:st(n.decision,e.table)}),/* @__PURE__ */ Y(A,{size:`small`,onClick:()=>i(n.input,`已载入真实事件 `+n.eventId+`;编辑后才执行测试。`),children:`用于试运行`}),/* @__PURE__ */ X(`details`,{children:[/* @__PURE__ */ Y(`summary`,{children:`提交时的生产判断`}),n.decision?/* @__PURE__ */ Y(Kr,{checks:n.decision.checks,table:e.table,onNavigate:e.onNavigate}):/* @__PURE__ */ Y(`p`,{children:`没有历史诊断,不能按当前配置推算。`})]}),/* @__PURE__ */ X(`details`,{children:[/* @__PURE__ */ Y(`summary`,{children:`当前草稿规则预览`}),/* @__PURE__ */ Y(Kr,{checks:rt(t,n.input),table:e.table,onNavigate:e.onNavigate})]})]},n.id))]}),b&&/* @__PURE__ */ Y($r,{client:a,workflowId:o,input:n,valid:r,onApply:i}),v&&/* @__PURE__ */ Y(Zr,{context:e,onClose:()=>y(!1),onApply:e=>{i(e,`已从分发记录载入事件。`),y(!1)}})]})}function ni(){return(ni=e((()=>{P(),B(),Qr(),Jr(),ei()})))()}function ri({value:e,schema:t,visibleFields:n,onChange:r,onValidityChange:i}){let a=JSON.stringify(e,null,2),o=K(a),[s,c]=q(a);return W(()=>{a!==o.current&&(o.current=a,c(a))},[a]),/* @__PURE__ */ Y(Nn,{schema:t,visibleFields:n,value:s,onValidityChange:i,onChange:e=>{c(e);try{let t=JSON.parse(e);Lr(t)&&(o.current=JSON.stringify(t,null,2))}catch{}r(e)}})}function ii({table:e,filter:t,schema:n,actorId:i,value:o,onChange:c,onValidityChange:l,onLoadRecent:u,debugContext:d}){let[f,p]=q(!1),[m,h]=q(!1),[g,_]=q(!1),[v,y]=q(!1),[b,x]=q(``),[S,C]=q(``),[w,T]=q(0),E=K(0),D=K(!0),ee=K({value:o,onChange:c});ee.current={value:o,onChange:c};let te=K(null),[ne,re]=q(``);W(()=>{if(!ne)return;let[e,...t]=ne.split(`.`),n=te.current?.querySelector(`[data-record-snapshot="${e}"]`),r=Array.from(n?.querySelectorAll(`[data-input-field]`)??[]).find(e=>e.dataset.inputField===t.join(`.`));if(!f&&!r){p(!0);return}let i=f?te.current?.querySelector(`[aria-label="测试事件 JSON"]`):r?.querySelector(`input,textarea,[tabindex="0"]`);i?.scrollIntoView?.({block:`center`}),i?.focus(),re(``)},[ne,f,m]);let ie=e=>{h(!0),/^(before|after)\./.test(e)||p(!0),re(e)};W(()=>(D.current=!0,()=>{D.current=!1}),[]);let O=De(()=>{try{let e=JSON.parse(o);return Lr(e)?e:void 0}catch{return}},[o]),k=O?.operation,M=Lr(O?.before)?O.before:null,N=Lr(O?.after)?O.after:null,P=O?zr(t,O,e):[],F=!!P.length&&P.every(e=>e.valid),ae=O?Br(O):[],oe=De(()=>!Rt(o,n).errors.length,[n,o])&&!ae.length,[I,L]=q(!0),[R,se]=q(!0),ce=k===`created`||k===`member_added`,le=k===`deleted`||k===`member_removed`;W(()=>l(oe&&(g||F)&&(f||(ce||I)&&(le||R))),[oe,g,F,f,ce,le,I,R,l]);let z=e=>{E.current++,x(``),C(``),c(JSON.stringify(e,null,2))},B=(n=k)=>{L(!0),se(!0),T(e=>e+1),z(Hr(e,t,i,e.operations.includes(n)?n:t.operations[0]))},V=/* @__PURE__ */ new Set([`id`,...Array.isArray(e.schema.required)?e.schema.required:[],...t.watchFields,...t.requiredFields,...t.conditions.map(e=>e.field)]),ue=e.schema,de=m?void 0:[...V],fe=(t,n)=>{E.current++;try{let r=JSON.parse(n);if(Lr(r)){let n=t===`before`?r:M,a=t===`after`?r:N;r.id!==(t===`before`?M?.id:N?.id)&&(t===`before`&&a&&(a={...a,id:r.id}),t===`after`&&n&&(n={...n,id:r.id})),z(Vr(e,k,n,a,i,O))}}catch{}},pe=async()=>{let e=++E.current,t=o;y(!0),C(``);try{let r=await u();if(!D.current||e!==E.current||ee.current.value!==t)return;if(Rt(JSON.stringify(r.input),n).errors.length||Br(r.input).length)throw Error(`历史事件与当前字段结构不兼容,请生成新示例。`);c(JSON.stringify(r.input,null,2)),T(e=>e+1),x(`已载入运行 `+r.runId+` 的事件输入,可继续编辑。`)}catch(t){D.current&&e===E.current&&C(t instanceof Error?t.message:`载入失败`)}finally{D.current&&y(!1)}},me=(e,t)=>{Rt(JSON.stringify(e),n).errors.length||Br(e).length?C(`事件或用例与当前数据表字段不兼容,请生成新示例。`):(z(e),L(!0),se(!0),T(e=>e+1),x(t))},he=M&&N?e.fields.filter(e=>!Rr(M[e.name],N[e.name])):[],ge=e=>e===void 0?`未提供`:JSON.stringify(Pt(e,16,200,3).data);return/* @__PURE__ */ X(`div`,{className:`arc-record-test-input`,ref:te,children:[/* @__PURE__ */ X(`div`,{className:`arc-record-test-heading`,children:[/* @__PURE__ */ X(`strong`,{children:[`测试业务事件 · `,e.title]}),/* @__PURE__ */ X(`label`,{children:[`JSON `,/* @__PURE__ */ Y(s,{"aria-label":`事件 JSON 模式`,size:`small`,checked:f,onChange:p})]})]}),/* @__PURE__ */ Y(`p`,{children:`填写变更前后数据,事件元信息自动生成。输入本身不会修改数据表;后续节点会真实执行修改和外部请求。`}),/* @__PURE__ */ X(`div`,{className:`arc-record-test-tools`,children:[/* @__PURE__ */ Y(A,{size:`small`,onClick:()=>B(),children:`生成示例`}),/* @__PURE__ */ Y(A,{size:`small`,loading:v,onClick:()=>void pe(),children:`载入最近事件`})]}),d&&/* @__PURE__ */ Y(ti,{context:d,filter:t,input:O,valid:oe&&I&&R,onApply:me}),b&&/* @__PURE__ */ Y(`p`,{role:`status`,children:b}),S&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:S}),f||!O?/* @__PURE__ */ Y(r,{"aria-label":`测试事件 JSON`,rows:12,value:o,onChange:e=>{E.current++,c(e)}}):/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ X(`label`,{className:`arc-record-test-operation`,children:[`触发操作`,/* @__PURE__ */ Y(a,{"aria-label":`测试事件操作`,value:k,optionList:e.operations.map(e=>({value:e,label:tt[e]})),onChange:t=>{z(Vr(e,t,M??N,N??M,i,O)),L(!0),se(!0)}})]}),/* @__PURE__ */ X(`label`,{className:`arc-record-test-ignore`,children:[/* @__PURE__ */ Y(s,{"aria-label":`显示全部事件字段`,size:`small`,checked:m,onChange:h}),`显示全部字段`,/* @__PURE__ */ Y(`small`,{children:`默认显示 ID、必填和触发规则字段`})]}),/* @__PURE__ */ X(`div`,{className:`arc-record-test-snapshots`,children:[!ce&&/* @__PURE__ */ X(`section`,{"data-record-snapshot":`before`,children:[/* @__PURE__ */ Y(`h4`,{children:`变更前数据`}),/* @__PURE__ */ Y(ri,{schema:ue,visibleFields:de,value:M??{},onChange:e=>fe(`before`,e),onValidityChange:L},`before:`+k+`:`+w)]}),!le&&/* @__PURE__ */ X(`section`,{"data-record-snapshot":`after`,children:[/* @__PURE__ */ Y(`h4`,{children:`变更后数据`}),/* @__PURE__ */ Y(ri,{schema:ue,visibleFields:de,value:N??{},onChange:e=>fe(`after`,e),onValidityChange:se},`after:`+k+`:`+w)]})]}),!!he.length&&/* @__PURE__ */ X(`div`,{className:`arc-record-test-diff`,children:[/* @__PURE__ */ Y(`strong`,{children:`变化字段`}),he.map(e=>/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(j,{color:`orange`,children:e.title}),/* @__PURE__ */ X(`code`,{children:[ge(M?.[e.name]),` → `,ge(N?.[e.name])]})]},e.name))]})]}),!oe&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:ae.length?ae.join(` `):`事件输入结构不完整或字段类型错误,请检查数据或生成示例。`}),/* @__PURE__ */ X(`div`,{className:`arc-record-test-rules`,role:`status`,children:[/* @__PURE__ */ Y(`strong`,{children:F?`满足当前触发规则`:`未满足当前触发规则`}),/* @__PURE__ */ Y(`div`,{children:P.map(e=>/* @__PURE__ */ X(j,{color:e.valid?`green`:`orange`,children:[e.valid?`✓`:`×`,` `,e.label]},e.label))}),/* @__PURE__ */ Y(`small`,{children:`根据当前输入预览;正式事件仍由 Go 在提交后判断。`})]}),O&&/* @__PURE__ */ X(`details`,{children:[/* @__PURE__ */ Y(`summary`,{children:`逐项触发条件`}),/* @__PURE__ */ Y(Kr,{checks:rt(t,O),table:e,onNavigate:d?.onNavigate})]}),!oe&&/* @__PURE__ */ Y(`div`,{className:`arc-event-input-errors`,role:`alert`,children:Rt(o,n).errors.slice(0,20).map((e,t)=>/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(A,{size:`small`,theme:`borderless`,onClick:()=>ie(e.path),children:e.path||`事件输入`}),`:`,e.message]},t))}),!F&&/* @__PURE__ */ X(`label`,{className:`arc-record-test-ignore`,children:[/* @__PURE__ */ Y(s,{"aria-label":`忽略触发规则测试节点`,size:`small`,checked:g,onChange:_}),`忽略触发规则,仅测试流程节点`]})]})}function ai(){return(ai=e((()=>{P(),Fn(),Kn(),Gr(),ni(),Jr()})))()}function oi({client:e,visible:t,onClose:n,onImported:r}){let[o,s]=q(),[c,d]=q(``),[f,p]=q(``),[m,h]=q([]),[g,_]=q(!1),[v,y]=q({}),[b,x]=q({}),[S,C]=q({}),w=Et(t&&!!o?.credentials.length),T=wt(t&&!!o?.models.length),E=pt(Q.summaries,{query:{page:1,pageSize:200,published:!0}},{enabled:t&&!!o?.workflows.length,requestOptions:{client:e}}),D=$(Q.importDefinition,{requestOptions:{client:e},invalidate:xt,onSuccess:e=>{l.success(`已导入为新草稿`),ee(),n(),r(e)}});function ee(){s(void 0),d(``),p(``),h([]),y({}),x({}),C({})}function te(){D.isPending||g||(ee(),n())}async function ne(e){if(e){if(ee(),e.size>10485760)p(`定义文件不能超过 10 MB`);else{_(!0);try{let t=rn(await e.text());p(t.error),h(t.issues),t.document&&(s(t.document),d(t.document.name))}catch{p(`无法读取文件,请重新选择。`)}finally{_(!1)}}}}let re=!!o&&o.credentials.every(e=>v[e.id])&&o.workflows.every(e=>b[`${e.id}:${e.version}`])&&o.models.every(e=>S[e.id]);return/* @__PURE__ */ Y(u,{title:`导入工作流定义`,visible:t,onCancel:te,width:560,className:`arc-workflow-import`,children:/* @__PURE__ */ X(`div`,{className:`arc-automation-settings`,children:[/* @__PURE__ */ Y(`p`,{children:`只创建未发布、停用的新草稿。请明确选择本机的凭据、子流程版本和模型;不自动沿用来源环境的 ID。`}),/* @__PURE__ */ X(`label`,{children:[`定义文件`,/* @__PURE__ */ Y(`input`,{"aria-label":`工作流定义文件`,type:`file`,accept:`.json,application/json`,disabled:D.isPending||g,onChange:e=>{let t=e.target.files?.[0];e.target.value=``,ne(t)}})]}),g&&/* @__PURE__ */ Y(N,{}),o&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ X(`label`,{children:[`工作流名称`,/* @__PURE__ */ Y(i,{"aria-label":`导入工作流名称`,value:c,maxLength:120,onChange:d})]}),o.credentials.map(e=>/* @__PURE__ */ X(`label`,{children:[`凭据:`,e.name,/* @__PURE__ */ Y(a,{"aria-label":`绑定凭据 ${e.name}`,loading:w.isFetching,value:v[e.id],style:{width:`100%`},placeholder:`选择同类型的本机凭据`,optionList:w.data?.filter(t=>t.kind===e.kind).map(e=>({value:e.id,label:e.name}))??[],onChange:t=>y(n=>({...n,[e.id]:Number(t)}))})]},e.id)),o.workflows.map(e=>{let t=`${e.id}:${e.version}`;return/* @__PURE__ */ X(`label`,{children:[`子流程:`,e.name,` v`,e.version,/* @__PURE__ */ Y(a,{"aria-label":`绑定子流程 ${e.name}`,loading:E.isFetching,value:b[t]?.id,style:{width:`100%`},placeholder:`选择本机已发布流程的当前版本`,optionList:E.data?.list.map(e=>({value:e.uuid,label:`${e.name} · v${e.publishedVersion}`}))??[],onChange:e=>{let n=E.data?.list.find(t=>t.uuid===e);n&&x(e=>({...e,[t]:{id:n.uuid,version:n.publishedVersion}}))}})]},t)}),o.models.map(e=>/* @__PURE__ */ X(`label`,{children:[`模型:`,e.name,/* @__PURE__ */ Y(a,{"aria-label":`绑定模型 ${e.name}`,loading:T.isFetching,value:S[e.id],style:{width:`100%`},placeholder:`选择宿主可用模型`,optionList:T.data?.models?.map(e=>({value:e.id,label:e.name}))??[],onChange:t=>C(n=>({...n,[e.id]:String(t)}))})]},e.id))]}),o&&!re&&/* @__PURE__ */ Y(M,{type:`info`,closeIcon:null,description:`请绑定全部依赖后再导入;本机没有可用选项时,请先配置凭据、发布子流程或启用模型。`}),m.length>0&&/* @__PURE__ */ Y(`ul`,{"aria-label":`定义字段错误`,children:m.map((e,t)=>/* @__PURE__ */ Y(`li`,{children:e},t))}),[f,D.error?.message,w.error?.message,E.error?.message,T.error?.message].filter(Boolean).map((e,t)=>/* @__PURE__ */ Y(M,{type:`danger`,closeIcon:null,description:e},t)),/* @__PURE__ */ Y(A,{theme:`solid`,disabled:!re||!c.trim()||g||D.isPending,loading:D.isPending,onClick:()=>{o&&D.mutate({body:{document:o,name:c.trim(),credentialBindings:v,workflowBindings:b,modelBindings:S}})},children:`导入并设计`})]})})}function si(){return(si=e((()=>{P()})))()}function ci(e){return/* @__PURE__ */ Y(_t.Provider,{value:e.client,children:/* @__PURE__ */ Y(li,{...e})})}function li({client:e,user:t,hasPermission:n}){let r=Be(),[i,a]=q(!1),[o,s]=q(!1),[u,f]=q(`rename`),[p,h]=q(),g=$(Q.rename,{requestOptions:{client:e},invalidate:xt}),_=$(Q.copy,{requestOptions:{client:e},invalidate:xt}),v=$(Q.archive,{requestOptions:{client:e},invalidate:xt,onError:e=>l.error(e.message)}),b=he({entityName:`工作流`,defaults:{name:``},toValues:e=>({name:u===`copy`?e.name.slice(0,115)+` · 副本`:e.name}),save:{isPending:g.isPending||_.isPending,mutateAsync:({values:e})=>{if(!b.editing)throw Error(`请选择工作流`);let t={params:{id:b.editing.uuid},body:{name:e.name.trim(),revision:b.editing.revision}};return u===`copy`?_.mutateAsync(t):g.mutateAsync(t)}},successMessage:()=>u===`copy`?`已创建新草稿`:`名称已更新`,onSaved:e=>{u===`copy`&&r(`/extensions/automation/designer?id=${e.uuid}`)}}),x=async t=>{h(t.id);try{let n=await dt(Q.exportDefinition,{params:{id:t.uuid}},{client:e}),r=URL.createObjectURL(new Blob([JSON.stringify(n,null,2)],{type:`application/json`})),i=window.document.createElement(`a`);i.href=r,i.download=`workflow-${t.uuid}.arcbase.json`,i.click(),setTimeout(()=>URL.revokeObjectURL(r),1e3)}catch(e){l.error(e instanceof Error?e.message:`导出失败`)}finally{h(void 0)}},S=le({op:Q.summaries,useList:Ot,table:{empty:`没有符合条件的工作流,可重置筛选或创建新流程`}}),C=$(Q.create,{requestOptions:{client:e},invalidate:bt}),w=he({entityName:`工作流`,defaults:{name:``},save:{isPending:C.isPending,mutateAsync:async({values:e})=>{let n=E.data?.find(e=>e.kind===`hmac`);if(i&&(!T.data?.sources.some(e=>e.name===`inventory.quantity`)||!n))throw Error(`库存事件来源或 HMAC 凭据不可用,请检查配置`);return C.mutateAsync({body:{name:e.name.trim(),actorId:t.id,graph:i?Ze(void 0,n.id):Je(),trigger:{kind:i?`event`:`api`,source:i?`inventory.quantity`:``,cron:``,timezone:`Asia/Shanghai`,inputSchema:{type:`object`}}}})}},onSaved:e=>r(`/extensions/automation/designer?id=${e.uuid}`)}),T=wt(w.visible&&i),E=Et(w.visible&&i),D=i&&(T.isFetching||E.isFetching),ee=!!T.data?.sources.some(e=>e.name===`inventory.quantity`)&&!!E.data?.some(e=>e.kind===`hmac`),te=$(Q.enabled,{requestOptions:{client:e},invalidate:(e,t,n)=>(e.invalidateQueries({queryKey:ft(Q.detail,{params:n.params})}),bt(e))}),ne=L({isEnabled:e=>e.enabled,disabled:e=>!n(`host:automation:manage`)||!e.publishedVersion||!!e.archived,toggle:(e,t)=>te.mutateAsync({params:{id:e.uuid},body:{enabled:t}}),confirmDisable:e=>({title:`停用工作流「${e.name}」?`,content:`停用后不再接受新的业务事件、定时或接口触发,已开始的运行不会因此撤销。`})}),re=e=>{a(e),w.openCreate()},ie=[{title:`工作流`,dataIndex:`name`,minWidth:300,render:(e,t)=>/* @__PURE__ */ X(`div`,{className:`arc-automation-flow-name`,children:[/* @__PURE__ */ Y(`span`,{className:`arc-automation-flow-icon`,children:/* @__PURE__ */ Y(Hn,{name:`workflow`})}),/* @__PURE__ */ X(`div`,{className:`arc-automation-flow-info`,children:[/* @__PURE__ */ Y(A,{theme:`borderless`,title:e,className:`arc-automation-flow-link`,onClick:()=>r(`/extensions/automation/designer?id=${t.uuid}`),children:e}),/* @__PURE__ */ Y(qn,{uuid:t.uuid}),/* @__PURE__ */ X(`small`,{children:[t.nodeCount,` 个节点`,t.nodeCount===t.rootNodeCount?``:`(主流程 ${t.rootNodeCount})`,` · 草稿 r`,t.revision]})]})]})},{title:`触发方式`,width:130,render:(e,t)=>/* @__PURE__ */ Y(j,{color:`violet`,children:ui[t.trigger.kind]})},{title:`发布状态`,dataIndex:`publishedVersion`,width:130,render:e=>e?/* @__PURE__ */ X(j,{color:`green`,children:[`已发布 v`,e]}):/* @__PURE__ */ Y(j,{children:`未发布`})},ue,ne.column({title:`启用状态`,dataIndex:`enabled`,width:100}),ce({width:220,desktopInlineKeys:[`design`,`runs`],actions:e=>[{key:`design`,label:`设计`,onClick:()=>r(`/extensions/automation/designer?id=${e.uuid}`)},{key:`runs`,label:`运行记录`,onClick:()=>r(`/extensions/automation/runs?workflowId=${e.uuid}`)},{key:`rename`,label:`重命名`,hidden:!n(`host:automation:manage`)||e.archived,onClick:()=>{f(`rename`),b.openEdit(e)}},{key:`copy`,label:`复制为新草稿`,hidden:!n(`host:automation:manage`),onClick:()=>{f(`copy`),b.openEdit(e)}},{key:`export`,label:`导出定义`,loading:p===e.id,onClick:()=>x(e)},{key:`archive`,label:e.archived?`恢复归档`:`归档`,hidden:!n(`host:automation:manage`),danger:!e.archived,disabled:v.isPending,onClick:()=>{I({title:e.archived?`恢复「${e.name}」?`:`归档「${e.name}」?`,okText:e.archived?`恢复`:`归档`,content:e.archived?`恢复后保持停用,需要手动启用。`:`停止新触发;草稿、发布历史和已有运行仍保留,可随时恢复。`,onOk:()=>v.mutateAsync({params:{id:e.uuid},body:{archived:!e.archived,revision:e.revision}})})}}]})],k=T.error??E.error;return/* @__PURE__ */ X(`div`,{className:`page-container arc-automation-list`,children:[/* @__PURE__ */ Y(`div`,{className:`arc-automation-page-heading`,children:/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(c.Title,{heading:4,children:`工作流`}),/* @__PURE__ */ Y(c.Text,{type:`tertiary`,children:`编辑草稿、发布流程并管理触发状态;列表按最近更新排列。`})]})}),S.listQuery.error&&/* @__PURE__ */ Y(M,{type:`danger`,closeIcon:null,description:`工作流加载失败:${S.listQuery.error.message}`,icon:null}),/* @__PURE__ */ Y(m,{searchConfig:d({page:S,filters:[`keyword`,`published`,`enabled`,`archived`],create:/* @__PURE__ */ Y(y,{permission:`host:automation:manage`,onClick:()=>re(!1),children:`新增工作流`}),actions:/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(A,{disabled:!n(`host:automation:manage`),onClick:()=>re(!0),children:`库存模板`}),/* @__PURE__ */ Y(A,{disabled:!n(`host:automation:manage`),onClick:()=>s(!0),children:`导入定义`})]})}),columns:ie,...S.tableProps}),/* @__PURE__ */ Y(oi,{client:e,visible:o,onClose:()=>s(!1),onImported:e=>r(`/extensions/automation/designer?id=${e.uuid}`)}),/* @__PURE__ */ Y(ve,{modal:b,title:u===`copy`?`复制工作流`:`重命名工作流`,header:u===`copy`?/* @__PURE__ */ Y(`p`,{children:`仅复制草稿定义;新流程未发布且停用,不复制运行记录。`}):void 0,children:/* @__PURE__ */ Y(O.Input,{field:`name`,label:`工作流名称`,maxLength:120,rules:[{required:!0,message:`请输入名称`},{validator:(e,t)=>typeof t==`string`&&!!t.trim(),message:`名称不能为空白`}]})}),/* @__PURE__ */ Y(ve,{modal:w,title:i?`从库存模板创建`:`创建工作流`,okText:`创建并设计`,okButtonProps:{...w.modalProps.okButtonProps,"aria-label":`创建并设计`,disabled:C.isPending||D||i&&!ee},header:/* @__PURE__ */ X(`div`,{className:`arc-automation-create-help`,children:[/* @__PURE__ */ Y(c.Paragraph,{type:`tertiary`,children:i?`创建后请在画布中配置 Webhook 地址,再保存和发布。`:`创建仅保存草稿;编辑、校验并发布后才可启用。`}),i&&!D&&!ee&&/* @__PURE__ */ Y(M,{type:`warning`,closeIcon:null,description:k?`模板配置加载失败:${k.message}`:`库存模板需要 inventory.quantity 事件来源和 HMAC 凭据。请配置后重新打开。`}),i&&!D&&!E.data?.some(e=>e.kind===`hmac`)&&/* @__PURE__ */ Y(A,{onClick:()=>r(`/extensions/automation/credentials`),children:`管理连接凭据`})]}),children:/* @__PURE__ */ Y(O.Input,{field:`name`,label:`工作流名称`,placeholder:i?`例如:库存阈值通知`:`输入工作流名称`,maxLength:120,rules:[{required:!0,message:`请输入工作流名称`},{validator:(e,t)=>typeof t==`string`&&!!t.trim(),message:`工作流名称不能为空白`}]})})]})}var ui;function di(){return(di=e((()=>{P(),z(),ge(),_e(),f(),R(),b(),p(),se(),de(),Kn(),F(),si(),Jn(),ui={event:`业务事件`,schedule:`定时调度`,api:`接口调用`}})))()}function fi({error:e}){return e?/* @__PURE__ */ Y(`div`,{role:`alert`,className:`arc-automation-error`,children:e.message}):null}function pi(e){let[t]=Ve();return/* @__PURE__ */ Y(_t.Provider,{value:e.client,children:/* @__PURE__ */ Y(mi,{...e},t.get(`id`)??``)})}function mi(e){let{client:t}=e,i=or(t),[a]=Ve(),o=Be(),s=Mt(),c=dn(),u=pn(),d=a.get(`id`)??``,f=ut.safeParse(d).success,{state:p,setBreakpoints:m,setDebugEnabled:h,setDraft:g,setPreparingTest:_,setSettings:v,setTestOpen:y,setTestInput:b,setRunId:x,setSelectedNodeId:S,setLocalIssues:C,setSettingsDirty:w,setSettingsFocus:T,setTestInputValid:E,setVersionsOpen:D,setTestNodeId:ee,setNodeTestInput:te,setNodeTestSelection:ne,setNodeTestLabel:re,setNodeTestSchema:ie,setNodeTestContext:O,setNodeTestContextError:M,invalidateExecution:P,runStarted:F,validationCompleted:ae,draftSaved:oe}=jt(d),{breakpoints:I,debugEnabled:L,draft:R,preparingTest:se,settings:ce,testOpen:le,testInput:z,runId:B,issues:V,validated:ue,selectedNodeId:de,localIssues:fe,settingsDirty:pe,settingsFocus:me,testInputValid:he,versionsOpen:ge,testNodeId:H,nodeTestInput:_e,nodeTestSelection:ve,nodeTestLabel:ye,nodeTestSchema:be,nodeTestContext:xe,nodeTestContextError:Se}=p,we=pt(Q.detail,{params:{id:d}},{enabled:f,refetchOnWindowFocus:!1,requestOptions:{client:t}}),Te=we.data?.id??0,U=d,Ee=wr(e.user.id,`workflow:`+Te),G=Tr(e.user.id,Te),De=K(void 0),q=wt(),Oe=Et(),ke=K(!1),Z=R??we.data,Ae=Gt(B??``,t),je=K(void 0);W(()=>{if(!Z||!q.data)return;let t=Te+`:`+Z.trigger.kind+`:`+(Z.trigger.kind===`event`?Z.trigger.source:JSON.stringify(Z.trigger.inputSchema));if(je.current===t)return;je.current=t;let n=Z.trigger.kind===`event`?q.data.sources.find(e=>e.name===Z.trigger.source):void 0,r=n?.schema??Z.trigger.inputSchema,i=n?.recordTable&&Z.trigger.record?Hr(n.recordTable,Z.trigger.record,e.user.id):Z.trigger.kind===`event`&&Z.trigger.source===`inventory.quantity`?{itemId:1,before:{quantity:12},after:{quantity:8}}:It(r);b(JSON.stringify(i&&typeof i==`object`&&!Array.isArray(i)?i:{},null,2))},[Te,Z,q.data,e.user.id,b]);let Me=fe.some(e=>e.code===`json_invalid`||e.code===`schema_invalid`);On(!!R||Me||pe);let{save:Ne,publish:Pe,enabled:Fe,validation:Ie,updateCache:Le}=Tn({client:t,reference:d,current:Z,runId:B,remember:G.remember,editor:{draftSaved:oe,validationCompleted:ae}}),{test:Re,testNode:ze,debug:He}=En({client:t,remember:G.remember,editor:{runStarted:F}});W(()=>{if(!we.data)return;let t=e.user.id+`:`+Te;De.current!==t&&(De.current=t,G.bookmark?.revision===we.data.revision&&x(G.bookmark.runId))},[we.data,Te,e.user.id,G.bookmark,x]);let Ue=K(void 0),{data:We,loadNode:Ge}=Ae;W(()=>{let e=We;if(!e||e.nodeTest||e.id!==G.bookmark?.runId||Ue.current===e.id||e.workflowId!==Te)return;let t=e.nodes.find(t=>e.graph.nodes.some(e=>e.id===t.nodeId&&e.type===`core.trigger`));Ue.current=e.id,t&&Ge(t.nodeId).then(()=>{let n=s.getQueryData(Wt(e.id))?.nodes.find(e=>e.nodeId===t.nodeId);Ue.current===e.id&&n&&!n.dataOmitted&&b(JSON.stringify(n.input??{},null,2))}).catch(()=>{})},[We,Ge,Te,s,G.bookmark,b]);let qe=e=>{(!Z||Ye(Z,e).length)&&(G.remember(void 0),P()),g(e)},Je=()=>o(`/extensions/automation/workflows`);if(!f)return/* @__PURE__ */ X(`div`,{className:`arc-automation-workspace`,children:[/* @__PURE__ */ Y(A,{onClick:Je,children:`返回列表`}),/* @__PURE__ */ Y(`p`,{children:`工作流 UUID 不正确`})]});if(we.error||q.error)return/* @__PURE__ */ X(`div`,{className:`arc-automation-workspace`,children:[/* @__PURE__ */ Y(A,{onClick:Je,children:`返回列表`}),/* @__PURE__ */ Y(fi,{error:we.error??q.error})]});if(!Z||!q.data)return/* @__PURE__ */ Y(N,{});let Xe=!!Z.archived||se||Ne.isPending||Pe.isPending||Fe.isPending||Ie.isPending||Re.isPending||ze.isPending||He.isPending,Ze=Z.trigger.kind===`event`?q.data.sources.find(e=>e.name===Z.trigger.source):void 0,$e=()=>Ie.mutateAsync({body:{name:Z.name,actorId:Z.actorId,graph:Z.graph,trigger:Z.trigger}}),et=async()=>{(await $e()).valid&&await Pe.mutateAsync({params:{id:U},body:{revision:Z.revision}})},tt=async(e=`continue`)=>{if(ke.current)return;let t,r;try{let e=JSON.parse(H?_e:z);if(!e||typeof e!=`object`||Array.isArray(e))throw Error();t=e}catch{l.error(`测试输入须为合法 JSON 对象`);return}try{r=H&&ve?.path.length?Qe.parse(JSON.parse(xe)):void 0}catch{l.error(`单节点迭代上下文无效`);return}ke.current=!0,_(!0);try{if((!H||!ve)&&!(await $e()).valid)return;let i=R?await Ne.mutateAsync({id:U,values:{...Z}}):Z;if(H&&ve){await ze.mutateAsync({params:{id:U},body:{revision:i.revision,...ve,context:r,input:t}});return}if(L||e===`step`){let{resolveWorkflowSelection:r}=await n(async()=>{let{resolveWorkflowSelection:e}=await import(`@fudanda/workflow`);return{resolveWorkflowSelection:e}},[],import.meta.url);await He.mutateAsync({params:{id:U},body:{revision:i.revision,input:t,mode:e,breakpoints:I.flatMap(e=>{let t=r(i.graph,e);return t?[[...t.path,t.node.id]]:[]})}})}else await Re.mutateAsync({params:{id:U},body:{revision:i.revision,input:t}})}catch{}finally{ke.current=!1,_(!1)}};return/* @__PURE__ */ X(`div`,{className:`arc-automation-workspace`,onKeyDown:e=>{(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`s`&&!e.altKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),!ce&&!Xe&&!Me&&R&&Ne.mutate({id:U,values:{...Z}}))},children:[/* @__PURE__ */ Y(Vn,{info:/* @__PURE__ */ X(`div`,{className:`arc-automation-workspace-title`,children:[/* @__PURE__ */ Y(A,{"aria-label":`返回工作流列表`,onClick:Je,children:/* @__PURE__ */ Y(Hn,{name:`back`})}),/* @__PURE__ */ Y(`span`,{className:`arc-automation-flow-icon`,children:/* @__PURE__ */ Y(Hn,{name:`workflow`})}),/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(`strong`,{children:Z.name}),/* @__PURE__ */ Y(qn,{uuid:Z.uuid}),/* @__PURE__ */ X(`small`,{children:[Ke[Z.trigger.kind],` · 草稿 r`,Z.revision,` `,`· 发布 v`,Z.publishedVersion||`—`]})]}),/* @__PURE__ */ Y(j,{color:Z.archived?`grey`:R||Me?`orange`:`green`,children:Z.archived?`已归档 · 只读`:R||Me?`有未保存修改`:`已保存`})]}),actions:/* @__PURE__ */ X(k,{wrap:!0,children:[/* @__PURE__ */ Y(A,{onClick:()=>D(!0),children:`发布历史`}),/* @__PURE__ */ Y(A,{disabled:Xe,onClick:()=>{T(void 0),v(!0)},children:`工作流设置`}),/* @__PURE__ */ Y(A,{disabled:Xe||Me,onClick:()=>void $e(),children:`校验`}),/* @__PURE__ */ Y(A,{disabled:Xe||Me,onClick:()=>Ne.mutate({id:U,values:{...Z}}),children:`保存草稿`}),/* @__PURE__ */ Y(A,{theme:`solid`,disabled:Xe||Me||!!R,onClick:()=>void et(),children:`发布`}),/* @__PURE__ */ Y(A,{disabled:Xe||Me||!!R||!Z.publishedVersion,onClick:()=>Fe.mutate({params:{id:U},body:{enabled:!Z.enabled}}),children:Z.enabled?`停用`:`启用`})]})}),/* @__PURE__ */ Y(`div`,{className:`arc-automation-workspace-canvas`,children:/* @__PURE__ */ Y(Ce,{fallback:/* @__PURE__ */ Y(N,{}),children:/* @__PURE__ */ Y(xi,{...Ee,readOnly:Xe||ce,onSidePanelClose:()=>y(!1),promptKit:i,breakpoints:I,onBreakpointChange:Z.archived?void 0:(e,t)=>{m(n=>t?[...n.filter(t=>t!==e),e]:n.filter(t=>t!==e)),h(!0)},sidePanel:le?/* @__PURE__ */ X(In,{title:H?`单节点测试 / ${ye}`:`测试运行`,onClose:()=>y(!1),className:`arc-automation-test-panel`,footer:/* @__PURE__ */ X(k,{children:[!H&&/* @__PURE__ */ Y(A,{disabled:Xe||Me||!he||!!Se,onClick:()=>void tt(`step`),children:`单步开始`}),/* @__PURE__ */ Y(A,{theme:`solid`,loading:Re.isPending||ze.isPending||He.isPending,disabled:Xe||Me||!he||!!Se,onClick:()=>void tt(),children:`执行真实测试`})]}),children:[R&&/* @__PURE__ */ Y(`p`,{role:`status`,children:`试运行将先保存当前草稿,再执行。`}),!H&&/* @__PURE__ */ X(`label`,{className:`arc-automation-debug-mode`,children:[/* @__PURE__ */ Y(`input`,{type:`checkbox`,"aria-label":`断点调试`,checked:L,onChange:e=>h(e.target.checked)}),`断点调试 · `,I.length,` 个断点`]}),!H&&Ze?.recordTable&&Z.trigger.record?/* @__PURE__ */ Y(ii,{debugContext:{client:t,workflowId:U,revision:Z.revision,table:Ze.recordTable,onNavigate:e=>{y(!1),T(e),v(!0)},prepareListen:async()=>{if(Me)throw Error(`请先修正未完成的字段`);return(R?await Ne.mutateAsync({id:U,values:{...Z}}):Z).revision}},table:Ze.recordTable,filter:Z.trigger.record,schema:Ze.schema,actorId:e.user.id,value:z,onChange:b,onValidityChange:E,onLoadRecent:()=>Ur(t,U,Ze.recordTable.name)},Te+`:`+Ze.name):/* @__PURE__ */ Y(Nn,{schema:H?be:Z.trigger.kind===`event`?q.data.sources.find(e=>e.name===Z.trigger.source)?.schema??Z.trigger.inputSchema:Z.trigger.inputSchema,value:H?_e:z,onChange:H?te:b,onValidityChange:E,description:(H?`输入为该节点解析后的参数;不会执行上游节点。`:`输入会传给开始节点。`)+`本次测试会真实执行业务修改和外部请求。`},H??`workflow`),H&&!!ve?.path.length&&/* @__PURE__ */ X(`div`,{className:`arc-automation-node-test-context`,children:[/* @__PURE__ */ Y(`strong`,{children:`迭代上下文`}),/* @__PURE__ */ X(`p`,{children:[`作用域:`,ve.path.join(` / `),`。仅标记本次独立测试;请输入已经解析的节点参数,不执行前驱、其他迭代或同级节点。`]}),/* @__PURE__ */ Y(r,{"aria-label":`单节点迭代上下文`,rows:5,value:xe,onChange:e=>{O(e);try{Qe.parse(JSON.parse(e)),M(``)}catch{M(`上下文需包含非负整数 index、可选 item 和对象 variables`)}}}),Se&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:Se})]}),B&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ X(`div`,{className:`arc-automation-test-section`,children:[/* @__PURE__ */ Y(`strong`,{children:`运行结果`}),/* @__PURE__ */ Y(_i,{run:Ae.data,connection:Ae.connection}),/* @__PURE__ */ Y(A,{size:`small`,theme:`borderless`,onClick:()=>{G.remember(void 0),x(void 0)},children:`清除结果`})]}),/* @__PURE__ */ Y(vi,{runId:B,props:e,onNodeSelect:e=>{S(Ae.data?.nodeTest&&e===Ae.data.nodeTest.nodeId?Ht(Ae.data)?.[0]?.nodeId??e:e??null),y(!1)}}),/* @__PURE__ */ Y(gi,{runId:B,props:e,onRun:e=>{G.remember(e,Z.revision),x(e)}})]})]}):void 0,toolbarExtra:/* @__PURE__ */ Y(Un,{disabled:Xe||Me,onClick:()=>{ee(void 0),M(``),y(!0)}}),onNodeTest:(e,t)=>{n(async()=>{let{workflowNodeTestTarget:e}=await import(`@fudanda/workflow`);return{workflowNodeTestTarget:e}},[],import.meta.url).then(({workflowNodeTestTarget:n})=>{let r=n(Z.graph,e,t,Ae.data?.nodeTest?void 0:Ae.data?.nodes);r&&(ee(e),ne(r.selection),re([...r.path,r.node.label||r.node.id].join(` / `)),ie(r.node.type===`core.trigger`&&r.path.length?{type:`object`,properties:{index:{type:`integer`},item:{},variables:{type:`object`}}}:q.data.nodes.find(e=>e.type===r.node.type&&e.version===r.node.version)?.inputSchema??{type:`object`}),te(JSON.stringify(r.node.type===`core.trigger`&&r.selection.context?r.selection.context:r.input,null,2)),O(JSON.stringify(r.selection.context??{},null,2)),M(``),y(!0))})},onNodeResultRequest:e=>Ae.loadNode(Ae.data?.nodeTest?.nodeId??e),nodeRuns:Ht(Ae.data),selectedNodeId:de,onNodeSelect:e=>{S(e),e&&y(!1)},diagnostics:V,value:Z.graph,catalog:q.data.nodes,models:q.data.models,sources:q.data.sources.map(e=>e.name),onInputSchemaChange:Z.trigger.kind===`event`?void 0:e=>qe({...Z,trigger:{...Z.trigger,inputSchema:e}}),sourceSchemas:Z.trigger.kind===`event`?Object.fromEntries(q.data.sources.filter(e=>e.name===Z.trigger.source).map(e=>[e.name,e.schema])):{trigger:Z.trigger.inputSchema},credentials:Oe.data,theme:c,themeColors:u,height:`100%`,onChange:e=>qe({...Z,graph:e}),onValidationChange:C})})}),/* @__PURE__ */ X(`footer`,{className:`arc-automation-debug`,children:[/* @__PURE__ */ X(`div`,{className:`arc-automation-debug-heading`,children:[/* @__PURE__ */ Y(`strong`,{children:`调试与校验`}),/* @__PURE__ */ X(`small`,{children:[ue&&!V.length?`服务端校验通过`:`${(V.length?V:fe).length} 条诊断`,` `,`· 流程修改需显式保存`]}),B&&/* @__PURE__ */ Y(A,{size:`small`,theme:`borderless`,onClick:()=>y(!0),children:`查看测试结果`})]}),(V.length?V:fe).slice(0,4).map((e,t)=>/* @__PURE__ */ X(A,{theme:`borderless`,className:`arc-automation-diagnostic`,onClick:()=>{y(!1),e.nodeId?S(e.nodeId):(e.path===`name`||e.path===`actorId`||e.path.startsWith(`trigger`))&&(T(e.path),v(!0))},children:[e.nodeId?`${e.nodeId} / `:``,e.path,`:`,e.message]},t))]}),/* @__PURE__ */ Y(rr,{workflow:Z,client:t,visible:ge,dirty:!!R||Me,onClose:()=>D(!1),onRestored:Le}),ce&&/* @__PURE__ */ Y(Fr,{workflow:Z,catalog:q.data,client:t,saving:Ne.isPending,focusPath:me,onDirtyChange:w,onClose:()=>v(!1),onSave:async e=>{let t={...Z,...e};await Ne.mutateAsync({id:U,values:t}),Ye(Z,t).length&&(G.remember(void 0),P())}},Te)]})}function hi(e,t){return Kt(e,t.client)}function gi({runId:e,props:t,onRun:n}){let{client:r}=t,i=hi(e,t),a=Mt(),o={requestOptions:{client:r},onSuccess:e=>{e&&(a.setQueryData(Wt(e.id),e),yt(a),n(e.id))},onError:e=>l.error(e.message)},s=$(Q.cancel,o),c=$(Q.retry,o),u=$(Q.rerun,o),d=i.data,f=s.isPending||c.isPending||u.isPending;return/* @__PURE__ */ X(k,{wrap:!0,children:[/* @__PURE__ */ Y(A,{disabled:f||!d||![`pending`,`running`,`paused`].includes(d.status),onClick:()=>I({title:`取消本次运行?`,content:`已完成的业务修改和外部请求不会撤销。`,onOk:()=>s.mutateAsync({params:{runId:e},body:{}}).then(()=>void 0)}),children:`取消运行`}),/* @__PURE__ */ Y(A,{disabled:f||d?.status!==`failed`,onClick:()=>c.mutate({params:{runId:e},body:{}}),children:`从失败处重试`}),/* @__PURE__ */ Y(A,{disabled:f||!d,onClick:()=>I({title:`重新运行?`,content:`将创建新运行并重新执行节点,可能再次产生业务效果。`,onOk:()=>u.mutateAsync({params:{runId:e},body:{}}).then(()=>void 0)}),children:`重新运行`})]})}function _i({run:e,connection:t}){return!e||![`pending`,`running`,`paused`].includes(e.status)?null:/* @__PURE__ */ Y(j,{"aria-live":`polite`,"data-testid":`workflow-stream-connection`,color:t===`connected`?`green`:`orange`,children:t===`connected`?`实时连接`:t===`connecting`?`连接中`:`连接中断 · 正在恢复查询`})}function vi({runId:e,props:t,onNodeSelect:n}){let r=hi(e,t),i=Be(),a=r.data,o=a?Jt(a):[];return/* @__PURE__ */ X(`div`,{className:`arc-automation-debug-run`,children:[/* @__PURE__ */ X(`div`,{className:`arc-automation-run-overview`,children:[/* @__PURE__ */ Y(j,{color:a?.status===`failed`?`red`:a?.status===`succeeded`?`green`:`violet`,children:St[a?.status??`pending`]}),/* @__PURE__ */ X(`span`,{children:[o.filter(e=>e.node.status===`succeeded`).length,` /`,` `,o.length,` 个已记录节点成功`]}),/* @__PURE__ */ Y(A,{size:`small`,theme:`borderless`,onClick:()=>i(`/extensions/automation/inspect?runId=`+encodeURIComponent(e)),children:`检查运行`})]}),/* @__PURE__ */ Y(`code`,{className:`arc-automation-run-id`,children:e}),a&&/* @__PURE__ */ Y(gr,{run:a,compact:!0,onSelect:e=>n?.(e)}),/* @__PURE__ */ Y(fi,{error:r.error}),a?.error&&/* @__PURE__ */ Y(`span`,{role:`alert`,children:a.error})]})}function yi(e){return/* @__PURE__ */ Y(_t.Provider,{value:e.client,children:/* @__PURE__ */ Y(bi,{props:e})})}function bi({props:e}){let[t]=Ve(),n=Be(),r=t.get(`runId`)??``,i=dn(),a=pn(),o=wt(),s=Gt(r,e.client),c=s.data,l=wr(e.user.id,`inspect:`+r),[u,d]=q(!0),[f,p]=q(!0),[m,h]=q(null),g=G(),_=()=>{p(!1),requestAnimationFrame(()=>{let e=document.getElementById(g),t=document.activeElement,n=e?.closest(`.arc-automation-workspace`)?.querySelector(`[data-workflow-designer]`);e&&(!t||t===document.body||n?.contains(t))&&e.focus({preventScroll:!0})})},v=Qt(c);W(()=>{h(null),d(!0),p(!0)},[r]),W(()=>{c?.debug?.pauseToken&&(d(!0),h(null))},[c?.debug?.pauseToken]);let y=e=>{h(e),d(!1)};return/* @__PURE__ */ X(`div`,{className:`arc-automation-workspace`,children:[/* @__PURE__ */ Y(Vn,{info:/* @__PURE__ */ X(`div`,{className:`arc-automation-workspace-title`,children:[/* @__PURE__ */ Y(A,{"aria-label":`返回运行列表`,onClick:()=>n(`/extensions/automation/runs`),children:`← 运行列表`}),/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(`strong`,{children:`运行检查`}),/* @__PURE__ */ X(`small`,{children:[r,` ·`,` `,c?.version===0?`草稿测试`:`版本 v`+(c?.version??`—`)]})]}),/* @__PURE__ */ Y(j,{color:c?.status===`failed`?`red`:c?.status===`succeeded`?`green`:`violet`,children:St[c?.status??`pending`]}),/* @__PURE__ */ Y(_i,{run:c,connection:s.connection})]}),actions:/* @__PURE__ */ X(k,{wrap:!0,children:[!f&&/* @__PURE__ */ Y(A,{id:g,onClick:()=>p(!0),children:`节点执行记录`}),c?.debug&&c.status===`paused`&&/* @__PURE__ */ Y(A,{onClick:()=>d(!0),children:`断点控制`}),/* @__PURE__ */ Y(gi,{runId:r,props:e,onRun:e=>n(`/extensions/automation/inspect?runId=`+encodeURIComponent(e),{replace:!0})})]})}),/* @__PURE__ */ Y(fi,{error:s.error??o.error}),!r&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:`请选择有效的运行记录。`}),c?.error&&/* @__PURE__ */ Y(`div`,{className:`arc-automation-error`,role:`alert`,children:c.error}),/* @__PURE__ */ Y(`div`,{className:`arc-automation-workspace-canvas`,children:c&&o.data?/* @__PURE__ */ Y(Ce,{fallback:/* @__PURE__ */ Y(N,{}),children:/* @__PURE__ */ Y(xi,{...l,value:c.graph,selectedNodeId:m??(c.status===`paused`?c.debug?.pausedNodeId:void 0),breakpointPaths:c.debug?.breakpoints,onNodeSelect:y,onNodeRunSelect:h,onSidePanelClose:()=>d(!1),sidePanel:u&&c.debug&&c.status===`paused`&&c.debug.pauseToken?/* @__PURE__ */ X(In,{title:`断点调试`,focusKey:c.debug.pauseToken,onFocusRestore:v.restored,onClose:()=>d(!1),children:[/* @__PURE__ */ Y(yr,{run:c,props:e,onProceed:v.proceed,onLoad:s.loadNode,onInspect:y},c.debug.pauseToken),/* @__PURE__ */ Y(`p`,{children:`修改输入仅影响本次节点执行,不改变草稿。执行前会重新检查账号与权限。`}),/* @__PURE__ */ X(`small`,{children:[`调试截止:`,/* @__PURE__ */ Y(V,{value:c.debug.expiresAt,mode:`absolute`})]})]}):void 0,catalog:o.data.nodes,models:o.data.models,onNodeResultRequest:e=>s.loadNode(e),nodeRuns:c.nodes,readOnly:!0,theme:i,themeColors:a,height:`100%`})}):!s.error&&!o.error&&r?/* @__PURE__ */ Y(N,{}):null}),f&&c&&/* @__PURE__ */ Y(Wn,{header:/* @__PURE__ */ X(`div`,{className:`arc-automation-debug-heading`,children:[/* @__PURE__ */ Y(`strong`,{tabIndex:-1,"data-workflow-records-heading":!0,children:`节点执行记录`}),/* @__PURE__ */ X(`small`,{children:[Jt(c).length,` 条 · 图结构 / 真实时间轴`]}),/* @__PURE__ */ Y(j,{children:St[c.status]})]}),onClose:_,children:/* @__PURE__ */ Y(gr,{run:c,selected:m,onSelect:y},c.id)})]})}var xi;function Si(){return(Si=e((()=>{Dn(),P(),F(),kn(),Kn(),Ln(),Fn(),Jn(),ar(),sr(),vr(),B(),br(),Or(),hn(),Ir(),ai(),Gr(),di(),t(),xi=we(async()=>{let e=await n(()=>import(`@fudanda/workflow`),[],import.meta.url);return await n(()=>import(`@fudanda/workflow/styles.css`),[],import.meta.url),{default:e.ArcBaseWorkflowDesigner}})})))()}function Ci(){return{id:`automation`,title:`自动化`,icon:`Workflow`,pages:[{id:`workflows`,title:`工作流`,icon:`Workflow`,path:`/extensions/automation/workflows`,permission:`host:automation:manage`,component:ci},{id:`runs`,title:`运行记录`,icon:`History`,path:`/extensions/automation/runs`,permission:`host:automation:manage`,component:yn},{id:`credentials`,title:`连接凭据`,icon:`KeyRound`,path:`/extensions/automation/credentials`,permission:`host:automation:manage`,component:xn},{id:`designer`,title:`工作流设计器`,icon:`Workflow`,path:`/extensions/automation/designer`,permission:`host:automation:manage`,component:pi,navigation:!1,layout:`workspace`},{id:`inspect`,title:`运行检查`,icon:`History`,path:`/extensions/automation/inspect`,permission:`host:automation:manage`,component:yi,navigation:!1,layout:`workspace`}]}}function wi(){return(wi=e((()=>{wn(),Si()})))()}function Ti(){return(Ti=e((()=>{wi()})))()}Ti();export{He as automationOperations,Ci as createAutomationAdminModule};
15
+ b(),on={name:`workflow`,size:24,node:[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`,key:`by2w9f`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`,key:`xkn7yn`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`,key:`1cgmvn`}]]},on.node,sn=x(on)})))()}function ln(){let e=()=>document.body.getAttribute(`theme-mode`)===`dark`?`dark`:`light`,[t,n]=q(e);return W(()=>{let t=new MutationObserver(()=>n(e()));return t.observe(document.body,{attributes:!0,attributeFilter:[`theme-mode`]}),()=>t.disconnect()},[]),t}function un(){let e=getComputedStyle(document.body);return Object.fromEntries(Object.entries(fn).map(([t,n])=>[t,e.getPropertyValue(n).trim()]).filter(([,e])=>e))}function dn(){let[e,t]=q(un);return W(()=>{let e=()=>t(e=>{let t=un();return JSON.stringify(e)===JSON.stringify(t)?e:t}),n=new MutationObserver(e),r={attributes:!0,attributeFilter:[`style`,`class`,`theme-mode`]};return n.observe(document.body,r),n.observe(document.documentElement,r),e(),()=>n.disconnect()},[]),e}var fn;function pn(){return(pn=e((()=>{fn={primary:`--arc-antd-color-primary`,primaryHover:`--arc-antd-color-primary-hover`,primaryActive:`--arc-antd-color-primary-active`,primaryLight:`--arc-antd-color-primary-light-default`,primaryLightHover:`--arc-antd-color-primary-light-hover`,primaryLightActive:`--arc-antd-color-primary-light-active`,background:`--arc-antd-color-bg-0`,surface:`--arc-antd-color-bg-1`,text:`--arc-antd-color-text-0`,muted:`--arc-antd-color-text-2`,border:`--arc-antd-color-border`,fill:`--arc-antd-color-fill-0`}})))()}function mn({client:e,target:t,onClose:n}){let r=ln(),i=dn(),a=ut(Q.version,{params:{id:t?.id??``,version:t?.version??1}},{enabled:!!t,requestOptions:{client:e}}),o=xt(!!t),s=a.error??o.error;return/* @__PURE__ */ X(u,{className:`arc-workflow-snapshot`,title:`原发布快照 · #${t?.id??``} v${t?.version??``}`,visible:!!t,onCancel:n,width:`min(1100px, 100vw)`,children:[/* @__PURE__ */ Y(`p`,{children:`只读展示此发布版本。后续草稿修改和重新发布不会改变它。`}),s&&/* @__PURE__ */ Y(L,{type:`danger`,closeIcon:null,description:/* @__PURE__ */ X(J,{children:[s.message,/* @__PURE__ */ Y(F,{onClick:()=>{a.refetch(),o.refetch()},children:`重试`})]})}),/* @__PURE__ */ Y(`div`,{style:{height:`calc(100vh - 160px)`,minHeight:300},children:a.data&&o.data?/* @__PURE__ */ Y(Ce,{fallback:/* @__PURE__ */ Y(P,{}),children:/* @__PURE__ */ Y(hn,{value:a.data.graph,catalog:o.data.nodes,models:o.data.models,readOnly:!0,theme:r,themeColors:i,height:`100%`},`${t?.id}:${t?.version}`)}):!s&&t?/* @__PURE__ */ Y(P,{}):null})]})}var hn;function gn(){return(gn=e((()=>{N(),pn(),t(),hn=we(async()=>{let e=await n(()=>import(`@fudanda/workflow`),[],import.meta.url);return await n(()=>import(`@fudanda/workflow/styles.css`),[],import.meta.url),{default:e.ArcBaseWorkflowDesigner}})})))()}function _n(e){return/* @__PURE__ */ Y(mt.Provider,{value:e.client,children:/* @__PURE__ */ Y(vn,{})})}function vn(){let e=Re(),t=bt(),[n,r]=q(),a=de({op:Q.runSummaries,useList:wt,table:{empty:`暂无符合条件的工作流运行记录`}});ft([`workflowId`,`status`],e=>{let t=st.safeParse(e.workflowId),n=Be.find(t=>t===e.status);a.applySearch({...a.submittedParams,...t.success?{workflowId:t.data}:{},...n?{status:n}:{}})});let o=[{title:`运行 ID`,dataIndex:`id`,minWidth:250,render:p},{title:`工作流`,width:220,render:(t,n)=>/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(F,{className:`arc-run-workflow-link`,theme:`borderless`,title:n.workflowName,onClick:()=>e(`/extensions/automation/designer?id=`+n.workflowUuid),children:n.workflowName}),n.workflowArchived&&/* @__PURE__ */ Y(R,{children:`已归档`})]})},{title:`版本 / 类型`,width:150,render:(e,t)=>/* @__PURE__ */ X(`div`,{children:[t.version===0?/* @__PURE__ */ Y(`span`,{children:`草稿测试`}):/* @__PURE__ */ X(F,{theme:`borderless`,onClick:()=>r({id:t.workflowUuid,version:t.version}),children:[`v`,t.version,` · 原发布快照`]}),/* @__PURE__ */ Y(`small`,{className:`arc-run-type`,children:t.nodeTest?`单节点测试`:t.debug?`断点调试`:`完整流程`})]})},{title:`状态`,dataIndex:`status`,width:120,render:e=>/* @__PURE__ */ Y(R,{color:e===`failed`?`red`:e===`succeeded`?`green`:`violet`,children:yt[e]??e})},f(`创建时间`,`createdAt`),ue({width:130,actions:t=>[{key:`inspect`,label:`查看`,onClick:()=>e(`/extensions/automation/inspect?runId=`+encodeURIComponent(t.id))}]})];return/* @__PURE__ */ X(`div`,{className:`page-container arc-automation-list`,children:[/* @__PURE__ */ Y(`div`,{className:`arc-automation-page-heading`,children:/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(c.Title,{heading:4,children:`运行记录`}),/* @__PURE__ */ Y(c.Text,{type:`tertiary`,children:`发布版本链接打开原始快照;草稿测试的执行定义在运行检查中查看。`})]})}),a.listQuery.error&&/* @__PURE__ */ Y(L,{type:`danger`,closeIcon:null,description:a.listQuery.error.message}),/* @__PURE__ */ Y(v,{searchConfig:m({page:a,filters:[`workflowId`,`status`,[`startTime`,`endTime`]],overrides:{workflowId:e=>/* @__PURE__ */ Y(i,{"aria-label":`筛选工作流 UUID`,placeholder:`工作流 UUID`,showClear:!0,value:String(e.bind(`workflowId`).value??``),onChange:t=>e.bind(`workflowId`).onChange(t||void 0)})}}),columns:o,...a.tableProps}),/* @__PURE__ */ Y(mn,{client:t,target:n,onClose:()=>r(void 0)})]})}function yn(e){return/* @__PURE__ */ Y(mt.Provider,{value:e.client,children:/* @__PURE__ */ Y(bn,{})})}function bn(){let e=bt(),[t,n]=q(),r=de({op:Q.credentialList,useList:St,table:{empty:`没有符合条件的连接凭据`}}),i=$(Q.credentialCreate,{requestOptions:{client:e},invalidate:ht}),a=H({entityName:`连接凭据`,save:{isPending:i.isPending,mutateAsync:({values:e})=>i.mutateAsync({body:{...e,name:e.name.trim()}})},defaults:{name:``,kind:`hmac`,secret:``}}),o=$(Q.credentialRemove,{requestOptions:{client:e},invalidate:ht,onError:e=>l.error(e.message)}),s=[{title:`名称`,dataIndex:`name`,minWidth:250},{title:`类型`,dataIndex:`kind`,width:180,render:e=>/* @__PURE__ */ Y(R,{color:`violet`,children:e===`hmac`?`Webhook HMAC`:`HTTP Bearer`})},{title:`状态`,width:180,render:()=>/* @__PURE__ */ Y(R,{color:`green`,children:`秘密已加密配置`})},ue({width:180,actions:e=>[{key:`references`,label:`查看引用`,onClick:()=>n(e)},{key:`delete`,label:`删除`,type:`danger`,disabled:o.isPending,onClick:()=>{se({title:`删除凭据「${e.name}」?`,content:`包括归档流程在内,仍被草稿或发布版本引用的凭据不能删除。请先查看引用。`,onOk:()=>o.mutateAsync({params:{id:e.id}})})}}]})];return/* @__PURE__ */ X(`div`,{className:`page-container arc-automation-list`,children:[/* @__PURE__ */ Y(`div`,{className:`arc-automation-page-heading`,children:/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(c.Title,{heading:4,children:`连接凭据`}),/* @__PURE__ */ Y(c.Text,{type:`tertiary`,children:`管理 HTTP 认证与 Webhook 签名,秘密仅写入、不回显。`})]})}),r.listQuery.error&&/* @__PURE__ */ Y(L,{type:`danger`,closeIcon:null,description:r.listQuery.error.message}),/* @__PURE__ */ Y(v,{searchConfig:m({page:r,filters:[`keyword`,`kind`],create:/* @__PURE__ */ Y(F,{theme:`solid`,onClick:a.openCreate,children:`新增凭据`})}),columns:s,...r.tableProps}),/* @__PURE__ */ X(ge,{modal:a,width:480,header:/* @__PURE__ */ Y(`p`,{children:`凭据通过宿主密钥加密保存,创建后无法查看原始秘密。`}),children:[/* @__PURE__ */ Y(ae.Input,{field:`name`,label:`凭据名称`,maxLength:120,rules:[{required:!0,message:`请输入名称`},{validator:(e,t)=>typeof t==`string`&&!!t.trim(),message:`名称不能为空白`}]}),/* @__PURE__ */ Y(ae.Select,{field:`kind`,label:`凭据类型`,style:{width:`100%`},optionList:[{value:`hmac`,label:`Webhook HMAC`},{value:`bearer`,label:`HTTP Bearer`}]}),/* @__PURE__ */ Y(ae.Input,{field:`secret`,label:`凭据秘密`,mode:`password`,maxLength:4096,rules:[{required:!0,message:`请输入秘密`},{min:16,message:`至少需要 16 个字符`}]})]}),/* @__PURE__ */ Y(xn,{credential:t,onClose:()=>n(void 0)})]})}function xn({credential:e,onClose:t}){let n=bt(),r=Re(),i=pt({pageSize:20,resetKey:e?.id}),[a,o]=q(),s=ut(Q.credentialReferences,{params:{id:e?.id??0},query:{page:i.page,pageSize:i.pageSize}},{enabled:!!e,requestOptions:{client:n}});return/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(u,{className:`arc-credential-references`,title:`凭据引用:${e?.name??``}`,visible:!!e,onCancel:t,width:760,children:/* @__PURE__ */ X(`div`,{className:`arc-automation-settings`,children:[/* @__PURE__ */ Y(`p`,{children:`引用包含草稿、所有发布版本及归档流程。历史版本不可改写,因此被历史引用的凭据不能删除。`}),s.error&&/* @__PURE__ */ Y(L,{type:`danger`,closeIcon:null,description:s.error.message}),/* @__PURE__ */ Y(v,{columns:[{title:`工作流`,dataIndex:`workflowName`,minWidth:200,render:(e,t)=>/* @__PURE__ */ X(`span`,{children:[e,` `,t.archived&&/* @__PURE__ */ Y(R,{children:`已归档`})]})},{title:`引用节点`,dataIndex:`nodePath`,width:200},{title:`版本`,width:160,render:(e,n)=>/* @__PURE__ */ Y(F,{theme:`borderless`,onClick:()=>{n.version?o({id:n.workflowUuid,version:n.version}):(t(),r(`/extensions/automation/designer?id=${n.workflowUuid}`))},children:n.version?`发布快照 v${n.version}`:`当前草稿`})}],dataSource:s.data?.list??[],loading:s.isFetching,rowKey:e=>`${e?.workflowId}:${e?.version}:${e?.nodePath}`,onRefresh:()=>void s.refetch(),empty:`此凭据没有流程引用`,pagination:{currentPage:i.page,pageSize:i.pageSize,total:s.data?.total??0,onPageChange:i.setPage}})]})}),/* @__PURE__ */ Y(mn,{client:n,target:a,onClose:()=>o(void 0)})]})}function Sn(){return(Sn=e((()=>{N(),fe(),g(),he(),_e(),d(),h(),le(),z(),gn()})))()}function Cn(e){return Et({...e,feedback:l})}function wn(e){return Dt({...e,feedback:l})}function Tn(){return(Tn=e((()=>{N()})))()}function En(e){let{navigator:t}=Ee(Ie),n=Ee(jt),r=K(e);r.current=e,Le(e=>{r.current&&(e.preventDefault(),e.returnValue=``)}),W(()=>{let e=!0,i=!1,a=!1,o=!1,s=Number(globalThis.history.state?.idx??0),c=async()=>{if(i)return!1;i=!0;let t=await oe({title:`离开未保存的工作流?`,content:`当前修改尚未保存。取消后可以继续编辑并保存。`,okText:`放弃修改并离开`});return i=!1,e&&t},l=t.push,u=t.replace,d=(...e)=>{r.current?c().then(t=>{t&&l(...e)}):(l(...e),s=Number(globalThis.history.state?.idx??s))},f=(...e)=>{r.current?c().then(t=>{t&&u(...e)}):u(...e)};t.push=d,t.replace=f;let p=e=>{let t=Number(e.state?.idx??s),n=t-s;o?(o=!1,e.stopImmediatePropagation()):a||!r.current||!n?(a=!1,s=t):(e.stopImmediatePropagation(),o=!0,globalThis.history.go(-n),c().then(e=>{e&&(a=!0,globalThis.history.go(n))}))};return n&&(n.onPop=p),()=>{e=!1,n?.onPop===p&&(n.onPop=void 0),t.push===d&&(t.push=l),t.replace===f&&(t.replace=u)}},[t,n])}function Dn(){return(Dn=e((()=>{z()})))()}function On(e,t=[]){let n=Array.isArray(e.required)?e.required:[];return Object.entries(Mn(e.properties)?e.properties:{}).flatMap(([e,r])=>{let i=Mn(r)?r:{},a=[...t,e];return i.type===`object`&&Mn(i.properties)&&Object.keys(i.properties).length?On(i,a):[{path:a,schema:i,required:n.includes(e)}]})}function kn(e,t){let n=e;for(let e of t){if(!Mn(n)||!Object.hasOwn(n,e))return;n=n[e]}return n}function An(e,t,n){let[r,...i]=t,a={...e};return i.length?a[r]=An(Mn(e[r])?e[r]:{},i,n):n===void 0?delete a[r]:Object.defineProperty(a,r,{value:n,enumerable:!0,configurable:!0,writable:!0}),a}function jn({value:e,schema:t,onChange:n,onValidityChange:c,description:l,visibleFields:u}){let d=G(),f=De(()=>On(t).filter(e=>!u||u.includes(e.path[0])),[t,u]),[p,m]=q(!f.length),[h,g]=q({}),_=De(()=>Ft(e,t),[e,t]),v=Object.entries(h).filter(([e,t])=>{try{let n=JSON.parse(t);return f.find(t=>t.path.join(`.`)===e)?.schema.type===`array`&&!Array.isArray(n)}catch{return!0}}),y=!_.errors.length&&!v.length;W(()=>{c?.(y)},[y,c]);let b=(e,t)=>{_.input&&n(JSON.stringify(An(_.input,e,t),null,2))};return/* @__PURE__ */ X(`div`,{className:`coze-test-input`,children:[/* @__PURE__ */ X(`div`,{className:`coze-test-input-header`,children:[/* @__PURE__ */ Y(`strong`,{children:`输入`}),/* @__PURE__ */ X(`label`,{children:[`JSON `,/* @__PURE__ */ Y(s,{"aria-label":`JSON 模式`,size:`small`,checked:p||!f.length,disabled:!f.length||!!v.length,onChange:e=>{m(e),e&&g({})}})]})]}),l&&/* @__PURE__ */ Y(`p`,{children:l}),p||!f.length||!_.input?/* @__PURE__ */ Y(r,{"aria-label":`测试输入`,rows:8,value:e,onChange:n}):/* @__PURE__ */ Y(`div`,{className:`coze-test-input-fields`,children:f.map(({path:e,schema:t,required:n})=>{let s=e.join(`.`),c=kn(_.input,e),l=String(t.type??`unknown`),u=`${d}-test-input-${encodeURIComponent(s)}`,f=_.errors.filter(e=>e.path===s||e.path.startsWith(s+`.`));return/* @__PURE__ */ X(`div`,{"data-input-field":s,children:[/* @__PURE__ */ X(`label`,{children:[/* @__PURE__ */ X(`span`,{children:[/* @__PURE__ */ Y(`span`,{id:u,children:s}),n&&/* @__PURE__ */ Y(`b`,{"aria-label":`必填`,children:` *`})]}),/* @__PURE__ */ Y(`small`,{children:l})]}),Array.isArray(t.enum)?/* @__PURE__ */ Y(a,{"aria-labelledby":u,value:t.enum.findIndex(e=>JSON.stringify(e)===JSON.stringify(c))<0?void 0:String(t.enum.findIndex(e=>JSON.stringify(e)===JSON.stringify(c))),showClear:!0,optionList:t.enum.map((e,t)=>({label:String(e),value:String(t)})),onChange:n=>b(e,n===void 0?void 0:t.enum[Number(n)])}):l===`boolean`?/* @__PURE__ */ Y(a,{"aria-labelledby":u,value:typeof c==`boolean`?String(c):void 0,showClear:!0,optionList:[{value:`true`,label:`true`},{value:`false`,label:`false`}],onChange:t=>b(e,t===void 0?void 0:t===`true`)}):[`integer`,`number`].includes(l)?/* @__PURE__ */ Y(o,{"aria-labelledby":u,value:typeof c==`number`?c:void 0,precision:l===`integer`?0:void 0,placeholder:`请输入数值`,onChange:t=>b(e,typeof t==`number`?t:void 0)}):l===`string`?/* @__PURE__ */ Y(i,{"aria-labelledby":u,value:typeof c==`string`?c:``,placeholder:String(t.description??`请输入`),showClear:!0,onChange:t=>b(e,t)}):/* @__PURE__ */ Y(r,{"aria-labelledby":u,rows:3,placeholder:`输入 JSON`,value:h[s]??(c===void 0?``:JSON.stringify(c,null,2)),onChange:t=>{g(e=>({...e,[s]:t}));try{b(e,JSON.parse(t))}catch{}}}),/* @__PURE__ */ Y(`small`,{children:String(t.description??``)}),f.map((e,t)=>/* @__PURE__ */ Y(`div`,{className:`arc-wf-field-error`,role:`alert`,children:e.message},t)),v.some(([e])=>e===s)&&/* @__PURE__ */ X(`div`,{className:`arc-wf-field-error`,role:`alert`,children:[`请输入合法的 `,l===`array`?`JSON 数组`:`JSON`]})]},s)})}),_.errors.filter(e=>!e.path||p||!f.length||!f.some(t=>e.path===t.path.join(`.`)||e.path.startsWith(t.path.join(`.`)+`.`))).map((e,t)=>/* @__PURE__ */ X(`div`,{className:`arc-wf-field-error`,role:`alert`,children:[e.path&&`${e.path}:`,e.message]},t))]})}var Mn;function Nn(){return(Nn=e((()=>{N(),Mn=e=>typeof e==`object`&&!!e&&!Array.isArray(e)})))()}function Pn({title:e,header:t,tabs:n,footer:r,children:i,onClose:a,className:o=``,focusKey:s,onFocusRestore:c}){let[l,u]=q(360),d=K(null);zt(d,s,c);let f=e=>Math.min(546,Math.max(360,e));return/* @__PURE__ */ X(`aside`,{ref:d,"aria-label":e??`节点参数与结果`,className:`arc-antd-side-panel ${o}`,style:{"--coze-panel-width":`${l}px`},onKeyDown:e=>{e.key===`Escape`&&!e.defaultPrevented&&!e.nativeEvent.isComposing&&!e.target.closest(`.ant-popover,.ant-dropdown,.ant-select-dropdown,.cm-tooltip`)&&(e.preventDefault(),e.stopPropagation(),a?.())},children:[/* @__PURE__ */ Y(`div`,{className:`coze-panel-resize`,role:`separator`,tabIndex:0,"aria-label":`调整参数面板宽度`,"aria-orientation":`vertical`,"aria-valuemin":360,"aria-valuemax":546,"aria-valuenow":l,onKeyDown:e=>{(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&(e.preventDefault(),u(f(l+(e.key===`ArrowLeft`?16:-16))))},onPointerDown:e=>{e.preventDefault(),e.stopPropagation(),e.currentTarget.setPointerCapture(e.pointerId)},onPointerMove:e=>{if(e.currentTarget.hasPointerCapture(e.pointerId)){let t=e.currentTarget.parentElement;u(f(t.getBoundingClientRect().right-e.clientX))}},onPointerUp:e=>{e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId)}}),t??/* @__PURE__ */ X(`div`,{className:`coze-side-panel-header`,children:[/* @__PURE__ */ Y(`strong`,{children:e}),/* @__PURE__ */ Y(F,{theme:`borderless`,"aria-label":`关闭测试面板`,onClick:a,children:`×`})]}),n,/* @__PURE__ */ Y(`div`,{className:`coze-inspector-scroll`,children:i}),r&&/* @__PURE__ */ Y(`div`,{className:`coze-side-panel-footer`,children:r})]})}function Fn(){return(Fn=e((()=>{N()})))()}function In({schema:e,readOnly:t,onChange:n,onValidation:r}){let[i,a]=q(()=>Nt(e)),o=K(JSON.stringify(e));W(()=>{let t=JSON.stringify(e);t!==o.current&&(o.current=t,a(Nt(e)))},[e]);let s=Lt(i),c=JSON.stringify(s),l=K(r);l.current=r,W(()=>{l.current?.(JSON.parse(c))},[c]);let u=t||!n,d=t=>{if(a(t),!Lt(t).length){let r=Rt(t,e);o.current=JSON.stringify(r),n?.(r)}},f=(e,t,n=i)=>n.map(n=>n.key===e?{...n,...t}:{...n,children:n.children?f(e,t,n.children):void 0}),p=(e,t=i)=>t.filter(t=>t.key!==e).map(t=>({...t,children:t.children?p(e,t.children):void 0})),m=e=>{let t=e?.children??i,n=`parameter`,r=1;for(;t.some(e=>e.name===n);)n=`parameter`+r++;let a=Nt({properties:{[n]:{type:`string`}}})[0];a.key=a.field=crypto.randomUUID(),d(e?f(e.key,{children:[...t,a]}):[...i,a])};return/* @__PURE__ */ X(`div`,{className:`arc-antd-input-fields`,children:[/* @__PURE__ */ Y(Ne,{size:`small`,pagination:!1,rowKey:`key`,dataSource:i,scroll:{x:680},columns:[{title:`名称`,key:`name`,width:170,render:(e,t)=>/* @__PURE__ */ Y(Z,{"aria-label":`参数名称`,value:t.name,disabled:u||t.readonly,onChange:e=>d(f(t.key,{name:e.target.value}))})},{title:`类型`,key:`type`,width:145,render:(e,t)=>/* @__PURE__ */ Y(je,{"aria-label":`参数类型`,style:{width:`100%`},value:t.type,disabled:u||t.readonly,options:Ln.map(e=>({value:e,label:e})),onChange:e=>d(f(t.key,{type:e,children:e===`object`||e===`array-object`?t.children??[]:void 0,defaultValue:void 0}))})},{title:`必填`,key:`required`,width:60,render:(e,t)=>/* @__PURE__ */ Y(ke,{"aria-label":t.name+`必填`,checked:t.required,disabled:u,onChange:e=>d(f(t.key,{required:e.target.checked}))})},{title:`描述`,key:`description`,width:160,render:(e,t)=>/* @__PURE__ */ Y(Z,{"aria-label":t.name+`描述`,value:t.description,disabled:u||t.readonly,onChange:e=>d(f(t.key,{description:e.target.value}))})},{title:`默认值`,key:`default`,width:160,render:(e,t)=>[`number`,`integer`].includes(t.type)?/* @__PURE__ */ Y(Ae,{"aria-label":t.name+`默认值`,value:typeof t.defaultValue==`number`?t.defaultValue:void 0,precision:t.type===`integer`?0:void 0,disabled:u||t.readonly,onChange:e=>d(f(t.key,{defaultValue:e??void 0}))}):t.type===`boolean`?/* @__PURE__ */ Y(je,{"aria-label":t.name+`默认值`,allowClear:!0,value:typeof t.defaultValue==`boolean`?String(t.defaultValue):void 0,disabled:u||t.readonly,options:[{value:`true`,label:`true`},{value:`false`,label:`false`}],onChange:e=>d(f(t.key,{defaultValue:e===void 0?void 0:e===`true`}))}):/* @__PURE__ */ Y(Z,{"aria-label":t.name+`默认值`,value:t.defaultValue===null?`null`:String(t.defaultValue??``),disabled:u||t.readonly,onChange:e=>d(f(t.key,{defaultValue:e.target.value||void 0}))})},{title:`操作`,key:`actions`,width:95,render:(e,t)=>/* @__PURE__ */ X(Me,{children:[/* @__PURE__ */ Y(Oe,{type:`text`,danger:!0,"aria-label":`删除`+t.name,icon:/* @__PURE__ */ Y(ie,{size:14}),disabled:u,onClick:()=>d(p(t.key))}),[`object`,`array-object`].includes(t.type)&&/* @__PURE__ */ Y(Oe,{type:`text`,"aria-label":`添加`+t.name+`子参数`,icon:/* @__PURE__ */ Y(w,{size:14}),disabled:u||t.readonly,onClick:()=>m(t)})]})}]}),/* @__PURE__ */ Y(Oe,{icon:/* @__PURE__ */ Y(w,{size:14}),disabled:u,onClick:()=>m(),children:`添加参数`}),s.map(e=>/* @__PURE__ */ X(`p`,{role:`alert`,children:[e.path,`:`,e.message]},e.path))]})}var Ln;function Rn(){return(Rn=e((()=>{T(),M(),Ln=[`string`,`integer`,`number`,`boolean`,`object`,`array-string`,`array-integer`,`array-number`,`array-boolean`,`array-object`]})))()}function zn({info:e,actions:t}){return/* @__PURE__ */ X(`header`,{className:`coze-workflow-header`,children:[/* @__PURE__ */ Y(`div`,{className:`coze-workflow-header-left`,children:e}),/* @__PURE__ */ Y(`div`,{className:`coze-workflow-header-right`,children:t})]})}function Bn({name:e}){let t=Un[e];return/* @__PURE__ */ Y(t,{size:16,"aria-hidden":!0})}function Vn({disabled:e,onClick:t}){return/* @__PURE__ */ Y(Oe,{type:`primary`,"aria-label":`测试运行`,"data-testid":`workflow.detail.toolbar.test-run`,className:`coze-toolbar-test-run`,icon:/* @__PURE__ */ Y(rn,{size:16}),disabled:e,onClick:t,children:`试运行`})}function Hn({header:e,children:t,onClose:n}){let r=K(null);zt(r);let[i,a]=q(260),o=e=>Math.max(120,Math.min(420,e));return/* @__PURE__ */ X(`div`,{ref:r,className:`arc-antd-execution-panel-boundary`,style:{height:i},children:[/* @__PURE__ */ Y(`div`,{role:`separator`,"aria-label":`调整运行记录高度`,"aria-orientation":`horizontal`,tabIndex:0,"aria-valuemin":120,"aria-valuemax":420,"aria-valuenow":i,className:`arc-antd-panel-resize`,onKeyDown:e=>{(e.key===`ArrowUp`||e.key===`ArrowDown`)&&(e.preventDefault(),a(o(i+(e.key===`ArrowUp`?16:-16))))},onPointerDown:e=>{e.preventDefault(),e.currentTarget.setPointerCapture(e.pointerId)},onPointerMove:e=>{e.currentTarget.hasPointerCapture(e.pointerId)&&r.current&&a(o(r.current.getBoundingClientRect().bottom-e.clientY))},onPointerUp:e=>e.currentTarget.releasePointerCapture(e.pointerId)}),/* @__PURE__ */ X(`section`,{className:`arc-antd-execution-panel`,"aria-label":`运行记录`,children:[/* @__PURE__ */ X(`div`,{className:`arc-antd-execution-header`,children:[e,/* @__PURE__ */ Y(Oe,{type:`text`,"aria-label":`关闭运行记录`,onClick:n,children:`×`})]}),/* @__PURE__ */ Y(`div`,{className:`arc-antd-execution-body`,children:t})]})]})}var Un;function Wn(){return(Wn=e((()=>{an(),S(),O(),M(),te(),T(),A(),cn(),re(),Nn(),Fn(),Rn(),Un={layout:k,fit:j,copy:ee,remove:ie,more:ne,add:w,back:C,play:rn,workflow:sn}})))()}function Gn({uuid:e,full:t=!1}){return/* @__PURE__ */ X(`span`,{className:`arc-workflow-identity`,title:e,children:[/* @__PURE__ */ Y(`code`,{children:t?e:`${e.slice(0,8)}…${e.slice(-8)}`}),/* @__PURE__ */ Y(F,{size:`small`,theme:`borderless`,"aria-label":`复制工作流 ID`,title:`复制工作流 UUID`,icon:/* @__PURE__ */ Y(ee,{size:12}),onClick:t=>{t.stopPropagation(),xe(e)}})]})}function Kn(){return(Kn=e((()=>{N(),O(),Se()})))()}function qn(e){let t;try{if(t=Yn&&(self.URL||self.webkitURL).createObjectURL(Yn),!t)throw``;let n=new Worker(t,{name:e?.name});return n.addEventListener(`error`,()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch{return new Worker(`data:text/javascript;charset=utf-8,`+encodeURIComponent(Jn),{name:e?.name})}}var Jn,Yn;function Xn(){return(Xn=e((()=>{Jn="(function(){function e(t){return Array.isArray(t)?`[`+t.map(e).join(`,`)+`]`:t&&typeof t==`object`?`{`+Object.entries(t).sort(([e],[t])=>e.localeCompare(t)).map(([t,n])=>JSON.stringify(t)+`:`+e(n)).join(`,`)+`}`:JSON.stringify(t)??`undefined`}function t(e){let n=e.config.body;return![`core.loop`,`core.batch`].includes(e.type)||!Array.isArray(n?.nodes)||!Array.isArray(n?.edges)?e.config:{...e.config,body:{schemaVersion:n.schemaVersion,nodes:[...n.nodes].sort((e,t)=>e.id.localeCompare(t.id)).map(({position:e,...n})=>({...n,config:t(n)})),edges:[...n.edges].sort((e,t)=>e.id.localeCompare(t.id))}}}function n(n,r){let i=[],a=new Map(n.nodes.map(e=>[e.id,e])),o=new Map(r.nodes.map(e=>[e.id,e]));for(let s of[.../* @__PURE__ */ new Set([...n.nodes.map(e=>e.id),...r.nodes.map(e=>e.id)])].sort()){let n=a.get(s),r=o.get(s);if(!n||!r){i.push({kind:n?`removed`:`added`,id:s,fields:[]});continue}let c=[`type`,`version`,`label`,`description`,`config`,`inputs`,`execution`].filter(i=>e(i===`config`?t(n):n[i])!==e(i===`config`?t(r):r[i]));c.length&&i.push({kind:`changed`,id:s,fields:c})}return e([...n.edges].sort((e,t)=>e.id.localeCompare(t.id)))!==e([...r.edges].sort((e,t)=>e.id.localeCompare(t.id)))&&i.push({kind:`changed`,id:`edges`,fields:[`edges`]}),n.schemaVersion!==r.schemaVersion&&i.push({kind:`changed`,id:`schemaVersion`,fields:[`schemaVersion`]}),i}function r(t,r){let i=n(t.graph,r.graph);t.actorId!==r.actorId&&i.push({kind:`changed`,id:`actorId`,fields:[`actorId`]});let a=[`kind`,`source`,`cron`,`timezone`,`inputSchema`].filter(n=>e(t.trigger[n])!==e(r.trigger[n]));return a.length&&i.push({kind:`changed`,id:`trigger`,fields:a}),i}function i(e){let{position:t,...n}=e,r=e.config.body;return{...n,config:r&&[`core.loop`,`core.batch`].includes(e.type)?{...e.config,body:{schemaVersion:r.schemaVersion,nodes:Object.fromEntries(r.nodes.map(e=>[e.id,i(e)])),edges:Object.fromEntries(r.edges.map(e=>[e.id,e]))}}:e.config}}function a(e){return`${e.fields.some(e=>[`actorId`,`kind`,`source`,`cron`,`timezone`,`inputSchema`,`edges`,`schemaVersion`].includes(e))?`metadata`:`node`}:${e.id}`}function o(e,t,n=`node`){if(n===`metadata`){if(t===`actorId`)return e.actorId;if(t===`trigger`)return e.trigger;if(t===`schemaVersion`)return e.graph.schemaVersion;if(t===`edges`)return Object.fromEntries(e.graph.edges.map(e=>[e.id,e]))}let r=e.graph.nodes.find(e=>e.id===t);return r?i(r):void 0}function s(t,n,r=200){let i=[],a=0,o=(t,n,s)=>{if(t===n)return;if(Array.isArray(t)&&Array.isArray(n)){for(let e=0;e<Math.max(t.length,n.length);e++)o(t[e],n[e],`${s}[${e}]`);return}let c=typeof t==`object`&&t&&!Array.isArray(t)?t:void 0,l=typeof n==`object`&&n&&!Array.isArray(n)?n:void 0;if(c&&l)for(let e of[.../* @__PURE__ */ new Set([...Object.keys(c),...Object.keys(l)])].sort())o(c[e],l[e],s?s+`.`+e:e);else e(t)!==e(n)&&(a++,i.length<r&&i.push({path:s||`$value`,kind:t===void 0?`added`:n===void 0?`removed`:`changed`,before:t,after:n}))};return o(t,n,``),{fields:i,total:a}}let c,l,u=/* @__PURE__ */ new Map;function d(e){let t=JSON.stringify(e)??`(不存在)`;return t.length>400?t.slice(0,400)+`…`:t}onmessage=e=>{let t=e.data;try{let e;if(t.kind===`compare`){c=t.before,l=t.after;let n=r(c,l);u=new Map(n.map(e=>[a(e),e])),e=n}else{let n=u.get(t.nodeId);if(!n)throw Error();let r=a(n).startsWith(`metadata:`)?`metadata`:`node`,i=o(c,n.id,r),f=o(l,n.id,r),p=JSON.stringify({before:i??null,after:f??null},null,2);if(t.kind===`download`)e=p;else{let{fields:t,total:n}=s(i,f);e={fields:t.map(e=>({...e,before:d(e.before),after:d(e.after)})),total:n,preview:p.slice(0,16e3),truncated:p.length>16e3}}}postMessage({id:t.id,data:e})}catch{postMessage({id:t.id,error:`版本内容处理失败,请重试`})}}})();",Yn=typeof self<`u`&&self.Blob&&new Blob([`(self.URL || self.webkitURL).revokeObjectURL(self.location.href);`,Jn],{type:`text/javascript;charset=utf-8`})})))()}function Zn(e,t,n=!0){let[r,i]=q(0),[a,o]=q();W(()=>{if(!n||!e||!t)return;let r,i=!1;try{r=new Qn,o({before:e,after:t,session:r}),r.request({kind:`compare`,before:e,after:t}).then(n=>{i||o({before:e,after:t,session:r,changes:n})}).catch(n=>{i||o({before:e,after:t,session:r,error:n.message})})}catch{o({before:e,after:t,error:`浏览器无法处理版本内容,请重试`})}return()=>{i=!0,r?.close()}},[e,t,n,r]);let s=n&&a?.before===e&&a?.after===t?a:void 0;return{session:s?.session,changes:s?.changes,error:s?.error,loading:n&&!!e&&!!t&&!s?.changes&&!s?.error,retry:()=>i(e=>e+1)}}var Qn;function $n(){return($n=e((()=>{Xn(),Qn=class{worker;sequence=0;closed=!1;pending=/* @__PURE__ */ new Map;constructor(e=()=>new qn){this.worker=e(),this.worker.onmessage=e=>{let t=this.pending.get(e.data.id);t&&(this.pending.delete(e.data.id),clearTimeout(t.timer),e.data.error?t.reject(Error(`版本内容处理失败,请重试`)):t.resolve(e.data.data))},this.worker.onerror=()=>this.close(Error(`浏览器无法处理版本内容,请重试`))}request(e){if(this.closed)return Promise.reject(Error(`版本选择已变更`));let t=++this.sequence;return new Promise((n,r)=>{let i=setTimeout(()=>this.close(Error(`版本内容处理超时,请重试`)),6e4);this.pending.set(t,{resolve:e=>n(e),reject:r,timer:i});try{this.worker.postMessage({...e,id:t})}catch{this.close(Error(`版本内容处理失败,请重试`))}})}close(e=Error(`版本选择已变更`)){if(!this.closed){this.closed=!0,this.worker.terminate();for(let{reject:t,timer:n}of this.pending.values())clearTimeout(n),t(e);this.pending.clear()}}}})))()}function er({session:e,id:t}){let[n,r]=q(!1),[i,a]=q(0),[o,s]=q(),[c,u]=q(``),[d,f]=q(!1);W(()=>{if(!n)return;let r=!1;return s(void 0),u(``),e.request({kind:`details`,nodeId:t}).then(e=>{r||s(e)}).catch(e=>{r||u(e.message)}),()=>{r=!0}},[n,e,t,i]);async function p(){f(!0);try{let n=await e.request({kind:`download`,nodeId:t}),r=URL.createObjectURL(new Blob([n],{type:`application/json`})),i=document.createElement(`a`);i.href=r,i.download=`workflow-change-`+t.replace(/[^\w.-]/g,`_`)+`.json`,i.click(),setTimeout(()=>URL.revokeObjectURL(r),1e3)}catch(e){l.error(e instanceof Error?e.message:`下载失败`)}finally{f(!1)}}return/* @__PURE__ */ X(`details`,{className:`arc-version-change-details`,onToggle:e=>r(e.currentTarget.open),children:[/* @__PURE__ */ Y(`summary`,{children:`查看变更内容`}),n&&/* @__PURE__ */ X(J,{children:[!o&&!c&&/* @__PURE__ */ Y(P,{}),c&&/* @__PURE__ */ X(`p`,{role:`alert`,children:[c,` `,/* @__PURE__ */ Y(F,{onClick:()=>a(e=>e+1),children:`重试`})]}),o&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ X(`div`,{className:`arc-version-fields`,role:`table`,"aria-label":`字段差异`,children:[/* @__PURE__ */ X(`div`,{role:`row`,children:[/* @__PURE__ */ Y(`strong`,{role:`columnheader`,children:`字段路径`}),/* @__PURE__ */ Y(`strong`,{role:`columnheader`,children:`之前`}),/* @__PURE__ */ Y(`strong`,{role:`columnheader`,children:`之后`})]}),o.fields.map(e=>/* @__PURE__ */ X(`div`,{role:`row`,children:[/* @__PURE__ */ Y(`code`,{role:`cell`,children:e.path}),/* @__PURE__ */ Y(`code`,{role:`cell`,children:e.before}),/* @__PURE__ */ Y(`code`,{role:`cell`,children:e.after})]},e.path))]}),o.total>o.fields.length&&/* @__PURE__ */ X(`p`,{children:[`共 `,o.total,` 处字段变化,先展示前 `,o.fields.length,` 处。`]}),/* @__PURE__ */ Y(`pre`,{children:o.preview}),o.truncated&&/* @__PURE__ */ Y(`p`,{children:`JSON 预览显示前 16000 个字符。`}),/* @__PURE__ */ Y(F,{loading:d,onClick:()=>void p(),children:`下载完整变更`})]})]})]})}function tr({workflow:e,client:t,visible:n,dirty:r,onClose:i,onRestored:o}){let s=G(),l=pt({pageSize:20,resetKey:e.id}),[d,f]=q(),[p,m]=q();W(()=>{f(void 0),m(void 0)},[e.id]);let h=ut(Q.versions,{params:{id:e.uuid},query:{page:l.page,pageSize:l.pageSize}},{enabled:n,requestOptions:{client:t}}),g=ut(Q.version,{params:{id:e.uuid,version:d??1}},{enabled:n&&!!d,requestOptions:{client:t}}),_=ut(Q.version,{params:{id:e.uuid,version:p??1}},{enabled:n&&!!p,requestOptions:{client:t}}),v=$(Q.restore,{requestOptions:{client:t},onSuccess:e=>{o(e),i()}}),y=h.data?.list.map(e=>({value:e.version,label:`v`+e.version+` · `+dt(e.createdAt)}))??[],b=p?_.data:e,x=g.isFetching||!!p&&_.isFetching,S=Zn(g.data,b,n&&!x&&!!d),[C,w]=q(100);return W(()=>w(100),[d,p,e.revision]),/* @__PURE__ */ Y(u,{title:`发布历史与版本对比`,visible:n,onCancel:i,width:720,className:`arc-workflow-versions`,children:/* @__PURE__ */ X(`div`,{className:`arc-automation-settings`,children:[/* @__PURE__ */ Y(`p`,{children:`恢复只更新草稿,已发布版本和正在运行的流程保持原快照。`}),/* @__PURE__ */ Y(`div`,{className:`arc-version-list`,children:h.data?.list.map(t=>/* @__PURE__ */ X(`button`,{type:`button`,"aria-label":`选择版本 v`+t.version,"aria-pressed":d===t.version,onClick:()=>f(t.version),children:[/* @__PURE__ */ X(`span`,{children:[/* @__PURE__ */ X(`strong`,{children:[`v`,t.version]}),t.version===e.publishedVersion&&/* @__PURE__ */ Y(R,{color:`green`,children:`当前发布`})]}),/* @__PURE__ */ Y(me,{value:t.createdAt})]},t.version))}),/* @__PURE__ */ X(I,{children:[/* @__PURE__ */ Y(F,{disabled:l.page<=1||h.isFetching,onClick:()=>l.setPage(l.page-1),children:`上一页`}),/* @__PURE__ */ X(`span`,{children:[`第 `,l.page,` 页 · `,h.data?.total??0,` 个版本`]}),/* @__PURE__ */ Y(F,{disabled:!h.data||l.page*l.pageSize>=h.data.total||h.isFetching,onClick:()=>l.setPage(l.page+1),children:`下一页`})]}),/* @__PURE__ */ X(`div`,{className:`arc-version-selectors`,children:[/* @__PURE__ */ X(`label`,{id:s+`-history`,children:[`历史版本`,/* @__PURE__ */ Y(a,{"aria-labelledby":s+`-history`,placeholder:`选择历史版本`,value:d,optionList:y,onChange:e=>f(Number(e))})]}),/* @__PURE__ */ X(`label`,{id:s+`-compare`,children:[`对比版本`,/* @__PURE__ */ Y(a,{"aria-labelledby":s+`-compare`,placeholder:`与当前草稿比较`,showClear:!0,value:p,optionList:y,onChange:e=>m(e?Number(e):void 0)})]})]}),(h.isLoading||x||S.loading)&&/* @__PURE__ */ Y(P,{}),[h.error,g.error,_.error,v.error].filter(Boolean).map((e,t)=>/* @__PURE__ */ X(`p`,{role:`alert`,children:[e?.message,` `,/* @__PURE__ */ Y(F,{onClick:()=>{h.refetch(),d&&g.refetch(),p&&_.refetch()},children:`重试`})]},t)),S.error&&/* @__PURE__ */ X(`p`,{role:`alert`,children:[S.error,` `,/* @__PURE__ */ Y(F,{onClick:S.retry,children:`重试比较`})]}),S.changes&&S.session&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ X(c.Title,{heading:6,children:[`v`,d,` → `,p?`v`+p:`当前草稿`]}),S.changes.slice(0,C).map(t=>/* @__PURE__ */ X(`div`,{className:`arc-version-change`,children:[/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(R,{children:t.kind===`added`?`新增`:t.kind===`removed`?`删除`:`修改`}),` `,/* @__PURE__ */ Y(`strong`,{children:t.id}),/* @__PURE__ */ Y(`span`,{children:t.fields.map(e=>(nr[e]??e)+` (`+e+`)`).join(`、`)})]}),/* @__PURE__ */ Y(er,{session:S.session,id:at(t)},d+`-`+p+`-`+e.revision+`-`+at(t))]},at(t))),S.changes.length>C&&/* @__PURE__ */ X(F,{onClick:()=>w(e=>e+100),children:[`显示更多变化(`,C,` / `,S.changes.length,`)`]}),!S.changes.length&&/* @__PURE__ */ Y(`p`,{children:`执行定义无语义差异(节点、连线、异常策略、触发配置和执行账号)。`})]}),d&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(F,{theme:`solid`,loading:v.isPending,disabled:e.archived||r||!g.data||v.isPending,onClick:()=>ce({okText:`恢复草稿`,okButtonProps:{"aria-label":`确认恢复草稿`},title:`将 v`+d+` 恢复到草稿?`,content:`恢复后需要重新发布才会影响后续触发。`,onOk:()=>v.mutateAsync({params:{id:e.uuid},body:{revision:e.revision,version:d}})}),children:`恢复此版本到草稿`}),r&&/* @__PURE__ */ Y(`p`,{children:`请先保存当前编辑内容再恢复。`})]})]})})}var nr;function rr(){return(rr=e((()=>{N(),pe(),z(),$n(),nr={type:`节点类型`,version:`节点版本`,label:`名称`,description:`说明`,config:`配置`,inputs:`变量绑定`,execution:`异常策略`,edges:`连线`,schemaVersion:`图版本`,actorId:`执行账号`,kind:`触发方式`,source:`事件来源`,cron:`定时表达式`,timezone:`时区`,inputSchema:`输入结构`}})))()}function ir(e){let t=kt();return De(()=>({list:t=>e.call(Q.prompts,{query:t}),save:async(n,r)=>{let i=r?await e.call(Q.updatePrompt,{params:{id:r},body:{name:n.name,description:n.description,content:n.content,revision:n.revision}}):await e.call(Q.createPrompt,{body:n});return await t.invalidateQueries({queryKey:lt(Q.prompts)}),r&&await t.invalidateQueries({queryKey:lt(Q.promptVersions,{params:{id:r}})}),i},remove:async(n,r)=>{let i=await e.call(Q.removePrompt,{params:{id:n},body:{revision:r}});return await t.invalidateQueries({queryKey:lt(Q.prompts)}),t.removeQueries({queryKey:lt(Q.promptVersions,{params:{id:n}})}),i},versions:(t,n={page:1,pageSize:20})=>e.call(Q.promptVersions,{params:{id:t},query:n}),optimize:t=>e.call(Q.optimizePrompt,{body:t})}),[e,t])}function ar(){return(ar=e((()=>{})))()}function or(e){return e==null?_:e<1e3?`${e} ms`:e<6e4?`${(e/1e3).toFixed(1)} s`:`${(e/6e4).toFixed(1)} min`}function sr(){return(sr=e((()=>{g()})))()}function cr({value:e}){return e?/* @__PURE__ */ Y(`time`,{dateTime:e,title:e,children:/* @__PURE__ */ Y(me,{value:e,mode:`absolute`})}):/* @__PURE__ */ Y(J,{children:`未记录`})}function lr({interval:e}){return/* @__PURE__ */ X(`div`,{className:`arc-run-time-segment`,children:[/* @__PURE__ */ X(`strong`,{children:[ur[e.kind],e.attempt>0?` · 第 ${e.attempt} 次`:``,e.outcome===`failed`?` · 失败`:``]}),/* @__PURE__ */ X(`span`,{children:[/* @__PURE__ */ Y(cr,{value:e.startedAt}),` → `,/* @__PURE__ */ Y(cr,{value:e.finishedAt})]}),e.finishedAt?/* @__PURE__ */ Y(`span`,{children:or(Math.max(0,Date.parse(e.finishedAt)-Date.parse(e.startedAt)))}):/* @__PURE__ */ Y(`span`,{children:e.interruptedAt?/* @__PURE__ */ X(J,{children:[`恢复时发现中断:`,/* @__PURE__ */ Y(cr,{value:e.interruptedAt})]}):`尚未记录结束;取消或断线不代表外部操作已撤销`})]})}var ur,dr,fr;function pr(){return(pr=e((()=>{pe(),sr(),ur={execution:`节点执行`,pause:`断点等待`,delay:`持久延时`,"retry-wait":`重试等待`},dr=Te(function({rows:e,selected:t,onSelect:n,limit:r}){let i=De(()=>qt(e),[e]);return/* @__PURE__ */ X(`div`,{className:`arc-run-timeline`,role:`region`,"aria-label":`真实运行时间轴`,children:[/* @__PURE__ */ Y(`p`,{className:`arc-run-timeline-note`,children:`按服务端记录的开始时间排列;并行条带可以重叠。中断时未写入的结束时间保持未知,旧记录不补造时间。`}),!!i.known.length&&/* @__PURE__ */ X(`div`,{className:`arc-run-time-range`,children:[/* @__PURE__ */ Y(cr,{value:new Date(i.start).toISOString()}),/* @__PURE__ */ X(`span`,{children:[`已记录区间 `,or(i.end-i.start)]}),/* @__PURE__ */ Y(cr,{value:new Date(i.end).toISOString()})]}),i.known.slice(0,r).map(e=>/* @__PURE__ */ Y(fr,{row:e,start:i.start,span:i.span,selected:t===e.node.nodeId,onSelect:n},e.node.nodeId)),!!i.unknown.length&&/* @__PURE__ */ X(`div`,{className:`arc-run-unknown-time`,children:[/* @__PURE__ */ X(`strong`,{children:[`未记录时间 · `,i.unknown.length,` 个节点`]}),i.unknown.slice(0,Math.max(0,r-i.known.length)).map(e=>/* @__PURE__ */ X(`button`,{type:`button`,onClick:()=>n(e.node.nodeId),children:[e.label,` · `,yt[e.node.status]]},e.node.nodeId))]})]})}),fr=Te(function({row:e,start:t,span:n,selected:r,onSelect:i}){let a=e.node.timing,o=De(()=>tt(a),[a]);return/* @__PURE__ */ X(`div`,{className:`arc-run-timeline-row${r?` is-selected`:``}`,"data-node-record":e.node.nodeId,children:[/* @__PURE__ */ X(`button`,{type:`button`,"aria-label":`时间轴检查节点 ${e.label}`,"aria-pressed":r,onClick:()=>i(e.node.nodeId),children:[/* @__PURE__ */ Y(`strong`,{title:e.label,children:e.label}),/* @__PURE__ */ Y(`span`,{children:e.handled?`异常已处理`:yt[e.node.status]}),/* @__PURE__ */ Y(`div`,{className:`arc-run-time-track`,"aria-hidden":`true`,children:a.segments.map((e,r)=>{let i=Math.max(0,(Date.parse(e.startedAt)-t)/n*100),a=e.finishedAt?Math.max(i,(Date.parse(e.finishedAt)-t)/n*100):i;return/* @__PURE__ */ Y(`span`,{className:`is-${e.kind}${e.outcome===`failed`?` is-failed`:``}${e.finishedAt?``:` is-open`}`,style:{left:`${i}%`,width:`${Math.max(.4,a-i)}%`}},r)})}),/* @__PURE__ */ X(`span`,{className:`arc-run-time-total`,children:[`执行 `,or(o.execution),` · 等待 `,or(o.pause+o.delay+o[`retry-wait`]),o.unfinished?` · 有未结束区间`:``]})]}),/* @__PURE__ */ X(`details`,{children:[/* @__PURE__ */ Y(`summary`,{children:`时间与尝试详情`}),/* @__PURE__ */ X(`div`,{className:`arc-run-time-details`,children:[/* @__PURE__ */ X(`div`,{children:[`开始:`,/* @__PURE__ */ Y(cr,{value:a.startedAt}),` · 结束:`,/* @__PURE__ */ Y(cr,{value:a.finishedAt})]}),a.reusedFrom&&/* @__PURE__ */ X(`p`,{children:[`复用已成功结果,未重新执行:`,/* @__PURE__ */ Y(`code`,{children:a.reusedFrom})]}),a.segments.map((e,t)=>/* @__PURE__ */ Y(lr,{interval:e},t))]})]})]})})})))()}function mr({run:e,selected:t,onSelect:n,compact:r=!1}){let[o,s]=q(``),[c,l]=q(`all`),[u,d]=q(50),[f,p]=q(`records`),m=Jt(n),h=G(),g=De(()=>Kt(e),[e]),_=De(()=>g.filter(({node:e,label:t,handled:n})=>(c===`all`||(c===`handled`?n:e.status===c))&&`${t} ${e.nodeId}`.toLowerCase().includes(o.toLowerCase())),[g,o,c]);return/* @__PURE__ */ X(`div`,{className:r?`arc-run-records is-compact`:`arc-run-records`,children:[!r&&/* @__PURE__ */ X(`div`,{className:`arc-run-record-views`,role:`group`,"aria-label":`运行记录展示`,children:[/* @__PURE__ */ Y(F,{"aria-pressed":f===`records`,theme:f===`records`?`light`:`borderless`,onClick:()=>p(`records`),children:`节点记录`}),/* @__PURE__ */ Y(F,{"aria-pressed":f===`timeline`,theme:f===`timeline`?`light`:`borderless`,onClick:()=>p(`timeline`),children:`运行时间轴`})]}),!r&&/* @__PURE__ */ X(`div`,{className:`arc-run-record-filters`,children:[/* @__PURE__ */ Y(i,{"aria-label":`筛选节点记录`,placeholder:`搜索节点名称或执行 ID`,showClear:!0,value:o,onChange:e=>{s(e),d(50)}}),/* @__PURE__ */ Y(`span`,{id:h,className:`arc-run-filter-label`,children:`节点记录状态`}),/* @__PURE__ */ Y(a,{"aria-labelledby":h,value:c,optionList:[{value:`all`,label:`全部状态`},{value:`handled`,label:`异常已处理`},...Object.entries(yt).filter(([e])=>e!==`cancelled`).map(([e,t])=>({value:e,label:t}))],onChange:e=>{l(String(e)),d(50)}}),/* @__PURE__ */ X(`span`,{children:[_.length,` 条 · 按流程结构排列`]})]}),f===`timeline`?/* @__PURE__ */ Y(dr,{rows:_,selected:t,onSelect:m,limit:u}):/* @__PURE__ */ Y(`div`,{className:`coze-debug-node-list`,children:_.slice(0,u).map(e=>/* @__PURE__ */ Y(hr,{row:e,compact:r,selected:t===e.node.nodeId,onSelect:m},e.node.nodeId))}),!_.length&&/* @__PURE__ */ Y(`p`,{className:`arc-run-record-empty`,children:g.length?`没有匹配的节点记录`:`等待节点执行记录…`}),_.length>u&&/* @__PURE__ */ X(F,{onClick:()=>d(e=>e+50),children:[`加载更多记录(剩余 `,_.length-u,` 条)`]})]})}var hr;function gr(){return(gr=e((()=>{N(),pr(),hr=Te(function({row:e,compact:t,selected:n,onSelect:r}){let{node:i,label:a,handled:o}=e;return/* @__PURE__ */ X(`button`,{type:`button`,className:`coze-debug-node-row${n?` is-selected`:``}`,"aria-label":`检查节点 ${a}`,"aria-pressed":n,onClick:()=>r(i.nodeId),children:[/* @__PURE__ */ Y(`span`,{className:`coze-node-state is-${o?`handled`:i.status}`,"aria-hidden":`true`,children:i.status===`succeeded`?`✓`:i.status===`failed`?`!`:i.status===`running`?`◷`:i.status===`paused`?`Ⅱ`:`–`}),/* @__PURE__ */ X(`span`,{className:`coze-debug-node-name`,children:[/* @__PURE__ */ Y(`strong`,{title:a,children:a}),/* @__PURE__ */ X(`small`,{children:[o?`异常已处理`:yt[i.status],` · `,i.attempts,` 次执行`]})]}),!t&&/* @__PURE__ */ Y(R,{color:o?`orange`:i.status===`failed`?`red`:i.status===`succeeded`?`green`:`grey`,children:o?`异常已处理`:yt[i.status]}),/* @__PURE__ */ Y(`span`,{className:`arc-run-node-duration`,children:Gt(i.durationMs)}),/* @__PURE__ */ Y(`span`,{"aria-hidden":`true`,children:`›`})]})})})))()}function _r({run:e,props:t,onLoad:n,onInspect:i,onProceed:a}){let o=kt(),[s,c]=q(!1),[l,u]=q(),[d,f]=q(``),[p,m]=q(!1),h=e.debug.pausedNodeId,g=e.nodes.find(e=>e.nodeId===h),_=!!g&&!g.dataOmitted,v=e.debug.pauseToken;W(()=>{let e=!1;return m(!0),n(h).catch(t=>{e||f(t.message)}).finally(()=>{e||m(!1)}),()=>{e=!0}},[v,h,n]);let y=$(Q.resume,{requestOptions:{client:t.client},onSuccess:e=>{o.setQueryData(Ht(e.id),e),gt(o)},onError:e=>f(e.message)}),b=t=>{let n;if(s)try{if(!_||(n=JSON.parse(l??JSON.stringify(g.input)),!n||typeof n!=`object`||Array.isArray(n)))throw Error()}catch{f(`输入必须为合法 JSON 对象`);return}f(``),a?.(),y.mutate(Q.resume.input.parse({params:{runId:e.id},body:{pauseToken:v,mode:t,...n?{input:n}:{}}}))};return/* @__PURE__ */ X(`div`,{className:`arc-automation-breakpoint-controls`,role:`region`,"aria-label":`断点控制`,"data-workflow-pause-token":v,children:[/* @__PURE__ */ X(`div`,{className:`arc-breakpoint-node`,children:[/* @__PURE__ */ X(`strong`,{"aria-live":`polite`,children:[`暂停于 `,Yt(e.graph,h)]}),/* @__PURE__ */ Y(F,{size:`small`,theme:`borderless`,onClick:()=>i(h),children:`检查节点`})]}),/* @__PURE__ */ Y(`p`,{children:`继续执行会运行至下一个断点;单步执行会暂停在下一个可执行节点。`}),p&&/* @__PURE__ */ Y(P,{size:`small`}),!p&&!_&&/* @__PURE__ */ Y(F,{onClick:()=>{f(``),m(!0),n(h).catch(e=>f(e.message)).finally(()=>m(!1))},children:`重新加载节点输入`}),/* @__PURE__ */ X(`label`,{children:[/* @__PURE__ */ Y(`input`,{type:`checkbox`,"aria-label":`修改当前节点输入`,disabled:!_||p||y.isPending,checked:s,onChange:e=>c(e.target.checked)}),`修改当前节点输入`]}),s&&/* @__PURE__ */ Y(r,{"aria-label":`断点节点输入`,rows:7,value:l??JSON.stringify(g?.input??{},null,2),disabled:!_||y.isPending,onChange:e=>{u(e),f(``)}}),!s&&_&&/* @__PURE__ */ X(`details`,{children:[/* @__PURE__ */ Y(`summary`,{children:`查看暂停输入`}),/* @__PURE__ */ Y(`pre`,{className:`arc-breakpoint-input`,children:JSON.stringify(g.input,null,2).slice(0,16e3)})]}),/* @__PURE__ */ X(I,{wrap:!0,children:[/* @__PURE__ */ Y(F,{"data-workflow-focus-entry":!0,theme:`solid`,loading:y.isPending,disabled:y.isPending||s&&!_,onClick:()=>b(`continue`),children:`继续执行`}),/* @__PURE__ */ Y(F,{disabled:y.isPending||s&&!_,onClick:()=>b(`step`),children:`单步执行`})]}),d&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:d})]})}function vr(){return(vr=e((()=>{N()})))()}function yr(e){try{return typeof window<`u`&&window.localStorage.getItem(e)===`true`}catch{return!1}}function br(e){let t=Zt(`automation:canvas:minimap:user:${e}`),[n,r]=q(()=>({key:t,visible:yr(t)}));return{minimapVisible:n.key===t?n.visible:yr(t),onMinimapVisibleChange:U(e=>{r({key:t,visible:e});try{window.localStorage.setItem(t,String(e))}catch{}},[t])}}function xr(e,t){try{let n=JSON.parse(window.localStorage.getItem(e)??`null`);return t(n)?n:void 0}catch{return}}function Sr(e,t){let n=br(e),r=Zt(`automation:canvas:mode:user:${e}`),i=Zt(`automation:canvas:viewport:user:${e}:${t}`),[a,o]=q(()=>({key:r,value:xr(r,Tr)??`MOUSE`})),s=De(()=>xr(i,wr),[i]),c=K(void 0),l=K(void 0),u=U(()=>{if(clearTimeout(l.current),c.current){try{window.localStorage.setItem(i,JSON.stringify(c.current))}catch{}c.current=void 0}},[i]);W(()=>(window.addEventListener(`pagehide`,u),window.addEventListener(`blur`,u),()=>{u(),window.removeEventListener(`pagehide`,u),window.removeEventListener(`blur`,u)}),[u]);let d=U(e=>{wr(e)&&(c.current=e,clearTimeout(l.current),l.current=setTimeout(u,150))},[u]),f=U(e=>{o({key:r,value:e});try{window.localStorage.setItem(r,JSON.stringify(e))}catch{}},[r]);return{...n,initialViewport:s,onViewportChange:d,interactionMode:a.key===r?a.value:xr(r,Tr)??`MOUSE`,onInteractionModeChange:f}}function Cr(e,t){let n=Zt(`automation:last-run:user:${e}:workflow:${t}`);return{bookmark:De(()=>xr(n,e=>!!e&&typeof e==`object`&&typeof e.runId==`string`&&Number.isSafeInteger(e.revision)),[n]),remember:U((e,t)=>{try{e&&t?window.localStorage.setItem(n,JSON.stringify({runId:e,revision:t})):window.localStorage.removeItem(n)}catch{}},[n])}}var wr,Tr;function Er(){return(Er=e((()=>{wr=e=>!!e&&typeof e==`object`&&[`zoom`,`scrollX`,`scrollY`].every(t=>Number.isFinite(e[t]))&&e.zoom>0,Tr=e=>e===`MOUSE`||e===`PAD`})))()}function Dr({table:e,value:t,onChange:n,disabled:r}){let c=e.fields.map(e=>({value:e.name,label:e.title})),l=e=>n({...t,...e});return/* @__PURE__ */ X(`div`,{className:`arc-record-trigger`,children:[/* @__PURE__ */ X(`label`,{"data-setting-path":`trigger.record.operations`,children:[/* @__PURE__ */ Y(`strong`,{children:`触发操作`}),/* @__PURE__ */ Y(a,{"aria-label":`数据表触发操作`,multiple:!0,disabled:r,value:t.operations,optionList:$e.filter(t=>e.operations.includes(t)).map(e=>({value:e,label:Qe[e]})),onChange:e=>l({operations:e})})]}),t.operations.includes(`updated`)&&/* @__PURE__ */ X(`label`,{"data-setting-path":`trigger.record.watchFields`,children:[/* @__PURE__ */ Y(`strong`,{children:`监听字段`}),/* @__PURE__ */ Y(a,{"aria-label":`监听字段`,multiple:!0,filter:!0,disabled:r,placeholder:`任意业务字段实际变化`,value:t.watchFields,optionList:c.filter(e=>e.value!==`id`),onChange:e=>l({watchFields:e})}),/* @__PURE__ */ Y(`small`,{children:`空选表示任意业务字段变化。重复保存相同值不会触发;系统更新时间不参与监听。`})]}),/* @__PURE__ */ X(`label`,{"data-setting-path":`trigger.record.requiredFields`,children:[/* @__PURE__ */ Y(`strong`,{children:`这些字段不为空时`}),/* @__PURE__ */ Y(a,{"aria-label":`触发必填字段`,multiple:!0,filter:!0,disabled:r,placeholder:`不限制`,value:t.requiredFields,optionList:c,onChange:e=>l({requiredFields:e})}),/* @__PURE__ */ Y(`small`,{children:`删除和成员移除检查变更前记录,其他操作检查变更后记录。0 和 false 均视为已填写。`})]}),/* @__PURE__ */ X(`label`,{"data-setting-path":`trigger.record.conditions`,children:[/* @__PURE__ */ Y(`strong`,{children:`触发限制条件`}),/* @__PURE__ */ Y(a,{"aria-label":`触发条件组合`,disabled:r,value:t.match,optionList:[{value:`all`,label:`同时满足全部条件(AND)`},{value:`any`,label:`满足任一条件(OR)`}],onChange:e=>l({match:e})})]}),t.conditions.map((n,u)=>{let d=e.fields.find(e=>e.name===n.field),f=e=>l({conditions:t.conditions.map((t,n)=>n===u?{...t,...e}:t)}),p=d?.type===`integer`||d?.type===`number`,m=Ze.filter(e=>p||![`gt`,`gte`,`lt`,`lte`].includes(e)).filter(e=>e!==`contains`||d?.type===`string`);return/* @__PURE__ */ X(`div`,{className:`arc-record-condition`,"data-setting-path":`trigger.record.conditions.${u}`,children:[/* @__PURE__ */ Y(a,{"aria-label":`条件 ${u+1} 数据`,disabled:r,value:n.scope,optionList:[{value:`after`,label:`变更后`},{value:`before`,label:`变更前`}],onChange:e=>f({scope:e})}),/* @__PURE__ */ Y(a,{"aria-label":`条件 ${u+1} 字段`,filter:!0,disabled:r,value:n.field||void 0,placeholder:`选择字段`,optionList:c,onChange:t=>{let n=e.fields.find(e=>e.name===t);f({field:String(t),operator:`eq`,value:n?.type===`boolean`?!0:n?.type===`integer`||n?.type===`number`?0:``})}}),/* @__PURE__ */ Y(a,{"aria-label":`条件 ${u+1} 比较`,disabled:r,value:n.operator,optionList:m.map(e=>({value:e,label:Xe[e]})),onChange:e=>f({operator:e})}),![`empty`,`not_empty`].includes(n.operator)&&(p?/* @__PURE__ */ Y(o,{"aria-label":`条件 ${u+1} 值`,disabled:r,value:typeof n.value==`number`?n.value:void 0,onChange:e=>f({value:e})}):d?.type===`boolean`?/* @__PURE__ */ Y(s,{"aria-label":`条件 ${u+1} 值`,disabled:r,checked:n.value===!0,onChange:e=>f({value:e})}):/* @__PURE__ */ Y(i,{"aria-label":`条件 ${u+1} 值`,disabled:r,value:String(n.value??``),onChange:e=>f({value:e})})),/* @__PURE__ */ Y(F,{"aria-label":`删除条件 ${u+1}`,disabled:r,onClick:()=>l({conditions:t.conditions.filter((e,t)=>t!==u)}),children:`删除`})]},u)}),/* @__PURE__ */ Y(F,{disabled:r||t.conditions.length>=32,onClick:()=>l({conditions:[...t.conditions,{field:``,scope:t.operations.every(e=>e===`deleted`||e===`member_removed`)?`before`:`after`,operator:`eq`,value:``}]}),children:`添加触发条件`}),/* @__PURE__ */ Y(`small`,{children:`条件决定是否创建正式运行;事务回滚不触发。流程内的 If 节点继续负责执行后的分支。`})]})}function Or(){return(Or=e((()=>{N()})))()}function kr({workflowId:e,client:t,value:n,onChange:r,disabled:i,issues:a}){let c=ut(Q.workflowRuntime,{params:{id:e}},{requestOptions:{client:t},refetchInterval:3e3,refetchIntervalInBackground:!1}),l=e=>a.filter(t=>t.path===e).map((e,t)=>/* @__PURE__ */ Y(`p`,{role:`alert`,className:`arc-automation-error`,children:e.message},t));return/* @__PURE__ */ X(`fieldset`,{disabled:i,children:[/* @__PURE__ */ Y(`legend`,{children:`执行控制`}),/* @__PURE__ */ X(`div`,{className:`arc-settings-field`,"data-setting-path":`limits.maxConcurrency`,tabIndex:-1,children:[/* @__PURE__ */ Y(`strong`,{children:`最大并发运行数`}),/* @__PURE__ */ Y(o,{"aria-label":`最大并发运行数`,disabled:i,min:0,max:128,precision:0,value:n.maxConcurrency,onChange:e=>r({...n,maxConcurrency:e===``?0:Number(e)})}),l(`limits.maxConcurrency`),/* @__PURE__ */ Y(`small`,{children:`0 表示继承宿主整体上限,1 表示串行。所有发布版本共用额度;内部并行节点和批处理保持原设置。`})]}),/* @__PURE__ */ X(`div`,{className:`arc-settings-field`,children:[/* @__PURE__ */ Y(`strong`,{children:`限制执行频率`}),/* @__PURE__ */ Y(s,{"aria-label":`限制执行频率`,disabled:i,checked:!!n.rateLimit,onChange:e=>r({...n,rateLimit:e?{maxStarts:1,periodSeconds:60}:void 0})}),/* @__PURE__ */ Y(`small`,{children:`使用滚动时段限制正式运行的启动数量,包含重试和重新运行。调试使用独立额度。`})]}),n.rateLimit&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ X(`div`,{className:`arc-settings-field`,"data-setting-path":`limits.rateLimit.maxStarts`,tabIndex:-1,children:[/* @__PURE__ */ Y(`strong`,{children:`每时段最多启动`}),/* @__PURE__ */ Y(o,{"aria-label":`每时段最多启动`,disabled:i,min:1,max:1e4,precision:0,value:n.rateLimit.maxStarts,onChange:e=>r({...n,rateLimit:{...n.rateLimit,maxStarts:Number(e)}})}),l(`limits.rateLimit.maxStarts`)]}),/* @__PURE__ */ X(`div`,{className:`arc-settings-field`,"data-setting-path":`limits.rateLimit.periodSeconds`,tabIndex:-1,children:[/* @__PURE__ */ Y(`strong`,{children:`时段长度(秒)`}),/* @__PURE__ */ Y(o,{"aria-label":`频率时段秒数`,disabled:i,min:1,max:86400,precision:0,value:n.rateLimit.periodSeconds,onChange:e=>r({...n,rateLimit:{...n.rateLimit,periodSeconds:Number(e)}})}),l(`limits.rateLimit.periodSeconds`)]})]}),/* @__PURE__ */ X(`div`,{className:`arc-settings-field`,children:[/* @__PURE__ */ Y(`strong`,{children:`超过限制时`}),/* @__PURE__ */ Y(`span`,{children:`持久化排队等待`}),/* @__PURE__ */ Y(`small`,{children:`每次触发都会保留,按流程内入队顺序执行;取消排队任务可释放等待。降低上限不会取消运行中的任务。`})]}),c.isPending&&/* @__PURE__ */ Y(`p`,{role:`status`,children:`正在读取执行队列…`}),c.error&&/* @__PURE__ */ Y(L,{type:`warning`,closeIcon:null,description:`执行队列暂不可用,不能确认当前占用。设置仍可编辑。`}),c.data&&/* @__PURE__ */ X(`div`,{role:`status`,className:`arc-settings-feedback`,children:[/* @__PURE__ */ X(`p`,{children:[`正式运行:运行中 `,c.data.active,` · 排队中 `,c.data.waiting,` · 当前流程有效上限 `,c.data.effectiveConcurrency,` · 宿主整体上限 `,c.data.globalConcurrency]}),/* @__PURE__ */ X(`p`,{children:[`调试运行:运行中 `,c.data.debugActive,` · 排队中 `,c.data.debugWaiting,` · 宿主调试上限 `,c.data.debugConcurrency]}),c.data.limits.rateLimit&&/* @__PURE__ */ X(`p`,{children:[`最近 `,c.data.limits.rateLimit.periodSeconds,` 秒启动 `,c.data.recentStarts,`/`,c.data.limits.rateLimit.maxStarts,` 次`,c.data.nextStartAt&&` · 频率额度预计 ${dt(c.data.nextStartAt)} 恢复(仍需等待并发空位)`]}),/* @__PURE__ */ Y(`small`,{children:`显示的是已保存的执行控制,每 3 秒更新;离开设置页停止查询。`})]}),/* @__PURE__ */ Y(`small`,{children:`执行控制保存后从下一次队列调度生效,作用于该流程所有版本和等待中的正式运行;已有节点结果与外部副作用不受影响。`})]})}function Ar(){return(Ar=e((()=>{N()})))()}function jr({value:e,onChange:t,onInvalid:n}){let[i,a]=q(()=>JSON.stringify(e,null,2)),[o,s]=q(``),c=JSON.stringify(e),l=K(c),u=K(n);return u.current=n,W(()=>{l.current!==c&&(l.current=c,a(JSON.stringify(e,null,2)),s(``),u.current(!1))},[c,e]),W(()=>()=>u.current(!1),[]),/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(r,{"aria-label":`触发输入 JSON Schema`,rows:8,value:i,onChange:e=>{a(e);try{let n=JSON.parse(e);if(!n||typeof n!=`object`||Array.isArray(n))throw Error();l.current=JSON.stringify(n),s(``),u.current(!1),t(n)}catch{s(`请输入合法 JSON 对象`),u.current(!0)}}}),o&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:o})]})}function Mr({path:e,label:t,errors:n,children:r}){return/* @__PURE__ */ X(`div`,{className:`arc-settings-field`,"data-setting-path":e,tabIndex:-1,children:[/* @__PURE__ */ Y(`strong`,{children:t}),r,n.filter(t=>t.path===e).map((e,t)=>/* @__PURE__ */ Y(`p`,{className:`arc-automation-error`,role:`alert`,children:e.message},t))]})}function Nr({workflow:e,catalog:t,client:n,saving:r,onSave:o,onClose:s,onDirtyChange:c,focusPath:l}){let d=ln(),f=dn(),[p,m]=q(()=>structuredClone({name:e.name,actorId:e.actorId,trigger:e.trigger,limits:e.limits??{maxConcurrency:0}})),h=K(JSON.stringify(p)),[g,_]=q(!1),[v,y]=q([]),[b,x]=q([]),[S,C]=q(),[w,T]=q(),[E,D]=q(),[O,ee]=q(!1),[te,ne]=q(!1),re=h.current!==JSON.stringify(p)||g||!!v.length;W(()=>(c(re),()=>c(!1)),[re,c]);let k=Qt({client:n,enabled:!0}),A=$(Q.validateSettings,{requestOptions:{client:n}}),j=r||A.isPending,M=K(0),ie=K(null),ae=e=>{let t=ie.current?.querySelector(`[data-setting-path="${e.startsWith(`trigger.inputSchema`)?`trigger.inputSchema`:e.startsWith(`trigger.record.requiredFields.`)?`trigger.record.requiredFields`:e}"]`);t?.scrollIntoView?.({block:`center`}),(t?.querySelector(`input,textarea,[role="combobox"],button`)??t)?.focus()};W(()=>{l&&ae(l)},[l]);let N=e=>{M.current++,m(e),x([]),C(void 0),T(void 0)},P=e=>N({...p,trigger:At.parse({...p.trigger,...e})}),I=b,L=async()=>{let t=M.current,n=ot.safeParse({...e,...le});if(!n.success){let e=n.error.issues.map(e=>({code:`settings_invalid`,path:e.path.join(`.`),message:e.path[0]===`name`?`名称需为 1–120 个字符`:`设置字段格式不正确`}));x(e),ae(e[0].path)}else if(g||v.length)ae(`trigger.inputSchema`);else{C(void 0);try{let e=await A.mutateAsync(Q.validateSettings.input.parse({body:n.data}));return M.current===t?(x(e.issues),T(e),e.valid||ae(e.issues[0].path),e):void 0}catch(e){M.current===t&&C(e)}}},z=async()=>{if((await L())?.valid)try{await o(le),s()}catch(e){C(e)}},se=async()=>{j||(!re||await oe({title:`放弃未保存的设置?`,content:`只丢弃本面板修改,画布上已有的草稿修改会保留。`,okText:`放弃设置修改`}))&&s()},ce=k.data?.map(e=>({value:e.id,label:`${e.nickname||e.username} (${e.username})${e.status===`enabled`?` · 已启用`:` · 已停用`}`,disabled:e.status!==`enabled`}))??[];ce.some(e=>e.value===p.actorId)||ce.unshift({value:p.actorId,label:`账号 ${p.actorId} · 状态待确认`,disabled:!0});let B=t.sources.find(e=>e.name===p.trigger.source),V=p.trigger.kind===`event`?B?.schema??{type:`object`}:p.trigger.inputSchema,le=p.trigger.kind===`event`?{...p,trigger:{...p.trigger,inputSchema:V}}:p,ue=t=>{y([]),_(!1);let n=t===`event`?B?.schema??{type:`object`}:t===`schedule`?{type:`object`,properties:{scheduledAt:{type:`string`,format:`date-time`}},required:[`scheduledAt`]}:e.trigger.kind===`api`?e.trigger.inputSchema:{type:`object`};P({kind:t,inputSchema:n,record:t===`event`?p.trigger.record:void 0})},de=te?`custom`:Ve.find(e=>e.value!==`custom`&&e.cron===p.trigger.cron)?.value??`custom`,fe=He.some(e=>e.value===p.trigger.timezone)?He:[...He,{value:p.trigger.timezone,label:p.trigger.timezone}],pe=Pt(V),me=JSON.stringify({input:pe??{},idempotencyKey:`replace-with-unique-business-event-id`},null,2),he=`import { automationContract } from '@fudanda/react-core/lib/native-operations';\n\n// 已登录的宿主 GoaClient 复用 Cookie / CSRF\nawait client.call(automationTrigger, {\n params: { id: ${JSON.stringify(e.uuid)} },\n body: ${me}\n});`,ge=S instanceof Pe&&S.status===409;return/* @__PURE__ */ Y(u,{title:`工作流设置`,visible:!0,width:620,className:`arc-workflow-settings`,onCancel:()=>void se(),footer:/* @__PURE__ */ Y(be,{onCancel:()=>{j||s()},onOk:z,okText:`保存草稿`,loading:j,disabled:g||!!v.length||!!k.error||k.isPending,extra:/* @__PURE__ */ Y(F,{disabled:j||g||!!v.length,onClick:()=>void L(),children:`校验设置`})}),children:/* @__PURE__ */ X(`div`,{ref:ie,className:`arc-settings-body`,onKeyDown:e=>{(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`s`&&(e.preventDefault(),e.stopPropagation(),j||z())},children:[/* @__PURE__ */ Y(`p`,{className:`arc-settings-note`,children:`保存将包含当前画布草稿。执行控制保存即生效;流程、执行账号及触发配置需重新发布后用于新的正式运行,已有运行继续使用原版本。`}),S&&/* @__PURE__ */ X(`div`,{role:`alert`,className:`arc-settings-feedback`,children:[/* @__PURE__ */ Y(`p`,{children:ge?`保存发生版本冲突,本地设置和画布修改已保留。`:S.message}),ge&&/* @__PURE__ */ Y(F,{loading:O,onClick:async()=>{ee(!0);try{D(await ct(Q.detail,{params:{id:e.uuid}},{client:n}))}catch(e){C(e)}finally{ee(!1)}},children:`查看服务端最新版本`}),E&&/* @__PURE__ */ X(`p`,{children:[`服务端草稿 r`,E.revision,`:`,E.name,`。请对比发布历史与草稿后处理冲突;不会自动覆盖当前编辑内容。`]})]}),/* @__PURE__ */ X(`fieldset`,{disabled:j,children:[/* @__PURE__ */ Y(`legend`,{children:`基础信息`}),/* @__PURE__ */ X(`div`,{className:`arc-settings-workflow-id`,children:[/* @__PURE__ */ Y(`span`,{children:`工作流 ID`}),/* @__PURE__ */ Y(Gn,{uuid:e.uuid,full:!0}),/* @__PURE__ */ Y(`small`,{children:`用于接口调用和子流程引用,创建后保持不变。`})]}),/* @__PURE__ */ X(Mr,{path:`name`,label:`工作流名称`,errors:I,children:[/* @__PURE__ */ Y(i,{"aria-label":`工作流名称`,maxLength:120,showClear:!0,value:p.name,onChange:e=>N({...p,name:e})}),/* @__PURE__ */ X(`small`,{children:[p.name.trim().length,` / 120`]})]})]}),/* @__PURE__ */ X(`fieldset`,{disabled:j,children:[/* @__PURE__ */ Y(`legend`,{children:`执行身份`}),/* @__PURE__ */ X(Mr,{path:`actorId`,label:`执行账号`,errors:I,children:[/* @__PURE__ */ Y(a,{"aria-label":`执行账号`,filter:!0,loading:k.isFetching,disabled:j||!!k.error,value:p.actorId,optionList:ce,onChange:e=>N({...p,actorId:Number(e)})}),k.error&&/* @__PURE__ */ X(`div`,{role:`alert`,children:[`账号加载失败:`,k.error.message,/* @__PURE__ */ Y(F,{loading:k.isFetching,onClick:()=>void k.refetch(),children:`重新加载账号`})]}),/* @__PURE__ */ Y(`small`,{children:`流程以该账号身份执行。停用账号或撤销权限立即影响后续操作;每次执行仍校验权限和数据范围。`})]}),w&&/* @__PURE__ */ X(`p`,{role:`status`,children:[w.issues.some(e=>e.path===`actorId`)?`执行身份预检查未通过`:`执行身份预检查通过 · ${w.permissions.length} 项节点权限`,`。未完成的节点仍需发布校验。`]})]}),/* @__PURE__ */ Y(kr,{workflowId:e.uuid,client:n,value:p.limits??{maxConcurrency:0},onChange:e=>N({...p,limits:e}),disabled:j,issues:I}),/* @__PURE__ */ X(`fieldset`,{disabled:j,children:[/* @__PURE__ */ Y(`legend`,{children:`触发配置`}),/* @__PURE__ */ X(Mr,{path:`trigger.kind`,label:`触发方式`,errors:I,children:[/* @__PURE__ */ Y(a,{"aria-label":`触发方式`,disabled:j,value:p.trigger.kind,optionList:We,onChange:e=>ue(e)}),/* @__PURE__ */ Y(`small`,{children:`切换触发方式会更新入口数据结构,请重新检查下游变量绑定。`})]}),p.trigger.kind===`event`&&/* @__PURE__ */ X(Mr,{path:`trigger.source`,label:`数据表或专用业务事件`,errors:I,children:[/* @__PURE__ */ Y(a,{"aria-label":`触发数据表`,filter:!0,disabled:j,placeholder:`选择系统表或业务表`,value:p.trigger.source||void 0,optionList:t.sources.map(e=>({value:e.name,label:e.recordTable?`${e.recordTable.name.startsWith(`system.`)?`系统表`:`业务表`} · ${e.recordTable.title}`:`专用事件 · ${e.title??e.name}`})),onChange:e=>{let n=t.sources.find(t=>t.name===String(e));P({source:String(e),inputSchema:n?.schema??{type:`object`},record:n?.recordTable?{operations:[n.recordTable.operations[0]],watchFields:[],requiredFields:[],match:`all`,conditions:[]}:void 0})}}),B?.description&&/* @__PURE__ */ Y(`small`,{children:B.description}),!t.sources.length&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:`宿主尚未注册业务事件。`}),B?.recordTable&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(Dr,{table:B.recordTable,value:p.trigger.record??{operations:[B.recordTable.operations[0]],watchFields:[],requiredFields:[],match:`all`,conditions:[]},onChange:e=>P({record:e}),disabled:j}),I.filter(e=>e.path.startsWith(`trigger.record`)).map((e,t)=>/* @__PURE__ */ Y(`p`,{role:`alert`,children:e.message},t))]}),/* @__PURE__ */ Y(`small`,{children:`只提供已启用且有读取权限的数据表;业务事务提交后触发,不包含查询事件。`})]}),p.trigger.kind===`schedule`&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ X(Mr,{path:`trigger.cron`,label:`执行计划`,errors:I,children:[/* @__PURE__ */ Y(a,{"aria-label":`执行计划快捷配置`,disabled:j,value:de,optionList:Ve.map(({value:e,label:t})=>({value:e,label:t})),onChange:e=>{ne(e===`custom`);let t=Ve.find(t=>t.value===e);t?.cron&&P({cron:t.cron})}}),/* @__PURE__ */ Y(i,{"aria-label":`六段 Cron`,value:p.trigger.cron,placeholder:`秒 分 时 日 月 周`,onChange:e=>{ne(!0),P({cron:e})}}),/* @__PURE__ */ Y(`small`,{children:`六段格式:秒 分 时 日 月 周。例如 0 0 9 * * * 为每天 09:00。`})]}),/* @__PURE__ */ X(Mr,{path:`trigger.timezone`,label:`时区`,errors:I,children:[/* @__PURE__ */ Y(a,{"aria-label":`时区`,filter:!0,allowCreate:!0,disabled:j,value:p.trigger.timezone,optionList:fe,onChange:e=>P({timezone:String(e)})}),/* @__PURE__ */ Y(`small`,{children:`允许输入其他 IANA 时区;Go 按所选时区计算夏令时。`})]}),/* @__PURE__ */ X(`div`,{className:`arc-settings-schedule`,children:[/* @__PURE__ */ Y(F,{disabled:j,loading:A.isPending,onClick:()=>void L(),children:`预览执行时间`}),w&&/* @__PURE__ */ Y(`ol`,{"aria-label":`最近五次执行时间`,children:w.nextRuns.map(e=>/* @__PURE__ */ Y(`li`,{children:new Intl.DateTimeFormat(`zh-CN`,{timeZone:p.trigger.timezone,dateStyle:`medium`,timeStyle:`medium`,hour12:!1}).format(new Date(e))},e))}),/* @__PURE__ */ Y(`small`,{children:`执行输入仅包含系统生成的 scheduledAt,不能要求其他必填参数;停机错过多个时间点时只补最近一次。发布并启用后生效。`})]})]}),p.trigger.kind===`api`&&/* @__PURE__ */ X(`div`,{className:`arc-settings-api`,children:[/* @__PURE__ */ X(R,{children:[`POST `,Fe(Q.trigger.path,{id:e.uuid})]}),/* @__PURE__ */ Y(`small`,{children:`调用已发布且启用的版本。使用 Cookie+CSRF 或具备 host:automation:trigger 权限的 API Key;此处不生成或展示秘密。`}),/* @__PURE__ */ X(`details`,{children:[/* @__PURE__ */ Y(`summary`,{children:`调用示例`}),/* @__PURE__ */ Y(`pre`,{children:he}),/* @__PURE__ */ Y(F,{onClick:()=>void xe(he),children:`复制 GoaClient 示例`}),/* @__PURE__ */ Y(`small`,{children:`API Key 示例:将请求 JSON 保存为 workflow-input.json,替换服务地址及受限密钥。`}),/* @__PURE__ */ Y(`pre`,{children:`curl -X POST '<服务地址>${Fe(Q.trigger.path,{id:e.uuid})}' \\\n -H 'Authorization: Bearer <受限 API Key>' \\\n -H 'Content-Type: application/json' \\\n --data-binary @workflow-input.json`})]}),/* @__PURE__ */ Y(`small`,{children:`幂等键应使用业务事件的唯一标识;重复提交同一标识不会创建新执行。`})]})]}),/* @__PURE__ */ X(`fieldset`,{disabled:j,children:[/* @__PURE__ */ Y(`legend`,{children:`输入参数`}),/* @__PURE__ */ X(Mr,{path:`trigger.inputSchema`,label:p.trigger.kind===`event`?`事件输入结构(只读)`:`开始节点输入字段`,errors:I,children:[/* @__PURE__ */ Y(`small`,{children:p.trigger.kind===`event`?`由宿主维护,事件切换后自动展示对应结构。`:`与开始节点共用同一输入定义。高级约束会在字段编辑中保留。`}),/* @__PURE__ */ Y(`div`,{className:`arc-workflow-designer arc-wf-theme-${d} arc-settings-input-fields`,style:Vt(f),children:/* @__PURE__ */ Y(In,{schema:V,readOnly:j||p.trigger.kind===`event`||V.type!==void 0&&V.type!==`object`,onChange:e=>P({inputSchema:e}),onValidation:y},p.trigger.kind+`:`+p.trigger.source)}),/* @__PURE__ */ X(`details`,{children:[/* @__PURE__ */ Y(`summary`,{children:`高级 JSON Schema`}),p.trigger.kind===`event`?/* @__PURE__ */ Y(`pre`,{children:JSON.stringify(V,null,2)}):/* @__PURE__ */ Y(jr,{value:V,onChange:e=>P({inputSchema:e}),onInvalid:_},p.trigger.kind)]}),/* @__PURE__ */ X(`details`,{children:[/* @__PURE__ */ Y(`summary`,{children:`示例输入`}),/* @__PURE__ */ Y(`pre`,{children:JSON.stringify(pe??{},null,2)})]})]})]})]})})}function Pr(){return(Pr=e((()=>{Kn(),N(),Rn(),Wn(),ye(),z(),Se(),pn(),Or(),Ar()})))()}function Fr(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Ir(e,t){return e===t?!0:Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((e,n)=>Ir(e,t[n])):Fr(e)&&Fr(t)?Object.keys(e).length===Object.keys(t).length&&Object.keys(e).every(n=>Object.hasOwn(t,n)&&Ir(e[n],t[n])):!1}function Lr(e,t,n){return et(e,t).filter(e=>e.code!==`condition`).map(e=>({label:nt(e,n),valid:e.matched}))}function Rr(e){let t=Fr(e.before)?e.before:null,n=Fr(e.after)?e.after:null,r=e.operation,i=[];return(r===`created`||r===`member_added`?e.before!==null||!n:r===`deleted`||r===`member_removed`?e.after!==null||!t:!t||!n)&&i.push(`新增或成员加入需有变更后数据,删除或成员移除需有变更前数据,修改需有前后数据。`),t&&n&&t.id!==n.id&&i.push(`变更前后必须使用同一记录 ID。`),(t&&t.id!==e.recordId||n&&n.id!==e.recordId)&&i.push(`记录 ID 必须与变更数据中的 ID 一致。`),i}function zr(e,t,n,r,i,a={}){n=t===`created`||t===`member_added`?null:n,r=t===`deleted`||t===`member_removed`?null:r;let o=[.../* @__PURE__ */ new Set([...Object.keys(n??{}),...Object.keys(r??{})])].filter(e=>e!==`id`);return{table:e.name,operation:t,recordId:r?.id??n?.id??a.recordId??1,before:n,after:r,changedFields:o.filter(e=>!Hr(n?.[e],r?.[e])).sort(),actorId:i,requestId:typeof a.requestId==`string`&&a.requestId?a.requestId:`test-event`,occurredAt:typeof a.occurredAt==`string`&&a.occurredAt?a.occurredAt:(/* @__PURE__ */ new Date()).toISOString()}}function Br(e,t,n,r=t.operations[0]){let i=Fr(e.schema.properties)?e.schema.properties:{},a=/* @__PURE__ */ new Set([`id`,...Array.isArray(e.schema.required)?e.schema.required:[],...t.watchFields,...t.requiredFields,...t.conditions.map(e=>e.field)]);if(r===`updated`&&!t.watchFields.length){let t=e.fields.find(e=>e.name!==`id`&&[`integer`,`number`,`boolean`].includes(e.type))??e.fields.find(e=>e.name!==`id`);t&&a.add(t.name)}let o=Object.fromEntries(e.fields.filter(e=>{let t=i[e.name];return a.has(e.name)||Fr(t)&&Object.hasOwn(t,`default`)}).map(e=>{let t=i[e.name],n=Fr(t)?t:{},r=(/* @__PURE__ */ new Date()).toISOString(),a=n.default??n.const??(Array.isArray(n.enum)?n.enum[0]:void 0)??(e.name===`id`?1:e.type===`integer`||e.type===`number`?Math.max(1,typeof n.minimum==`number`?n.minimum:1):e.type===`boolean`?!0:e.type===`object`?{}:e.type===`array`?[]:n.format===`date`?r.slice(0,10):n.format===`date-time`?r:`测试${e.title}`);return[e.name,a]})),s=structuredClone(o),c=structuredClone(o);for(let n of t.match===`any`?t.conditions.slice(0,1):t.conditions){let t=n.scope===`before`?s:c,r=e.fields.find(e=>e.name===n.field),i=r?.type===`number`||r?.type===`integer`,a=n.value;n.operator===`empty`?a=null:n.operator===`not_empty`?a=t[n.field]??(i?1:`测试值`):n.operator===`neq`?a=typeof a==`number`?a+1:typeof a==`boolean`?!a:`${String(a)}(不同)`:(n.operator===`gt`||n.operator===`lt`)&&(a=typeof a==`number`?a+(n.operator===`gt`?1:-1):a),a!==void 0&&Object.defineProperty(t,n.field,{value:a,enumerable:!0,configurable:!0,writable:!0})}if(t.conditions.some(e=>e.field===`id`&&e.scope===`after`)?s.id=c.id:c.id=s.id,r===`updated`){let n=t.watchFields.length?t.watchFields:e.fields.map(e=>e.name).filter(e=>e!==`id`);if(!n.some(e=>!Hr(s[e],c[e]))){let e=n.find(e=>Object.hasOwn(c,e)&&!t.conditions.some(t=>t.scope===`before`&&t.field===e));if(e){let t=i[e],n=Fr(t)?t:{};Array.isArray(n.enum)?s[e]=n.enum.find(t=>!Hr(t,c[e]))??c[e]:typeof c[e]==`number`?s[e]=[c[e]+1,c[e]-1].find(e=>(typeof n.minimum!=`number`||e>=n.minimum)&&(typeof n.maximum!=`number`||e<=n.maximum))??c[e]:typeof c[e]==`boolean`?s[e]=!c[e]:typeof c[e]==`string`&&(s[e]=c[e]+`(修改前)`)}}}return zr(e,r,s,c,n)}async function Vr(e,t,n){let r=await e.call(Q.runSummaries,{query:{workflowId:t,page:1,pageSize:20}});for(let t of r.list.filter(e=>!e.nodeTest)){let r=await e.call(Q.run,{params:{runId:t.id},query:{compact:!0}}),i=r.graph.nodes.find(e=>e.type===`core.trigger`);if(!i||!r.nodes.some(e=>e.nodeId===i.id&&e.status===`succeeded`))continue;let a=await e.call(Q.nodeResult,{params:{runId:r.id,nodeId:i.id}});if(a.input.table===n)return{runId:r.id,input:a.input}}throw Error(`最近 20 次运行没有该数据表的完整事件输入,请先生成示例。`)}var Hr;function Ur(){return(Ur=e((()=>{Hr=Ir})))()}function Wr({checks:e,table:t,onNavigate:n}){return/* @__PURE__ */ Y(`div`,{className:`arc-event-checks`,children:e.map((e,r)=>/* @__PURE__ */ X(`div`,{className:e.matched?`is-matched`:`is-unmatched`,children:[/* @__PURE__ */ Y(R,{color:e.matched?`green`:`orange`,children:e.matched?`满足`:`未满足`}),/* @__PURE__ */ Y(`strong`,{children:nt(e,t)}),(`actual`in e||`expected`in e)&&/* @__PURE__ */ X(`small`,{children:[`实际:`,Gr(rt(e,e.actual,t)),` · 要求:`,Gr(rt(e,e.expected,t))]}),!e.matched&&n&&e.path.startsWith(`trigger`)&&/* @__PURE__ */ Y(F,{size:`small`,theme:`borderless`,onClick:()=>n(e.path),children:`定位当前设置`})]},e.path+`:`+r))})}var Gr;function Kr(){return(Kr=e((()=>{Wn(),N(),Gr=e=>{if(e===void 0)return`未提供`;let t=JSON.stringify(Mt(e,12,160,3).data);return t.length>160?t.slice(0,160)+`…`:t}})))()}var qr;function Jr(){return(Jr=e((()=>{qr=[`status`,`match`,`eventId`,`recordId`,[`startTime`,`endTime`]]})))()}function Yr({context:e,onClose:t,onApply:n}){let{client:r,workflowId:i}=e,a=Re(),[o,s]=q(),c=de({op:Q.eventList,useList:(e,t=!0)=>ut(Q.eventList,{params:{id:i},query:e},{enabled:t,requestOptions:{client:r},refetchInterval:3e3,refetchIntervalInBackground:!1}),table:{empty:`当前数据表没有可见的事件`}}),d=ut(Q.eventDetail,{params:{id:i,eventId:o??0}},{enabled:!!o,requestOptions:{client:r},refetchInterval:e=>e.state.data&&([`pending`,`dispatching`,`retrying`].includes(e.state.data.status)||$t(e.state.data))?3e3:!1,refetchIntervalInBackground:!1}),p=ut(Q.runtime,{enabled:!0,requestOptions:{client:r},refetchInterval:1e4,refetchIntervalInBackground:!1}),h=$(Q.retryEvent,{requestOptions:{client:r},invalidate:e=>Promise.all([Q.eventList,Q.eventDetail].map(t=>e.invalidateQueries({queryKey:lt(t)}))),onSuccess:e=>l.success(e.released?`已提交原事件重试`:`事件状态已变化,请刷新`),onError:e=>l.error(e.message)}),g=[{title:`事件`,dataIndex:`eventId`,minWidth:220,render:(t,n)=>/* @__PURE__ */ X(F,{theme:`borderless`,onClick:()=>s(n.id),children:[`#`,n.id,` · `,it(n.decision,e.table)]})},{title:`处理状态`,width:120,render:(e,t)=>/* @__PURE__ */ Y(R,{color:t.status===`retrying`?`orange`:`grey`,children:qe[t.status]})},{title:`提交时匹配`,width:125,render:(e,t)=>/* @__PURE__ */ Y(R,{color:t.decision?.matched?`green`:`orange`,children:t.decision?t.decision.matched?`已命中`:`未命中`:`无历史判断`})},{title:`工作流运行`,width:150,render:(e,t)=>t.outcomes.length?t.outcomes.map(e=>/* @__PURE__ */ Y(R,{color:e.runStatus===`succeeded`?`green`:e.runStatus===`failed`||e.status===`denied`||e.status===`failed`?`red`:`grey`,children:en(e)},e.workflowId)):`未创建运行`},{title:`分发次数`,dataIndex:`attempts`,width:100},f(`提交时间`,`occurredAt`),ue({width:100,actions:e=>[{key:`detail`,label:`详情`,onClick:()=>s(e.id)}]})];return/* @__PURE__ */ X(u,{title:`数据表事件分发记录`,visible:!0,onCancel:t,width:`min(1080px, 100vw)`,className:`arc-event-dispatch-panel`,children:[/* @__PURE__ */ Y(`p`,{children:`匹配原因来自提交时的配置。运行状态自动更新;已处理事件不能重放;失败事件保持原运行 ID,重试时重新检查执行账号与权限。`}),p.data&&/* @__PURE__ */ X(`p`,{role:`status`,children:[`待分发 `,p.data.pendingEvents,` · 分发重试 `,p.data.retryingEvents,` · 待入队 `,p.data.pendingAdmission,p.data.queues.map(e=>/* @__PURE__ */ X(`span`,{children:[` · `,e.name,`:排队 `,e.waiting,`,占用 `,e.active,`/`,e.concurrency]},e.name))]}),p.error&&/* @__PURE__ */ Y(L,{type:`warning`,closeIcon:null,description:`队列状态暂不可用,可继续查看事件;请稍后刷新。`}),c.listQuery.error&&/* @__PURE__ */ Y(L,{type:`danger`,closeIcon:null,description:c.listQuery.error.message}),/* @__PURE__ */ Y(v,{searchConfig:m({page:c,filters:qr}),columns:g,...c.tableProps}),o&&/* @__PURE__ */ X(`section`,{className:`arc-event-detail`,children:[/* @__PURE__ */ X(`h3`,{children:[`事件 #`,o]}),d.error&&/* @__PURE__ */ Y(L,{type:`danger`,closeIcon:null,description:d.error.message}),` `,d.isFetching&&!d.data&&/* @__PURE__ */ Y(`p`,{role:`status`,children:`正在读取真实事件…`}),d.data&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(`p`,{children:it(d.data.decision,e.table)}),d.data.error&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:d.data.error}),d.data.decision&&/* @__PURE__ */ Y(Wr,{checks:d.data.decision.checks,table:e.table,onNavigate:n=>{t(),e.onNavigate?.(n)}}),/* @__PURE__ */ Y(F,{onClick:()=>n(d.data.input),children:`载入试运行输入`}),/* @__PURE__ */ Y(F,{loading:h.isPending,disabled:d.data.status!==`retrying`||!!d.data.retryAt&&Date.parse(d.data.retryAt)>Date.now(),onClick:()=>h.mutate({params:{id:i,eventId:o}}),children:`重试失败分发`}),d.data.outcomes.map(e=>/* @__PURE__ */ X(`div`,{className:`arc-event-outcome`,children:[/* @__PURE__ */ X(R,{children:[`发布 v`,e.version]}),/* @__PURE__ */ Y(R,{children:en(e)}),e.message&&/* @__PURE__ */ Y(`span`,{children:e.message}),e.deduplicated&&/* @__PURE__ */ Y(R,{children:`复用已有运行`}),e.runId&&/* @__PURE__ */ Y(F,{theme:`borderless`,onClick:()=>a(`/extensions/automation/inspect?runId=`+encodeURIComponent(e.runId)),children:`查看运行`})]},e.workflowId))]})]})]})}function Xr(){return(Xr=e((()=>{N(),fe(),d(),h(),le(),g(),Kr(),Jr()})))()}function Zr({client:e,workflowId:t,input:n,valid:r,onApply:o}){let[c,u]=q(!1),[d,f]=q(1),[p,m]=q(),[h,g]=q(``),_=ut(Q.testCases,{params:{id:t},query:{page:d,pageSize:20,archived:c}},{requestOptions:{client:e},refetchOnWindowFocus:!1}),v=e=>e.invalidateQueries({queryKey:lt(Q.testCases)}),y=e=>{m(e.id),g(e.name),l.success(`测试用例已保存`)},b=e=>l.error(e.message),x=$(Q.createTestCase,{requestOptions:{client:e},invalidate:v,onSuccess:y,onError:b}),S=$(Q.updateTestCase,{requestOptions:{client:e},invalidate:v,onSuccess:y,onError:b}),C=$(Q.renameTestCase,{requestOptions:{client:e},invalidate:v,onSuccess:y,onError:b}),w=$(Q.copyTestCase,{requestOptions:{client:e},invalidate:v,onSuccess:y,onError:b}),T=$(Q.archiveTestCase,{requestOptions:{client:e},invalidate:v,onSuccess:()=>{m(void 0),g(``),l.success(c?`测试用例已恢复`:`测试用例已移除,可在已移除列表恢复`)},onError:b}),E=_.data?.list.find(e=>e.id===p),D=x.isPending||S.isPending||C.isPending||w.isPending||T.isPending,O=async()=>{E&&await oe({title:c?`恢复测试用例?`:`移除测试用例?`,content:c?`恢复后占用一个活动用例名额,不执行节点。`:`保留输入快照并释放活动名额,可从已移除列表恢复。`,okText:c?`恢复`:`移除`})&&T.mutate({params:{id:t,caseId:E.id},body:{archived:!c,revision:E.revision}})};return/* @__PURE__ */ X(`section`,{className:`arc-event-test-cases`,children:[/* @__PURE__ */ Y(`strong`,{children:`保存的测试用例`}),/* @__PURE__ */ Y(`small`,{children:`最多 20 组活动用例;移除可恢复。选择用例后显式载入,载入不会执行节点。`}),/* @__PURE__ */ X(`label`,{children:[/* @__PURE__ */ Y(s,{"aria-label":`显示已移除用例`,checked:c,onChange:e=>{u(e),f(1),m(void 0),g(``)}}),` 显示已移除用例`]}),_.error&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(L,{type:`danger`,description:_.error.message,closeIcon:null}),/* @__PURE__ */ Y(F,{size:`small`,onClick:()=>void _.refetch(),children:`重新载入用例`})]}),/* @__PURE__ */ Y(a,{"aria-label":`选择事件测试用例`,loading:_.isFetching,placeholder:`选择已有用例`,value:p,optionList:_.data?.list.map(e=>({value:e.id,label:e.name+(e.valid?``:` · 已失效`)}))??[],onChange:e=>{let t=_.data?.list.find(t=>t.id===e);t&&(m(t.id),g(t.name))}}),E&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(R,{children:E.archived?`已移除`:E.valid?`输入有效`:`输入已失效`}),/* @__PURE__ */ X(`small`,{children:[`输入采集于草稿 r`,E.workflowRevision,` · 用例修订 r`,E.revision]}),E.issues.map(e=>/* @__PURE__ */ Y(L,{type:`warning`,description:e,closeIcon:null},e))]}),/* @__PURE__ */ Y(i,{"aria-label":`测试用例名称`,value:h,maxLength:120,placeholder:`例如:数量跨越阈值 / 未跨越阈值`,onChange:g}),/* @__PURE__ */ X(I,{wrap:!0,children:[!c&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(F,{size:`small`,loading:x.isPending,disabled:!r||!h.trim()||D,onClick:()=>n&&x.mutate(Q.createTestCase.input.parse({params:{id:t},body:{name:h.trim(),input:n}})),children:`保存为新用例`}),/* @__PURE__ */ Y(F,{size:`small`,disabled:!E?.valid||D,onClick:()=>E&&o(E.input,`已载入用例「${E.name}」 · 保存时草稿 r${E.workflowRevision}`),children:`载入用例`}),/* @__PURE__ */ Y(F,{size:`small`,loading:S.isPending,disabled:!E||!r||!h.trim()||D,onClick:()=>E&&n&&S.mutate(Q.updateTestCase.input.parse({params:{id:t,caseId:E.id},body:{name:h.trim(),input:n,revision:E.revision}})),children:`更新选中用例`}),/* @__PURE__ */ Y(F,{size:`small`,loading:w.isPending,disabled:!E?.valid||!h.trim()||D,onClick:()=>E&&w.mutate({params:{id:t,caseId:E.id},body:{name:h.trim(),revision:E.revision}}),children:`复制用例`})]}),/* @__PURE__ */ Y(F,{size:`small`,loading:C.isPending,disabled:!E||!h.trim()||D||E.name===h.trim(),onClick:()=>E&&C.mutate({params:{id:t,caseId:E.id},body:{name:h.trim(),revision:E.revision}}),children:`仅重命名`}),/* @__PURE__ */ Y(F,{size:`small`,loading:T.isPending,disabled:!E||D,onClick:()=>void O(),children:c?`恢复用例`:`移除用例`})]}),c&&!!_.data&&_.data.total>20&&/* @__PURE__ */ X(I,{children:[/* @__PURE__ */ Y(F,{size:`small`,disabled:d===1,onClick:()=>{f(d-1),m(void 0)},children:`上一页用例`}),/* @__PURE__ */ X(`span`,{children:[d,` / `,Math.ceil(_.data.total/20)]}),/* @__PURE__ */ Y(F,{size:`small`,disabled:d*20>=_.data.total,onClick:()=>{f(d+1),m(void 0)},children:`下一页用例`})]})]})}function Qr(){return(Qr=e((()=>{N(),z()})))()}function $r({context:e,filter:t,input:n,valid:r,onApply:i}){let{client:a,workflowId:o,revision:s}=e,[c,l]=q(),[u,d]=q(0),[f,p]=q([]),[m,h]=q(!1),[g,_]=q(``),[v,y]=q(!1),[b,x]=q(!1),S=K(0),C=K(!0);W(()=>{let e=S;return C.current=!0,()=>{C.current=!1,e.current++}},[]);let w=$(Q.listenEvents,{requestOptions:{client:a}}),T=ut(Q.pollEvents,{params:{id:o},query:{token:c?.token??``,after:u}},{enabled:!!c,requestOptions:{client:a},refetchInterval:2e3,retry:!1,refetchOnWindowFocus:!1,gcTime:0});W(()=>{T.data&&c&&(d(T.data.cursor),p(e=>[...new Map([...e,...T.data.events].map(e=>[e.id,e])).values()].slice(-50)))},[T.data,c]),W(()=>{T.error&&(_(T.error.message),l(void 0))},[T.error]),W(()=>{c&&c.revision!==s&&(l(void 0),_(`草稿修订已变化,请重新等待事件。`))},[s,c]);let E=async()=>{let t=++S.current;h(!0),_(``);try{let n=await e.prepareListen();if(!C.current||t!==S.current)return;let r=await w.mutateAsync({params:{id:o},body:{revision:n}});C.current&&t===S.current&&(l(r),d(r.after),p([]))}catch(e){C.current&&t===S.current&&_(e instanceof Error?e.message:`开始监听失败`)}finally{C.current&&t===S.current&&h(!1)}},D=()=>{S.current++,l(void 0)};return/* @__PURE__ */ X(`div`,{className:`arc-event-debug-tools`,children:[/* @__PURE__ */ X(`div`,{className:`arc-record-test-tools`,children:[/* @__PURE__ */ Y(F,{size:`small`,disabled:m||w.isPending,onClick:()=>c?D():void E(),children:c?`停止监听`:`等待真实事件`}),/* @__PURE__ */ Y(F,{size:`small`,onClick:()=>x(e=>!e),children:`测试用例`}),/* @__PURE__ */ Y(F,{size:`small`,onClick:()=>y(!0),children:`分发记录`})]}),c&&/* @__PURE__ */ X(`p`,{role:`status`,children:[`正在等待已提交的表变更。可在原业务页面操作;监听不会自动试运行。截止 `,/* @__PURE__ */ Y(me,{value:c.expiresAt,mode:`absolute`}),`。`]}),(m||w.isPending)&&/* @__PURE__ */ Y(`p`,{role:`status`,children:`正在准备监听…`}),g&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:g}),f.length>0&&/* @__PURE__ */ X(`details`,{open:!0,children:[/* @__PURE__ */ X(`summary`,{children:[`已捕获 `,f.length,` 条事件(最多保留最近 50 条)`]}),f.map(n=>/* @__PURE__ */ X(`div`,{className:`arc-event-capture`,children:[/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ X(R,{children:[Qe[n.input.operation],` · #`,String(n.input.recordId)]}),/* @__PURE__ */ X(R,{children:[`采集时:`,qe[n.status]]}),/* @__PURE__ */ Y(me,{value:n.occurredAt,mode:`absolute`})]}),/* @__PURE__ */ Y(`p`,{children:it(n.decision,e.table)}),/* @__PURE__ */ Y(F,{size:`small`,onClick:()=>i(n.input,`已载入真实事件 `+n.eventId+`;编辑后才执行测试。`),children:`用于试运行`}),/* @__PURE__ */ X(`details`,{children:[/* @__PURE__ */ Y(`summary`,{children:`提交时的生产判断`}),n.decision?/* @__PURE__ */ Y(Wr,{checks:n.decision.checks,table:e.table,onNavigate:e.onNavigate}):/* @__PURE__ */ Y(`p`,{children:`没有历史诊断,不能按当前配置推算。`})]}),/* @__PURE__ */ X(`details`,{children:[/* @__PURE__ */ Y(`summary`,{children:`当前草稿规则预览`}),/* @__PURE__ */ Y(Wr,{checks:et(t,n.input),table:e.table,onNavigate:e.onNavigate})]})]},n.id))]}),b&&/* @__PURE__ */ Y(Zr,{client:a,workflowId:o,input:n,valid:r,onApply:i}),v&&/* @__PURE__ */ Y(Yr,{context:e,onClose:()=>y(!1),onApply:e=>{i(e,`已从分发记录载入事件。`),y(!1)}})]})}function ei(){return(ei=e((()=>{N(),pe(),Xr(),Kr(),Qr()})))()}function ti({value:e,schema:t,visibleFields:n,onChange:r,onValidityChange:i}){let a=JSON.stringify(e,null,2),o=K(a),[s,c]=q(a);return W(()=>{a!==o.current&&(o.current=a,c(a))},[a]),/* @__PURE__ */ Y(jn,{schema:t,visibleFields:n,value:s,onValidityChange:i,onChange:e=>{c(e);try{let t=JSON.parse(e);Fr(t)&&(o.current=JSON.stringify(t,null,2))}catch{}r(e)}})}function ni({table:e,filter:t,schema:n,actorId:i,value:o,onChange:c,onValidityChange:l,onLoadRecent:u,debugContext:d}){let[f,p]=q(!1),[m,h]=q(!1),[g,_]=q(!1),[v,y]=q(!1),[b,x]=q(``),[S,C]=q(``),[w,T]=q(0),E=K(0),D=K(!0),O=K({value:o,onChange:c});O.current={value:o,onChange:c};let ee=K(null),[te,ne]=q(``);W(()=>{if(!te)return;let[e,...t]=te.split(`.`),n=ee.current?.querySelector(`[data-record-snapshot="${e}"]`),r=Array.from(n?.querySelectorAll(`[data-input-field]`)??[]).find(e=>e.dataset.inputField===t.join(`.`));if(!f&&!r){p(!0);return}let i=f?ee.current?.querySelector(`[aria-label="测试事件 JSON"]`):r?.querySelector(`input,textarea,[tabindex="0"]`);i?.scrollIntoView?.({block:`center`}),i?.focus(),ne(``)},[te,f,m]);let re=e=>{h(!0),/^(before|after)\./.test(e)||p(!0),ne(e)};W(()=>(D.current=!0,()=>{D.current=!1}),[]);let k=De(()=>{try{let e=JSON.parse(o);return Fr(e)?e:void 0}catch{return}},[o]),A=k?.operation,j=Fr(k?.before)?k.before:null,M=Fr(k?.after)?k.after:null,ie=k?Lr(t,k,e):[],ae=!!ie.length&&ie.every(e=>e.valid),N=k?Rr(k):[],P=De(()=>!It(o,n).errors.length,[n,o])&&!N.length,[I,L]=q(!0),[z,oe]=q(!0),se=A===`created`||A===`member_added`,ce=A===`deleted`||A===`member_removed`;W(()=>l(P&&(g||ae)&&(f||(se||I)&&(ce||z))),[P,g,ae,f,se,ce,I,z,l]);let B=e=>{E.current++,x(``),C(``),c(JSON.stringify(e,null,2))},V=(n=A)=>{L(!0),oe(!0),T(e=>e+1),B(Br(e,t,i,e.operations.includes(n)?n:t.operations[0]))},le=/* @__PURE__ */ new Set([`id`,...Array.isArray(e.schema.required)?e.schema.required:[],...t.watchFields,...t.requiredFields,...t.conditions.map(e=>e.field)]),ue=e.schema,de=m?void 0:[...le],fe=(t,n)=>{E.current++;try{let r=JSON.parse(n);if(Fr(r)){let n=t===`before`?r:j,a=t===`after`?r:M;r.id!==(t===`before`?j?.id:M?.id)&&(t===`before`&&a&&(a={...a,id:r.id}),t===`after`&&n&&(n={...n,id:r.id})),B(zr(e,A,n,a,i,k))}}catch{}},pe=async()=>{let e=++E.current,t=o;y(!0),C(``);try{let r=await u();if(!D.current||e!==E.current||O.current.value!==t)return;if(It(JSON.stringify(r.input),n).errors.length||Rr(r.input).length)throw Error(`历史事件与当前字段结构不兼容,请生成新示例。`);c(JSON.stringify(r.input,null,2)),T(e=>e+1),x(`已载入运行 `+r.runId+` 的事件输入,可继续编辑。`)}catch(t){D.current&&e===E.current&&C(t instanceof Error?t.message:`载入失败`)}finally{D.current&&y(!1)}},me=(e,t)=>{It(JSON.stringify(e),n).errors.length||Rr(e).length?C(`事件或用例与当前数据表字段不兼容,请生成新示例。`):(B(e),L(!0),oe(!0),T(e=>e+1),x(t))},he=j&&M?e.fields.filter(e=>!Ir(j[e.name],M[e.name])):[],ge=e=>e===void 0?`未提供`:JSON.stringify(Mt(e,16,200,3).data);return/* @__PURE__ */ X(`div`,{className:`arc-record-test-input`,ref:ee,children:[/* @__PURE__ */ X(`div`,{className:`arc-record-test-heading`,children:[/* @__PURE__ */ X(`strong`,{children:[`测试业务事件 · `,e.title]}),/* @__PURE__ */ X(`label`,{children:[`JSON `,/* @__PURE__ */ Y(s,{"aria-label":`事件 JSON 模式`,size:`small`,checked:f,onChange:p})]})]}),/* @__PURE__ */ Y(`p`,{children:`填写变更前后数据,事件元信息自动生成。输入本身不会修改数据表;后续节点会真实执行修改和外部请求。`}),/* @__PURE__ */ X(`div`,{className:`arc-record-test-tools`,children:[/* @__PURE__ */ Y(F,{size:`small`,onClick:()=>V(),children:`生成示例`}),/* @__PURE__ */ Y(F,{size:`small`,loading:v,onClick:()=>void pe(),children:`载入最近事件`})]}),d&&/* @__PURE__ */ Y($r,{context:d,filter:t,input:k,valid:P&&I&&z,onApply:me}),b&&/* @__PURE__ */ Y(`p`,{role:`status`,children:b}),S&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:S}),f||!k?/* @__PURE__ */ Y(r,{"aria-label":`测试事件 JSON`,rows:12,value:o,onChange:e=>{E.current++,c(e)}}):/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ X(`label`,{className:`arc-record-test-operation`,children:[`触发操作`,/* @__PURE__ */ Y(a,{"aria-label":`测试事件操作`,value:A,optionList:e.operations.map(e=>({value:e,label:Qe[e]})),onChange:t=>{B(zr(e,t,j??M,M??j,i,k)),L(!0),oe(!0)}})]}),/* @__PURE__ */ X(`label`,{className:`arc-record-test-ignore`,children:[/* @__PURE__ */ Y(s,{"aria-label":`显示全部事件字段`,size:`small`,checked:m,onChange:h}),`显示全部字段`,/* @__PURE__ */ Y(`small`,{children:`默认显示 ID、必填和触发规则字段`})]}),/* @__PURE__ */ X(`div`,{className:`arc-record-test-snapshots`,children:[!se&&/* @__PURE__ */ X(`section`,{"data-record-snapshot":`before`,children:[/* @__PURE__ */ Y(`h4`,{children:`变更前数据`}),/* @__PURE__ */ Y(ti,{schema:ue,visibleFields:de,value:j??{},onChange:e=>fe(`before`,e),onValidityChange:L},`before:`+A+`:`+w)]}),!ce&&/* @__PURE__ */ X(`section`,{"data-record-snapshot":`after`,children:[/* @__PURE__ */ Y(`h4`,{children:`变更后数据`}),/* @__PURE__ */ Y(ti,{schema:ue,visibleFields:de,value:M??{},onChange:e=>fe(`after`,e),onValidityChange:oe},`after:`+A+`:`+w)]})]}),!!he.length&&/* @__PURE__ */ X(`div`,{className:`arc-record-test-diff`,children:[/* @__PURE__ */ Y(`strong`,{children:`变化字段`}),he.map(e=>/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(R,{color:`orange`,children:e.title}),/* @__PURE__ */ X(`code`,{children:[ge(j?.[e.name]),` → `,ge(M?.[e.name])]})]},e.name))]})]}),!P&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:N.length?N.join(` `):`事件输入结构不完整或字段类型错误,请检查数据或生成示例。`}),/* @__PURE__ */ X(`div`,{className:`arc-record-test-rules`,role:`status`,children:[/* @__PURE__ */ Y(`strong`,{children:ae?`满足当前触发规则`:`未满足当前触发规则`}),/* @__PURE__ */ Y(`div`,{children:ie.map(e=>/* @__PURE__ */ X(R,{color:e.valid?`green`:`orange`,children:[e.valid?`✓`:`×`,` `,e.label]},e.label))}),/* @__PURE__ */ Y(`small`,{children:`根据当前输入预览;正式事件仍由 Go 在提交后判断。`})]}),k&&/* @__PURE__ */ X(`details`,{children:[/* @__PURE__ */ Y(`summary`,{children:`逐项触发条件`}),/* @__PURE__ */ Y(Wr,{checks:et(t,k),table:e,onNavigate:d?.onNavigate})]}),!P&&/* @__PURE__ */ Y(`div`,{className:`arc-event-input-errors`,role:`alert`,children:It(o,n).errors.slice(0,20).map((e,t)=>/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(F,{size:`small`,theme:`borderless`,onClick:()=>re(e.path),children:e.path||`事件输入`}),`:`,e.message]},t))}),!ae&&/* @__PURE__ */ X(`label`,{className:`arc-record-test-ignore`,children:[/* @__PURE__ */ Y(s,{"aria-label":`忽略触发规则测试节点`,size:`small`,checked:g,onChange:_}),`忽略触发规则,仅测试流程节点`]})]})}function ri(){return(ri=e((()=>{N(),Nn(),Wn(),Ur(),ei(),Kr()})))()}function ii({client:e,visible:t,onClose:n,onImported:r}){let[o,s]=q(),[c,d]=q(``),[f,p]=q(``),[m,h]=q([]),[g,_]=q(!1),[v,y]=q({}),[b,x]=q({}),[S,C]=q({}),w=Ct(t&&!!o?.credentials.length),T=xt(t&&!!o?.models.length),E=ut(Q.summaries,{query:{page:1,pageSize:200,published:!0}},{enabled:t&&!!o?.workflows.length,requestOptions:{client:e}}),D=$(Q.importDefinition,{requestOptions:{client:e},invalidate:vt,onSuccess:e=>{l.success(`已导入为新草稿`),O(),n(),r(e)}});function O(){s(void 0),d(``),p(``),h([]),y({}),x({}),C({})}function ee(){D.isPending||g||(O(),n())}async function te(e){if(e){if(O(),e.size>10485760)p(`定义文件不能超过 10 MB`);else{_(!0);try{let t=tn(await e.text());p(t.error),h(t.issues),t.document&&(s(t.document),d(t.document.name))}catch{p(`无法读取文件,请重新选择。`)}finally{_(!1)}}}}let ne=!!o&&o.credentials.every(e=>v[e.id])&&o.workflows.every(e=>b[`${e.id}:${e.version}`])&&o.models.every(e=>S[e.id]);return/* @__PURE__ */ Y(u,{title:`导入工作流定义`,visible:t,onCancel:ee,width:560,className:`arc-workflow-import`,children:/* @__PURE__ */ X(`div`,{className:`arc-automation-settings`,children:[/* @__PURE__ */ Y(`p`,{children:`只创建未发布、停用的新草稿。请明确选择本机的凭据、子流程版本和模型;不自动沿用来源环境的 ID。`}),/* @__PURE__ */ X(`label`,{children:[`定义文件`,/* @__PURE__ */ Y(`input`,{"aria-label":`工作流定义文件`,type:`file`,accept:`.json,application/json`,disabled:D.isPending||g,onChange:e=>{let t=e.target.files?.[0];e.target.value=``,te(t)}})]}),g&&/* @__PURE__ */ Y(P,{}),o&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ X(`label`,{children:[`工作流名称`,/* @__PURE__ */ Y(i,{"aria-label":`导入工作流名称`,value:c,maxLength:120,onChange:d})]}),o.credentials.map(e=>/* @__PURE__ */ X(`label`,{children:[`凭据:`,e.name,/* @__PURE__ */ Y(a,{"aria-label":`绑定凭据 ${e.name}`,loading:w.isFetching,value:v[e.id],style:{width:`100%`},placeholder:`选择同类型的本机凭据`,optionList:w.data?.filter(t=>t.kind===e.kind).map(e=>({value:e.id,label:e.name}))??[],onChange:t=>y(n=>({...n,[e.id]:Number(t)}))})]},e.id)),o.workflows.map(e=>{let t=`${e.id}:${e.version}`;return/* @__PURE__ */ X(`label`,{children:[`子流程:`,e.name,` v`,e.version,/* @__PURE__ */ Y(a,{"aria-label":`绑定子流程 ${e.name}`,loading:E.isFetching,value:b[t]?.id,style:{width:`100%`},placeholder:`选择本机已发布流程的当前版本`,optionList:E.data?.list.map(e=>({value:e.uuid,label:`${e.name} · v${e.publishedVersion}`}))??[],onChange:e=>{let n=E.data?.list.find(t=>t.uuid===e);n&&x(e=>({...e,[t]:{id:n.uuid,version:n.publishedVersion}}))}})]},t)}),o.models.map(e=>/* @__PURE__ */ X(`label`,{children:[`模型:`,e.name,/* @__PURE__ */ Y(a,{"aria-label":`绑定模型 ${e.name}`,loading:T.isFetching,value:S[e.id],style:{width:`100%`},placeholder:`选择宿主可用模型`,optionList:T.data?.models?.map(e=>({value:e.id,label:e.name}))??[],onChange:t=>C(n=>({...n,[e.id]:String(t)}))})]},e.id))]}),o&&!ne&&/* @__PURE__ */ Y(L,{type:`info`,closeIcon:null,description:`请绑定全部依赖后再导入;本机没有可用选项时,请先配置凭据、发布子流程或启用模型。`}),m.length>0&&/* @__PURE__ */ Y(`ul`,{"aria-label":`定义字段错误`,children:m.map((e,t)=>/* @__PURE__ */ Y(`li`,{children:e},t))}),[f,D.error?.message,w.error?.message,E.error?.message,T.error?.message].filter(Boolean).map((e,t)=>/* @__PURE__ */ Y(L,{type:`danger`,closeIcon:null,description:e},t)),/* @__PURE__ */ Y(F,{theme:`solid`,disabled:!ne||!c.trim()||g||D.isPending,loading:D.isPending,onClick:()=>{o&&D.mutate({body:{document:o,name:c.trim(),credentialBindings:v,workflowBindings:b,modelBindings:S}})},children:`导入并设计`})]})})}function ai(){return(ai=e((()=>{N()})))()}function oi(e){return/* @__PURE__ */ Y(mt.Provider,{value:e.client,children:/* @__PURE__ */ Y(si,{...e})})}function si({client:e,user:t,hasPermission:n}){let r=Re(),[i,a]=q(!1),[o,s]=q(!1),[u,d]=q(`rename`),[f,p]=q(),h=$(Q.rename,{requestOptions:{client:e},invalidate:vt}),g=$(Q.copy,{requestOptions:{client:e},invalidate:vt}),_=$(Q.archive,{requestOptions:{client:e},invalidate:vt,onError:e=>l.error(e.message)}),b=H({entityName:`工作流`,defaults:{name:``},toValues:e=>({name:u===`copy`?e.name.slice(0,115)+` · 副本`:e.name}),save:{isPending:h.isPending||g.isPending,mutateAsync:({values:e})=>{if(!b.editing)throw Error(`请选择工作流`);let t={params:{id:b.editing.uuid},body:{name:e.name.trim(),revision:b.editing.revision}};return u===`copy`?g.mutateAsync(t):h.mutateAsync(t)}},successMessage:()=>u===`copy`?`已创建新草稿`:`名称已更新`,onSaved:e=>{e&&u===`copy`&&r(`/extensions/automation/designer?id=${e.uuid}`)}}),x=async t=>{p(t.id);try{let n=await ct(Q.exportDefinition,{params:{id:t.uuid}},{client:e}),r=URL.createObjectURL(new Blob([JSON.stringify(n,null,2)],{type:`application/json`})),i=window.document.createElement(`a`);i.href=r,i.download=`workflow-${t.uuid}.arcbase.json`,i.click(),setTimeout(()=>URL.revokeObjectURL(r),1e3)}catch(e){l.error(e instanceof Error?e.message:`导出失败`)}finally{p(void 0)}},S=de({op:Q.summaries,useList:Tt,table:{empty:`没有符合条件的工作流,可重置筛选或创建新流程`}}),C=$(Q.create,{requestOptions:{client:e},invalidate:_t}),w=H({entityName:`工作流`,defaults:{name:``},save:{isPending:C.isPending,mutateAsync:async({values:e})=>{let n=D.data?.find(e=>e.kind===`hmac`);if(i&&(!T.data?.sources.some(e=>e.name===`inventory.quantity`)||!n))throw Error(`库存事件来源或 HMAC 凭据不可用,请检查配置`);return C.mutateAsync(Q.create.input.parse({body:{name:e.name.trim(),actorId:t.id,graph:i?Je(void 0,n.id):Ge(),trigger:{kind:i?`event`:`api`,source:i?`inventory.quantity`:``,cron:``,timezone:`Asia/Shanghai`,inputSchema:{type:`object`}}}}))}},onSaved:e=>{e&&r(`/extensions/automation/designer?id=${e.uuid}`)}}),T=xt(w.visible&&i),D=Ct(w.visible&&i),O=i&&(T.isFetching||D.isFetching),ee=!!T.data?.sources.some(e=>e.name===`inventory.quantity`)&&!!D.data?.some(e=>e.kind===`hmac`),te=$(Q.enabled,{requestOptions:{client:e},invalidate:(e,t,n)=>(e.invalidateQueries({queryKey:lt(Q.detail,{params:n.params})}),_t(e))}),ne=B({isEnabled:e=>e.enabled,disabled:e=>!n(`host:automation:manage`)||!e.publishedVersion||!!e.archived,toggle:(e,t)=>te.mutateAsync({params:{id:e.uuid},body:{enabled:t}}),confirmDisable:e=>({title:`停用工作流「${e.name}」?`,content:`停用后不再接受新的业务事件、定时或接口触发,已开始的运行不会因此撤销。`})}),re=e=>{a(e),w.openCreate()},k=[{title:`工作流`,dataIndex:`name`,minWidth:300,render:(e,t)=>/* @__PURE__ */ X(`div`,{className:`arc-automation-flow-name`,children:[/* @__PURE__ */ Y(`span`,{className:`arc-automation-flow-icon`,children:/* @__PURE__ */ Y(Bn,{name:`workflow`})}),/* @__PURE__ */ X(`div`,{className:`arc-automation-flow-info`,children:[/* @__PURE__ */ Y(F,{theme:`borderless`,title:e,className:`arc-automation-flow-link`,onClick:()=>r(`/extensions/automation/designer?id=${t.uuid}`),children:e}),/* @__PURE__ */ Y(Gn,{uuid:t.uuid}),/* @__PURE__ */ X(`small`,{children:[t.nodeCount,` 个节点`,t.nodeCount===t.rootNodeCount?``:`(主流程 ${t.rootNodeCount})`,` · 草稿 r`,t.revision]})]})]})},{title:`触发方式`,width:130,render:(e,t)=>/* @__PURE__ */ Y(R,{color:`violet`,children:ci[t.trigger.kind]})},{title:`发布状态`,dataIndex:`publishedVersion`,width:130,render:e=>e?/* @__PURE__ */ X(R,{color:`green`,children:[`已发布 v`,e]}):/* @__PURE__ */ Y(R,{children:`未发布`})},y,ne.column({title:`启用状态`,dataIndex:`enabled`,width:100}),ue({width:220,desktopInlineKeys:[`design`,`runs`],actions:e=>[{key:`design`,label:`设计`,onClick:()=>r(`/extensions/automation/designer?id=${e.uuid}`)},{key:`runs`,label:`运行记录`,onClick:()=>r(`/extensions/automation/runs?workflowId=${e.uuid}`)},{key:`rename`,label:`重命名`,hidden:!n(`host:automation:manage`)||e.archived,onClick:()=>{d(`rename`),b.openEdit(e)}},{key:`copy`,label:`复制为新草稿`,hidden:!n(`host:automation:manage`),onClick:()=>{d(`copy`),b.openEdit(e)}},{key:`export`,label:`导出定义`,loading:f===e.id,onClick:()=>x(e)},{key:`archive`,label:e.archived?`恢复归档`:`归档`,hidden:!n(`host:automation:manage`),danger:!e.archived,disabled:_.isPending,onClick:()=>{ce({title:e.archived?`恢复「${e.name}」?`:`归档「${e.name}」?`,okText:e.archived?`恢复`:`归档`,content:e.archived?`恢复后保持停用,需要手动启用。`:`停止新触发;草稿、发布历史和已有运行仍保留,可随时恢复。`,onOk:()=>_.mutateAsync({params:{id:e.uuid},body:{archived:!e.archived,revision:e.revision}})})}}]})],A=T.error??D.error;return/* @__PURE__ */ X(`div`,{className:`page-container arc-automation-list`,children:[/* @__PURE__ */ Y(`div`,{className:`arc-automation-page-heading`,children:/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(c.Title,{heading:4,children:`工作流`}),/* @__PURE__ */ Y(c.Text,{type:`tertiary`,children:`编辑草稿、发布流程并管理触发状态;列表按最近更新排列。`})]})}),S.listQuery.error&&/* @__PURE__ */ Y(L,{type:`danger`,closeIcon:null,description:`工作流加载失败:${S.listQuery.error.message}`,icon:null}),/* @__PURE__ */ Y(v,{searchConfig:m({page:S,filters:[`keyword`,`published`,`enabled`,`archived`],create:/* @__PURE__ */ Y(E,{permission:`host:automation:manage`,onClick:()=>re(!1),children:`新增工作流`}),actions:/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ Y(F,{disabled:!n(`host:automation:manage`),onClick:()=>re(!0),children:`库存模板`}),/* @__PURE__ */ Y(F,{disabled:!n(`host:automation:manage`),onClick:()=>s(!0),children:`导入定义`})]})}),columns:k,...S.tableProps}),/* @__PURE__ */ Y(ii,{client:e,visible:o,onClose:()=>s(!1),onImported:e=>r(`/extensions/automation/designer?id=${e.uuid}`)}),/* @__PURE__ */ Y(ve,{modal:b,title:u===`copy`?`复制工作流`:`重命名工作流`,header:u===`copy`?/* @__PURE__ */ Y(`p`,{children:`仅复制草稿定义;新流程未发布且停用,不复制运行记录。`}):void 0,children:/* @__PURE__ */ Y(ae.Input,{field:`name`,label:`工作流名称`,maxLength:120,rules:[{required:!0,message:`请输入名称`},{validator:(e,t)=>typeof t==`string`&&!!t.trim(),message:`名称不能为空白`}]})}),/* @__PURE__ */ Y(ve,{modal:w,title:i?`从库存模板创建`:`创建工作流`,okText:`创建并设计`,okButtonProps:{...w.modalProps.okButtonProps,"aria-label":`创建并设计`,disabled:C.isPending||O||i&&!ee},header:/* @__PURE__ */ X(`div`,{className:`arc-automation-create-help`,children:[/* @__PURE__ */ Y(c.Paragraph,{type:`tertiary`,children:i?`创建后请在画布中配置 Webhook 地址,再保存和发布。`:`创建仅保存草稿;编辑、校验并发布后才可启用。`}),i&&!O&&!ee&&/* @__PURE__ */ Y(L,{type:`warning`,closeIcon:null,description:A?`模板配置加载失败:${A.message}`:`库存模板需要 inventory.quantity 事件来源和 HMAC 凭据。请配置后重新打开。`}),i&&!O&&!D.data?.some(e=>e.kind===`hmac`)&&/* @__PURE__ */ Y(F,{onClick:()=>r(`/extensions/automation/credentials`),children:`管理连接凭据`})]}),children:/* @__PURE__ */ Y(ae.Input,{field:`name`,label:`工作流名称`,placeholder:i?`例如:库存阈值通知`:`输入工作流名称`,maxLength:120,rules:[{required:!0,message:`请输入工作流名称`},{validator:(e,t)=>typeof t==`string`&&!!t.trim(),message:`工作流名称不能为空白`}]})})]})}var ci;function li(){return(li=e((()=>{N(),fe(),he(),_e(),d(),V(),D(),h(),le(),g(),Wn(),z(),ai(),Kn(),ci={event:`业务事件`,schedule:`定时调度`,api:`接口调用`}})))()}function ui({error:e}){return e?/* @__PURE__ */ Y(`div`,{role:`alert`,className:`arc-automation-error`,children:e.message}):null}function di(e){let[t]=ze();return/* @__PURE__ */ Y(mt.Provider,{value:e.client,children:/* @__PURE__ */ Y(fi,{...e},t.get(`id`)??``)})}function fi(e){let{client:t}=e,i=ir(t),[a]=ze(),o=Re(),s=kt(),c=ln(),u=dn(),d=a.get(`id`)??``,f=st.safeParse(d).success,{state:p,setBreakpoints:m,setDebugEnabled:h,setDraft:g,setPreparingTest:_,setSettings:v,setTestOpen:y,setTestInput:b,setRunId:x,setSelectedNodeId:S,setLocalIssues:C,setSettingsDirty:w,setSettingsFocus:T,setTestInputValid:E,setVersionsOpen:D,setTestNodeId:O,setNodeTestInput:ee,setNodeTestSelection:te,setNodeTestLabel:ne,setNodeTestSchema:re,setNodeTestContext:k,setNodeTestContextError:A,invalidateExecution:j,runStarted:M,validationCompleted:ie,draftSaved:ae}=Ot(d),{breakpoints:N,debugEnabled:L,draft:z,preparingTest:oe,settings:se,testOpen:ce,testInput:B,runId:V,issues:le,validated:ue,selectedNodeId:de,localIssues:fe,settingsDirty:pe,settingsFocus:me,testInputValid:he,versionsOpen:ge,testNodeId:H,nodeTestInput:_e,nodeTestSelection:ve,nodeTestLabel:ye,nodeTestSchema:be,nodeTestContext:xe,nodeTestContextError:Se}=p,we=ut(Q.detail,{params:{id:d}},{enabled:f,refetchOnWindowFocus:!1,requestOptions:{client:t}}),Te=we.data?.id??0,U=d,Ee=Sr(e.user.id,`workflow:`+Te),G=Cr(e.user.id,Te),De=K(void 0),q=xt(),Oe=Ct(),ke=K(!1),Z=z??we.data,Ae=Ut(V??``,t),je=K(void 0);W(()=>{if(!Z||!q.data)return;let t=Te+`:`+Z.trigger.kind+`:`+(Z.trigger.kind===`event`?Z.trigger.source:JSON.stringify(Z.trigger.inputSchema));if(je.current===t)return;je.current=t;let n=Z.trigger.kind===`event`?q.data.sources.find(e=>e.name===Z.trigger.source):void 0,r=n?.schema??Z.trigger.inputSchema,i=n?.recordTable&&Z.trigger.record?Br(n.recordTable,Z.trigger.record,e.user.id):Z.trigger.kind===`event`&&Z.trigger.source===`inventory.quantity`?{itemId:1,before:{quantity:12},after:{quantity:8}}:Pt(r);b(JSON.stringify(i&&typeof i==`object`&&!Array.isArray(i)?i:{},null,2))},[Te,Z,q.data,e.user.id,b]);let Me=fe.some(e=>e.code===`json_invalid`||e.code===`schema_invalid`);En(!!z||Me||pe);let{save:Ne,publish:Pe,enabled:Fe,validation:Ie,updateCache:Le}=Cn({client:t,reference:d,current:Z,runId:V,remember:G.remember,editor:{draftSaved:ae,validationCompleted:ie}}),{test:Be,testNode:Ve,debug:He}=wn({client:t,remember:G.remember,editor:{runStarted:M}});W(()=>{if(!we.data)return;let t=e.user.id+`:`+Te;De.current!==t&&(De.current=t,G.bookmark?.revision===we.data.revision&&x(G.bookmark.runId))},[we.data,Te,e.user.id,G.bookmark,x]);let We=K(void 0),{data:Ge,loadNode:qe}=Ae;W(()=>{let e=Ge;if(!e||e.nodeTest||e.id!==G.bookmark?.runId||We.current===e.id||e.workflowId!==Te)return;let t=e.nodes.find(t=>e.graph.nodes.some(e=>e.id===t.nodeId&&e.type===`core.trigger`));We.current=e.id,t&&qe(t.nodeId).then(()=>{let n=s.getQueryData(Ht(e.id))?.nodes.find(e=>e.nodeId===t.nodeId);We.current===e.id&&n&&!n.dataOmitted&&b(JSON.stringify(n.input??{},null,2))}).catch(()=>{})},[Ge,qe,Te,s,G.bookmark,b]);let Je=e=>{(!Z||Ke(Z,e).length)&&(G.remember(void 0),j()),g(e)},Xe=()=>o(`/extensions/automation/workflows`);if(!f)return/* @__PURE__ */ X(`div`,{className:`arc-automation-workspace`,children:[/* @__PURE__ */ Y(F,{onClick:Xe,children:`返回列表`}),/* @__PURE__ */ Y(`p`,{children:`工作流 UUID 不正确`})]});if(we.error||q.error)return/* @__PURE__ */ X(`div`,{className:`arc-automation-workspace`,children:[/* @__PURE__ */ Y(F,{onClick:Xe,children:`返回列表`}),/* @__PURE__ */ Y(ui,{error:we.error??q.error})]});if(!Z||!q.data)return/* @__PURE__ */ Y(P,{});let Ze=!!Z.archived||oe||Ne.isPending||Pe.isPending||Fe.isPending||Ie.isPending||Be.isPending||Ve.isPending||He.isPending,Qe=Z.trigger.kind===`event`?q.data.sources.find(e=>e.name===Z.trigger.source):void 0,$e=()=>Ie.mutateAsync({body:{name:Z.name,actorId:Z.actorId,graph:Z.graph,trigger:Z.trigger}}),et=async()=>{(await $e()).valid&&await Pe.mutateAsync({params:{id:U},body:{revision:Z.revision}})},tt=async(e=`continue`)=>{if(ke.current)return;let t,r;try{let e=JSON.parse(H?_e:B);if(!e||typeof e!=`object`||Array.isArray(e))throw Error();t=e}catch{l.error(`测试输入须为合法 JSON 对象`);return}try{r=H&&ve?.path.length?Ye.parse(JSON.parse(xe)):void 0}catch{l.error(`单节点迭代上下文无效`);return}ke.current=!0,_(!0);try{if((!H||!ve)&&!(await $e()).valid)return;let i=z?await Ne.mutateAsync({id:U,values:{...Z}}):Z;if(H&&ve){await Ve.mutateAsync(Q.testNode.input.parse({params:{id:U},body:{revision:i.revision,...ve,context:r,input:t}}));return}if(L||e===`step`){let{resolveWorkflowSelection:r}=await n(async()=>{let{resolveWorkflowSelection:e}=await import(`@fudanda/workflow`);return{resolveWorkflowSelection:e}},[],import.meta.url);await He.mutateAsync(Q.debug.input.parse({params:{id:U},body:{revision:i.revision,input:t,mode:e,breakpoints:N.flatMap(e=>{let t=r(i.graph,e);return t?[[...t.path,t.node.id]]:[]})}}))}else await Be.mutateAsync(Q.test.input.parse({params:{id:U},body:{revision:i.revision,input:t}}))}catch{}finally{ke.current=!1,_(!1)}};return/* @__PURE__ */ X(`div`,{className:`arc-automation-workspace`,onKeyDown:e=>{(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`s`&&!e.altKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),!se&&!Ze&&!Me&&z&&Ne.mutate({id:U,values:{...Z}}))},children:[/* @__PURE__ */ Y(zn,{info:/* @__PURE__ */ X(`div`,{className:`arc-automation-workspace-title`,children:[/* @__PURE__ */ Y(F,{"aria-label":`返回工作流列表`,onClick:Xe,children:/* @__PURE__ */ Y(Bn,{name:`back`})}),/* @__PURE__ */ Y(`span`,{className:`arc-automation-flow-icon`,children:/* @__PURE__ */ Y(Bn,{name:`workflow`})}),/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(`strong`,{children:Z.name}),/* @__PURE__ */ Y(Gn,{uuid:Z.uuid}),/* @__PURE__ */ X(`small`,{children:[Ue[Z.trigger.kind],` · 草稿 r`,Z.revision,` `,`· 发布 v`,Z.publishedVersion||`—`]})]}),/* @__PURE__ */ Y(R,{color:Z.archived?`grey`:z||Me?`orange`:`green`,children:Z.archived?`已归档 · 只读`:z||Me?`有未保存修改`:`已保存`})]}),actions:/* @__PURE__ */ X(I,{wrap:!0,children:[/* @__PURE__ */ Y(F,{onClick:()=>D(!0),children:`发布历史`}),/* @__PURE__ */ Y(F,{disabled:Ze,onClick:()=>{T(void 0),v(!0)},children:`工作流设置`}),/* @__PURE__ */ Y(F,{disabled:Ze||Me,onClick:()=>void $e(),children:`校验`}),/* @__PURE__ */ Y(F,{disabled:Ze||Me,onClick:()=>Ne.mutate({id:U,values:{...Z}}),children:`保存草稿`}),/* @__PURE__ */ Y(F,{theme:`solid`,disabled:Ze||Me||!!z,onClick:()=>void et(),children:`发布`}),/* @__PURE__ */ Y(F,{disabled:Ze||Me||!!z||!Z.publishedVersion,onClick:()=>Fe.mutate({params:{id:U},body:{enabled:!Z.enabled}}),children:Z.enabled?`停用`:`启用`})]})}),/* @__PURE__ */ Y(`div`,{className:`arc-automation-workspace-canvas`,children:/* @__PURE__ */ Y(Ce,{fallback:/* @__PURE__ */ Y(P,{}),children:/* @__PURE__ */ Y(yi,{...Ee,readOnly:Ze||se,onSidePanelClose:()=>y(!1),promptKit:i,breakpoints:N,onBreakpointChange:Z.archived?void 0:(e,t)=>{m(n=>t?[...n.filter(t=>t!==e),e]:n.filter(t=>t!==e)),h(!0)},sidePanel:ce?/* @__PURE__ */ X(Pn,{title:H?`单节点测试 / ${ye}`:`测试运行`,onClose:()=>y(!1),className:`arc-automation-test-panel`,footer:/* @__PURE__ */ X(I,{children:[!H&&/* @__PURE__ */ Y(F,{disabled:Ze||Me||!he||!!Se,onClick:()=>void tt(`step`),children:`单步开始`}),/* @__PURE__ */ Y(F,{theme:`solid`,loading:Be.isPending||Ve.isPending||He.isPending,disabled:Ze||Me||!he||!!Se,onClick:()=>void tt(),children:`执行真实测试`})]}),children:[z&&/* @__PURE__ */ Y(`p`,{role:`status`,children:`试运行将先保存当前草稿,再执行。`}),!H&&/* @__PURE__ */ X(`label`,{className:`arc-automation-debug-mode`,children:[/* @__PURE__ */ Y(`input`,{type:`checkbox`,"aria-label":`断点调试`,checked:L,onChange:e=>h(e.target.checked)}),`断点调试 · `,N.length,` 个断点`]}),!H&&Qe?.recordTable&&Z.trigger.record?/* @__PURE__ */ Y(ni,{debugContext:{client:t,workflowId:U,revision:Z.revision,table:Qe.recordTable,onNavigate:e=>{y(!1),T(e),v(!0)},prepareListen:async()=>{if(Me)throw Error(`请先修正未完成的字段`);return(z?await Ne.mutateAsync({id:U,values:{...Z}}):Z).revision}},table:Qe.recordTable,filter:Z.trigger.record,schema:Qe.schema,actorId:e.user.id,value:B,onChange:b,onValidityChange:E,onLoadRecent:()=>Vr(t,U,Qe.recordTable.name)},Te+`:`+Qe.name):/* @__PURE__ */ Y(jn,{schema:H?be:Z.trigger.kind===`event`?q.data.sources.find(e=>e.name===Z.trigger.source)?.schema??Z.trigger.inputSchema:Z.trigger.inputSchema,value:H?_e:B,onChange:H?ee:b,onValidityChange:E,description:(H?`输入为该节点解析后的参数;不会执行上游节点。`:`输入会传给开始节点。`)+`本次测试会真实执行业务修改和外部请求。`},H??`workflow`),H&&!!ve?.path.length&&/* @__PURE__ */ X(`div`,{className:`arc-automation-node-test-context`,children:[/* @__PURE__ */ Y(`strong`,{children:`迭代上下文`}),/* @__PURE__ */ X(`p`,{children:[`作用域:`,ve.path.join(` / `),`。仅标记本次独立测试;请输入已经解析的节点参数,不执行前驱、其他迭代或同级节点。`]}),/* @__PURE__ */ Y(r,{"aria-label":`单节点迭代上下文`,rows:5,value:xe,onChange:e=>{k(e);try{Ye.parse(JSON.parse(e)),A(``)}catch{A(`上下文需包含非负整数 index、可选 item 和对象 variables`)}}}),Se&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:Se})]}),V&&/* @__PURE__ */ X(J,{children:[/* @__PURE__ */ X(`div`,{className:`arc-automation-test-section`,children:[/* @__PURE__ */ Y(`strong`,{children:`运行结果`}),/* @__PURE__ */ Y(hi,{run:Ae.data,connection:Ae.connection}),/* @__PURE__ */ Y(F,{size:`small`,theme:`borderless`,onClick:()=>{G.remember(void 0),x(void 0)},children:`清除结果`})]}),/* @__PURE__ */ Y(gi,{runId:V,props:e,onNodeSelect:e=>{S(Ae.data?.nodeTest&&e===Ae.data.nodeTest.nodeId?Bt(Ae.data)?.[0]?.nodeId??e:e??null),y(!1)}}),/* @__PURE__ */ Y(mi,{runId:V,props:e,onRun:e=>{G.remember(e,Z.revision),x(e)}})]})]}):void 0,toolbarExtra:/* @__PURE__ */ Y(Vn,{disabled:Ze||Me,onClick:()=>{O(void 0),A(``),y(!0)}}),onNodeTest:(e,t)=>{n(async()=>{let{workflowNodeTestTarget:e}=await import(`@fudanda/workflow`);return{workflowNodeTestTarget:e}},[],import.meta.url).then(({workflowNodeTestTarget:n})=>{let r=n(Z.graph,e,t,Ae.data?.nodeTest?void 0:Ae.data?.nodes);r&&(O(e),te(r.selection),ne([...r.path,r.node.label||r.node.id].join(` / `)),re(r.node.type===`core.trigger`&&r.path.length?{type:`object`,properties:{index:{type:`integer`},item:{},variables:{type:`object`}}}:q.data.nodes.find(e=>e.type===r.node.type&&e.version===r.node.version)?.inputSchema??{type:`object`}),ee(JSON.stringify(r.node.type===`core.trigger`&&r.selection.context?r.selection.context:r.input,null,2)),k(JSON.stringify(r.selection.context??{},null,2)),A(``),y(!0))})},onNodeResultRequest:e=>Ae.loadNode(Ae.data?.nodeTest?.nodeId??e),nodeRuns:Bt(Ae.data),selectedNodeId:de,onNodeSelect:e=>{S(e),e&&y(!1)},diagnostics:le,value:Z.graph,catalog:q.data.nodes,models:q.data.models,sources:q.data.sources.map(e=>e.name),onInputSchemaChange:Z.trigger.kind===`event`?void 0:e=>Je({...Z,trigger:At.parse({...Z.trigger,inputSchema:e})}),sourceSchemas:Z.trigger.kind===`event`?Object.fromEntries(q.data.sources.filter(e=>e.name===Z.trigger.source).map(e=>[e.name,e.schema])):{trigger:Z.trigger.inputSchema},credentials:Oe.data,theme:c,themeColors:u,height:`100%`,onChange:e=>Je({...Z,graph:e}),onValidationChange:C})})}),/* @__PURE__ */ X(`footer`,{className:`arc-automation-debug`,children:[/* @__PURE__ */ X(`div`,{className:`arc-automation-debug-heading`,children:[/* @__PURE__ */ Y(`strong`,{children:`调试与校验`}),/* @__PURE__ */ X(`small`,{children:[ue&&!le.length?`服务端校验通过`:`${(le.length?le:fe).length} 条诊断`,` `,`· 流程修改需显式保存`]}),V&&/* @__PURE__ */ Y(F,{size:`small`,theme:`borderless`,onClick:()=>y(!0),children:`查看测试结果`})]}),(le.length?le:fe).slice(0,4).map((e,t)=>/* @__PURE__ */ X(F,{theme:`borderless`,className:`arc-automation-diagnostic`,onClick:()=>{y(!1),e.nodeId?S(e.nodeId):(e.path===`name`||e.path===`actorId`||e.path.startsWith(`trigger`))&&(T(e.path),v(!0))},children:[e.nodeId?`${e.nodeId} / `:``,e.path,`:`,e.message]},t))]}),/* @__PURE__ */ Y(tr,{workflow:Z,client:t,visible:ge,dirty:!!z||Me,onClose:()=>D(!1),onRestored:Le}),se&&/* @__PURE__ */ Y(Nr,{workflow:Z,catalog:q.data,client:t,saving:Ne.isPending,focusPath:me,onDirtyChange:w,onClose:()=>v(!1),onSave:async e=>{let t={...Z,...e};await Ne.mutateAsync({id:U,values:t}),Ke(Z,t).length&&(G.remember(void 0),j())}},Te)]})}function pi(e,t){return Wt(e,t.client)}function mi({runId:e,props:t,onRun:n}){let{client:r}=t,i=pi(e,t),a=kt(),o={requestOptions:{client:r},onSuccess:e=>{e&&(a.setQueryData(Ht(e.id),e),gt(a),n(e.id))},onError:e=>l.error(e.message)},s=$(Q.cancel,o),c=$(Q.retry,o),u=$(Q.rerun,o),d=i.data,f=s.isPending||c.isPending||u.isPending;return/* @__PURE__ */ X(I,{wrap:!0,children:[/* @__PURE__ */ Y(F,{disabled:f||!d||![`pending`,`running`,`paused`].includes(d.status),onClick:()=>ce({title:`取消本次运行?`,content:`已完成的业务修改和外部请求不会撤销。`,onOk:()=>s.mutateAsync({params:{runId:e}}).then(()=>void 0)}),children:`取消运行`}),/* @__PURE__ */ Y(F,{disabled:f||d?.status!==`failed`,onClick:()=>c.mutate({params:{runId:e}}),children:`从失败处重试`}),/* @__PURE__ */ Y(F,{disabled:f||!d,onClick:()=>ce({title:`重新运行?`,content:`将创建新运行并重新执行节点,可能再次产生业务效果。`,onOk:()=>u.mutateAsync({params:{runId:e}}).then(()=>void 0)}),children:`重新运行`})]})}function hi({run:e,connection:t}){return!e||![`pending`,`running`,`paused`].includes(e.status)?null:/* @__PURE__ */ Y(R,{"aria-live":`polite`,"data-testid":`workflow-stream-connection`,color:t===`connected`?`green`:`orange`,children:t===`connected`?`实时连接`:t===`connecting`?`连接中`:`连接中断 · 正在恢复查询`})}function gi({runId:e,props:t,onNodeSelect:n}){let r=pi(e,t),i=Re(),a=r.data,o=a?Kt(a):[];return/* @__PURE__ */ X(`div`,{className:`arc-automation-debug-run`,children:[/* @__PURE__ */ X(`div`,{className:`arc-automation-run-overview`,children:[/* @__PURE__ */ Y(R,{color:a?.status===`failed`?`red`:a?.status===`succeeded`?`green`:`violet`,children:yt[a?.status??`pending`]}),/* @__PURE__ */ X(`span`,{children:[o.filter(e=>e.node.status===`succeeded`).length,` /`,` `,o.length,` 个已记录节点成功`]}),/* @__PURE__ */ Y(F,{size:`small`,theme:`borderless`,onClick:()=>i(`/extensions/automation/inspect?runId=`+encodeURIComponent(e)),children:`检查运行`})]}),/* @__PURE__ */ Y(`code`,{className:`arc-automation-run-id`,children:e}),a&&/* @__PURE__ */ Y(mr,{run:a,compact:!0,onSelect:e=>n?.(e)}),/* @__PURE__ */ Y(ui,{error:r.error}),a?.error&&/* @__PURE__ */ Y(`span`,{role:`alert`,children:a.error})]})}function _i(e){return/* @__PURE__ */ Y(mt.Provider,{value:e.client,children:/* @__PURE__ */ Y(vi,{props:e})})}function vi({props:e}){let[t]=ze(),n=Re(),r=t.get(`runId`)??``,i=ln(),a=dn(),o=xt(),s=Ut(r,e.client),c=s.data,l=Sr(e.user.id,`inspect:`+r),[u,d]=q(!0),[f,p]=q(!0),[m,h]=q(null),g=G(),_=()=>{p(!1),requestAnimationFrame(()=>{let e=document.getElementById(g),t=document.activeElement,n=e?.closest(`.arc-automation-workspace`)?.querySelector(`[data-workflow-designer]`);e&&(!t||t===document.body||n?.contains(t))&&e.focus({preventScroll:!0})})},v=Xt(c);W(()=>{h(null),d(!0),p(!0)},[r]),W(()=>{c?.debug?.pauseToken&&(d(!0),h(null))},[c?.debug?.pauseToken]);let y=e=>{h(e),d(!1)};return/* @__PURE__ */ X(`div`,{className:`arc-automation-workspace`,children:[/* @__PURE__ */ Y(zn,{info:/* @__PURE__ */ X(`div`,{className:`arc-automation-workspace-title`,children:[/* @__PURE__ */ Y(F,{"aria-label":`返回运行列表`,onClick:()=>n(`/extensions/automation/runs`),children:`← 运行列表`}),/* @__PURE__ */ X(`div`,{children:[/* @__PURE__ */ Y(`strong`,{children:`运行检查`}),/* @__PURE__ */ X(`small`,{children:[r,` ·`,` `,c?.version===0?`草稿测试`:`版本 v`+(c?.version??`—`)]})]}),/* @__PURE__ */ Y(R,{color:c?.status===`failed`?`red`:c?.status===`succeeded`?`green`:`violet`,children:yt[c?.status??`pending`]}),/* @__PURE__ */ Y(hi,{run:c,connection:s.connection})]}),actions:/* @__PURE__ */ X(I,{wrap:!0,children:[!f&&/* @__PURE__ */ Y(F,{id:g,onClick:()=>p(!0),children:`节点执行记录`}),c?.debug&&c.status===`paused`&&/* @__PURE__ */ Y(F,{onClick:()=>d(!0),children:`断点控制`}),/* @__PURE__ */ Y(mi,{runId:r,props:e,onRun:e=>n(`/extensions/automation/inspect?runId=`+encodeURIComponent(e),{replace:!0})})]})}),/* @__PURE__ */ Y(ui,{error:s.error??o.error}),!r&&/* @__PURE__ */ Y(`p`,{role:`alert`,children:`请选择有效的运行记录。`}),c?.error&&/* @__PURE__ */ Y(`div`,{className:`arc-automation-error`,role:`alert`,children:c.error}),/* @__PURE__ */ Y(`div`,{className:`arc-automation-workspace-canvas`,children:c&&o.data?/* @__PURE__ */ Y(Ce,{fallback:/* @__PURE__ */ Y(P,{}),children:/* @__PURE__ */ Y(yi,{...l,value:c.graph,selectedNodeId:m??(c.status===`paused`?c.debug?.pausedNodeId:void 0),breakpointPaths:c.debug?.breakpoints,onNodeSelect:y,onNodeRunSelect:h,onSidePanelClose:()=>d(!1),sidePanel:u&&c.debug&&c.status===`paused`&&c.debug.pauseToken?/* @__PURE__ */ X(Pn,{title:`断点调试`,focusKey:c.debug.pauseToken,onFocusRestore:v.restored,onClose:()=>d(!1),children:[/* @__PURE__ */ Y(_r,{run:c,props:e,onProceed:v.proceed,onLoad:s.loadNode,onInspect:y},c.debug.pauseToken),/* @__PURE__ */ Y(`p`,{children:`修改输入仅影响本次节点执行,不改变草稿。执行前会重新检查账号与权限。`}),/* @__PURE__ */ X(`small`,{children:[`调试截止:`,/* @__PURE__ */ Y(me,{value:c.debug.expiresAt,mode:`absolute`})]})]}):void 0,catalog:o.data.nodes,models:o.data.models,onNodeResultRequest:e=>s.loadNode(e),nodeRuns:c.nodes,readOnly:!0,theme:i,themeColors:a,height:`100%`})}):!s.error&&!o.error&&r?/* @__PURE__ */ Y(P,{}):null}),f&&c&&/* @__PURE__ */ Y(Hn,{header:/* @__PURE__ */ X(`div`,{className:`arc-automation-debug-heading`,children:[/* @__PURE__ */ Y(`strong`,{tabIndex:-1,"data-workflow-records-heading":!0,children:`节点执行记录`}),/* @__PURE__ */ X(`small`,{children:[Kt(c).length,` 条 · 图结构 / 真实时间轴`]}),/* @__PURE__ */ Y(R,{children:yt[c.status]})]}),onClose:_,children:/* @__PURE__ */ Y(mr,{run:c,selected:m,onSelect:y},c.id)})]})}var yi;function bi(){return(bi=e((()=>{Tn(),N(),z(),Dn(),Wn(),Fn(),Nn(),Kn(),rr(),ar(),gr(),pe(),vr(),Er(),pn(),Pr(),ri(),Ur(),li(),t(),yi=we(async()=>{let e=await n(()=>import(`@fudanda/workflow`),[],import.meta.url);return await n(()=>import(`@fudanda/workflow/styles.css`),[],import.meta.url),{default:e.ArcBaseWorkflowDesigner}})})))()}function xi(){return{id:`automation`,title:`自动化`,icon:`Workflow`,pages:[{id:`workflows`,title:`工作流`,icon:`Workflow`,path:`/extensions/automation/workflows`,permission:`host:automation:manage`,component:oi},{id:`runs`,title:`运行记录`,icon:`History`,path:`/extensions/automation/runs`,permission:`host:automation:manage`,component:_n},{id:`credentials`,title:`连接凭据`,icon:`KeyRound`,path:`/extensions/automation/credentials`,permission:`host:automation:manage`,component:yn},{id:`designer`,title:`工作流设计器`,icon:`Workflow`,path:`/extensions/automation/designer`,permission:`host:automation:manage`,component:di,navigation:!1,layout:`workspace`},{id:`inspect`,title:`运行检查`,icon:`History`,path:`/extensions/automation/inspect`,permission:`host:automation:manage`,component:_i,navigation:!1,layout:`workspace`}]}}var Si;function Ci(){return(Ci=e((()=>{Sn(),bi(),Si=Object.values(Q)})))()}function wi(){return(wi=e((()=>{Ci()})))()}wi();export{Si as automationOperations,xi as createAutomationAdminModule};