@hotmeshio/long-tail 0.24.2 → 0.25.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 (289) hide show
  1. package/build/api/escalations/accumulate.js +8 -4
  2. package/build/api/escalations/metadata.js +4 -3
  3. package/build/api/escalations/related.d.ts +1 -1
  4. package/build/api/escalations/related.js +28 -18
  5. package/build/services/domain/seed.d.ts +12 -10
  6. package/build/services/domain/seed.js +31 -25
  7. package/build/services/escalation/accumulate.d.ts +3 -1
  8. package/build/services/escalation/facet-sql.js +4 -2
  9. package/build/services/escalation/index.d.ts +1 -0
  10. package/build/services/escalation/index.js +4 -1
  11. package/build/services/escalation/related-extremes.d.ts +17 -0
  12. package/build/services/escalation/related-extremes.js +65 -0
  13. package/build/services/escalation/related.d.ts +4 -0
  14. package/build/services/escalation/related.js +2 -0
  15. package/build/services/escalation/resolver-validation.js +7 -0
  16. package/build/services/escalation/roster.d.ts +13 -0
  17. package/build/services/escalation/roster.js +37 -0
  18. package/build/services/escalation/submit-guard.d.ts +3 -0
  19. package/build/services/escalation/submit-guard.js +21 -2
  20. package/build/services/mcp/server-tools.js +1 -1
  21. package/build/shared/form-validation/display-only-widgets.d.ts +1 -0
  22. package/build/shared/form-validation/display-only-widgets.js +1 -0
  23. package/build/shared/form-validation/index.d.ts +1 -0
  24. package/build/shared/form-validation/index.js +1 -0
  25. package/build/shared/form-validation/validate-resolver-payload.d.ts +1 -0
  26. package/build/shared/form-validation/validate-resolver-payload.js +2 -1
  27. package/build/shared/form-validation/x-lt-help.d.ts +1 -1
  28. package/build/shared/form-validation/x-lt-help.js +2 -1
  29. package/build/shared/form-validation/x-lt-roster.d.ts +92 -0
  30. package/build/shared/form-validation/x-lt-roster.js +253 -0
  31. package/build/shared/form-validation/x-lt-show-if.d.ts +8 -0
  32. package/build/shared/form-validation/x-lt-show-if.js +13 -0
  33. package/build/shared/form-validation/x-lt-submit-guard.d.ts +14 -1
  34. package/build/shared/form-validation/x-lt-submit-guard.js +4 -1
  35. package/build/shared/list-schema/aggregate.d.ts +19 -0
  36. package/build/shared/list-schema/aggregate.js +66 -0
  37. package/build/shared/list-schema/index.d.ts +2 -0
  38. package/build/shared/list-schema/index.js +7 -1
  39. package/build/shared/list-schema/types.d.ts +15 -2
  40. package/build/shared/list-schema/types.js +6 -1
  41. package/build/shared/list-schema/validate.js +28 -2
  42. package/build/start/workers.d.ts +3 -0
  43. package/build/start/workers.js +15 -5
  44. package/build/tsconfig.tsbuildinfo +1 -1
  45. package/build/types/startup.d.ts +8 -1
  46. package/dashboard/dist/assets/{AdminDashboard-B3mkMIOT.js → AdminDashboard-C_0ShYrm.js} +2 -2
  47. package/dashboard/dist/assets/{AdminDashboard-B3mkMIOT.js.map → AdminDashboard-C_0ShYrm.js.map} +1 -1
  48. package/dashboard/dist/assets/{AgentConfigPage-CQj2B678.js → AgentConfigPage-Cc9dI8lO.js} +6 -6
  49. package/dashboard/dist/assets/{AgentConfigPage-CQj2B678.js.map → AgentConfigPage-Cc9dI8lO.js.map} +1 -1
  50. package/dashboard/dist/assets/{AgentDetailPage-CzrD8JJI.js → AgentDetailPage-Sdmt5j-k.js} +3 -3
  51. package/dashboard/dist/assets/{AgentDetailPage-CzrD8JJI.js.map → AgentDetailPage-Sdmt5j-k.js.map} +1 -1
  52. package/dashboard/dist/assets/{AgentsPage-jg2OFwyW.js → AgentsPage-BuzXc1mg.js} +2 -2
  53. package/dashboard/dist/assets/{AgentsPage-jg2OFwyW.js.map → AgentsPage-BuzXc1mg.js.map} +1 -1
  54. package/dashboard/dist/assets/AvailableEscalationsPage-DU84iaBN.js +2 -0
  55. package/dashboard/dist/assets/{AvailableEscalationsPage-IS28XBRe.js.map → AvailableEscalationsPage-DU84iaBN.js.map} +1 -1
  56. package/dashboard/dist/assets/{BotPicker-DvEJFpwS.js → BotPicker-Ci5PUrkl.js} +2 -2
  57. package/dashboard/dist/assets/{BotPicker-DvEJFpwS.js.map → BotPicker-Ci5PUrkl.js.map} +1 -1
  58. package/dashboard/dist/assets/{BulkAssignModal-BoQCi-YC.js → BulkAssignModal-PLx7SLvF.js} +2 -2
  59. package/dashboard/dist/assets/{BulkAssignModal-BoQCi-YC.js.map → BulkAssignModal-PLx7SLvF.js.map} +1 -1
  60. package/dashboard/dist/assets/{CapabilitiesPage-kwlrcb_t.js → CapabilitiesPage-DuSfgr6i.js} +2 -2
  61. package/dashboard/dist/assets/{CapabilitiesPage-kwlrcb_t.js.map → CapabilitiesPage-DuSfgr6i.js.map} +1 -1
  62. package/dashboard/dist/assets/{CollapsibleSection-UMIV4KIj.js → CollapsibleSection-KOO37qs6.js} +2 -2
  63. package/dashboard/dist/assets/{CollapsibleSection-UMIV4KIj.js.map → CollapsibleSection-KOO37qs6.js.map} +1 -1
  64. package/dashboard/dist/assets/{ConfirmDeleteModal-C5puwMg7.js → ConfirmDeleteModal-CI1eE-Nr.js} +2 -2
  65. package/dashboard/dist/assets/{ConfirmDeleteModal-C5puwMg7.js.map → ConfirmDeleteModal-CI1eE-Nr.js.map} +1 -1
  66. package/dashboard/dist/assets/{ConnectedAppsPage-drZa65kP.js → ConnectedAppsPage-DZgbCC0G.js} +2 -2
  67. package/dashboard/dist/assets/{ConnectedAppsPage-drZa65kP.js.map → ConnectedAppsPage-DZgbCC0G.js.map} +1 -1
  68. package/dashboard/dist/assets/CountdownTimer-C-Ngk8oq.js +2 -0
  69. package/dashboard/dist/assets/CountdownTimer-C-Ngk8oq.js.map +1 -0
  70. package/dashboard/dist/assets/{CredentialsPage-CaFQ6vLb.js → CredentialsPage-BR7s6eVu.js} +2 -2
  71. package/dashboard/dist/assets/{CredentialsPage-CaFQ6vLb.js.map → CredentialsPage-BR7s6eVu.js.map} +1 -1
  72. package/dashboard/dist/assets/{CronLabel-Co5j7tzW.js → CronLabel-BQ7Y1Nfd.js} +2 -2
  73. package/dashboard/dist/assets/{CronLabel-Co5j7tzW.js.map → CronLabel-BQ7Y1Nfd.js.map} +1 -1
  74. package/dashboard/dist/assets/{DropZone-B1Tdfddc.js → DropZone-DCZpORx-.js} +2 -2
  75. package/dashboard/dist/assets/{DropZone-B1Tdfddc.js.map → DropZone-DCZpORx-.js.map} +1 -1
  76. package/dashboard/dist/assets/{ElapsedCell-WJyE9G0T.js → ElapsedCell-BT49mUIc.js} +2 -2
  77. package/dashboard/dist/assets/{ElapsedCell-WJyE9G0T.js.map → ElapsedCell-BT49mUIc.js.map} +1 -1
  78. package/dashboard/dist/assets/{EntityTimelinePanel-CDFFfX9d.js → EntityTimelinePanel-BtARWy3R.js} +2 -2
  79. package/dashboard/dist/assets/{EntityTimelinePanel-CDFFfX9d.js.map → EntityTimelinePanel-BtARWy3R.js.map} +1 -1
  80. package/dashboard/dist/assets/{EscalationListSchemaPage-CMrUlaKI.js → EscalationListSchemaPage-EEBsNpTe.js} +3 -3
  81. package/dashboard/dist/assets/{EscalationListSchemaPage-CMrUlaKI.js.map → EscalationListSchemaPage-EEBsNpTe.js.map} +1 -1
  82. package/dashboard/dist/assets/{EscalationSchemaPage-Dx2Lyfrz.js → EscalationSchemaPage-BHSC46Ow.js} +3 -3
  83. package/dashboard/dist/assets/{EscalationSchemaPage-Dx2Lyfrz.js.map → EscalationSchemaPage-BHSC46Ow.js.map} +1 -1
  84. package/dashboard/dist/assets/EscalationTimeline-BWTUBxUf.js +2 -0
  85. package/dashboard/dist/assets/{EscalationTimeline-d3nvshOk.js.map → EscalationTimeline-BWTUBxUf.js.map} +1 -1
  86. package/dashboard/dist/assets/{EscalationTitleSelect-DWQieOM9.js → EscalationTitleSelect-DOsfY4u8.js} +2 -2
  87. package/dashboard/dist/assets/{EscalationTitleSelect-DWQieOM9.js.map → EscalationTitleSelect-DOsfY4u8.js.map} +1 -1
  88. package/dashboard/dist/assets/{EscalationsOverview-BX8Cpi0X.js → EscalationsOverview-Bl8g53x-.js} +2 -2
  89. package/dashboard/dist/assets/{EscalationsOverview-BX8Cpi0X.js.map → EscalationsOverview-Bl8g53x-.js.map} +1 -1
  90. package/dashboard/dist/assets/{EventTable-D1-ITVXS.js → EventTable-Bjx17W_i.js} +2 -2
  91. package/dashboard/dist/assets/{EventTable-D1-ITVXS.js.map → EventTable-Bjx17W_i.js.map} +1 -1
  92. package/dashboard/dist/assets/{FilterBar-ABC9ctin.js → FilterBar-Dnse0soD.js} +2 -2
  93. package/dashboard/dist/assets/{FilterBar-ABC9ctin.js.map → FilterBar-Dnse0soD.js.map} +1 -1
  94. package/dashboard/dist/assets/{FormattedValue-k27T4bG7.js → FormattedValue-DeVrRJy4.js} +2 -2
  95. package/dashboard/dist/assets/{FormattedValue-k27T4bG7.js.map → FormattedValue-DeVrRJy4.js.map} +1 -1
  96. package/dashboard/dist/assets/{GraphInvokePage-DKUErxWc.js → GraphInvokePage-HQEvbHTd.js} +2 -2
  97. package/dashboard/dist/assets/{GraphInvokePage-DKUErxWc.js.map → GraphInvokePage-HQEvbHTd.js.map} +1 -1
  98. package/dashboard/dist/assets/{HomePage-C6u9dIpR.js → HomePage-DizTklVg.js} +2 -2
  99. package/dashboard/dist/assets/{HomePage-C6u9dIpR.js.map → HomePage-DizTklVg.js.map} +1 -1
  100. package/dashboard/dist/assets/{ListToolbar-gA5rFzkz.js → ListToolbar-B0qe2QZ5.js} +2 -2
  101. package/dashboard/dist/assets/{ListToolbar-gA5rFzkz.js.map → ListToolbar-B0qe2QZ5.js.map} +1 -1
  102. package/dashboard/dist/assets/{McpOverview-BOPo3J_i.js → McpOverview-DmH-qtX9.js} +2 -2
  103. package/dashboard/dist/assets/{McpOverview-BOPo3J_i.js.map → McpOverview-DmH-qtX9.js.map} +1 -1
  104. package/dashboard/dist/assets/{McpQueryDetailPage-BRVVi0Zh.js → McpQueryDetailPage-B-qtmwLd.js} +2 -2
  105. package/dashboard/dist/assets/{McpQueryDetailPage-BRVVi0Zh.js.map → McpQueryDetailPage-B-qtmwLd.js.map} +1 -1
  106. package/dashboard/dist/assets/{McpQueryPage-Dmbb6SAc.js → McpQueryPage-DX1T-Ugq.js} +2 -2
  107. package/dashboard/dist/assets/{McpQueryPage-Dmbb6SAc.js.map → McpQueryPage-DX1T-Ugq.js.map} +1 -1
  108. package/dashboard/dist/assets/McpRunDetailPage-DNdl10nB.js +2 -0
  109. package/dashboard/dist/assets/{McpRunDetailPage-bMXNO-6V.js.map → McpRunDetailPage-DNdl10nB.js.map} +1 -1
  110. package/dashboard/dist/assets/{McpRunsPage-Bi9AMWja.js → McpRunsPage-DVXVB4AJ.js} +2 -2
  111. package/dashboard/dist/assets/{McpRunsPage-Bi9AMWja.js.map → McpRunsPage-DVXVB4AJ.js.map} +1 -1
  112. package/dashboard/dist/assets/{NamespacePill-DwM5pNA4.js → NamespacePill-CSZT2fA4.js} +2 -2
  113. package/dashboard/dist/assets/{NamespacePill-DwM5pNA4.js.map → NamespacePill-CSZT2fA4.js.map} +1 -1
  114. package/dashboard/dist/assets/{OperationsPage-CvR74ZUJ.js → OperationsPage-BxgWQq8v.js} +3 -3
  115. package/dashboard/dist/assets/{OperationsPage-CvR74ZUJ.js.map → OperationsPage-BxgWQq8v.js.map} +1 -1
  116. package/dashboard/dist/assets/OperatorDashboard-Cw86vOPg.js +2 -0
  117. package/dashboard/dist/assets/{OperatorDashboard-DctmZw10.js.map → OperatorDashboard-Cw86vOPg.js.map} +1 -1
  118. package/dashboard/dist/assets/{PageHeader-CMd3f4bz.js → PageHeader-C4z1ExF7.js} +2 -2
  119. package/dashboard/dist/assets/{PageHeader-CMd3f4bz.js.map → PageHeader-C4z1ExF7.js.map} +1 -1
  120. package/dashboard/dist/assets/{PageHeaderWithStats-DHj8Mqox.js → PageHeaderWithStats-B_f_Sz_Q.js} +2 -2
  121. package/dashboard/dist/assets/{PageHeaderWithStats-DHj8Mqox.js.map → PageHeaderWithStats-B_f_Sz_Q.js.map} +1 -1
  122. package/dashboard/dist/assets/{PersonaDetailPage-Ubqm2rQH.js → PersonaDetailPage-BTIJ4A6p.js} +2 -2
  123. package/dashboard/dist/assets/{PersonaDetailPage-Ubqm2rQH.js.map → PersonaDetailPage-BTIJ4A6p.js.map} +1 -1
  124. package/dashboard/dist/assets/{PersonasPage-BpFL2rpo.js → PersonasPage-D11PokPb.js} +2 -2
  125. package/dashboard/dist/assets/{PersonasPage-BpFL2rpo.js.map → PersonasPage-D11PokPb.js.map} +1 -1
  126. package/dashboard/dist/assets/PortalPage-1rXm0cNK.js +2 -0
  127. package/dashboard/dist/assets/{PortalPage-Dfc_Q02R.js.map → PortalPage-1rXm0cNK.js.map} +1 -1
  128. package/dashboard/dist/assets/{ProcessDetailPage-liJspvQh.js → ProcessDetailPage-Cp5-969g.js} +2 -2
  129. package/dashboard/dist/assets/{ProcessDetailPage-liJspvQh.js.map → ProcessDetailPage-Cp5-969g.js.map} +1 -1
  130. package/dashboard/dist/assets/{ProcessesListPage-C3OM5ZUy.js → ProcessesListPage-assXQe-x.js} +2 -2
  131. package/dashboard/dist/assets/{ProcessesListPage-C3OM5ZUy.js.map → ProcessesListPage-assXQe-x.js.map} +1 -1
  132. package/dashboard/dist/assets/ResolverForm-CMzNjmGG.js +8 -0
  133. package/dashboard/dist/assets/ResolverForm-CMzNjmGG.js.map +1 -0
  134. package/dashboard/dist/assets/{RoleDetailPage-CrlYCh-R.js → RoleDetailPage-c_Qij0Tf.js} +3 -3
  135. package/dashboard/dist/assets/{RoleDetailPage-CrlYCh-R.js.map → RoleDetailPage-c_Qij0Tf.js.map} +1 -1
  136. package/dashboard/dist/assets/{RolePill-Di2CAHuD.js → RolePill-Bw_n7EpR.js} +2 -2
  137. package/dashboard/dist/assets/{RolePill-Di2CAHuD.js.map → RolePill-Bw_n7EpR.js.map} +1 -1
  138. package/dashboard/dist/assets/{RolesPage-BaazL_pt.js → RolesPage-D4oaYgTg.js} +2 -2
  139. package/dashboard/dist/assets/{RolesPage-BaazL_pt.js.map → RolesPage-D4oaYgTg.js.map} +1 -1
  140. package/dashboard/dist/assets/{RunAsSelector-DxuV0fa1.js → RunAsSelector-Fptil_sB.js} +2 -2
  141. package/dashboard/dist/assets/{RunAsSelector-DxuV0fa1.js.map → RunAsSelector-Fptil_sB.js.map} +1 -1
  142. package/dashboard/dist/assets/{ScanCodesPage-C0mvmYTq.js → ScanCodesPage-BeZA_YJW.js} +2 -2
  143. package/dashboard/dist/assets/{ScanCodesPage-C0mvmYTq.js.map → ScanCodesPage-BeZA_YJW.js.map} +1 -1
  144. package/dashboard/dist/assets/{ScanSchemeDetailPage-CiJgt5dZ.js → ScanSchemeDetailPage-Bxi15xNr.js} +2 -2
  145. package/dashboard/dist/assets/{ScanSchemeDetailPage-CiJgt5dZ.js.map → ScanSchemeDetailPage-Bxi15xNr.js.map} +1 -1
  146. package/dashboard/dist/assets/ScanStationPage-t5Bz957t.js +2 -0
  147. package/dashboard/dist/assets/ScanStationPage-t5Bz957t.js.map +1 -0
  148. package/dashboard/dist/assets/{ScopeBadge-CSItPVOH.js → ScopeBadge-CKgfwTy3.js} +2 -2
  149. package/dashboard/dist/assets/{ScopeBadge-CSItPVOH.js.map → ScopeBadge-CKgfwTy3.js.map} +1 -1
  150. package/dashboard/dist/assets/{StickyPagination-CqbjVY6T.js → StickyPagination-C2drZk7w.js} +2 -2
  151. package/dashboard/dist/assets/{StickyPagination-CqbjVY6T.js.map → StickyPagination-C2drZk7w.js.map} +1 -1
  152. package/dashboard/dist/assets/{StreamMessageDetail-wX3i0aqs.js → StreamMessageDetail-x-l5653y.js} +2 -2
  153. package/dashboard/dist/assets/{StreamMessageDetail-wX3i0aqs.js.map → StreamMessageDetail-x-l5653y.js.map} +1 -1
  154. package/dashboard/dist/assets/{SwimlaneTimeline-C50PsFoV.js → SwimlaneTimeline-Ds_CqLXL.js} +2 -2
  155. package/dashboard/dist/assets/{SwimlaneTimeline-C50PsFoV.js.map → SwimlaneTimeline-Ds_CqLXL.js.map} +1 -1
  156. package/dashboard/dist/assets/{TagInput-CAgdLN_b.js → TagInput-B6fMAqxd.js} +2 -2
  157. package/dashboard/dist/assets/{TagInput-CAgdLN_b.js.map → TagInput-B6fMAqxd.js.map} +1 -1
  158. package/dashboard/dist/assets/{TaskDetailPage-bbNSv4Ae.js → TaskDetailPage-BJGKEnIo.js} +2 -2
  159. package/dashboard/dist/assets/{TaskDetailPage-bbNSv4Ae.js.map → TaskDetailPage-BJGKEnIo.js.map} +1 -1
  160. package/dashboard/dist/assets/{TaskQueuePill-h0oorVMe.js → TaskQueuePill-BnDp_DE6.js} +2 -2
  161. package/dashboard/dist/assets/{TaskQueuePill-h0oorVMe.js.map → TaskQueuePill-BnDp_DE6.js.map} +1 -1
  162. package/dashboard/dist/assets/{TasksListPage-CDWnm_d9.js → TasksListPage-DyLaZvTT.js} +2 -2
  163. package/dashboard/dist/assets/{TasksListPage-CDWnm_d9.js.map → TasksListPage-DyLaZvTT.js.map} +1 -1
  164. package/dashboard/dist/assets/{TimeAgo-BLjqlfoX.js → TimeAgo-B_Ta97uy.js} +2 -2
  165. package/dashboard/dist/assets/{TimeAgo-BLjqlfoX.js.map → TimeAgo-B_Ta97uy.js.map} +1 -1
  166. package/dashboard/dist/assets/{TimestampCell-CnW0ENb5.js → TimestampCell-CiTYBQw-.js} +2 -2
  167. package/dashboard/dist/assets/{TimestampCell-CnW0ENb5.js.map → TimestampCell-CiTYBQw-.js.map} +1 -1
  168. package/dashboard/dist/assets/{ToolPill-CQCsVdzD.js → ToolPill-BRZWo4l8.js} +2 -2
  169. package/dashboard/dist/assets/{ToolPill-CQCsVdzD.js.map → ToolPill-BRZWo4l8.js.map} +1 -1
  170. package/dashboard/dist/assets/{ToolTestPanel-DkMgCB-k.js → ToolTestPanel-Dw8Zu6xr.js} +2 -2
  171. package/dashboard/dist/assets/{ToolTestPanel-DkMgCB-k.js.map → ToolTestPanel-Dw8Zu6xr.js.map} +1 -1
  172. package/dashboard/dist/assets/{TopicDetailPage-g3pljKKX.js → TopicDetailPage-DPMAWKTN.js} +4 -4
  173. package/dashboard/dist/assets/{TopicDetailPage-g3pljKKX.js.map → TopicDetailPage-DPMAWKTN.js.map} +1 -1
  174. package/dashboard/dist/assets/{TopicsPage-CVcCYdy-.js → TopicsPage-0Z2lAE0d.js} +2 -2
  175. package/dashboard/dist/assets/{TopicsPage-CVcCYdy-.js.map → TopicsPage-0Z2lAE0d.js.map} +1 -1
  176. package/dashboard/dist/assets/{UserName-D6zGIK2i.js → UserName-DrAbCpdY.js} +2 -2
  177. package/dashboard/dist/assets/{UserName-D6zGIK2i.js.map → UserName-DrAbCpdY.js.map} +1 -1
  178. package/dashboard/dist/assets/WorkflowExecutionPage-DQITqX-6.js +2 -0
  179. package/dashboard/dist/assets/{WorkflowExecutionPage-B8g81FCJ.js.map → WorkflowExecutionPage-DQITqX-6.js.map} +1 -1
  180. package/dashboard/dist/assets/{WorkflowPill-Dg7BDTyM.js → WorkflowPill-Cly9Ln_3.js} +2 -2
  181. package/dashboard/dist/assets/{WorkflowPill-Dg7BDTyM.js.map → WorkflowPill-Cly9Ln_3.js.map} +1 -1
  182. package/dashboard/dist/assets/{WorkflowsDashboard-nxT3bv6W.js → WorkflowsDashboard-CMJPiR6G.js} +2 -2
  183. package/dashboard/dist/assets/{WorkflowsDashboard-nxT3bv6W.js.map → WorkflowsDashboard-CMJPiR6G.js.map} +1 -1
  184. package/dashboard/dist/assets/{WorkflowsOverview-grI-KAI2.js → WorkflowsOverview-DwVMLe1y.js} +2 -2
  185. package/dashboard/dist/assets/{WorkflowsOverview-grI-KAI2.js.map → WorkflowsOverview-DwVMLe1y.js.map} +1 -1
  186. package/dashboard/dist/assets/{YamlWorkflowDetailPage-BoZ-hfBE.js → YamlWorkflowDetailPage-Do6s_wmW.js} +12 -12
  187. package/dashboard/dist/assets/{YamlWorkflowDetailPage-BoZ-hfBE.js.map → YamlWorkflowDetailPage-Do6s_wmW.js.map} +1 -1
  188. package/dashboard/dist/assets/{YamlWorkflowsPage-Bf04rwRv.js → YamlWorkflowsPage-8Sr6rZMZ.js} +2 -2
  189. package/dashboard/dist/assets/{YamlWorkflowsPage-Bf04rwRv.js.map → YamlWorkflowsPage-8Sr6rZMZ.js.map} +1 -1
  190. package/dashboard/dist/assets/{agents-Dphpdi8l.js → agents-Maom-dbf.js} +2 -2
  191. package/dashboard/dist/assets/{agents-Dphpdi8l.js.map → agents-Maom-dbf.js.map} +1 -1
  192. package/dashboard/dist/assets/{bots-DIFE298x.js → bots-BESWftTA.js} +2 -2
  193. package/dashboard/dist/assets/{bots-DIFE298x.js.map → bots-BESWftTA.js.map} +1 -1
  194. package/dashboard/dist/assets/{capabilities-D7Y7LClY.js → capabilities-BnvJAmFQ.js} +2 -2
  195. package/dashboard/dist/assets/{capabilities-D7Y7LClY.js.map → capabilities-BnvJAmFQ.js.map} +1 -1
  196. package/dashboard/dist/assets/{controlplane-D1TGcYsS.js → controlplane-Cu7TD1RX.js} +2 -2
  197. package/dashboard/dist/assets/{controlplane-D1TGcYsS.js.map → controlplane-Cu7TD1RX.js.map} +1 -1
  198. package/dashboard/dist/assets/escalation-columns-BPSH8qMx.js +2 -0
  199. package/dashboard/dist/assets/escalation-columns-BPSH8qMx.js.map +1 -0
  200. package/dashboard/dist/assets/escalation-items-uDQTphVW.js +2 -0
  201. package/dashboard/dist/assets/escalation-items-uDQTphVW.js.map +1 -0
  202. package/dashboard/dist/assets/index-AJNPDsTI.js +2 -0
  203. package/dashboard/dist/assets/{index-CxdjT1Yk.js.map → index-AJNPDsTI.js.map} +1 -1
  204. package/dashboard/dist/assets/{index-ag2pCAPu.js → index-B4SNhwgt.js} +2 -2
  205. package/dashboard/dist/assets/{index-ag2pCAPu.js.map → index-B4SNhwgt.js.map} +1 -1
  206. package/dashboard/dist/assets/{index-BzYcUPdD.js → index-BG7OpNg7.js} +2 -2
  207. package/dashboard/dist/assets/{index-BzYcUPdD.js.map → index-BG7OpNg7.js.map} +1 -1
  208. package/dashboard/dist/assets/index-BLbZsMRG.js +67 -0
  209. package/dashboard/dist/assets/index-BLbZsMRG.js.map +1 -0
  210. package/dashboard/dist/assets/{index-DpKOr311.js → index-BLlg1aVG.js} +2 -2
  211. package/dashboard/dist/assets/{index-DpKOr311.js.map → index-BLlg1aVG.js.map} +1 -1
  212. package/dashboard/dist/assets/{index-Dl_8hbYI.js → index-BkVarz6E.js} +2 -2
  213. package/dashboard/dist/assets/{index-Dl_8hbYI.js.map → index-BkVarz6E.js.map} +1 -1
  214. package/dashboard/dist/assets/{index-Dy1wWu2e.js → index-BpWutGxS.js} +2 -2
  215. package/dashboard/dist/assets/{index-Dy1wWu2e.js.map → index-BpWutGxS.js.map} +1 -1
  216. package/dashboard/dist/assets/{index-DAvi5_2T.js → index-BvI2_dSt.js} +2 -2
  217. package/dashboard/dist/assets/{index-DAvi5_2T.js.map → index-BvI2_dSt.js.map} +1 -1
  218. package/dashboard/dist/assets/index-CnU7Jjz3.css +1 -0
  219. package/dashboard/dist/assets/{index-HLu98Sqh.js → index-D5JQweUm.js} +2 -2
  220. package/dashboard/dist/assets/{index-HLu98Sqh.js.map → index-D5JQweUm.js.map} +1 -1
  221. package/dashboard/dist/assets/{index-DN-kX7hL.js → index-WA8py2Yc.js} +2 -2
  222. package/dashboard/dist/assets/{index-DN-kX7hL.js.map → index-WA8py2Yc.js.map} +1 -1
  223. package/dashboard/dist/assets/{index-ChV7pBjM.js → index-_yHsJJTS.js} +2 -2
  224. package/dashboard/dist/assets/{index-ChV7pBjM.js.map → index-_yHsJJTS.js.map} +1 -1
  225. package/dashboard/dist/assets/index-kGSUZCOb.js +3 -0
  226. package/dashboard/dist/assets/index-kGSUZCOb.js.map +1 -0
  227. package/dashboard/dist/assets/index-qY2KDGkM.js +13 -0
  228. package/dashboard/dist/assets/{index-gkxPN7Vx.js.map → index-qY2KDGkM.js.map} +1 -1
  229. package/dashboard/dist/assets/{knowledge-DnMs-SOJ.js → knowledge-DCFRNG8R.js} +2 -2
  230. package/dashboard/dist/assets/{knowledge-DnMs-SOJ.js.map → knowledge-DCFRNG8R.js.map} +1 -1
  231. package/dashboard/dist/assets/{mcp-CwW-K3r4.js → mcp-CZhOocmN.js} +2 -2
  232. package/dashboard/dist/assets/{mcp-CwW-K3r4.js.map → mcp-CZhOocmN.js.map} +1 -1
  233. package/dashboard/dist/assets/{mcp-query-BZt5e8_Q.js → mcp-query-Wt8z6yAL.js} +2 -2
  234. package/dashboard/dist/assets/{mcp-query-BZt5e8_Q.js.map → mcp-query-Wt8z6yAL.js.map} +1 -1
  235. package/dashboard/dist/assets/{personas-UA-Xn60f.js → personas-D2_foqJm.js} +2 -2
  236. package/dashboard/dist/assets/{personas-UA-Xn60f.js.map → personas-D2_foqJm.js.map} +1 -1
  237. package/dashboard/dist/assets/{pipelines-Cu3PARum.js → pipelines-Bb159fNz.js} +2 -2
  238. package/dashboard/dist/assets/{pipelines-Cu3PARum.js.map → pipelines-Bb159fNz.js.map} +1 -1
  239. package/dashboard/dist/assets/{tasks-BO6h8GJE.js → tasks-xAU6C6tb.js} +2 -2
  240. package/dashboard/dist/assets/{tasks-BO6h8GJE.js.map → tasks-xAU6C6tb.js.map} +1 -1
  241. package/dashboard/dist/assets/{topics-CWjCR-17.js → topics-DFdqb2Te.js} +2 -2
  242. package/dashboard/dist/assets/{topics-CWjCR-17.js.map → topics-DFdqb2Te.js.map} +1 -1
  243. package/dashboard/dist/assets/{useDebouncedValue-6t0jx1RB.js → useDebouncedValue-CbHmpS4w.js} +2 -2
  244. package/dashboard/dist/assets/{useDebouncedValue-6t0jx1RB.js.map → useDebouncedValue-CbHmpS4w.js.map} +1 -1
  245. package/dashboard/dist/assets/{useNamespace-CqpoQx6D.js → useNamespace-B_00X1yb.js} +2 -2
  246. package/dashboard/dist/assets/{useNamespace-CqpoQx6D.js.map → useNamespace-B_00X1yb.js.map} +1 -1
  247. package/dashboard/dist/assets/{useYamlActivityEvents-hmCQQwzB.js → useYamlActivityEvents-B4F-s9g0.js} +2 -2
  248. package/dashboard/dist/assets/{useYamlActivityEvents-hmCQQwzB.js.map → useYamlActivityEvents-B4F-s9g0.js.map} +1 -1
  249. package/dashboard/dist/assets/{vendor-icons-CeVtUKyP.js → vendor-icons-C_DQEeBy.js} +2 -2
  250. package/dashboard/dist/assets/{vendor-icons-CeVtUKyP.js.map → vendor-icons-C_DQEeBy.js.map} +1 -1
  251. package/dashboard/dist/assets/{yaml-workflows-ziUdZhKY.js → yaml-workflows-DyjbPFVp.js} +2 -2
  252. package/dashboard/dist/assets/{yaml-workflows-ziUdZhKY.js.map → yaml-workflows-DyjbPFVp.js.map} +1 -1
  253. package/dashboard/dist/index.html +3 -3
  254. package/docs/code-owned-configuration.md +2 -2
  255. package/docs/domain-dictionary.md +19 -3
  256. package/docs/faceted-routing.md +15 -1
  257. package/docs/hitl/x-lt-display.md +1 -1
  258. package/docs/hitl/x-lt-embed.md +4 -1
  259. package/docs/hitl/x-lt-list-schema.md +19 -2
  260. package/docs/hitl/x-lt-roster.md +112 -0
  261. package/docs/hitl/x-lt-show-if.md +15 -0
  262. package/docs/hitl/x-lt-widget.md +1 -0
  263. package/docs/hitl-guide.md +3 -1
  264. package/docs/scan-codes.md +4 -0
  265. package/docs/schema-enforcement.md +5 -0
  266. package/package.json +2 -2
  267. package/dashboard/dist/assets/AvailableEscalationsPage-IS28XBRe.js +0 -2
  268. package/dashboard/dist/assets/CountdownTimer-LG03dVgR.js +0 -2
  269. package/dashboard/dist/assets/CountdownTimer-LG03dVgR.js.map +0 -1
  270. package/dashboard/dist/assets/EscalationTimeline-d3nvshOk.js +0 -2
  271. package/dashboard/dist/assets/McpRunDetailPage-bMXNO-6V.js +0 -2
  272. package/dashboard/dist/assets/OperatorDashboard-DctmZw10.js +0 -2
  273. package/dashboard/dist/assets/PortalPage-Dfc_Q02R.js +0 -2
  274. package/dashboard/dist/assets/ResolverForm-B1_x8Blv.js +0 -8
  275. package/dashboard/dist/assets/ResolverForm-B1_x8Blv.js.map +0 -1
  276. package/dashboard/dist/assets/ScanStationPage-DzGaXc40.js +0 -2
  277. package/dashboard/dist/assets/ScanStationPage-DzGaXc40.js.map +0 -1
  278. package/dashboard/dist/assets/WorkflowExecutionPage-B8g81FCJ.js +0 -2
  279. package/dashboard/dist/assets/escalation-columns-cwZE6xyo.js +0 -2
  280. package/dashboard/dist/assets/escalation-columns-cwZE6xyo.js.map +0 -1
  281. package/dashboard/dist/assets/index-CeCtqujG.js +0 -67
  282. package/dashboard/dist/assets/index-CeCtqujG.js.map +0 -1
  283. package/dashboard/dist/assets/index-CniRa65p.js +0 -3
  284. package/dashboard/dist/assets/index-CniRa65p.js.map +0 -1
  285. package/dashboard/dist/assets/index-CxdjT1Yk.js +0 -2
  286. package/dashboard/dist/assets/index-gkxPN7Vx.js +0 -13
  287. package/dashboard/dist/assets/index-m9A3UYst.css +0 -1
  288. package/dashboard/dist/assets/validate-BIRn4a6d.js +0 -2
  289. package/dashboard/dist/assets/validate-BIRn4a6d.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"CountdownTimer-LG03dVgR.js","sources":["../../src/lib/escalation-items.ts","../../src/components/common/display/CountdownTimer.tsx"],"sourcesContent":["import type { LTEscalationRecord } from '../api/types';\nimport { interpolateHelp, type HelpTokenContext } from './x-lt-help';\nimport { getDeep } from './x-lt-bind';\n\n/** One held item of an accumulator or batch row, in the shape the workflow receives. */\nexport interface EscalationItem {\n itemKey: string;\n payload?: Record<string, unknown>;\n /** ISO-8601 from the database clock; empty for a batch item with no stamp. */\n at: string;\n actor?: string;\n reciprocalId?: string;\n}\n\nexport interface EscalationItems {\n kind: 'accumulate' | 'batch';\n count: number;\n /** The count trigger (accumulate) or the declared size (batch); null when unbounded. */\n max: number | null;\n items: EscalationItem[];\n /** Batch only: declared keys still awaiting submission. */\n pending: string[];\n}\n\nconst ACCUMULATE_ITEMS = 'accumulate_items';\nconst ACCUMULATE_MAX = 'accumulate_max';\nconst BATCH_ITEMS = 'batch_items';\nconst BATCH_FILLED_AT = 'batch_filled_at';\nconst BATCH_FILLED_BY = 'batch_filled_by';\nconst BATCH_KEYS = 'batch_keys';\nconst BATCH_PENDING = 'batch_pending';\n\nfunction isRecord(v: unknown): v is Record<string, unknown> {\n return !!v && typeof v === 'object' && !Array.isArray(v);\n}\n\nfunction byArrival(a: EscalationItem, b: EscalationItem): number {\n return a.at.localeCompare(b.at) || a.itemKey.localeCompare(b.itemKey);\n}\n\n/**\n * The held items of a row, or null when the row is neither an accumulator\n * nor a batch. Mirrors the server's items view so the panel and the API\n * agree on order (arrival, then key).\n */\nexport function escalationItems(\n esc: Pick<LTEscalationRecord, 'metadata'>,\n envelope: Record<string, unknown> | null,\n): EscalationItems | null {\n const metadata = (esc.metadata ?? {}) as Record<string, unknown>;\n const store = envelope?.[ACCUMULATE_ITEMS];\n if (isRecord(store)) {\n const items = Object.entries(store).map(([itemKey, entry]) => {\n const e = isRecord(entry) ? entry : {};\n return {\n itemKey,\n at: typeof e.at === 'string' ? e.at : '',\n ...(isRecord(e.payload) ? { payload: e.payload } : {}),\n ...(typeof e.actor === 'string' ? { actor: e.actor } : {}),\n ...(typeof e.reciprocalId === 'string' ? { reciprocalId: e.reciprocalId } : {}),\n } as EscalationItem;\n }).sort(byArrival);\n const max = metadata[ACCUMULATE_MAX];\n return { kind: 'accumulate', count: items.length, max: typeof max === 'number' ? max : null, items, pending: [] };\n }\n const pending = metadata[BATCH_PENDING];\n if (Array.isArray(pending)) {\n const filled = isRecord(envelope?.[BATCH_ITEMS]) ? (envelope![BATCH_ITEMS] as Record<string, unknown>) : {};\n const stamps = isRecord(envelope?.[BATCH_FILLED_AT]) ? (envelope![BATCH_FILLED_AT] as Record<string, unknown>) : {};\n const actors = isRecord(envelope?.[BATCH_FILLED_BY]) ? (envelope![BATCH_FILLED_BY] as Record<string, unknown>) : {};\n const items = Object.entries(filled).map(([itemKey, payload]) => ({\n itemKey,\n at: typeof stamps[itemKey] === 'string' ? (stamps[itemKey] as string) : '',\n ...(isRecord(payload) ? { payload } : {}),\n ...(typeof actors[itemKey] === 'string' ? { actor: actors[itemKey] as string } : {}),\n } as EscalationItem)).sort(byArrival);\n const keys = metadata[BATCH_KEYS];\n return {\n kind: 'batch',\n count: items.length,\n max: Array.isArray(keys) ? keys.length : null,\n items,\n pending: pending.filter((k): k is string => typeof k === 'string'),\n };\n }\n return null;\n}\n\n/** A one-line summary of an item payload for the list row. */\nexport function summarizePayload(payload: Record<string, unknown> | undefined): string {\n if (!payload) return '';\n const parts = Object.entries(payload).slice(0, 3).map(([k, v]) => {\n const text = typeof v === 'object' && v !== null ? JSON.stringify(v) : String(v);\n return `${k}: ${text.length > 24 ? `${text.slice(0, 23)}…` : text}`;\n });\n const more = Object.keys(payload).length - parts.length;\n return more > 0 ? `${parts.join(' · ')} · +${more}` : parts.join(' · ');\n}\n\n/** The container role's form-schema key naming how each held item displays. */\nexport const ITEM_LABEL_KEY = 'x-lt-item-label';\n\nconst TOKEN = /\\{\\{\\s*([^{}]+?)\\s*\\}\\}/g;\nconst ITEM_DOMAIN = 'item';\nconst MISSING = '—';\n\nfunction formatValue(value: unknown): string | null {\n if (value === undefined || value === null || value === '') return null;\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean') return String(value);\n try {\n return JSON.stringify(value);\n } catch {\n return null;\n }\n}\n\n/** One token's value: `item.*` from the held item, every other domain as help tokens resolve it. */\nfunction tokenValue(path: string, item: EscalationItem, ctx: HelpTokenContext): string | null {\n const dot = path.indexOf('.');\n const domain = dot === -1 ? path : path.slice(0, dot);\n if (domain === ITEM_DOMAIN) {\n try {\n return formatValue(dot === -1 ? item : getDeep(item, path.slice(dot + 1)));\n } catch {\n return null;\n }\n }\n const value = interpolateHelp(`{{${path}}}`, ctx);\n return value === MISSING ? null : value;\n}\n\n/**\n * An item's display label from the role's `x-lt-item-label` template, whose\n * `{{item.*}}` tokens read the held item (itemKey, payload, actor, at) beside\n * the usual escalation domains. Null when there is no template or every token\n * it names is missing, so the caller falls back to the item key.\n */\nexport function itemLabel(\n template: unknown,\n item: EscalationItem,\n ctx: HelpTokenContext = {},\n): string | null {\n if (typeof template !== 'string' || !template.trim()) return null;\n let resolved = 0;\n let tokens = 0;\n const label = template.replace(TOKEN, (_match, rawPath: string) => {\n tokens += 1;\n const value = tokenValue(rawPath, item, ctx);\n if (value === null) return MISSING;\n resolved += 1;\n return value;\n }).trim();\n if (tokens > 0 && resolved === 0) return null;\n return label || null;\n}\n\n/** A template over `{{item.*}}` and the escalation domains; missing tokens read as an em dash. */\nexport function interpolateItemTemplate(template: string, item: EscalationItem | undefined, ctx: HelpTokenContext = {}): string {\n return template.replace(TOKEN, (_match, rawPath: string) => {\n if (!item && rawPath.split('.')[0] === ITEM_DOMAIN) return MISSING;\n return tokenValue(rawPath, item ?? ({} as EscalationItem), ctx) ?? MISSING;\n });\n}\n","import { useState, useEffect, useMemo } from 'react';\nimport { format as fnsFormat } from 'date-fns';\nimport { formatRemaining } from '../../../lib/format';\nimport { DateTooltip } from './DateTooltip';\n\nconst COUNTDOWN_THRESHOLDS = [\n { maxMs: 0, color: 'text-status-error' },\n { maxMs: 5 * 60 * 1000, color: 'text-status-error' },\n { maxMs: 15 * 60 * 1000, color: 'text-status-warning' },\n { maxMs: Infinity, color: 'text-text-secondary' },\n] as const;\n\nfunction countdownColor(remainingMs: number): string {\n if (remainingMs <= 0) return COUNTDOWN_THRESHOLDS[0].color;\n for (const t of COUNTDOWN_THRESHOLDS) {\n if (remainingMs < t.maxMs) return t.color;\n }\n return COUNTDOWN_THRESHOLDS[COUNTDOWN_THRESHOLDS.length - 1].color;\n}\n\nexport function CountdownTimer({ until }: { until: string }) {\n const [remaining, setRemaining] = useState(() => new Date(until).getTime() - Date.now());\n\n useEffect(() => {\n const interval = setInterval(() => {\n setRemaining(new Date(until).getTime() - Date.now());\n }, 1000);\n return () => clearInterval(interval);\n }, [until]);\n\n const options = useMemo(() => {\n const d = new Date(until);\n return [\n { label: 'ms', value: String(Math.max(0, remaining)) },\n { label: 'until', value: d.toISOString() },\n { label: 'local', value: fnsFormat(d, 'MMM d, yyyy h:mm:ss a') },\n ];\n }, [until, remaining]);\n\n return (\n <DateTooltip options={options}>\n <span className={`text-xs font-mono ${countdownColor(remaining)}`}>\n {formatRemaining(remaining)}\n </span>\n </DateTooltip>\n );\n}\n"],"names":["ACCUMULATE_ITEMS","ACCUMULATE_MAX","BATCH_ITEMS","BATCH_FILLED_AT","BATCH_FILLED_BY","BATCH_KEYS","BATCH_PENDING","isRecord","v","byArrival","a","b","escalationItems","esc","envelope","metadata","store","items","itemKey","entry","e","max","pending","filled","stamps","actors","payload","keys","k","summarizePayload","parts","text","more","ITEM_LABEL_KEY","TOKEN","ITEM_DOMAIN","MISSING","formatValue","value","tokenValue","path","item","ctx","dot","getDeep","interpolateHelp","itemLabel","template","resolved","tokens","label","_match","rawPath","interpolateItemTemplate","COUNTDOWN_THRESHOLDS","countdownColor","remainingMs","t","CountdownTimer","until","remaining","setRemaining","useState","useEffect","interval","options","useMemo","d","fnsFormat","jsx","DateTooltip","formatRemaining"],"mappings":"iKAwBA,MAAMA,EAAmB,mBACnBC,EAAiB,iBACjBC,EAAc,cACdC,EAAkB,kBAClBC,EAAkB,kBAClBC,EAAa,aACbC,EAAgB,gBAEtB,SAASC,EAASC,EAA0C,CAC1D,MAAO,CAAC,CAACA,GAAK,OAAOA,GAAM,UAAY,CAAC,MAAM,QAAQA,CAAC,CACzD,CAEA,SAASC,EAAUC,EAAmBC,EAA2B,CAC/D,OAAOD,EAAE,GAAG,cAAcC,EAAE,EAAE,GAAKD,EAAE,QAAQ,cAAcC,EAAE,OAAO,CACtE,CAOO,SAASC,EACdC,EACAC,EACwB,CACxB,MAAMC,EAAYF,EAAI,UAAY,CAAA,EAC5BG,EAAQF,GAAA,YAAAA,EAAWd,GACzB,GAAIO,EAASS,CAAK,EAAG,CACnB,MAAMC,EAAQ,OAAO,QAAQD,CAAK,EAAE,IAAI,CAAC,CAACE,EAASC,CAAK,IAAM,CAC5D,MAAMC,EAAIb,EAASY,CAAK,EAAIA,EAAQ,CAAA,EACpC,MAAO,CACL,QAAAD,EACA,GAAI,OAAOE,EAAE,IAAO,SAAWA,EAAE,GAAK,GACtC,GAAIb,EAASa,EAAE,OAAO,EAAI,CAAE,QAASA,EAAE,OAAA,EAAY,CAAA,EACnD,GAAI,OAAOA,EAAE,OAAU,SAAW,CAAE,MAAOA,EAAE,KAAA,EAAU,CAAA,EACvD,GAAI,OAAOA,EAAE,cAAiB,SAAW,CAAE,aAAcA,EAAE,cAAiB,CAAA,CAAC,CAEjF,CAAC,EAAE,KAAKX,CAAS,EACXY,EAAMN,EAASd,CAAc,EACnC,MAAO,CAAE,KAAM,aAAc,MAAOgB,EAAM,OAAQ,IAAK,OAAOI,GAAQ,SAAWA,EAAM,KAAM,MAAAJ,EAAO,QAAS,CAAA,CAAC,CAChH,CACA,MAAMK,EAAUP,EAAST,CAAa,EACtC,GAAI,MAAM,QAAQgB,CAAO,EAAG,CAC1B,MAAMC,EAAShB,EAASO,GAAA,YAAAA,EAAWZ,EAAY,EAAKY,EAAUZ,CAAW,EAAgC,CAAA,EACnGsB,EAASjB,EAASO,GAAA,YAAAA,EAAWX,EAAgB,EAAKW,EAAUX,CAAe,EAAgC,CAAA,EAC3GsB,EAASlB,EAASO,GAAA,YAAAA,EAAWV,EAAgB,EAAKU,EAAUV,CAAe,EAAgC,CAAA,EAC3Ga,EAAQ,OAAO,QAAQM,CAAM,EAAE,IAAI,CAAC,CAACL,EAASQ,CAAO,KAAO,CAChE,QAAAR,EACA,GAAI,OAAOM,EAAON,CAAO,GAAM,SAAYM,EAAON,CAAO,EAAe,GACxE,GAAIX,EAASmB,CAAO,EAAI,CAAE,QAAAA,CAAA,EAAY,CAAA,EACtC,GAAI,OAAOD,EAAOP,CAAO,GAAM,SAAW,CAAE,MAAOO,EAAOP,CAAO,GAAgB,CAAA,CAAC,EAChE,EAAE,KAAKT,CAAS,EAC9BkB,EAAOZ,EAASV,CAAU,EAChC,MAAO,CACL,KAAM,QACN,MAAOY,EAAM,OACb,IAAK,MAAM,QAAQU,CAAI,EAAIA,EAAK,OAAS,KACzC,MAAAV,EACA,QAASK,EAAQ,OAAQM,GAAmB,OAAOA,GAAM,QAAQ,CAAA,CAErE,CACA,OAAO,IACT,CAGO,SAASC,EAAiBH,EAAsD,CACrF,GAAI,CAACA,EAAS,MAAO,GACrB,MAAMI,EAAQ,OAAO,QAAQJ,CAAO,EAAE,MAAM,EAAG,CAAC,EAAE,IAAI,CAAC,CAACE,EAAGpB,CAAC,IAAM,CAChE,MAAMuB,EAAO,OAAOvB,GAAM,UAAYA,IAAM,KAAO,KAAK,UAAUA,CAAC,EAAI,OAAOA,CAAC,EAC/E,MAAO,GAAGoB,CAAC,KAAKG,EAAK,OAAS,GAAK,GAAGA,EAAK,MAAM,EAAG,EAAE,CAAC,IAAMA,CAAI,EACnE,CAAC,EACKC,EAAO,OAAO,KAAKN,CAAO,EAAE,OAASI,EAAM,OACjD,OAAOE,EAAO,EAAI,GAAGF,EAAM,KAAK,KAAK,CAAC,OAAOE,CAAI,GAAKF,EAAM,KAAK,KAAK,CACxE,CAGO,MAAMG,EAAiB,kBAExBC,EAAQ,2BACRC,EAAc,OACdC,EAAU,IAEhB,SAASC,EAAYC,EAA+B,CAClD,GAA2BA,GAAU,MAAQA,IAAU,GAAI,OAAO,KAClE,GAAI,OAAOA,GAAU,SAAU,OAAOA,EACtC,GAAI,OAAOA,GAAU,UAAY,OAAOA,GAAU,UAAW,OAAO,OAAOA,CAAK,EAChF,GAAI,CACF,OAAO,KAAK,UAAUA,CAAK,CAC7B,MAAQ,CACN,OAAO,IACT,CACF,CAGA,SAASC,EAAWC,EAAcC,EAAsBC,EAAsC,CAC5F,MAAMC,EAAMH,EAAK,QAAQ,GAAG,EAE5B,IADeG,IAAQ,GAAKH,EAAOA,EAAK,MAAM,EAAGG,CAAG,KACrCR,EACb,GAAI,CACF,OAAOE,EAAYM,IAAQ,GAAKF,EAAOG,EAAQH,EAAMD,EAAK,MAAMG,EAAM,CAAC,CAAC,CAAC,CAC3E,MAAQ,CACN,OAAO,IACT,CAEF,MAAML,EAAQO,EAAgB,KAAKL,CAAI,KAAME,CAAG,EAChD,OAAOJ,IAAUF,EAAU,KAAOE,CACpC,CAQO,SAASQ,EACdC,EACAN,EACAC,EAAwB,CAAA,EACT,CACf,GAAI,OAAOK,GAAa,UAAY,CAACA,EAAS,KAAA,EAAQ,OAAO,KAC7D,IAAIC,EAAW,EACXC,EAAS,EACb,MAAMC,EAAQH,EAAS,QAAQb,EAAO,CAACiB,EAAQC,IAAoB,CACjEH,GAAU,EACV,MAAMX,EAAQC,EAAWa,EAASX,EAAMC,CAAG,EAC3C,OAAIJ,IAAU,KAAaF,GAC3BY,GAAY,EACLV,EACT,CAAC,EAAE,KAAA,EACH,OAAIW,EAAS,GAAKD,IAAa,EAAU,KAClCE,GAAS,IAClB,CAGO,SAASG,EAAwBN,EAAkBN,EAAkCC,EAAwB,CAAA,EAAY,CAC9H,OAAOK,EAAS,QAAQb,EAAO,CAACiB,EAAQC,IAClC,CAACX,GAAQW,EAAQ,MAAM,GAAG,EAAE,CAAC,IAAMjB,EAAoBC,EACpDG,EAAWa,EAASX,GAAS,CAAA,EAAuBC,CAAG,GAAKN,CACpE,CACH,CC9JA,MAAMkB,EAAuB,CAC3B,CAAE,MAAO,EAAgB,MAAO,mBAAA,EAChC,CAAE,MAAO,IAAS,IAAO,MAAO,mBAAA,EAChC,CAAE,MAAO,IAAU,IAAM,MAAO,qBAAA,EAChC,CAAE,MAAO,IAAiB,MAAO,qBAAA,CACnC,EAEA,SAASC,EAAeC,EAA6B,CACnD,GAAIA,GAAe,EAAG,OAAOF,EAAqB,CAAC,EAAE,MACrD,UAAWG,KAAKH,EACd,GAAIE,EAAcC,EAAE,MAAO,OAAOA,EAAE,MAEtC,OAAOH,EAAqBA,EAAqB,OAAS,CAAC,EAAE,KAC/D,CAEO,SAASI,EAAe,CAAE,MAAAC,GAA4B,CAC3D,KAAM,CAACC,EAAWC,CAAY,EAAIC,EAAAA,SAAS,IAAM,IAAI,KAAKH,CAAK,EAAE,QAAA,EAAY,KAAK,KAAK,EAEvFI,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAW,YAAY,IAAM,CACjCH,EAAa,IAAI,KAAKF,CAAK,EAAE,UAAY,KAAK,KAAK,CACrD,EAAG,GAAI,EACP,MAAO,IAAM,cAAcK,CAAQ,CACrC,EAAG,CAACL,CAAK,CAAC,EAEV,MAAMM,EAAUC,EAAAA,QAAQ,IAAM,CAC5B,MAAMC,EAAI,IAAI,KAAKR,CAAK,EACxB,MAAO,CACL,CAAE,MAAO,KAAM,MAAO,OAAO,KAAK,IAAI,EAAGC,CAAS,CAAC,CAAA,EACnD,CAAE,MAAO,QAAS,MAAOO,EAAE,aAAY,EACvC,CAAE,MAAO,QAAS,MAAOC,EAAUD,EAAG,uBAAuB,CAAA,CAAE,CAEnE,EAAG,CAACR,EAAOC,CAAS,CAAC,EAErB,OACES,EAAAA,IAACC,EAAA,CAAY,QAAAL,EACX,SAAAI,MAAC,QAAK,UAAW,qBAAqBd,EAAeK,CAAS,CAAC,GAC5D,SAAAW,EAAgBX,CAAS,EAC5B,EACF,CAEJ"}
@@ -1,2 +0,0 @@
1
- import{j as e,a as P}from"./vendor-query-DvWWuNIB.js";import{X as Q,bF as W,bG as X,d as H,e as Y,ar as Z,b as J,t as B,C as K,U as tt}from"./vendor-icons-CeVtUKyP.js";import{b9 as et,ba as st,a8 as at,bb as rt,a9 as nt,bc as T,ai as A}from"./index-CeCtqujG.js";import{s as it,f as ot,i as lt}from"./validate-BIRn4a6d.js";import{D as ct}from"./DataTable-FjFhx0SE.js";import{m as dt}from"./escalation-columns-cwZE6xyo.js";import{U as xt}from"./UserName-D6zGIK2i.js";import{L as E}from"./vendor-react-_9U4mKFr.js";const k="created_at";function _(t){return t.replace(/^metadata\./,"")}function Lt({orderBy:t,onChange:s}){const i=t==null?void 0:t[0],r=(i==null?void 0:i.field)??k,o=(i==null?void 0:i.direction)??"desc",n=r===k,c=d=>s([{...i??{},field:r,direction:d}]);return e.jsxs("div",{className:"flex items-center gap-1.5",children:[!n&&e.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full border border-accent/25 bg-accent/8 px-2 py-0.5 text-2xs font-medium text-accent/90",children:[e.jsx("span",{className:"text-text-quaternary",children:"sort"}),e.jsx("span",{className:"font-mono max-w-[120px] truncate",title:r,children:_(r)}),e.jsx("button",{onClick:()=>s(void 0),className:"ml-0.5 -mr-0.5 flex items-center text-text-quaternary hover:text-status-error transition-colors","aria-label":"Reset sort to created date",children:e.jsx(Q,{className:"w-2.5 h-2.5"})})]}),e.jsxs("div",{className:"flex items-center rounded overflow-hidden border border-surface-border",role:"radiogroup","aria-label":"Sort direction",children:[e.jsx("button",{type:"button",role:"radio","aria-checked":o==="desc",onClick:()=>c("desc"),className:`px-1.5 py-1 transition-colors ${o==="desc"?"bg-accent text-text-inverse":"icon-link hover:bg-surface-hover"}`,title:n?"Newest first":`${_(r)} descending`,children:e.jsx(W,{className:"w-3.5 h-3.5"})}),e.jsx("button",{type:"button",role:"radio","aria-checked":o==="asc",onClick:()=>c("asc"),className:`px-1.5 py-1 border-l border-surface-border transition-colors ${o==="asc"?"bg-accent text-text-inverse":"icon-link hover:bg-surface-hover"}`,title:n?"Oldest first":`${_(r)} ascending`,children:e.jsx(X,{className:"w-3.5 h-3.5"})})]})]})}function ut(t){if(!t)return null;const{"x-lt-related":s,"x-lt-row-detail":i,...r}=t,o=Array.isArray(r["x-lt-columns"])?r["x-lt-columns"].filter(n=>!(n!=null&&n.related)):r["x-lt-columns"];return{...r,"x-lt-columns":o}}function mt(t){try{return ot(t).groupKey??void 0}catch{return}}function Tt(t,{limit:s,offset:i,staleTime:r,enabled:o=!0}){var j,a,u,m,v;const{available:n,claimed:c,apiStatus:d}=et(t.statusFilter),p=st(t),l=at(p??"",void 0,o&&!!p),x=((j=l.data)==null?void 0:j.list_schema)??null,f=!p||l.isFetched,b=t.view==="table"||t.view==="timeline"?void 0:mt(x),y={role:t.role,type:t.type,subtype:t.subtype,priority:t.priority,limit:s,offset:i,sort_by:"created_at",order:"desc",search:t.search,...t.facets,include:it(ut(x))?"envelope":void 0,...b?{groupBy:b}:{},...r!==void 0?{staleTime:r}:{}},C=rt({...y,enabled:o&&n&&f}),$=nt({status:d,claimed:c||void 0,...y,enabled:o&&!n&&f}),h=n?C:$,w=!!p&&!!x&&!!x["x-lt-layout"]&&x["x-lt-layout"]!=="table";return{escalations:((a=h.data)==null?void 0:a.escalations)??[],total:((u=h.data)==null?void 0:u.total)??0,groups:b?((m=h.data)==null?void 0:m.groups)??null:null,listSchema:x,listSchemaVersion:((v=l.data)==null?void 0:v.version)??null,singleRole:p,hasRichView:w,isLoading:h.isLoading,isFetching:h.isFetching,error:h.error,refetch:()=>{h.refetch()}}}function pt(t){return t===T.COMPACT?{fold:"never",density:"compact"}:t===T.CARDS?{fold:"always",density:"default"}:{fold:"auto",density:"default"}}function At({escalations:t,highlightKeys:s,onRowClick:i,isLoading:r,emptyMessage:o="No escalations",layout:n}){const c=P.useMemo(()=>dt({highlightKeys:s}),[s]);return e.jsx(ct,{columns:c,data:t,layout:"fixed",...pt(n),inline:!0,keyFn:d=>d.id,onRowClick:i,isLoading:r,emptyMessage:o})}const G={pending:"--lt-status-queued-graphic",claimed:"--lt-status-claimed-graphic",resolved:"--lt-status-success-graphic",cancelled:"--lt-text-quaternary",expired:"--lt-text-tertiary"},R="--lt-text-quaternary";function ht(t){return G[t]??R}const N=Object.fromEntries(Object.entries(G).map(([t,s])=>[t,`rgb(var(${s}))`])),D=40,ft=64,bt=24,F=3;function V(t){return t<6e4?`${Math.round(t/1e3)}s`:t<36e5?`${Math.round(t/6e4)}m`:t<864e5?`${(t/36e5).toFixed(1)}h`:`${(t/864e5).toFixed(1)}d`}function O(t){const s=Date.now()-t;return s<6e4?"just now":s<36e5?`${Math.round(s/6e4)}m ago`:s<864e5?`${Math.round(s/36e5)}h ago`:`${Math.round(s/864e5)}d ago`}function q(t){return t.replace(/-/g," ").replace(/\b\w/g,s=>s.toUpperCase())}function yt(t,s){return t?[...s.filter(r=>r in t),...Object.keys(t).filter(r=>!s.includes(r))].map(r=>[r,t[r]]):[]}function vt({e:t}){const s=t.endMs-t.startMs;if(s<=0)return null;const i=N.pending,r=N.claimed,o=t.status==="cancelled"||t.status==="expired"?N.cancelled:N.resolved;let n=100,c=0,d=0;return t.claimedMs!==null?(n=Math.max(0,Math.min(100,(t.claimedMs-t.startMs)/s*100)),t.isOpen?c=100-n:(c=Math.max(0,Math.min(100-n,(t.endMs-t.claimedMs)/s*100)),d=Math.max(0,100-n-c))):t.isOpen||(d=100,n=0),e.jsxs("div",{className:"mt-2 h-0.5 rounded-full overflow-hidden flex bg-surface-sunken",children:[n>0&&e.jsx("div",{style:{width:`${n}%`,backgroundColor:i,opacity:.6}}),c>0&&e.jsx("div",{style:{width:`${c}%`,backgroundColor:r,opacity:.6}}),d>0&&e.jsx("div",{style:{width:`${d}%`,backgroundColor:o,opacity:.6}})]})}function jt({gapMs:t,heightPx:s}){return e.jsx("div",{className:"relative flex items-center justify-center",style:{height:s},children:t>=6e4&&e.jsx("span",{className:"text-2xs text-text-quaternary font-mono bg-surface px-2 relative z-10",children:V(t)})})}function U({e:t,highlightKeys:s,onRowClick:i}){const[r,o]=P.useState(!1),n=N[t.displayStatus]??`rgb(var(${R}))`,c=yt(t.metadata,s),d=r?c:c.slice(0,F),p=c.length-F;return e.jsxs("div",{className:"cursor-pointer max-w-[460px] min-w-[260px] w-full bg-surface-raised rounded-lg shadow-sm border border-surface-border/60 px-3.5 pt-2.5 pb-2 hover:shadow-md hover:border-surface-border transition-all duration-150",style:{borderTopWidth:"3px",borderTopColor:n},onClick:()=>i==null?void 0:i(t),children:[e.jsxs("div",{className:"flex items-baseline gap-2 mb-1.5",children:[e.jsx("span",{className:"text-2xs font-bold uppercase tracking-widest text-text-quaternary shrink-0",children:q(t.role)}),e.jsxs("span",{className:"text-xs font-semibold text-text-primary truncate",title:t.type,children:[t.type,t.subtype&&t.subtype!==t.type&&t.subtype!==""&&e.jsxs("span",{className:"font-normal text-text-tertiary",children:[" · ",t.subtype]})]})]}),d.length>0&&e.jsxs("div",{className:"border-t border-surface-border/40 pt-1 space-y-px",children:[d.map(([l,x])=>{const f=String(x),b=s.includes(l);return e.jsxs("div",{className:"group/row flex items-center gap-1.5 -mx-1 px-1 py-[2px] rounded",children:[e.jsx("span",{className:`shrink-0 w-[60px] text-2xs font-mono uppercase tracking-wide truncate ${b?"text-accent":"text-text-quaternary"}`,title:l,children:l}),e.jsx("span",{className:`flex-1 min-w-0 text-2xs font-medium truncate ${b?"text-text-primary":"text-text-tertiary"}`,title:f,children:f}),e.jsxs("span",{className:"flex items-center gap-px shrink-0 opacity-0 group-hover/row:opacity-100 transition-opacity",children:[e.jsx(E,{to:A(l,x,t.role),className:"p-0.5 rounded text-text-quaternary hover:text-accent transition-colors",title:`Filter ${q(t.role)}: ${l} = ${f}`,onClick:y=>y.stopPropagation(),children:e.jsx(Z,{className:"w-2.5 h-2.5"})}),e.jsx(E,{to:A(l,x),className:"p-0.5 rounded text-text-quaternary hover:text-accent transition-colors",title:`Search all: ${l} = ${f}`,onClick:y=>y.stopPropagation(),children:e.jsx(J,{className:"w-2.5 h-2.5"})})]})]},l)}),p>0&&e.jsx("button",{className:"flex items-center gap-0.5 text-2xs text-text-quaternary hover:text-accent transition-colors mt-0.5 -mx-1 px-1 py-px",onClick:l=>{l.stopPropagation(),o(x=>!x)},children:r?e.jsxs(e.Fragment,{children:[e.jsx(B,{className:"w-2.5 h-2.5"})," less"]}):e.jsxs(e.Fragment,{children:[e.jsx(K,{className:"w-2.5 h-2.5"})," ",p," more"]})})]}),e.jsx(vt,{e:t}),t.assigned_to&&e.jsxs("div",{className:"mt-1 flex items-center justify-end gap-1 text-2xs text-text-tertiary",children:[e.jsx(tt,{className:"w-3 h-3 shrink-0",strokeWidth:1.5}),e.jsx(xt,{userId:t.assigned_to,className:"truncate max-w-[70%]"})]})]})}function Et({escalations:t,highlightKeys:s=[],onRowClick:i,total:r,page:o,totalPages:n,onPageChange:c}){var w,j;const d=Date.now(),l=t.map(a=>{const u=new Date(a.created_at).getTime(),m=a.resolved_at?new Date(a.resolved_at).getTime():null,v=a.claimed_at?new Date(a.claimed_at).getTime():null,M=!m&&a.status!=="cancelled"&&a.status!=="expired",S=m??(M?d:u+3e4),g=a.status==="pending"&&lt(a)?"claimed":a.status;return{...a,startMs:u,claimedMs:v,endMs:S,isOpen:M,displayStatus:g}});if(l.length===0)return e.jsx("p",{className:"mt-12 text-center text-sm text-text-tertiary",children:"No escalations matched."});const x=l.length,b=Math.max(Math.abs((((w=l[x-1])==null?void 0:w.startMs)??0)-(((j=l[0])==null?void 0:j.startMs)??0)),1)/Math.max(x-1,1),y=ft/Math.max(b,1),$=new Set(l.map(a=>new Date(a.startMs).toDateString())).size>1;function h(a){const u=new Date(a),m=u.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return $?u.toLocaleDateString([],{month:"short",day:"numeric"})+" "+m:m}return e.jsxs("div",{className:"mt-4 pb-24",children:[e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute left-1/2 -translate-x-px inset-y-0 w-px bg-surface-border/80"}),l.map((a,u)=>{const m=l[u-1],v=m?Math.abs(a.startMs-m.startMs):null,M=v!==null?Math.max(bt,Math.round(v*y)):0,S=u%2===0,g=ht(a.displayStatus),z=`rgb(var(${g}))`,I=a.endMs-a.startMs,L=a.isOpen?O(a.startMs):`${O(a.startMs)} · ${V(I)}`;return e.jsxs("div",{children:[u>0&&e.jsx(jt,{gapMs:v,heightPx:M}),e.jsxs("div",{className:"flex items-center",children:[e.jsx("div",{className:"flex-1 flex justify-end items-center",children:S?e.jsxs("div",{className:"flex items-center",children:[e.jsx(U,{e:a,highlightKeys:s,onRowClick:i}),e.jsx("div",{className:"flex-shrink-0 h-px bg-surface-border/70",style:{width:D}})]}):e.jsx("span",{className:"text-2xs text-text-quaternary font-mono tabular-nums pr-3",children:L})}),e.jsx("div",{className:"relative z-10 flex-shrink-0 w-3.5 h-3.5 rounded-full border-2 border-surface cursor-pointer transition-all duration-150 hover:scale-[1.5]",style:{backgroundColor:z,boxShadow:`0 0 0 3px rgb(var(${g}) / 0.16), 0 1px 3px rgb(var(${g}) / 0.19)`},onClick:()=>i==null?void 0:i(a)}),e.jsx("div",{className:"flex-1 flex justify-start items-center",children:S?e.jsx("span",{className:"text-2xs text-text-quaternary font-mono tabular-nums pl-3",children:L}):e.jsxs("div",{className:"flex items-center",children:[e.jsx("div",{className:"flex-shrink-0 h-px bg-surface-border/70",style:{width:D}}),e.jsx(U,{e:a,highlightKeys:s,onRowClick:i})]})})]}),e.jsx("div",{className:"flex justify-center relative z-10 mt-0.5",children:e.jsx("span",{className:"text-2xs text-text-quaternary font-mono tabular-nums bg-surface px-1.5",children:h(a.startMs)})})]},a.id)})]}),n>1&&e.jsxs("div",{className:"sticky bottom-0 z-20 bg-surface/95 backdrop-blur-sm border-t border-surface-border -mx-page-x px-page-x pt-2 pb-4 flex items-center justify-between mt-10",children:[e.jsxs("span",{className:"text-2xs text-text-tertiary",children:["Page ",e.jsx("span",{className:"font-medium text-text-secondary",children:o})," ","of ",e.jsx("span",{className:"font-medium text-text-secondary",children:n})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{onClick:()=>c(o-1),disabled:o<=1,className:"p-1.5 rounded hover:bg-surface-hover disabled:opacity-30 text-text-tertiary hover:text-text-primary transition-colors disabled:cursor-not-allowed",children:e.jsx(H,{className:"w-4 h-4"})}),e.jsx("button",{onClick:()=>c(o+1),disabled:o>=n,className:"p-1.5 rounded hover:bg-surface-hover disabled:opacity-30 text-text-tertiary hover:text-text-primary transition-colors disabled:cursor-not-allowed",children:e.jsx(Y,{className:"w-4 h-4"})})]})]})]})}export{Lt as E,Et as a,At as b,pt as t,Tt as u};
2
- //# sourceMappingURL=EscalationTimeline-d3nvshOk.js.map
@@ -1,2 +0,0 @@
1
- import{j as e,a as m}from"./vendor-query-DvWWuNIB.js";import{b as V,c as $}from"./pipelines-Cu3PARum.js";import{P as n,g as y,D as B,h as F,i as J,c as U,j as H,k as O,J as S,N as W}from"./index-CeCtqujG.js";import{P as k}from"./PageHeader-CMd3f4bz.js";import{S as Y}from"./SegmentedTabs-BpJh4Hwn.js";import{u as z,E as K}from"./EventTable-D1-ITVXS.js";import{L as Q}from"./ListToolbar-gA5rFzkz.js";import{S as X}from"./SwimlaneTimeline-C50PsFoV.js";import{S as q}from"./StatusBadge-DHVwxre2.js";import{C as T}from"./CopyableId-Bn02zYxt.js";import{Q as I,V as G,Y as Z,_ as ee,$ as se,C as te}from"./vendor-icons-CeVtUKyP.js";import{e as ae,f as le}from"./vendor-react-_9U4mKFr.js";import"./FilterBar-ABC9ctin.js";import"./StreamMessageDetail-wX3i0aqs.js";const ne={running:"in_progress",completed:"completed",failed:"failed"};function ie({execution:s,namespace:c,traceUrl:a,headerActions:l,open:r}){const{summary:t}=s,o=[{id:"details",icon:I,label:"Details",content:e.jsxs("dl",{className:"space-y-3.5",children:[e.jsx(n,{label:"Status",children:e.jsx(q,{status:ne[s.status]??s.status})}),e.jsx(n,{label:"Server",children:e.jsx("span",{className:"font-mono",children:c||"—"})}),e.jsx(n,{label:"Tool",children:e.jsx("span",{className:"font-mono",children:s.workflow_type||"—"})}),e.jsx(n,{label:"Workflow ID",children:e.jsx(T,{bare:!0,value:s.workflow_id})}),e.jsx(n,{label:"Started",children:s.start_time?e.jsx(y,{date:s.start_time,format:"datetime"}):e.jsx("span",{className:"text-text-tertiary",children:"--"})}),e.jsx(n,{label:"Completed",children:s.close_time?e.jsx(y,{date:s.close_time,format:"datetime"}):e.jsx("span",{className:"text-text-tertiary",children:"--"})}),e.jsx(n,{label:"Duration",children:e.jsx(B,{ms:s.duration_ms,className:"font-mono"})}),s.trace_id&&e.jsx(n,{label:"Trace",children:e.jsx(T,{bare:!0,value:s.trace_id,href:a?a.replace("{traceId}",s.trace_id):void 0,external:!0})}),e.jsx(n,{label:"Tools",children:t.activities.user}),e.jsx(n,{label:"System",children:t.activities.system}),t.child_workflows.total>0&&e.jsx(n,{label:"Children",children:t.child_workflows.total}),t.timers>0&&e.jsx(n,{label:"Timers",children:t.timers}),t.signals>0&&e.jsx(n,{label:"Signals",children:t.signals})]})}];return e.jsx(F,{open:r,width:384,className:"h-full",children:e.jsx("div",{className:"h-full pl-6",children:e.jsx(J,{views:o,activeId:"details",onViewChange:()=>{},headerActions:l,stickyClassName:"h-full min-h-0",labelInline:!0})})})}const re=["details","timeline","events"],_="lt:mcp-run-detail:tab";function oe({isRunning:s,onTerminate:c}){const[a,l]=m.useState(!1),r=m.useRef(null);return m.useEffect(()=>{if(!a)return;const t=o=>{r.current&&!r.current.contains(o.target)&&l(!1)};return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[a]),s?e.jsxs("div",{className:"relative",ref:r,children:[e.jsxs("button",{onClick:()=>l(!a),className:"flex items-center gap-0.5 pl-2 pr-1 py-1 rounded-md text-2xs font-medium text-accent hover:text-accent-hover hover:bg-surface-hover transition-colors",title:"Actions",children:["Actions",e.jsx(te,{className:`w-3 h-3 transition-transform ${a?"rotate-180":""}`})]}),a&&e.jsx("div",{className:"absolute right-0 mt-1 w-44 bg-surface-raised border border-surface-border rounded-md shadow-lg z-[100]",children:e.jsx("button",{onClick:()=>{c(),l(!1)},className:"block w-full text-left px-4 py-2 text-xs text-status-error hover:bg-surface-hover",children:"Terminate"})})]}):null}function ye(){var g,w;const{jobId:s}=ae(),[c]=le(),a=c.get("namespace")||"",{data:l,isLoading:r,error:t,refetch:o,isFetching:E}=V(s,a),x=$(),{data:p}=U(),{isCollapsed:P,toggle:C}=z("mcp-run-detail"),h=!P("side-panel"),A=((g=p==null?void 0:p.telemetry)==null?void 0:g.traceUrl)??null,[d,D]=m.useState(()=>{try{const i=localStorage.getItem(_);return i&&re.includes(i)?i:"details"}catch{return"details"}}),R=i=>{D(i);try{localStorage.setItem(_,i)}catch{}},b=H("DETAIL"),L=m.useCallback(i=>{!s||i.workflowId!==s||b([["mcpRunExecution",s]])},[s,b]);if(O(`${W}.system.>`,L),r)return e.jsxs("div",{className:"animate-pulse space-y-4",children:[e.jsx("div",{className:"h-8 bg-surface-sunken rounded w-64"}),e.jsx("div",{className:"h-60 bg-surface-sunken rounded"})]});if(t||!l)return e.jsxs("div",{children:[e.jsx(k,{title:"Pipeline Execution"}),e.jsxs("div",{className:"mt-4 text-center py-8",children:[e.jsx("p",{className:"text-sm text-text-primary mb-1",children:(w=t==null?void 0:t.message)!=null&&w.includes("expired")?"Execution data is no longer available":"Unable to load execution"}),e.jsx("p",{className:"text-xs text-text-tertiary",children:(t==null?void 0:t.message)??"The run could not be resolved."})]})]});const{events:f}=l,j=f.find(i=>{var N;return i.category==="activity"&&((N=i.attributes.kind)==null?void 0:N.includes("completed"))}),M=(j==null?void 0:j.attributes.result)??null,u=l.result,v=(u==null?void 0:u.data)??u??null;return e.jsxs("div",{className:"flex-1 min-h-0 min-w-0 flex items-stretch -mt-8 -mr-page-x -mb-16",children:[e.jsxs("div",{className:"flex-1 min-w-0 flex flex-col min-h-0",children:[e.jsxs("div",{className:"shrink-0 pt-8 pr-page-x",children:[e.jsx(k,{title:"Pipeline Execution",actions:e.jsx("button",{onClick:()=>C("side-panel"),className:"text-accent/60 hover:text-accent transition-colors",title:h?"Hide side panel":"Show side panel",children:h?e.jsx(G,{className:"w-5 h-5",strokeWidth:1.5}):e.jsx(Z,{className:"w-5 h-5",strokeWidth:1.5})})}),x.error&&e.jsxs("p",{className:"text-xs text-status-error py-2",children:["Interrupt failed: ",x.error.message]}),e.jsx("div",{className:"mt-2",children:e.jsx(Y,{"aria-label":"Execution section",active:d,onChange:R,tabs:[{key:"details",label:"Details",icon:e.jsx(I,{className:"w-3.5 h-3.5"})},{key:"timeline",label:"Execution Timeline",icon:e.jsx(ee,{className:"w-3.5 h-3.5"})},{key:"events",label:"Events",icon:e.jsx(se,{className:"w-3.5 h-3.5"})}]})})]}),e.jsxs("div",{className:"flex-1 min-h-0 overflow-y-auto pr-page-x pt-6 pb-16 animate-page-in",children:[d==="details"&&e.jsx("div",{className:"@container",children:e.jsxs("div",{className:"grid grid-cols-1 @form-cols:grid-cols-2 gap-4",children:[e.jsx(S,{data:M??{},label:"Input"}),v!==null&&e.jsx(S,{data:v,label:"Result"})]})}),d==="timeline"&&e.jsx(X,{events:f,outline:!0,jid:s,appId:a||"durable"}),d==="events"&&e.jsx(K,{events:f,jid:s,appId:a||"durable"})]},d)]}),e.jsx(ie,{execution:l,namespace:a,traceUrl:A,headerActions:e.jsxs(e.Fragment,{children:[e.jsx(Q,{onRefresh:()=>o(),isFetching:E,apiPath:`/pipelines/${s}/execution?app_id=${a}`}),e.jsx(oe,{isRunning:l.status==="running",onTerminate:()=>{confirm("Interrupt this pipeline execution? This cannot be undone.")&&x.mutate({jobId:l.workflow_id,topic:l.workflow_type,appId:a},{onSuccess:()=>o()})}})]}),open:h})]})}export{ye as McpRunDetailPage};
2
- //# sourceMappingURL=McpRunDetailPage-bMXNO-6V.js.map
@@ -1,2 +0,0 @@
1
- import{a as f,j as e}from"./vendor-query-DvWWuNIB.js";import{$ as Z,z as H,a7 as J,Y as X,_ as ee,Z as se,a0 as te,I as ae,K as oe,L as ie,a8 as re,a9 as ne}from"./index-CeCtqujG.js";import{u as le}from"./useFilterParams-DBRw1Hcv.js";import{u as ce}from"./useDebouncedValue-6t0jx1RB.js";import{b as me}from"./api-path-u2Jf9QXS.js";import{i as pe}from"./task-queues-7-sHKPsN.js";import{D as ue}from"./DataTable-FjFhx0SE.js";import{S as de}from"./StickyPagination-CqbjVY6T.js";import{R as he,a as ge}from"./RowActions-Bdd7z4eB.js";import{E as fe,a as xe,T as be,b as we}from"./escalation-columns-cwZE6xyo.js";import{E as ve}from"./EscalationTitleSelect-DWQieOM9.js";import{L as ye}from"./ListToolbar-gA5rFzkz.js";import{x as Pe,ak as Se,al as je,P as Ce,ao as Re}from"./vendor-icons-CeVtUKyP.js";import{u as ke,a as Ee,f as Le}from"./vendor-react-_9U4mKFr.js";import"./EmptyState-DgC_6njU.js";import"./useContainerWidth-DSLp1gEm.js";import"./validate-BIRn4a6d.js";import"./StatusBadge-DHVwxre2.js";import"./FormattedValue-k27T4bG7.js";import"./UserName-D6zGIK2i.js";import"./CountdownTimer-LG03dVgR.js";import"./EntityTimelinePanel-CDFFfX9d.js";import"./FilterBar-ABC9ctin.js";import"./PriorityBadge-r33mpDju.js";import"./RolePill-Di2CAHuD.js";import"./WorkflowPill-Dg7BDTyM.js";function ts(){var T,V;const z=ke(),{user:i,isSuperAdmin:F,hasRoleType:_}=Z(),{filters:o,setFilter:v,pagination:t,sort:x,setSort:A}=le({filters:{role:"",type:"",priority:"",search:""}});H({role:o.role||null,verbs:["claimed","resolved","updated"]});const O=ce(o.search),M=J(),{data:b}=X(),{data:w}=ee(),{data:n}=se(),y=F||_("admin"),P=f.useMemo(()=>new Set(((i==null?void 0:i.roles)??[]).map(s=>s.role)),[i]),I=f.useMemo(()=>{const s=(n==null?void 0:n.roles)??[];return(y?s:s.filter(a=>P.has(a.role)&&!pe(a.role))).map(a=>({value:a.role,label:te(a)})).sort((a,W)=>a.label.localeCompare(W.label))},[n,y,P]),l=Ee(),{data:c}=ae(),S=oe(),U=f.useCallback(()=>{var a;const s=window.prompt("Pin label:");if(!(s!=null&&s.trim()))return;const g=((a=c==null?void 0:c.preferences)==null?void 0:a.pinnedViews)??[];S.mutate({pinnedViews:[...g,{id:ie(),label:s.trim(),url:l.pathname+l.search,badge:!0}]})},[l.pathname,l.search,c,S]),[q,j]=Le(),C=q.get("view"),$=f.useCallback(s=>{j(g=>{const a=new URLSearchParams(g);return s?a.set("view",s):a.delete("view"),a},{replace:!0})},[j]),m=o.role||null,R=re(m??"",void 0,!!m),p=((T=R.data)==null?void 0:T.list_schema)??null,k=!!m&&!!p&&!!p["x-lt-layout"]&&p["x-lt-layout"]!=="table",u=k&&(C?C==="rich":!0),E={assigned_to:i==null?void 0:i.userId,status:"pending",role:o.role||void 0,type:o.type||void 0,priority:o.priority?parseInt(o.priority):void 0,search:O||void 0,sort_by:x.sort_by||"created_at",order:x.order||"desc"},{data:r,isLoading:B,error:d,refetch:D,isFetching:G}=ne({...E,limit:t.pageSize,offset:t.offset}),L=(r==null?void 0:r.escalations)??[],h=(r==null?void 0:r.total)??0,Q=me("/escalations",{...E,limit:t.pageSize,offset:t.offset}),Y={key:"actions",label:"",render:s=>e.jsx(he,{children:e.jsx(ge,{icon:Re,title:"Release escalation",onClick:()=>M.mutate(s.id),alwaysVisible:!0,colorClass:"text-status-warning/40 hover:text-status-warning"})}),className:"w-16 text-right"},K=[be,...we,Y],N=s=>z(`/escalations/detail/${s.id}`,{state:{from:"/escalations/queue"}});return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-10 min-w-0",children:[e.jsx(ve,{role:o.role,options:I,onChange:s=>v("role",s),emptyLabel:"My Escalations"}),e.jsx("button",{onClick:()=>{window.location.hash="#docs:dashboard.md:all-escalations"},className:"text-text-quaternary hover:text-accent transition-colors mt-1 shrink-0",title:"Open docs for this page",children:e.jsx(Pe,{className:"w-4 h-4",strokeWidth:1.5})})]}),e.jsx(fe,{filters:o,setFilter:v,roles:(b==null?void 0:b.roles)??[],types:(w==null?void 0:w.types)??[],actions:e.jsxs(e.Fragment,{children:[e.jsx(ye,{onRefresh:()=>D(),isFetching:G,apiPath:Q}),k&&e.jsx("button",{onClick:()=>$(u?"table":"rich"),className:"ml-2 inline-flex h-7 w-7 items-center justify-center rounded icon-link hover:bg-surface-hover",title:u?"Table view":"Rich view",children:u?e.jsx(Se,{className:"w-4 h-4"}):e.jsx(je,{className:"w-4 h-4"})}),e.jsx("button",{onClick:U,className:"ml-2 inline-flex h-7 w-7 items-center justify-center rounded icon-link hover:bg-surface-hover",title:"Pin this view — save the current filters to your Pinned section","data-testid":"pin-current-view",children:e.jsx(Ce,{className:"w-4 h-4"})})]})}),d&&e.jsx("div",{className:"mb-4 px-4 py-3 rounded-md bg-status-error/10 border border-status-error/20 text-xs text-status-error",children:d.message==="Session expired"?"Your session has expired. Please log in again.":`Failed to load escalations: ${d.message}`}),u?e.jsx(xe,{role:m,listSchema:p,listSchemaVersion:((V=R.data)==null?void 0:V.version)??null,activeEscalations:L,onRowClick:N,forceViewAction:!0,total:h,page:t.page,totalPages:t.totalPages(h),pageSize:t.pageSize,onPageChange:t.setPage,onPageSizeChange:t.setPageSize}):e.jsxs(e.Fragment,{children:[e.jsx(ue,{columns:K,data:L,layout:"fixed",keyFn:s=>s.id,onRowClick:N,isLoading:B,emptyMessage:d?"Unable to load data":"No assigned escalations",sort:x,onSort:A}),e.jsx(de,{page:t.page,totalPages:t.totalPages(h),onPageChange:t.setPage,total:h,pageSize:t.pageSize,onPageSizeChange:t.setPageSize})]})]})}export{ts as OperatorDashboard};
2
- //# sourceMappingURL=OperatorDashboard-DctmZw10.js.map
@@ -1,2 +0,0 @@
1
- import{a as f,j as e}from"./vendor-query-DvWWuNIB.js";import{aY as w,ba as R,bk as N,bl as I,a3 as F,bm as v,a6 as j,Z as _,w as O,bn as A,aW as k,j as M,b0 as $,a0 as V}from"./index-CeCtqujG.js";import{u as W}from"./useContainerWidth-DSLp1gEm.js";import{u as T,E as q,a as z,b as B}from"./EscalationTimeline-d3nvshOk.js";import{a as K}from"./escalation-columns-cwZE6xyo.js";import{P as Y,ak as G,al as H,am as U,aA as D,L as S}from"./vendor-icons-CeVtUKyP.js";import{u as Q,L as y,e as X}from"./vendor-react-_9U4mKFr.js";import"./validate-BIRn4a6d.js";import"./StatusBadge-DHVwxre2.js";import"./DataTable-FjFhx0SE.js";import"./EmptyState-DgC_6njU.js";import"./UserName-D6zGIK2i.js";import"./FormattedValue-k27T4bG7.js";import"./StickyPagination-CqbjVY6T.js";import"./CountdownTimer-LG03dVgR.js";import"./EntityTimelinePanel-CDFFfX9d.js";import"./FilterBar-ABC9ctin.js";import"./PriorityBadge-r33mpDju.js";import"./RolePill-Di2CAHuD.js";import"./WorkflowPill-Dg7BDTyM.js";const E="system.escalation.",L=[["escalations"]];function Z(t,i){const l=new Set;let c=!1;for(const{url:d}of t){const s=w(i(d));if(!s)continue;const a=R(s);a?l.add(a):c=!0}if(c||l.size===0)return{patterns:c?[N({})]:[],keysFor:()=>L};const r=new Map([...l].map(d=>[I(d),d]));return{patterns:[...l].sort().map(d=>N({role:d})),keysFor(d){const s=d.startsWith(E)?d.slice(E.length).split(".")[0]:"",a=r.get(s);return a?[["escalations",{role:a}],["escalations","available",{role:a}],["escalations",{roles:[a]}],["escalations","available",{roles:[a]}],["escalations","related",a],["escalations","related-rows",a]]:L}}}const J=25,ee=15e3,te={statusFilter:"",facets:{},view:null},se={"--lt-sticky-top":"0px"};function ae({pin:t,url:i,from:l}){const c=Q(),r=f.useMemo(()=>w(i),[i]),[p,d]=f.useState(null),[s,a]=f.useState(void 0),m=s??(r==null?void 0:r.facets.orderBy),o=f.useMemo(()=>r?m===r.facets.orderBy?r:{...r,facets:{...r.facets,orderBy:m}}:null,[r,m]),n=T(o??te,{limit:J,offset:0,staleTime:ee,enabled:o!==null}),h=o?F(p??o.view,n.hasRichView):null,b=f.useMemo(()=>Object.keys((o==null?void 0:o.facets.facets)??{}),[o]),g=x=>c(`/escalations/detail/${x.id}`,{state:{from:l}}),u=Math.max(0,n.total-n.escalations.length);return e.jsxs("section",{className:"min-h-0 flex flex-col overflow-hidden border border-surface-border bg-surface-sunken rounded-[var(--lt-radius-section)]",style:se,"data-testid":"portal-panel",children:[e.jsxs("header",{className:"flex items-center justify-between gap-2 px-4 py-2.5 shrink-0 border-b border-surface-border bg-surface-hover",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(Y,{className:"w-3.5 h-3.5 shrink-0 text-accent/60",strokeWidth:1.5}),e.jsx("h2",{className:"section-h2 truncate",title:t.label,children:t.label}),o&&n.total>0&&e.jsx("span",{className:"text-2xs tabular-nums text-text-tertiary","data-testid":"portal-panel-count",children:v(n.total)})]}),e.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[o&&h!==j.TIMELINE&&n.hasRichView&&e.jsx("div",{role:"radiogroup","aria-label":"Panel view",className:"flex items-center rounded overflow-hidden border border-surface-border",children:[{key:j.TABLE,title:"Table view",Icon:G},{key:j.RICH,title:"Rich view",Icon:H}].map(({key:x,title:C,Icon:P})=>e.jsx("button",{type:"button",role:"radio","aria-checked":h===x,onClick:()=>d(x),className:`px-1.5 py-1 transition-colors ${h===x?"bg-accent text-text-inverse":"icon-link hover:bg-surface-raised"}`,title:C,children:e.jsx(P,{className:"w-3.5 h-3.5"})},x))}),o&&e.jsx(q,{orderBy:m,onChange:a}),o&&e.jsx("button",{type:"button",onClick:n.refetch,disabled:n.isFetching,className:"inline-flex h-7 w-7 items-center justify-center rounded icon-link hover:bg-surface-hover disabled:opacity-50",title:"Refresh",children:e.jsx(U,{className:`w-3.5 h-3.5 ${n.isFetching?"animate-spin":""}`})}),e.jsx(y,{to:i,className:"inline-flex h-7 w-7 items-center justify-center rounded icon-link hover:bg-surface-hover",title:"Open the full view","data-testid":"portal-panel-open",children:e.jsx(D,{className:"w-3.5 h-3.5"})})]})]}),e.jsxs("div",{className:"flex-1 min-h-0 overflow-y-auto @container px-4 py-3",children:[o?n.error?e.jsxs("p",{className:"py-6 text-center text-xs text-status-error",role:"alert",children:["Failed to load: ",n.error.message]}):h===j.TIMELINE?e.jsx(z,{escalations:n.escalations,highlightKeys:b,onRowClick:g,total:n.total,page:1,totalPages:1,onPageChange:()=>{}}):h===j.RICH?e.jsx(K,{role:n.singleRole,listSchema:n.listSchema,listSchemaVersion:n.listSchemaVersion,activeEscalations:n.escalations,groups:n.groups,onRowClick:g,onOpenGroup:x=>c(x)}):e.jsx(B,{escalations:n.escalations,highlightKeys:b,onRowClick:g,isLoading:n.isLoading,layout:o.layout}):e.jsxs("p",{className:"py-6 text-center text-xs text-text-quaternary",children:[e.jsx(y,{to:i,className:"text-accent hover:underline",children:t.label})," opens as its own page."]}),u>0&&e.jsxs(y,{to:i,className:"block pt-3 pb-1 text-2xs text-accent hover:underline","data-testid":"portal-panel-more",children:[v(u)," more in the full view"]})]})]})}const ne=54;function re(){if(typeof document>"u")return 16;const t=parseFloat(getComputedStyle(document.documentElement).fontSize);return Number.isFinite(t)&&t>0?t:16}function le({rows:t,resolveUrl:i,from:l}){const[c,r]=W(),p=r!==null&&r<ne*re(),d=(s,a)=>e.jsx(ae,{pin:s,url:i(s.url),from:l},a);return p?e.jsx("div",{ref:c,className:"flex-1 min-h-0 overflow-y-auto grid grid-cols-1 gap-5 auto-rows-[minmax(18rem,auto)]","data-testid":"portal-grid","data-stacked":"true",children:t.flatMap((s,a)=>s.map((m,o)=>d(m,`${a}-${o}`)))}):e.jsx("div",{ref:c,className:"flex-1 min-h-0 grid gap-5",style:{gridTemplateRows:`repeat(${t.length}, minmax(0, 1fr))`},"data-testid":"portal-grid",children:t.map((s,a)=>e.jsx("div",{className:"min-h-0 grid gap-5",style:{gridTemplateColumns:`repeat(${s.length}, minmax(0, 1fr))`},"data-testid":"portal-row",children:s.map((m,o)=>d(m,`${a}-${o}`))},a))})}const oe={statusFilter:"",facets:{},view:null},ie=15e3;function ce({count:t,url:i}){const l=f.useMemo(()=>w(i),[i]),c=T(l??oe,{limit:1,offset:0,staleTime:ie,enabled:l!==null}),r=l?c.isLoading&&c.total===0?null:c.total:null;return e.jsxs(y,{to:i,className:"block min-w-0 border border-surface-border bg-surface-sunken rounded-[var(--lt-radius-section)] px-4 py-3 hover:bg-surface-hover transition-colors",title:`Open ${t.label}`,"data-testid":"portal-count",children:[e.jsx("p",{className:"text-2xs uppercase tracking-widest text-text-tertiary truncate",children:t.label}),e.jsx("p",{className:"mt-1 text-3xl font-light leading-none text-text-primary","data-testid":"portal-count-value",children:r===null?e.jsx("span",{className:"text-text-quaternary",children:"—"}):v(r)}),t.blurb&&e.jsx("p",{className:"mt-1.5 text-xs text-text-secondary leading-snug",children:t.blurb})]})}function de({counts:t,resolveUrl:i}){return t.length===0?null:e.jsx("div",{className:"grid gap-4 shrink-0 mb-4",style:{gridTemplateColumns:"repeat(auto-fit, minmax(10rem, 1fr))"},"data-testid":"portal-counts",children:t.map((l,c)=>e.jsx(ce,{count:l,url:i(l.url)},`${l.label}-${c}`))})}function me({text:t}){return e.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center py-10 text-center",children:[e.jsx(S,{className:"w-6 h-6 text-text-quaternary/50 mb-2",strokeWidth:1}),e.jsx("p",{className:"text-xs text-text-quaternary",children:t})]})}function Ie(){const{role:t="",portal:i}=X(),{data:l,isFetched:c}=_(),{resolveUrl:r}=O(),p=l==null?void 0:l.roles.find(u=>u.role===t),d=A(p),s=i?d.find(u=>u.key===i):d[0],a=(s==null?void 0:s.rows)??null,m=(s==null?void 0:s.counts)??[],o=s?k(t,s.key):k(t),n=f.useMemo(()=>Z(a?[...a.flat(),...m]:[],r),[a,m,r]),h=M("LIST");$(n.patterns,u=>{h(n.keysFor(u.type))});const b=a?a.reduce((u,x)=>u+x.length,0):0,g=c?d.length===0?"This role declares no portal yet. Compose one under Admin, Roles, Portal.":s?null:"This role has no portal by that name.":null;return e.jsxs("div",{className:"flex-1 min-h-0 flex flex-col -mt-[calc(2rem-var(--lt-space-page-x))] -mb-[calc(4rem-var(--lt-space-page-x))]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3 shrink-0 text-2xs uppercase tracking-widest text-text-tertiary",children:[e.jsx(S,{className:"w-3 h-3 text-accent/60 shrink-0",strokeWidth:1.5}),e.jsx("h1",{className:"truncate font-semibold",title:t,children:V(p??{role:t})}),s&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-text-quaternary",children:"·"}),e.jsx("span",{className:"truncate","data-testid":"portal-title",children:s.label})]}),b>0&&e.jsxs("span",{className:"text-text-quaternary normal-case tracking-normal",children:[b," ",b===1?"view":"views"]})]}),c?g?e.jsx(me,{text:g}):e.jsxs(e.Fragment,{children:[e.jsx(de,{counts:m,resolveUrl:r}),e.jsx(le,{rows:a,resolveUrl:r,from:o})]}):null]})}export{Ie as PortalPage};
2
- //# sourceMappingURL=PortalPage-Dfc_Q02R.js.map
@@ -1,8 +0,0 @@
1
- import{a as g,j as n}from"./vendor-query-DvWWuNIB.js";import{ai as at,aj as Zt,ab as Qt,aR as Oe,aS as te,aA as xt,aT as Te,Z as Re,aw as _e,aU as Le,aV as Se,m as Fe,p as Me,U as $e,aW as Pe,aX as De,z as We,aY as Ue,aZ as qe,aM as Ge,a_ as Je,a$ as He,b0 as Ve,S as Be,b1 as Xe,b2 as Ye,az as ze,K as Ke,A as Ze,b as Qe,b3 as tn,a as en,b4 as nn,b5 as rn,b6 as sn,af as on,am as an,b7 as ln,b8 as cn,b9 as dn,ba as un,bb as xn,bc as pn,bd as fn,be as mn,a2 as gn,M as bn,bf as yn,bg as hn,k as jn,bh as Nn,bi as vn,a1 as kn,aL as wn,bj as An,bk as En,bl as In,G as Cn,bm as On,bn as Tn,bo as Rn,bp as _n,bq as Ln,br as Sn,q as Fn,a6 as Mn,bs as $n,ax as Pn,bt as Dn,bu as Wn,bv as Un,bw as qn,bx as Gn,aq as Jn,by as Hn,f as Vn,aC as Bn,bz as Xn,bA as Yn,bB as zn,an as ee,_ as Kn,W as Zn,bC as Qn,a5 as ne,X as tr}from"./vendor-icons-CeVtUKyP.js";import{m as re,g as ft,H as er,e as nr,a as B,r as mt,s as rr,b as sr,c as se}from"./validate-BIRn4a6d.js";import{ah as Z,aq as ir,a$ as gt,$ as or,a9 as ar,s as lr,b0 as cr,m as dr,J as ur,b1 as xr,O as pr,b2 as fr,aw as mr,b3 as gr,aZ as br,i as yr,M as ie,az as hr,aA as jr,aB as Nr,b4 as vr}from"./index-CeCtqujG.js";import{L as lt}from"./vendor-react-_9U4mKFr.js";import{S as kr}from"./StatusBadge-DHVwxre2.js";import{E as wr}from"./constants-CeBBTzf5.js";import{V as Ar}from"./WorkflowPill-Dg7BDTyM.js";const oe=g.createContext(null),ji=oe.Provider;function Er(t){const e=g.useContext(oe);return e&&e.field===t?e:null}function ae({notice:t}){return t?t.error?n.jsx("p",{role:"alert",className:"text-2xs text-status-error mt-1 animate-[field-error-in_0.3s_ease-out]","data-testid":"field-scan-notice",children:t.error},t.at):n.jsx("p",{role:"status",className:"text-2xs text-status-success mt-1","data-testid":"field-scan-notice",children:t.message??"Scanned"},t.at):null}const Ir={SCHEMA_VALIDATION:"schema_validation"};function Cr(t){return typeof t=="object"&&t!==null&&t.code===Ir.SCHEMA_VALIDATION&&Array.isArray(t.violations)}function Tt(t,e={}){const r=re(e,t),s={_form_schema:t};for(const[i,o]of Object.entries(t.properties??{})){const a=o.type==="object"?{}:"";s[i]=r[i]??o.default??a}return JSON.stringify(s,null,2)}function G(t,e){const r=e==null?void 0:e.title;if(typeof r=="string"&&r.trim().length>0)return r.trim();const s=t.split(/[_-]+/).filter(Boolean);return s.length<=1?t:s.map(i=>Or(i)?i:i.charAt(0).toUpperCase()+i.slice(1)).join(" ")}function Or(t){return t.length>1&&t===t.toUpperCase()&&/[A-Z]/.test(t)}function le({errors:t,schema:e}){const r=s=>{const i=document.querySelector(`[data-field-key="${s}"]`);i&&(i.scrollIntoView({behavior:"smooth",block:"center"}),i.focus({preventScroll:!0}))};return t.length===0?n.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No errors to display."}):n.jsxs("div",{className:"space-y-1",role:"alert","aria-live":"polite",children:[n.jsxs("p",{className:"text-2xs font-semibold uppercase tracking-wider text-status-error mb-4",children:[t.length," ",t.length===1?"issue":"issues"," to resolve"]}),n.jsx("div",{className:"space-y-1.5",children:t.map(({field:s,message:i})=>{var o;return n.jsxs("button",{onClick:()=>r(s),className:"w-full text-left flex items-start gap-3 px-3 py-2.5 rounded hover:bg-status-error/5 transition-colors group",children:[n.jsx(at,{className:"w-3.5 h-3.5 mt-0.5 shrink-0 text-status-error/60 group-hover:text-status-error transition-colors"}),n.jsxs("div",{children:[n.jsx("p",{className:"text-2xs font-semibold text-text-primary leading-snug",children:G(s,(o=e==null?void 0:e.properties)==null?void 0:o[s])}),n.jsx("p",{className:"text-2xs text-text-tertiary group-hover:text-text-secondary transition-colors leading-snug mt-0.5",children:i})]})]},s)})}),n.jsx("p",{className:"text-2xs text-text-quaternary mt-4 px-3",children:"Click an issue to scroll to and focus the field."})]})}const Tr=/\{\{\s*([^{}]+?)\s*\}\}/g;function st(t){return typeof t=="string"&&/\{\{[^{}]+\}\}/.test(t)}function z(t,e){if(!e)return;const r=t.indexOf("."),s=e[r===-1?t:t.slice(0,r)];if(r===-1)return s;if(!(s===null||typeof s!="object"))return ft(s,t.slice(r+1))}function bt(t,e){let r=!1;const s=t.replace(Tr,(i,o)=>{const a=z(o,e);return typeof a=="string"&&a.trim().length>0?a:typeof a=="number"&&Number.isFinite(a)?String(a):(r=!0,"")});return r?null:s}const Rr="x-lt-scan",_r="x-lt-scan-submit",Rt="x-lt-order",Lr="Expected {{expected}}";function X(t){const e=t==null?void 0:t[Rr];if(!e||typeof e!="object"||Array.isArray(e))return null;const r=e,s=Array.isArray(r.schemes)?r.schemes.filter(o=>Number.isInteger(o)):[];if(s.length===0)return null;const i=Array.isArray(r.expect)?r.expect.filter(o=>typeof o=="string"):void 0;return{schemes:s,value:r.value==="code"?"code":"target",...i!=null&&i.length?{expect:i}:{},expectError:typeof r["expect-error"]=="string"?r["expect-error"]:Lr,multiplicity:r.multiplicity==="count"?"count":"once",...typeof r.prompt=="string"&&r.prompt.trim()?{prompt:r.prompt}:{}}}function Sr(t,e){if(t===e)return!0;const r=/^[0-9]{8,14}$/;return r.test(t)&&r.test(e)&&t.padStart(14,"0")===e.padStart(14,"0")}function ce(t,e){if(!t.expect)return null;const r=[];for(const s of t.expect){const i=z(s,e),o=Array.isArray(i)?i:[i];for(const a of o)typeof a=="string"&&a?r.push(a):typeof a=="number"&&r.push(String(a))}return r}function Fr(t,e){return t.expectError.replace(/\{\{\s*expected\s*\}\}/g,[...new Set(e)].join(", ")||"nothing")}function de(t,e,r){const s=X(e);if(!s)return;const i=ce(s,r);if(i===null)return;const o=Array.isArray(t)?t:t==null||t===""?[]:[t],a=s.multiplicity==="count"?[...i]:[...new Set(i)];for(const l of o){const c=a.findIndex(u=>Sr(String(l),u));if(c===-1)return Fr(s,i);a.splice(c,1)}}function Mr(t,e){const r=X(t);if(r){const i=ce(r,e);if(i!==null)return r.multiplicity==="count"?i.length:new Set(i).size}const s=t==null?void 0:t.maxItems;return typeof s=="number"?s:null}function Ni(t,e,r,s){const i=X(r);if(!i)return{ok:!1,error:"This field takes no scans"};const o=i.value==="code"?e.code:e.target,a=r.type==="array",l=a?[...Array.isArray(t)?t:[],o]:o,c=de(l,r,s);if(c)return{ok:!1,error:c};const u=r.maxItems;return a&&typeof u=="number"&&l.length>u?{ok:!1,error:`At most ${u}`}:{ok:!0,value:l}}function $r(t,e){if(e.type==="array"){const r=e.maxItems;return typeof r!="number"||!Array.isArray(t)||t.length<r}return t==null||t===""}function vi(t,e,r,s){const i=(t==null?void 0:t.properties)??{},o=Array.isArray(t==null?void 0:t[Rt])?t[Rt]:[],l=[...o.filter(c=>c in i),...Object.keys(i).filter(c=>!o.includes(c))].filter(c=>{var u;return(u=X(i[c]))==null?void 0:u.schemes.includes(r)});return l.length===0?null:s&&l.includes(s)?s:l.find(c=>$r(e[c],i[c]))??l[0]}function ki(t){return(t==null?void 0:t[_r])===!0}function wi(t,e){const r=(t==null?void 0:t.properties)??{},s=new Set((t==null?void 0:t.required)??[]),i=Object.keys(r).filter(o=>X(r[o])&&s.has(o));return i.length===0?!1:i.every(o=>{const a=e[o];if(Array.isArray(a)){const l=r[o].minItems;return a.length>=(typeof l=="number"?l:1)}return a!=null&&a!==""})}const ue="x-lt-options";function _t(t){return typeof t=="string"||typeof t=="boolean"||typeof t=="number"&&Number.isFinite(t)}function Pr(t){return Array.isArray(t)&&t.length>0&&!t.some(e=>typeof e=="string")}function Lt(t){if(_t(t))return{value:t,label:String(t)};if(t&&typeof t=="object"&&!Array.isArray(t)){const e=t,r=e.value!==void 0?e.value:e.id;if(_t(r)&&typeof e.label=="string"&&e.label.length>0)return{value:r,label:e.label}}return null}function yt(t,e){if(!t)return;const r=t.enum;if(Array.isArray(r)&&r.length>0)return r.map(a=>({value:a,label:String(a)}));const s=t[ue];if(Pr(s)){const a=s.map(Lt).filter(l=>l!==null);return a.length>0?a:void 0}const i=(typeof s=="string"?[s]:Array.isArray(s)?s:[]).filter(a=>typeof a=="string"&&a.length>0);if(i.length===0)return;const o=i.some(st)?[]:void 0;for(const a of i){let l=a;if(st(a)){const d=bt(a,e);if(d===null)continue;l=d}const c=z(l,e);if(!Array.isArray(c))continue;const u=c.map(Lt).filter(d=>d!==null);if(u.length>0)return u}return o}function ht(t,e){const r=(typeof t=="string"?[t]:Array.isArray(t)?t:[]).filter(s=>typeof s=="string"&&s.length>0);if(r.length===0||!e)return[];for(const s of r){let i=s;if(st(s)){const a=bt(s,e);if(a===null)continue;i=a}const o=z(i,e);if(Array.isArray(o)&&o.length>0)return o}return[]}const Dr="x-lt-default-checked";function Wr(t,e,r){if((t==null?void 0:t["x-lt-widget"])!=="checklist"||t[Dr]!==!0||e&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length>0)return null;const s=ht(t["x-lt-source"],r);return s.length===0?null:Object.fromEntries(s.map(i=>[i.id,!0]))}function Ur(t,e,r){if((e==null?void 0:e["x-lt-widget"])!=="checklist"||e["x-lt-require-all"]!==!0)return;const i=ht(e["x-lt-source"],r).filter(l=>l.required!==!1);if(i.length===0)return;const o=typeof t=="object"&&t!==null&&!Array.isArray(t)?t:{},a=i.filter(l=>!o[l.id]).length;if(a!==0)return`${a} of ${i.length} checks incomplete`}const St="Invalid JSON";function it(t){return(t==null?void 0:t["x-lt-widget"])==="json"}function xe(t){return it(t)||(t==null?void 0:t[ue])!==void 0}function Ft(t,e){return`${t} ${e}${t===1?"":"s"}`}function jt(t,e){const r=e==null?void 0:e.type;if(typeof r=="string"&&!(t==null||t===""))switch(r){case"string":return typeof t=="string"?void 0:"Expected text";case"number":return typeof t=="number"&&Number.isFinite(t)?void 0:"Expected a number";case"integer":return typeof t=="number"&&Number.isInteger(t)?void 0:"Expected a whole number";case"boolean":return typeof t=="boolean"?void 0:"Expected true or false";case"array":return Array.isArray(t)?void 0:it(e)&&typeof t=="string"?St:"Expected a list";case"object":return typeof t=="object"&&!Array.isArray(t)?void 0:it(e)&&typeof t=="string"?St:"Expected an object";default:return}}function Nt(t,e,r){if(!e)return;const s=yt(e,r);if(s!==void 0&&t!==void 0&&t!==null&&t!==""&&!Array.isArray(t)){if(s.length===0)return"No valid options for this selection";if(!s.some(o=>o.value===t))return`Must be one of: ${s.map(o=>String(o.value)).join(", ")}`}const i=de(t,e,r);if(i)return i;if(Array.isArray(t))return xe(e)?qr(t,e,s,r):void 0;if(t!==null&&typeof t=="object")return Gr(t,e,r);if(typeof t=="string"){const o=t.trim();if(o==="")return;const a=H(e.minLength,e["x-lt-min-length"],r);if(a!==void 0&&o.length<a)return`Minimum ${a} character${a===1?"":"s"}`;const l=H(e.maxLength,e["x-lt-max-length"],r);if(l!==void 0&&o.length>l)return`Maximum ${l} characters (${o.length} entered)`;const c=e.pattern;if(c)try{if(!new RegExp(c).test(o))return e["x-lt-pattern-error"]??"Invalid format"}catch{}const u=e.format;if(u==="email"&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(o))return"Enter a valid email address";if(u==="uri"&&!/^https?:\/\/.+/.test(o))return"Enter a valid URL"}if(typeof t=="number"){const o=H(e.minimum,e["x-lt-minimum"],r),a=H(e.exclusiveMinimum,void 0,r),l=H(e.maximum,e["x-lt-maximum"],r),c=H(e.exclusiveMaximum,void 0,r);if(o!==void 0&&t<o)return`Minimum value is ${o}`;if(a!==void 0&&t<=a)return`Must be greater than ${a}`;if(l!==void 0&&t>l)return`Maximum value is ${l}`;if(c!==void 0&&t>=c)return`Must be less than ${c}`}}function qr(t,e,r,s){if(t.length===0)return;if(r!==void 0){if(r.length===0)return"No valid options for this selection";if(t.some(l=>!r.some(c=>c.value===l)))return`Must be one of: ${r.map(l=>String(l.value)).join(", ")}`}const i=H(e.minItems,void 0,s);if(i!==void 0&&t.length<i)return`At least ${Ft(i,"item")}`;const o=H(e.maxItems,void 0,s);if(o!==void 0&&t.length>o)return`At most ${Ft(o,"item")}`;const a=e.items;if(a&&typeof a=="object"&&!Array.isArray(a)){const l=a;for(let c=0;c<t.length;c++){const u=jt(t[c],l)??Nt(t[c],l,s);if(u)return`Item ${c+1}: ${u}`}}}function Gr(t,e,r){const s=Object.entries(t);if(s.length===0)return;const i=e.propertyNames,o=Array.isArray(i==null?void 0:i.enum)?i.enum.map(String):void 0;if(o){const l=s.find(([c])=>!o.includes(c));if(l)return`Unknown key "${l[0]}". Allowed: ${o.join(", ")}`}const a=e.additionalProperties;if(a&&typeof a=="object"&&!Array.isArray(a)){const l=a;for(const[c,u]of s){const d=jt(u,l)??Nt(u,l,r);if(d)return`"${c}": ${d}`}}}function H(t,e,r){if(typeof t=="number")return t;if(typeof e=="string"&&r){const s=e.indexOf(".");if(s!==-1){const i=e.slice(0,s),o=e.slice(s+1),a=r[i];if(a&&typeof a=="object"){const l=o.split(".");let c=a;for(const u of l)if(c=c[u],c===void 0)break;if(typeof c=="number")return c;if(typeof c=="string"){const u=Number(c);if(!Number.isNaN(u))return u}}}}}function pe(t,e,r,s,i){if(!s)return;if(r){if(t==null||typeof t=="boolean"&&!t&&yt(e,i)===void 0||typeof t=="string"&&t.trim()===""||Array.isArray(t)&&t.length===0&&xe(e))return"Required";if(typeof t=="object"&&!Array.isArray(t)&&t!==null){const l=Object.values(t);if(l.length===0||!it(e)&&l.every(c=>!c))return"Required"}}const o=jt(t,e);if(o)return o;const a=Ur(t,e,i);return a||Nt(t,e,i)}function Mt(t){return t!=null&&t!==""&&t!==!1&&t!==0}function Jr(t){return t==null?"":typeof t=="object"?JSON.stringify(t):String(t)}function $t(t,e){const r=t.indexOf("."),s=r===-1?t:t.slice(0,r);if(!er.includes(s))return{known:!1,value:void 0};const i=e[s];if(r===-1)return{known:!0,value:i};try{return{known:!0,value:ft(i,t.slice(r+1))}}catch{return{known:!0,value:void 0}}}function K(t,e){if(Array.isArray(t))return t.every(c=>K(c,e));if(typeof t!="string"||t.length===0||!e)return!0;const r=t.startsWith("!"),s=r?t.slice(1):t,i=s.indexOf("!="),o=s.indexOf("=");if(i!==-1||o!==-1&&o!==i+1){const c=i!==-1&&(o===-1||i<o),u=c?i:o,d=s.slice(0,u).trim(),p=s.slice(u+(c?2:1)).trim(),{known:x,value:m}=$t(d,e);if(!x)return!0;const b=Jr(m)===p,f=c?!b:b;return r?!f:f}const{known:a,value:l}=$t(s,e);return a?r?!Mt(l):Mt(l):!0}function Hr(t,e){return(t==null?void 0:t["x-lt-hide-if-empty"])!==!0?!1:e==null||e===""||e===!1||e===0}const Vr="x-lt-require-any";function Br(t){const e=t==null?void 0:t[Vr];return Array.isArray(e)?e.filter(r=>Array.isArray(r)).map(r=>r.filter(s=>typeof s=="string"&&s.length>0)).filter(r=>r.length>0):[]}function Xr(t){return t==null?!1:typeof t=="string"?t.trim().length>0:!0}const Yr="x-lt-require-sum";function zr(t){const e=t==null?void 0:t[Yr];if(!Array.isArray(e))return[];const r=[];for(const s of e){if(!s||typeof s!="object"||Array.isArray(s))continue;const{fields:i,minimum:o}=s;if(!Array.isArray(i))continue;const a=i.filter(l=>typeof l=="string"&&l.length>0);a.length!==0&&(o!==void 0&&typeof o!="number"||r.push({fields:a,minimum:typeof o=="number"?o:1}))}return r}function Kr(t){if(typeof t=="number"&&Number.isFinite(t))return t;if(typeof t=="string"&&t.trim()!==""){const e=Number(t);if(!Number.isNaN(e))return e}return 0}function fe(t,e,r){if(!t)return[];const s=t.properties??{},i=new Set(t.required??[]),o={...r??{},resolver:e,input:e},a=[];for(const[l,c]of Object.entries(s)){if(!K(c["x-lt-showIf"],o))continue;const u=pe(e[l],c,i.has(l),!0,o);u&&a.push({field:l,message:u})}for(const l of Br(t)){const c=l.filter(d=>s[d]&&K(s[d]["x-lt-showIf"],o));if(c.length===0||c.some(d=>Xr(e[d])))continue;const u=c.map(d=>s[d].title??d);a.push({field:c[0],message:`Enter a value for at least one of: ${u.join(", ")}`})}for(const l of zr(t)){const c=l.fields.filter(p=>s[p]&&K(s[p]["x-lt-showIf"],o));if(c.length===0||c.reduce((p,x)=>p+Kr(e[x]),0)>=l.minimum)continue;const d=c.map(p=>s[p].title??p);a.push({field:c[0],message:`Combined value of ${d.join(", ")} must be at least ${l.minimum}`})}return a}function Zr(t,e,r){if(!t)return[];const s=re(e,t);return fe(t,s,r)}function Pt(t,e){let r;try{r=JSON.parse(t)}catch{return{payload:null,errors:[],parseError:"Invalid JSON"}}const s=r._form_schema;if(s){const a=fe(s,r,e);if(a.length>0)return{payload:null,errors:a,parseError:null}}const{_form_schema:i,...o}=r;return{payload:nr(o,s),errors:[],parseError:null}}const Qr=2600;function ts({hint:t,onLockedClick:e,children:r}){const[s,i]=g.useState(null);g.useEffect(()=>{if(!s)return;const a=setTimeout(()=>i(null),Qr);return()=>clearTimeout(a)},[s]);const o=a=>{if(e==null||e(),t){const l=Math.min(Math.max(a.clientX,96),window.innerWidth-96);i(c=>({x:l,y:a.clientY,n:((c==null?void 0:c.n)??0)+1}))}};return n.jsxs("div",{className:"pb-8 max-w-form",onClick:o,"data-testid":"locked-form-frame",children:[r,t&&s&&n.jsxs("div",{role:"status",className:"fixed z-[60] pointer-events-none flex items-center gap-2 px-3 py-1.5 rounded-md bg-surface-raised border border-surface-border shadow-lg text-xs font-medium text-text-primary whitespace-nowrap animate-[click-hint_2.6s_ease-in-out_both]",style:{left:s.x,top:s.y-12},onAnimationEnd:()=>i(null),"data-testid":"locked-form-hint",children:[n.jsx(Zt,{className:"w-3.5 h-3.5 text-accent shrink-0",strokeWidth:1.5}),t]},s.n)]})}function R({children:t,isRequired:e,htmlFor:r}){return n.jsxs("label",{htmlFor:r,className:"block text-2xs font-semibold uppercase tracking-wider text-text-secondary",children:[t,e&&n.jsx("span",{className:"text-status-error ml-0.5",children:"*"})]})}function M({id:t,children:e}){return n.jsx("p",{id:t,className:"text-2xs text-text-tertiary mt-0.5 leading-snug",children:e})}function D({error:t,id:e}){return t?n.jsx("p",{id:e,role:"alert",className:"text-2xs text-status-error mt-1 animate-[field-error-in_0.3s_ease-out]",children:t}):null}function Y(t){return t?"input text-sm w-full mt-1 border-status-error/50 focus:border-status-error animate-[field-shake_0.4s_ease-in-out]":"input text-sm w-full mt-1"}function es(t){return t?"select text-sm mt-1 min-w-[min(16rem,100%)] max-w-full border-status-error/50 focus:border-status-error animate-[field-shake_0.4s_ease-in-out]":"select text-sm mt-1 min-w-[min(16rem,100%)] max-w-full"}function ns({fieldKey:t,value:e,onChange:r,schema:s,isRequired:i}){const o=g.useRef(null),a=(s==null?void 0:s.accept)??void 0,l=G(t,s),c=s==null?void 0:s.description,u=g.useCallback(p=>{var b;const x=(b=p.target.files)==null?void 0:b[0];if(!x)return;const m=new FileReader;m.onload=()=>{typeof m.result=="string"&&r(m.result)},m.readAsDataURL(x)},[r]),d=e.startsWith("data:");return n.jsxs("div",{children:[n.jsx(R,{isRequired:i,children:l}),c&&n.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:c}),n.jsxs("div",{className:"mt-1",children:[n.jsx("input",{ref:o,type:"file",accept:a,onChange:u,className:"hidden"}),n.jsx("button",{type:"button",onClick:()=>{var p;return(p=o.current)==null?void 0:p.click()},className:"btn-secondary text-xs px-3 py-1.5",children:d?"Replace file":"Choose file"}),d&&n.jsx("span",{className:"ml-2 text-xs text-status-success",children:"File attached"})]})]})}function rs({fieldKey:t,value:e,onChange:r,schema:s,isRequired:i}){const o=G(t,s),a=s==null?void 0:s.description,l=(s==null?void 0:s["x-lt-language"])??"",c=g.useCallback(u=>{if(u.key==="Tab"){u.preventDefault();const d=u.currentTarget,p=d.selectionStart,x=d.selectionEnd,m=e.substring(0,p)+" "+e.substring(x);r(m),requestAnimationFrame(()=>{d.selectionStart=d.selectionEnd=p+2})}},[e,r]);return n.jsxs("div",{children:[n.jsxs(R,{isRequired:i,children:[o,l&&n.jsx("span",{className:"ml-2 text-text-tertiary/60 normal-case font-normal",children:l})]}),a&&n.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:a}),n.jsx("textarea",{value:e,onChange:u=>r(u.target.value),onKeyDown:c,className:"input w-full mt-1 font-mono text-xs leading-relaxed",rows:10,spellCheck:!1})]})}function ss({fieldKey:t,value:e,onChange:r,schema:s,isRequired:i}){const o=g.useRef(null),[a,l]=g.useState(!1),c=G(t,s),u=s==null?void 0:s.description;g.useEffect(()=>{const f=o.current;if(!f)return;const y=f.getContext("2d");if(y&&(y.lineWidth=2,y.lineCap="round",y.strokeStyle="#1E1535",e&&e.startsWith("data:"))){const h=new Image;h.onload=()=>y.drawImage(h,0,0),h.src=e}},[]);const d=g.useCallback(f=>{const y=o.current,h=y.getBoundingClientRect(),k=h.width>0?y.width/h.width:1,j=h.height>0?y.height/h.height:1;return"touches"in f?{x:(f.touches[0].clientX-h.left)*k,y:(f.touches[0].clientY-h.top)*j}:{x:(f.clientX-h.left)*k,y:(f.clientY-h.top)*j}},[]),p=g.useCallback(f=>{var k;l(!0);const y=(k=o.current)==null?void 0:k.getContext("2d");if(!y)return;const h=d(f);y.beginPath(),y.moveTo(h.x,h.y)},[d]),x=g.useCallback(f=>{var k;if(!a)return;const y=(k=o.current)==null?void 0:k.getContext("2d");if(!y)return;const h=d(f);y.lineTo(h.x,h.y),y.stroke()},[a,d]),m=g.useCallback(()=>{l(!1);const f=o.current;f&&r(f.toDataURL("image/png"))},[r]),b=g.useCallback(()=>{const f=o.current;if(!f)return;const y=f.getContext("2d");y&&(y.clearRect(0,0,f.width,f.height),r(""))},[r]);return n.jsxs("div",{children:[n.jsx(R,{isRequired:i,children:c}),u&&n.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:u}),n.jsx("div",{className:"mt-1 max-w-[25rem] border border-surface-border rounded-md overflow-hidden bg-white",children:n.jsx("canvas",{ref:o,width:400,height:150,className:"w-full cursor-crosshair touch-none",onMouseDown:p,onMouseMove:x,onMouseUp:m,onMouseLeave:m,onTouchStart:p,onTouchMove:x,onTouchEnd:m})}),n.jsx("button",{type:"button",onClick:b,className:"mt-1 text-2xs text-text-tertiary hover:text-accent transition-colors",children:"Clear"})]})}function is({fieldKey:t,value:e,onChange:r,schema:s,isRequired:i}){const o=G(t,s),a=s==null?void 0:s.description;return n.jsxs("div",{children:[n.jsx(R,{isRequired:i,children:o}),a&&n.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:a}),n.jsx("textarea",{value:e,onChange:l=>r(l.target.value),className:"input w-full mt-1 text-sm leading-relaxed",rows:8,placeholder:"Supports plain text. Markdown formatting is preserved."})]})}function os({fieldKey:t,value:e,onChange:r,schema:s,isRequired:i}){const[o,a]=g.useState("write"),l=G(t,s),c=s==null?void 0:s.description;return(s==null?void 0:s.readOnly)===!0?n.jsx(Z,{content:e,className:"my-1"}):n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx(R,{isRequired:i,children:l}),n.jsx("div",{className:"flex items-center gap-0.5",children:["write","preview"].map(d=>n.jsx("button",{type:"button",onClick:()=>a(d),className:`px-2 py-0.5 text-2xs rounded transition-colors ${o===d?"bg-accent/10 text-accent font-semibold":"text-text-quaternary hover:text-text-secondary"}`,children:d==="write"?"Write":"Preview"},d))})]}),c&&n.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:c}),o==="write"?n.jsx("textarea",{value:e,onChange:d=>r(d.target.value),className:"input w-full mt-1 text-sm font-mono leading-relaxed",rows:10,placeholder:"Write markdown — headings, lists, tables, code blocks, and links all render."}):n.jsx("div",{className:"mt-1 px-3 py-2 border border-surface-border rounded min-h-[120px]",children:e.trim()?n.jsx(Z,{content:e}):n.jsx("p",{className:"text-xs text-text-quaternary italic",children:"Nothing to preview."})})]})}const as=28;function ls({fieldKey:t,value:e,onChange:r,schema:s,escalationContext:i,isRequired:o,submitAttempted:a,error:l}){const c=(s==null?void 0:s["x-lt-require-all"])===!0,u=ht(s==null?void 0:s["x-lt-source"],i);let d={};try{e&&(d=JSON.parse(e))}catch{}const p=(()=>{const j=Wr(s,d,i);return j?JSON.stringify(j):null})();g.useEffect(()=>{p&&r(p)},[p]);const x=j=>r(JSON.stringify({...d,[j]:!d[j]})),m=G(t,s),b=s==null?void 0:s.description;if(u.length===0)return n.jsxs(n.Fragment,{children:[n.jsx("p",{className:"text-xs text-text-tertiary italic mt-1",children:"No checklist items. None of the field's x-lt-source paths resolved on this escalation."}),l&&n.jsx("p",{className:"text-2xs text-status-error mt-1 animate-[field-error-in_0.3s_ease-out]",children:l})]});const f=s==null?void 0:s["x-lt-variant"],y=f==="chips"||f==="rows"?f:c||u.some(j=>j.label.length>as)?"rows":"chips",h=u.filter(j=>d[j.id]).length,k=(u.find(j=>!d[j.id]&&j.required!==!1)??u[0]).id;return n.jsxs("div",{role:"group","aria-label":m,"aria-required":o||void 0,"aria-invalid":l?!0:void 0,children:[n.jsx(R,{isRequired:o,children:m}),b&&n.jsx(M,{children:b}),y==="chips"?n.jsx("div",{className:"flex flex-wrap gap-2 mt-2",children:u.map(j=>{const N=d[j.id]??!1,v=!N&&!!a&&h===0&&(j.required||o);return n.jsxs("label",{className:`inline-flex items-center gap-1.5 cursor-pointer select-none px-3.5 py-2 text-sm border transition-colors rounded-[var(--lt-radius-field)] ${N?"bg-accent border-accent text-text-inverse":v?"bg-surface-field border-status-error/60 text-status-error":"bg-surface-field border-surface-field-border text-text-secondary hover:border-accent hover:text-text-primary"}`,children:[n.jsx("input",{type:"checkbox",checked:N,onChange:()=>x(j.id),className:"sr-only","data-testid":`checklist-item-${j.id}`,...j.id===k?{"data-field-key":t}:{}}),N&&n.jsx(Qt,{className:"w-3.5 h-3.5 shrink-0",strokeWidth:2.5}),j.label]},j.id)})}):n.jsx("div",{className:"space-y-2.5 mt-2",children:u.map(j=>{const N=d[j.id]??!1,v=!N&&!!a&&(c?j.required!==!1:h===0&&(j.required||o));return n.jsxs("label",{className:`flex items-start gap-3 cursor-pointer group select-none rounded px-2 py-1 -mx-2 transition-colors ${v?"bg-status-error/5":"hover:bg-surface-hover"}`,children:[n.jsx("input",{type:"checkbox",checked:N,onChange:()=>x(j.id),className:`mt-0.5 w-3.5 h-3.5 shrink-0 rounded ${v?"accent-status-error":"accent-accent"}`,"data-testid":`checklist-item-${j.id}`,...j.id===k?{"data-field-key":t}:{}}),n.jsxs("span",{className:`text-sm leading-snug transition-colors ${v?"text-status-error":"text-text-secondary group-hover:text-text-primary"}`,children:[j.label,j.required&&n.jsx("span",{className:`ml-0.5 text-2xs ${v?"text-status-error":"text-text-quaternary"}`,children:"*"})]})]},j.id)})}),n.jsx("p",{className:"text-2xs text-text-quaternary mt-3 tabular-nums",children:y==="chips"?n.jsxs(n.Fragment,{children:[h," selected",o&&h===0&&!!a&&n.jsx("span",{className:"ml-1 text-text-quaternary/60",children:"(check at least one)"})]}):n.jsxs(n.Fragment,{children:[h," / ",u.length," confirmed",c?n.jsxs("span",{className:"ml-1 text-text-quaternary/60",children:["(all required",u.some(j=>j.required===!1)?" except optional":"",")"]}):o&&h===0&&!!a&&n.jsx("span",{className:"ml-1 text-text-quaternary/60",children:"(at least one required)"})]})}),l&&n.jsx("p",{role:"alert",className:"text-2xs text-status-error mt-1 animate-[field-error-in_0.3s_ease-out]",children:l})]})}const cs=/\.(png|jpe?g|gif|webp|avif|bmp|svg)(\?.*)?$/i;function ds(t){var s,i,o,a;const e=t.trim();if(!e)return{kind:"none"};const r=(i=(s=/^data:([^;,]+)[;,]/.exec(e))==null?void 0:s[1])==null?void 0:i.toLowerCase();if(r)return r.startsWith("image/")?{kind:"image",src:e}:{kind:"file",href:e,label:r==="application/pdf"?"PDF":r,isData:!0};if(/^https?:\/\//i.test(e)){if(cs.test(e))return{kind:"image",src:e};const l=(a=(o=/\.([a-z0-9]{2,5})(\?.*)?$/i.exec(e))==null?void 0:o[1])==null?void 0:a.toUpperCase();return{kind:"file",href:e,label:l??"attachment",isData:!1}}return{kind:"none"}}function Dt({fieldKey:t,value:e,schema:r}){const[s,i]=g.useState(!1),o=ds(e??""),a=t.replace(/[_-]/g," "),l=r==null?void 0:r.description,c=n.jsxs(n.Fragment,{children:[n.jsx("label",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:a}),l&&n.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:l})]});return o.kind==="none"?n.jsxs("div",{children:[c,n.jsx("p",{className:"text-xs text-text-quaternary italic mt-1",children:"No attachment"})]}):o.kind==="image"?n.jsxs("div",{children:[c,n.jsxs("div",{className:"mt-1",children:[n.jsx("button",{type:"button",onClick:()=>i(!0),className:"block rounded-[0.125em] border border-surface-border overflow-hidden hover:border-accent transition-colors",title:"View full size",children:n.jsx("img",{src:o.src,alt:t.replace(/[_-]/g," "),className:"max-h-48 max-w-full object-contain","data-testid":`attachment-image-${t}`})}),s&&n.jsx("div",{className:"fixed inset-0 z-[100] bg-text-primary/60 backdrop-blur-sm flex items-center justify-center p-8 cursor-zoom-out",onClick:()=>i(!1),role:"dialog","aria-modal":"true","aria-label":`${a} — full size`,children:n.jsx("img",{src:o.src,alt:a,className:"max-h-[90vh] max-w-[90vw] object-contain"})})]})]}):n.jsxs("div",{children:[c,n.jsx("div",{className:"mt-1",children:n.jsxs("a",{href:o.href,...o.isData?{download:`${t}.${o.label==="PDF"?"pdf":"bin"}`}:{target:"_blank",rel:"noopener noreferrer"},className:"inline-flex items-center gap-1.5 text-xs text-accent hover:text-accent-hover transition-colors","data-testid":`attachment-link-${t}`,children:[n.jsx(Oe,{className:"w-3.5 h-3.5",strokeWidth:1.5}),o.isData?`Download ${o.label}`:`Open ${o.label}`,o.isData?n.jsx(te,{className:"w-3 h-3",strokeWidth:1.5}):n.jsx(xt,{className:"w-3 h-3",strokeWidth:1.5})]})})]})}function us({fieldKey:t,schema:e,escalationContext:r}){const s=(e==null?void 0:e["x-lt-href"])??"",i=s&&r?B(s,r):s,o=(e==null?void 0:e.title)??(e==null?void 0:e.description)??"Open",a=e==null?void 0:e.description,l=i.startsWith("/"),c=!i.trim();return n.jsxs("div",{"data-field-key":t,children:[n.jsx(R,{children:o}),a&&n.jsx(M,{children:a}),n.jsx("div",{className:"mt-1",children:c?n.jsx("span",{className:"text-xs text-text-quaternary italic",children:"No link configured"}):l?n.jsxs(lt,{to:i,className:"inline-flex items-center gap-1 text-xs text-accent hover:text-accent-hover transition-colors","data-testid":`link-widget-${t}`,children:[o,n.jsx(xt,{className:"w-3 h-3 shrink-0",strokeWidth:1.5})]}):n.jsxs("a",{href:i,target:"_blank",rel:"noreferrer",className:"inline-flex items-center gap-1 text-xs text-accent hover:text-accent-hover transition-colors","data-testid":`link-widget-${t}`,children:[o,n.jsx(xt,{className:"w-3 h-3 shrink-0",strokeWidth:1.5})]})})]})}function me({to:t,className:e=""}){return n.jsxs(lt,{to:t,title:"View details",tabIndex:-1,className:`inline-flex items-center justify-center w-6 h-6 shrink-0 rounded border border-surface-border text-accent/70 hover:text-accent hover:border-accent/60 hover:bg-accent/5 transition-colors ${e}`,children:[n.jsx(Te,{className:"w-3.5 h-3.5",strokeWidth:2}),n.jsx("span",{className:"sr-only",children:"View details"})]})}const Wt="—";function xs(t,e){if(!t||!e)return"";const r=t.indexOf(".");if(r===-1)return"";const s=t.slice(0,r),i=t.slice(r+1);try{const o=ft(e[s],i);return typeof o=="string"?o:""}catch{return""}}function ps(t,e){if(!t||t===Wt)return Wt;if(e==="age"){const r=new Date(t);return Number.isNaN(r.getTime())?t:gt(t)}return t}function fs({fieldKey:t,schema:e,escalationContext:r}){const s=e==null?void 0:e["x-lt-source"],i=(e==null?void 0:e["x-lt-fields"])??[],o=(e==null?void 0:e.title)??"Linked escalation",a=e==null?void 0:e.description,l=xs(s,r),{data:c,isLoading:u,isError:d}=ir(l);return n.jsxs("div",{"data-field-key":t,children:[n.jsx(R,{children:o}),a&&n.jsx(M,{children:a}),n.jsx("div",{className:"mt-1",children:!l||d?n.jsx("p",{className:"text-xs text-text-quaternary italic","data-testid":`escalation-widget-empty-${t}`,children:"No linked record"}):u?n.jsx(gs,{}):c?n.jsx(ms,{esc:c,fields:i,fieldKey:t}):n.jsx("p",{className:"text-xs text-text-quaternary italic",children:"No linked record"})})]})}function ms({esc:t,fields:e,fieldKey:r}){if(!t)return null;const s=mt(t);return n.jsxs("div",{className:"border-l-2 border-accent-faint pl-3 py-2 space-y-2","data-testid":`escalation-widget-card-${r}`,children:[n.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[n.jsxs("span",{className:"text-2xs font-semibold uppercase tracking-wider text-text-secondary",children:[t.type,t.subtype&&t.subtype!==t.type?` · ${t.subtype}`:""]}),n.jsx(kr,{status:t.status})]}),t.description&&n.jsx("p",{className:"text-xs text-text-primary leading-snug",children:t.description}),e.length>0&&n.jsx("dl",{className:"grid grid-cols-[auto_1fr] gap-x-4 gap-y-0.5",children:e.map(i=>{const o=B(i.value,s),a=ps(o,i.format);return n.jsxs("div",{className:"contents",children:[n.jsx("dt",{className:"text-2xs text-text-tertiary whitespace-nowrap",children:i.label}),n.jsx("dd",{className:"text-2xs text-text-primary",children:a})]},i.label)})}),n.jsxs("div",{className:"flex items-center justify-between gap-2",children:[n.jsxs("span",{className:"text-2xs text-text-quaternary",children:[t.role," · ",gt(t.created_at)]}),n.jsx(me,{to:`/escalations/detail/${t.id}`})]})]})}function gs(){return n.jsxs("div",{className:"border-l-2 border-accent-faint pl-3 py-2 space-y-2 animate-pulse",children:[n.jsx("div",{className:"h-3 w-32 bg-surface-sunken rounded"}),n.jsx("div",{className:"h-3 w-48 bg-surface-sunken rounded"}),n.jsx("div",{className:"h-3 w-24 bg-surface-sunken rounded"})]})}function bs(t,e){if(!t)return{};const r={};for(const[s,i]of Object.entries(t))r[s]=typeof i=="string"?B(i,e):i;return r}function ys(t,e,r){const s=bs(t.facets,e),i={role:t.role,status:t.status??"pending",facets:s,limit:t.limit,enabled:!!(t.role||Object.keys(s).length)};return t.assigned==="me"?{...i,assigned_to:r,available:!1,enabled:i.enabled&&!!r}:t.assigned==="any"?i:{...i,available:t.available??!0}}const hs=[{label:"Description",value:"{{escalation.description}}"},{label:"Role",value:"{{escalation.role}}"},{label:"Age",value:"{{escalation.created_at}}",format:"age"}],Ut="—";function js(t,e){if(!t||t===Ut)return Ut;if(e==="age"){const r=new Date(t);return Number.isNaN(r.getTime())?t:gt(t)}return t}function pt(t,e){return typeof t=="string"?B(t,e):Array.isArray(t)?t.map(r=>pt(r,e)):t&&typeof t=="object"?Object.fromEntries(Object.entries(t).map(([r,s])=>[r,pt(s,e)])):t}function Ns({fieldKey:t,schema:e,escalationContext:r}){const s=(e==null?void 0:e["x-lt-query"])??{},i=(e==null?void 0:e["x-lt-columns"])??hs,o=(e==null?void 0:e["x-lt-actions"])??[],a=(e==null?void 0:e.title)??"Related items",l=e==null?void 0:e.description,c=r??{},{user:u}=or(),d=ys(s,c,u==null?void 0:u.userId),{data:p,isLoading:x}=ar({role:d.role,status:d.status,facets:d.facets,assigned_to:d.assigned_to,available:d.available,limit:d.limit??5,enabled:d.enabled,include:rr({columns:i,actions:o})?"envelope":void 0}),m=(p==null?void 0:p.escalations)??[],b=lr(),[f,y]=g.useState({}),[h,k]=g.useState(null),j=async(N,v)=>{const A=mt(N);if(!(v.confirm&&!window.confirm(B(v.confirm,A)))){k(N.id),y(O=>({...O,[N.id]:""}));try{await b.mutateAsync({id:N.id,resolverPayload:pt(v.resolverPayload,A)})}catch(O){y(S=>({...S,[N.id]:O.message}))}finally{k(null)}}};return n.jsxs("div",{"data-field-key":t,children:[n.jsx(R,{children:a}),l&&n.jsx(M,{children:l}),n.jsx("div",{className:"mt-1","data-testid":`escalation-list-widget-${t}`,children:x?n.jsx(ks,{columns:i.length}):n.jsx(vs,{escalations:m,columns:i,fieldKey:t,actions:o,onAction:j,pendingRow:h,rowErrors:f})})]})}function vs({escalations:t,columns:e,fieldKey:r,actions:s,onAction:i,pendingRow:o,rowErrors:a}){return t.length===0?n.jsx("p",{className:"text-xs text-text-quaternary italic py-1","data-testid":`escalation-list-empty-${r}`,children:"No items found"}):n.jsxs("table",{className:"w-full text-xs border-collapse","data-testid":`escalation-list-table-${r}`,children:[n.jsx("thead",{children:n.jsxs("tr",{className:"border-b border-surface-border",children:[e.map(l=>n.jsx("th",{className:"text-left text-2xs font-semibold uppercase tracking-wider text-text-tertiary pb-1 pr-3 last:pr-0",children:l.label},l.label)),s.length>0&&n.jsx("th",{className:"w-px"}),n.jsx("th",{className:"w-8"})]})}),n.jsx("tbody",{children:t.map(l=>{const c=mt(l),u=a[l.id];return n.jsxs("tr",{className:"border-b border-surface-border/50 last:border-0 hover:bg-surface-sunken/50 transition-colors",children:[e.map(d=>{const p=B(d.value,c),x=js(p,d.format);return n.jsx("td",{className:"py-1 pr-3 last:pr-0 text-text-primary align-top",children:x},d.label)}),s.length>0&&n.jsxs("td",{className:"py-1 pr-2 align-top whitespace-nowrap",children:[s.map(d=>n.jsx("button",{type:"button",onClick:()=>i(l,d),disabled:o===l.id,className:"px-2 py-0.5 text-2xs font-medium text-accent border border-accent/40 rounded hover:bg-accent/10 disabled:opacity-40 disabled:cursor-default transition-colors ml-1 first:ml-0","data-testid":`escalation-list-action-${l.id}`,children:d.label},d.label)),u&&n.jsx("p",{className:"text-2xs text-status-error mt-0.5 whitespace-normal max-w-[16rem]","data-testid":`escalation-list-action-error-${l.id}`,children:u})]}),n.jsx("td",{className:"py-1 pl-2 align-top",children:n.jsx(me,{to:`/escalations/detail/${l.id}`})})]},l.id)})})]})}function ks({columns:t}){return n.jsx("div",{className:"space-y-1.5 animate-pulse",children:[0,1,2].map(e=>n.jsx("div",{className:"flex gap-4",children:Array.from({length:t},(r,s)=>n.jsx("div",{className:"h-3 bg-surface-sunken rounded flex-1"},s))},e))})}function ge(t,e){return{metadata:t??{},...e?{lookup:e}:{}}}const ws="x-lt-invoke",Q={LINK:"link",BUTTON:"button"},As=/^\{\{\s*([^{}]+?)\s*\}\}$/;function nt(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function Es(t){return t===Q.LINK||t===Q.BUTTON}function Is(t){const e=t==null?void 0:t[ws];if(!nt(e))return null;const r=e.workflow;if(typeof r!="string"||r.trim().length===0)return null;const s=e.confirm;return{workflow:r.trim(),data:nt(e.data)?e.data:{},metadata:nt(e.metadata)?e.metadata:{},modal:e.modal===!0,confirm:typeof s=="string"&&s.trim().length>0?s:null,variant:Es(e.variant)?e.variant:Q.LINK,icon:e.icon!==!1}}function ot(t,e){if(typeof t=="string"){const r=As.exec(t);if(r){const s=z(r[1],e??void 0);return s===null?void 0:s}return st(t)?bt(t,e??void 0)??void 0:t}if(Array.isArray(t))return t.map(r=>ot(r,e)).filter(r=>r!==void 0);if(nt(t)){const r={};for(const[s,i]of Object.entries(t)){const o=ot(i,e);o!==void 0&&(r[s]=o)}return r}return t}function Cs(t,e){return{data:ot(t.data,e),metadata:ot(t.metadata,e)}}const vt={ACTIVITY:"Activity",ALERT:"AlertTriangle",ARCHIVE:"Archive",AWARD:"Award",BARCODE:"Barcode",BELL:"Bell",BOT:"Bot",BOX:"Box",BOXES:"Boxes",BUILDING:"Building2",CALENDAR:"Calendar",CAMERA:"Camera",CHECKLIST:"ListChecks",CLIPBOARD:"ClipboardList",CLIPBOARD_CHECK:"ClipboardCheck",CLOCK:"Clock",COG:"Cog",CPU:"Cpu",DATABASE:"Database",DOWNLOAD:"Download",DROPLETS:"Droplets",FACTORY:"Factory",FAN:"Fan",FILE:"FileText",FLAG:"Flag",FLAME:"Flame",GAUGE:"Gauge",HAMMER:"Hammer",HEART:"Heart",IMAGE:"Image",KEY:"Key",LAYERS:"Layers",LEAF:"Leaf",LIFEBUOY:"LifeBuoy",LOCK:"Lock",MAIL:"Mail",MAP:"Map",MEGAPHONE:"Megaphone",MESSAGE:"MessageSquare",PACKAGE:"Package",PALETTE:"Palette",PEN:"PenTool",PILL:"Pill",POWER:"Power",PRINTER:"Printer",RECEIPT:"Receipt",RECYCLE:"Recycle",REFRESH:"RefreshCw",ROCKET:"Rocket",ROUTE:"Route",RULER:"Ruler",SCALE:"Scale",SCAN:"ScanBarcode",SCISSORS:"Scissors",SEARCH:"Search",SEND:"Send",SERVER:"Server",SHIELD:"ShieldCheck",SHOPPING_CART:"ShoppingCart",SNOWFLAKE:"Snowflake",SPARKLES:"Sparkles",STAR:"Star",STORE:"Store",SUN:"Sun",TAG:"Tag",TEST_TUBE:"TestTube",THERMOMETER:"Thermometer",TRASH:"Trash2",TRUCK:"Truck",UPLOAD:"Upload",USER:"User",USERS:"Users",WAND:"Wand2",WAREHOUSE:"Warehouse",WIFI:"Wifi",WRENCH:"Wrench",ZAP:"Zap"},Os=new Set(Object.values(vt));function Ts(t){return typeof t=="string"&&Os.has(t)}const Rs={Activity:Kn,AlertTriangle:ee,Archive:zn,Award:Yn,Barcode:Xn,Bell:Bn,Bot:Vn,Box:Hn,Boxes:Jn,Building2:Gn,Calendar:qn,Camera:Un,ClipboardCheck:Wn,ClipboardList:Dn,Clock:Pn,Cog:$n,Cpu:Mn,Database:Fn,Download:te,Droplets:Sn,Factory:Ln,Fan:_n,FileText:Rn,Flag:Tn,Flame:On,Gauge:Cn,Hammer:In,Heart:En,Image:An,Key:wn,Layers:kn,Leaf:vn,LifeBuoy:Nn,ListChecks:jn,Lock:Zt,Mail:hn,Map:yn,Megaphone:bn,MessageSquare:gn,Package:mn,Palette:fn,PenTool:pn,Pill:xn,Power:un,Printer:dn,Receipt:cn,Recycle:ln,RefreshCw:an,Rocket:on,Route:sn,Ruler:rn,Scale:nn,ScanBarcode:en,Scissors:tn,Search:Qe,Send:Ze,Server:Ke,ShieldCheck:ze,ShoppingCart:Ye,Snowflake:Xe,Sparkles:Be,Star:Ve,Store:He,Sun:Je,Tag:Ge,TestTube:qe,Thermometer:Ue,Trash2:We,Truck:De,Upload:Pe,User:$e,Users:Me,Wand2:Fe,Warehouse:Se,Wifi:Le,Wrench:_e,Zap:Re},qt=Object.values(vt),_s=Object.fromEntries(Object.entries(vt).map(([t,e])=>[e,t]));function Ls(t){return Ts(t)?Rs[t]:null}function Ai(t){const e=t.trim().toLowerCase().replace(/[\s_-]+/g,"");return e?qt.filter(r=>r.toLowerCase().includes(e)||_s[r].toLowerCase().replace(/_/g,"").includes(e)):[...qt]}function kt({icon:t,tier:e,className:r,strokeWidth:s=1.5}){const i=Ls(t)??Ar[e]??Zn;return n.jsx(i,{className:r,strokeWidth:s,"aria-hidden":!0})}function Ss(t){return`${t.domain}/${t.key} ${t.current||t.version===null?"(current)":`v${t.version}`}`}const L={RUNNING:"running",COMPLETED:"completed",FAILED:"failed"};function Gt(t,e){return`lt.events.system.workflow.${t}.${e}`}function wt(t){const[e,r]=g.useState(L.RUNNING),[s,i]=g.useState(void 0);return g.useEffect(()=>{r(L.RUNNING),i(void 0)},[t]),cr(t?[Gt(t,"completed"),Gt(t,"failed")]:[],o=>{if(o.workflowId!==t)return;const a=o.type.endsWith(".failed");r(a?L.FAILED:L.COMPLETED),i(o.data),o.data===void 0&&dr(`/workflows/${encodeURIComponent(t)}/result`).then(l=>{var c;return i(a?l.error?{error:l.error}:void 0:(c=l.result)==null?void 0:c.data)}).catch(()=>{})}),{outcome:e,payload:s}}const Fs={[L.RUNNING]:"Working…",[L.COMPLETED]:"Completed",[L.FAILED]:"Failed"};function be({outcome:t,className:e=""}){const r=t===L.FAILED?"text-status-error":t===L.COMPLETED?"text-status-success":"text-text-secondary";return n.jsxs("p",{className:`flex items-center gap-1.5 text-xs ${r} ${e}`,role:"status","data-testid":"run-outcome",children:[Fs[t],t===L.RUNNING&&n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-accent animate-pulse","aria-hidden":!0})]})}function ye({payload:t}){return!t||Object.keys(t).length===0?null:n.jsx("div",{className:"max-h-72 overflow-y-auto px-3 py-2 bg-surface-sunken","data-testid":"run-outline",children:n.jsx(xr,{data:t})})}function Ms({workflowId:t,outcome:e,executionPath:r}){const s=e===L.FAILED?"text-status-error":"text-status-success",i=e===L.RUNNING?"Started":e===L.COMPLETED?"Completed":"Failed";return n.jsxs("p",{className:"flex items-center gap-1.5 text-xs min-w-0",role:"status","data-testid":"started-run",children:[n.jsx("span",{className:s,children:i}),e===L.RUNNING&&n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-accent animate-pulse","aria-hidden":!0}),n.jsx("span",{className:"text-text-quaternary",children:"·"}),n.jsx("span",{className:"font-mono text-text-secondary truncate",children:t}),r&&n.jsxs(n.Fragment,{children:[n.jsx("span",{className:"text-text-quaternary",children:"·"}),n.jsx(lt,{to:r,className:"text-accent hover:underline shrink-0",children:"View workflow →"})]})]})}function $s({payload:t}){return!t||Object.keys(t).length===0?null:n.jsx("div",{className:"mt-3 h-48 overflow-y-auto rounded-md border border-surface-border bg-surface-raised px-3 py-2","data-testid":"started-run-result",children:n.jsx(ur,{data:t,label:"Result"})})}const Ps="/workflows/executions",W={PAGE:"page",MODAL:"modal"};function he(t,e){const{realIsBuilder:r}=pr(),s=fr(),[i,o]=g.useState(null),[a,l]=g.useState([]),[c,u]=g.useState(null),d=g.useCallback(()=>{o(null),l([]),u(null),s.reset()},[s]);return{submit:g.useCallback(async(x,m)=>{o(null),l([]),u(null);const b={...m};e.certified&&(b.certified=!0);try{const f=await s.mutateAsync({workflowType:t.workflow_type,data:x,metadata:b,...e.overrideBot?{execute_as:e.overrideBot}:{}});u(f.workflowId)}catch(f){f instanceof mr&&Cr(f.body)?(l(f.body.violations),o(f.body.error)):o(f instanceof Error?f.message:"Invocation failed")}},[s,e.certified,e.overrideBot,t.workflow_type]),reset:d,pending:s.isPending,error:i,violations:a,startedId:c,executionPath:c&&r?`${Ps}/${encodeURIComponent(c)}`:null}}function At(){const{connected:t}=gr();return t?null:n.jsxs("p",{className:"flex items-center gap-1.5 text-2xs text-status-warning","data-testid":"events-warning",children:[n.jsx(Qn,{className:"w-3 h-3 shrink-0",strokeWidth:1.5}),"Live events are off, so the result will not appear here.",n.jsx("button",{type:"button",onClick:()=>window.location.reload(),className:"text-accent hover:underline",children:"Reconnect events"})]})}const Ds={[W.PAGE]:"sticky bottom-0 z-10 bg-surface border-t border-surface-border/40 pt-3 pb-16 -mb-16",[W.MODAL]:"border-t border-surface-border/40 pt-3"};function je({onSubmit:t,onSubmitAgain:e,pending:r,error:s,issueCount:i=0,onShowIssues:o,startedId:a,executionPath:l,host:c=W.PAGE}){const u=c===W.PAGE,d=wt(u?a??"":""),p=u&&a!==null;return n.jsxs("div",{className:Ds[c],children:[n.jsxs("div",{className:"flex items-center justify-between gap-6 min-h-9",children:[n.jsxs("div",{className:"flex-1 min-w-0 flex flex-col gap-1",children:[n.jsx(At,{}),i>0&&o?n.jsxs("button",{type:"button",onClick:o,className:"flex items-center gap-1.5 text-xs text-status-error hover:underline","data-testid":"invoke-issues",children:[n.jsx(at,{className:"w-3.5 h-3.5",strokeWidth:1.5}),i," ",i===1?"issue":"issues"," to resolve"]}):s?n.jsx("p",{className:"text-xs text-status-error",role:"alert",children:s}):null,p&&n.jsx(Ms,{workflowId:a,outcome:d.outcome,executionPath:l})]}),n.jsx("div",{className:"shrink-0",children:p?n.jsx("button",{type:"button",onClick:e,className:"text-xs text-accent hover:underline","data-testid":"invoke-again",children:"Submit again"}):n.jsx("button",{type:"button",onClick:t,disabled:r,className:"btn-primary px-8 py-2","data-testid":"invoke-start",children:r?"Submitting…":"Submit"})})]}),p&&d.outcome!==L.RUNNING&&n.jsx($s,{payload:d.payload})]})}const et="invoke-help",Ws=380,q={INSTRUCTIONS:"instructions",ISSUES:"issues"};function Us({view:t,onViewChange:e,onClose:r,helpMarkdown:s,errors:i,schema:o}){const a=[];s&&a.push({id:q.INSTRUCTIONS,icon:ne,label:"Instructions",content:n.jsx(Z,{content:s})}),a.push({id:q.ISSUES,icon:at,label:"Issues",content:n.jsx(le,{errors:i,schema:o})});const l=a.some(c=>c.id===t)?t:a[0].id;return n.jsx(yr,{views:a,activeId:l,onViewChange:c=>e(c),onClose:r,stickyClassName:"h-full min-h-0",labelInline:!0})}function qs({schema:t,context:e,errors:r,enabled:s=!0}){const i=br(),o=s?i==null?void 0:i.setPanel:void 0,a=s?i==null?void 0:i.closePanel:void 0,l=(i==null?void 0:i.ownerKey)??null,c=(i==null?void 0:i.open)??!1,[u,d]=g.useState(null),p=g.useMemo(()=>sr(t,e),[t,e]),x=g.useCallback(()=>{d(null),a==null||a(et)},[a]);g.useEffect(()=>{!o||!u||o(n.jsx(Us,{view:u,onViewChange:d,onClose:x,helpMarkdown:p,errors:r,schema:t}),{key:et,width:Ws})},[o,u,p,r,t,x]),g.useEffect(()=>{u&&c&&l&&l!==et&&d(null)},[u,c,l]);const m=g.useRef(a);return m.current=a,g.useEffect(()=>()=>{var b;(b=m.current)==null||b.call(m,et)},[]),{helpMarkdown:p,hasInstructions:!!p,open:u!==null,showInstructions:()=>d(q.INSTRUCTIONS),showIssues:()=>d(q.ISSUES),close:x}}function Gs({selected:t,schema:e,metadata:r,lookup:s,submission:i,lead:o,prefill:a,host:l=W.PAGE}){const c=l===W.MODAL,[u,d]=g.useState(()=>Tt(e,a)),[p,x]=g.useState(!1),[m,b]=g.useState([]),[f,y]=g.useState(null),[h,k]=g.useState(null);g.useEffect(()=>{d(Tt(e,a)),x(!1),b([]),y(null),k(null),i.reset()},[t.workflow_type]);const j=g.useMemo(()=>({...ge(r,s),resolver:null}),[r,s]),N=g.useMemo(()=>{try{const C=JSON.parse(u);return{...j,resolver:C,input:C}}catch{return j}},[u,j]);g.useEffect(()=>{p&&b(Pt(u,j).errors)},[u,p,j]);const v=m.length>0?m:i.violations,A=qs({schema:e,context:N,errors:v,enabled:!c}),O=c?()=>k(q.ISSUES):A.showIssues,S=c?()=>k(C=>C===q.INSTRUCTIONS?null:q.INSTRUCTIONS):A.showInstructions;g.useEffect(()=>{i.violations.length>0&&O()},[i.violations]);const P=()=>{x(!0);const C=Pt(u,j);if(C.parseError){y(C.parseError);return}if(y(null),C.errors.length>0){b(C.errors),O();return}b([]),i.submit(C.payload,r)},E=c&&h===q.ISSUES&&v.length>0,T=c&&h===q.INSTRUCTIONS&&A.helpMarkdown;return n.jsxs("div",{"data-testid":"rich-invoke-form",children:[n.jsxs("div",{className:"space-y-6 pb-6",children:[o,T&&n.jsx("div",{className:"px-4 py-3 bg-surface-hover","data-testid":"invoke-inline-help",children:n.jsx(Z,{content:A.helpMarkdown})}),n.jsx(ui,{value:u,onChange:d,submitAttempted:p,escalationContext:j,onOpenHelp:A.hasInstructions?S:void 0}),E&&n.jsx("div",{"data-testid":"invoke-inline-issues",children:n.jsx(le,{errors:v,schema:e})})]}),n.jsx(je,{onSubmitAgain:i.reset,onSubmit:P,pending:i.pending,error:f??i.error,issueCount:v.length,onShowIssues:O,startedId:i.startedId,executionPath:i.executionPath,host:l})]})}const Jt=`{
2
- "data": {},
3
- "metadata": {}
4
- }`;function Js(t){return typeof t=="boolean"?"boolean":typeof t=="number"?"number":Array.isArray(t)?"array":t!==null&&typeof t=="object"?"object":"string"}function Ht(t){if(!t)return[];const e=t.data;return!e||typeof e!="object"?[]:Object.entries(e).map(([r,s])=>({key:r,type:Js(s),defaultValue:s}))}function dt(t){return{...t}}function Vt(t,e){return JSON.stringify({data:t,metadata:e},null,2)}function Hs({selectedConfig:t,isJsonMode:e,hasFormView:r,jsonInput:s,formFields:i,dataFields:o,onJsonChange:a,onToggleMode:l,onUpdateFormField:c,onSetFormFields:u}){return n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-baseline justify-between mb-2",children:[n.jsx("label",{className:"block text-xs text-text-secondary",children:"Envelope"}),n.jsxs("div",{className:"flex items-center gap-3",children:[r&&n.jsx("button",{type:"button",onClick:l,className:"text-2xs text-accent hover:underline",children:e?"Form view":"JSON view"}),t.envelope_schema?n.jsx("span",{className:"text-2xs text-accent",children:"Pre-filled from workflow config"}):n.jsx("span",{className:"text-2xs text-status-warning",children:"No template"})]})]}),!t.envelope_schema&&n.jsx("div",{className:"bg-surface-sunken border border-surface-border rounded px-4 py-3 mb-3",children:n.jsxs("p",{className:"text-xs text-text-secondary leading-relaxed",children:["This workflow has no input template. Edit the JSON directly below, or ",n.jsx(lt,{to:"/workflows/registry/new",className:"text-status-success hover:underline",children:"register it"})," in the Workflow Registry with an envelope schema for pre-filled fields and form-based input."]})}),e||!r?n.jsx("textarea",{value:s,onChange:d=>a(d.target.value),className:"input-json",rows:12,spellCheck:!1}):n.jsx("div",{className:"space-y-3",children:o.map(({key:d,type:p})=>{var f,y;const x=i[d],m=typeof x=="string"?x:JSON.stringify(x??(p==="array"?[]:{}),null,2),b=Math.min(20,Math.max(4,((y=(f=m==null?void 0:m.split)==null?void 0:f.call(m,`
5
- `))==null?void 0:y.length)??4));return n.jsxs("div",{children:[n.jsxs("label",{className:"block text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[d,n.jsx("span",{className:"ml-2 font-normal normal-case",children:p})]}),p==="boolean"?n.jsxs("select",{value:String(x??!1),onChange:h=>c(d,h.target.value,p),className:"select text-xs w-full",children:[n.jsx("option",{value:"true",children:"true"}),n.jsx("option",{value:"false",children:"false"})]}):p==="object"||p==="array"?n.jsx("textarea",{value:m,onChange:h=>{try{c(d,JSON.parse(h.target.value),p)}catch{u({...i,[d]:h.target.value})}},className:"input-json w-full",rows:b,spellCheck:!1}):n.jsx("input",{type:p==="number"?"number":"text",value:String(x??""),onChange:h=>c(d,h.target.value,p),className:"input text-xs w-full"})]},d)})}),n.jsxs("p",{className:"text-2xs text-text-tertiary mt-1.5",children:["The envelope wraps your workflow input. ",n.jsx("code",{className:"text-accent/80",children:"data"})," holds workflow-specific fields; ",n.jsx("code",{className:"text-accent/80",children:"metadata"})," is optional context."]})]})}const Bt="lt:invoke:prefill";function Vs({selected:t,metadata:e,submission:r,lead:s,prefill:i,host:o=W.PAGE}){const[a,l]=g.useState(Jt),[c,u]=g.useState(""),[d,p]=g.useState({}),[x,m]=g.useState(!1),b=g.useMemo(()=>{const N=t.envelope_schema??null;if(!i||Object.keys(i).length===0)return N;const v=N==null?void 0:N.data,A={...v&&typeof v=="object"?v:{},...i};return{...N??{},data:A}},[t.envelope_schema,i]),f=g.useMemo(()=>Ht(b),[b]),y=f.length>0;g.useEffect(()=>{u(""),r.reset();const N=o===W.PAGE?sessionStorage.getItem(Bt):null;if(N){sessionStorage.removeItem(Bt),l(N);try{const A=JSON.parse(N),O=(A==null?void 0:A.data)??A;O&&typeof O=="object"&&p(dt(O))}catch{}m(!0);return}l(b?JSON.stringify(b,null,2):Jt);const v=b==null?void 0:b.data;p(v&&typeof v=="object"?dt(v):{}),m(!Ht(b).length)},[t.workflow_type]);const h=()=>{if(x)try{const N=JSON.parse(a);N.data&&typeof N.data=="object"&&p(dt(N.data))}catch{}else l(Vt(d,e));m(!x)},k=(N,v,A)=>{let O=v;A==="number"?O=v===""?0:Number(v):A==="boolean"&&(O=v==="true"||v===!0);const S={...d,[N]:O};p(S),l(Vt(S,e))},j=()=>{u("");let N;try{N=JSON.parse(a)}catch{u("Invalid JSON");return}const{data:v,metadata:A}=N;if(!v||typeof v!="object"){u('Envelope must include a "data" object');return}r.submit(v,A??{})};return n.jsxs("div",{children:[n.jsxs("div",{className:"space-y-6 pb-6",children:[s,n.jsx(Hs,{selectedConfig:t,isJsonMode:x,hasFormView:y,jsonInput:a,formFields:d,dataFields:f,onJsonChange:N=>{l(N),u("")},onToggleMode:h,onUpdateFormField:k,onSetFormFields:p})]}),n.jsx(je,{onSubmitAgain:r.reset,onSubmit:j,pending:r.pending,error:c||r.error,startedId:r.startedId,executionPath:r.executionPath,host:o})]})}function Bs({workflow:t,workflowId:e,onDone:r,onRetry:s}){var c;const i=wt(e),o=i.outcome===L.FAILED,a=i.outcome===L.RUNNING,l=o&&typeof((c=i.payload)==null?void 0:c.error)=="string"?i.payload.error:null;return n.jsxs("div",{className:"flex flex-col gap-4","data-testid":"run-receipt","data-outcome":i.outcome,children:[n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(kt,{icon:t.icon,tier:t.tier,className:"w-6 h-6 shrink-0 text-accent"}),n.jsx(be,{outcome:i.outcome,className:"text-sm"})]}),a&&n.jsx(At,{}),l&&n.jsx("p",{className:"text-xs text-status-error",role:"alert",children:l}),!a&&n.jsx(ye,{payload:l?void 0:i.payload}),n.jsxs("div",{className:"flex justify-end gap-2 pt-2 border-t border-surface-border/40",children:[o&&n.jsx("button",{type:"button",onClick:s,className:"btn-secondary text-xs","data-testid":"run-retry",children:"Try again"}),n.jsx("button",{type:"button",onClick:r,className:"btn-primary text-xs px-6","data-testid":"run-done",children:a||o?"Close":"Done"})]})]})}function Ne(t,e){var s;const r=(s=t.envelope_schema)==null?void 0:s.metadata;return{...r&&typeof r=="object"?r:{},...e}}function Xs({workflow:t,prefill:e,onClose:r}){const s=g.useMemo(()=>Ne(t,e.metadata),[t,e.metadata]),i=Array.isArray(t.input_lookups)&&t.input_lookups.length>0,{data:o}=hr(t.workflow_type,i),a=g.useMemo(()=>o?jr(o.lookups):void 0,[o]),l=(o==null?void 0:o.lookups.filter(p=>p.missing))??[],c=he(t,{certified:t.certified,overrideBot:""}),u=t.description?n.jsx(Z,{content:t.description,className:"text-xs text-text-secondary leading-relaxed"}):void 0,d=c.startedId!==null;return n.jsxs("div",{"data-testid":"invoke-modal",children:[d&&n.jsx(Bs,{workflow:t,workflowId:c.startedId,onDone:r,onRetry:c.reset}),n.jsxs("div",{hidden:d,children:[l.length>0&&n.jsxs("p",{className:"flex items-center gap-1.5 text-2xs text-status-warning mb-4","data-testid":"lookup-missing",children:[n.jsx(ee,{className:"w-3 h-3 shrink-0",strokeWidth:1.5}),l.map(Ss).join(", ")," ",l.length===1?"is":"are"," not available; the fields that read ",l.length===1?"it":"them"," fall back to plain inputs."]}),t.input_schema?n.jsx(Gs,{selected:t,schema:t.input_schema,metadata:s,lookup:a,submission:c,lead:u,prefill:e.data,host:W.MODAL}):n.jsx(Vs,{selected:t,metadata:s,submission:c,lead:u,prefill:e.data,host:W.MODAL})]})]})}function Ys({open:t,onClose:e,workflow:r,prefill:s}){const i=n.jsxs("span",{className:"flex items-center gap-2 min-w-0",children:[n.jsx(kt,{icon:r.icon,tier:r.tier,className:"w-4 h-4 shrink-0 text-accent"}),n.jsx("span",{className:"truncate",title:r.workflow_type,children:se(r.workflow_type)})]});return n.jsx(ie,{open:t,onClose:e,title:i,maxWidth:"max-w-2xl",closeOnBackdrop:!1,children:n.jsx(Xs,{workflow:r,prefill:s,onClose:e})})}const zs={[Q.LINK]:"inline-flex items-center gap-1.5 text-xs text-accent hover:text-accent-hover transition-colors",[Q.BUTTON]:"btn-secondary inline-flex items-center gap-1.5 text-xs px-3 py-1.5"};function Ks({fieldKey:t,schema:e,escalationContext:r}){var u;const s=g.useMemo(()=>Is(e),[e]),{data:i,isPending:o}=Nr(),a=i==null?void 0:i.find(d=>d.workflow_type===(s==null?void 0:s.workflow)),l=(u=r==null?void 0:r.escalation)==null?void 0:u.status,c=l!==void 0&&l!==wr.PENDING;return!s||c?null:o?n.jsx("div",{className:"h-4 w-32 rounded bg-surface-hover animate-pulse","data-testid":`invoke-widget-${t}-loading`}):a?n.jsx(Zs,{fieldKey:t,schema:e,config:s,workflow:a,escalationContext:r}):null}function Zs({fieldKey:t,schema:e,config:r,workflow:s,escalationContext:i}){var E;const o=i,a=g.useMemo(()=>Cs(r,o),[r,o]),l=g.useMemo(()=>Ne(s,a.metadata),[s,a.metadata]),c=he(s,{certified:s.certified,overrideBot:""}),u=wt(c.startedId??""),[d,p]=g.useState([]),[x,m]=g.useState(!1),[b,f]=g.useState(!1),y=(e==null?void 0:e.title)??se(s.workflow_type),h=e==null?void 0:e.description,k=r.icon?n.jsx(kt,{icon:s.icon,tier:s.tier,className:"w-3.5 h-3.5 shrink-0"}):null,j=()=>{m(!1),c.submit(a.data,l)},N=()=>{if(r.modal){f(!0);return}if(p([]),s.input_schema){const T=Zr(s.input_schema,a.data,ge(l));if(T.length>0){p(T);return}}r.confirm?m(!0):j()},v=()=>{p([]),c.reset(),f(!0)},A=d.length>0?d:c.violations,O=c.startedId!==null,S=O&&u.outcome===L.RUNNING,P=O&&u.outcome===L.FAILED&&typeof((E=u.payload)==null?void 0:E.error)=="string"?u.payload.error:null;return n.jsxs("div",{"data-field-key":t,"data-testid":`invoke-widget-${t}`,children:[n.jsx(R,{children:y}),h&&n.jsx(M,{children:h}),n.jsxs("div",{className:"mt-1 flex flex-col gap-1.5",children:[O&&n.jsxs(n.Fragment,{children:[n.jsx(be,{outcome:u.outcome}),S&&n.jsx(At,{}),P&&n.jsx("p",{className:"text-2xs text-status-error",role:"alert",children:P}),!S&&n.jsx(ye,{payload:P?void 0:u.payload})]}),!S&&n.jsxs("button",{type:"button",onClick:N,disabled:c.pending,className:`self-start ${zs[r.variant]}`,"data-testid":`invoke-control-${t}`,children:[k,c.pending?"Starting…":y]}),A.length>0&&n.jsxs("div",{className:"text-2xs",role:"alert","data-testid":`invoke-issues-${t}`,children:[n.jsx("ul",{className:"space-y-0.5 text-status-error",children:A.map(T=>n.jsxs("li",{className:"flex items-start gap-1.5",children:[n.jsx(at,{className:"w-3 h-3 mt-px shrink-0",strokeWidth:1.5}),n.jsxs("span",{children:[n.jsx("span",{className:"font-semibold",children:T.field})," · ",T.message]})]},T.field))}),n.jsx("button",{type:"button",onClick:v,className:"mt-1 text-accent hover:underline","data-testid":`invoke-open-form-${t}`,children:"Open form"})]}),A.length===0&&c.error&&n.jsx("p",{className:"text-2xs text-status-error",role:"alert",children:c.error})]}),r.confirm&&n.jsxs(ie,{open:x,onClose:()=>m(!1),title:y,children:[n.jsx("p",{className:"text-sm text-text-secondary mb-5",children:B(r.confirm,i??{})}),n.jsxs("div",{className:"flex justify-end gap-2",children:[n.jsx("button",{type:"button",onClick:()=>m(!1),className:"btn-secondary text-xs",children:"Cancel"}),n.jsx("button",{type:"button",onClick:j,className:"btn-primary text-xs","data-testid":`invoke-confirm-${t}`,children:y})]})]}),n.jsx(Ys,{open:b,onClose:()=>f(!1),workflow:s,prefill:a})]})}const rt={"file-upload":ns,"code-editor":rs,signature:ss,"rich-text":is,markdown:os,checklist:ls,attachment:Dt,image:Dt,link:us,escalation:fs,"escalation-list":Ns,invoke:Ks},ve="textarea",ke="json";function Qs(t){return t in rt||t===ve||t===ke}function Xt(t,e=""){if(!t||typeof t!="object"||Array.isArray(t))return[];const r=t,s=[],i=r["x-lt-widget"];typeof i=="string"&&e&&!Qs(i)&&s.push({path:e,widget:i});const o=r.properties;if(o&&typeof o=="object"&&!Array.isArray(o))for(const[a,l]of Object.entries(o))s.push(...Xt(l,e?`${e}.${a}`:a));return r.items&&s.push(...Xt(r.items,e)),s}const ti=new Set(["string","number","integer","boolean","array","object"]);function ei(t,e){const r=t==null?void 0:t.type;if(typeof r=="string"&&ti.has(r))return r;if(e==null)return"null";if(Array.isArray(e))return"array";const s=typeof e;return s==="number"||s==="boolean"||s==="string"?s:"object"}const ut="dictionary",ni=new Set(["markdown","attachment","image"]);function we(t,e){if(!e)return;const r=t==null?void 0:t["x-lt-section-options"],s=r==null?void 0:r[e];return s&&typeof s=="object"?s:void 0}function ri(t,e,r){var l,c;const s=(l=t==null?void 0:t.properties)==null?void 0:l[r];if((s==null?void 0:s.readOnly)!==!0)return!1;const i=s==null?void 0:s["x-lt-widget"];if(typeof i=="string"&&ni.has(i))return!1;const o=s==null?void 0:s["x-lt-display"];if(typeof o=="string")return o===ut;const a=(c=we(t,e))==null?void 0:c.display;return typeof a=="string"?a===ut:(t==null?void 0:t["x-lt-display"])===ut}function si(t,e,r,s){var o;const i=[];for(const a of t){const[l]=a,c=i[i.length-1];if(ri(e,r,l)){(c==null?void 0:c.kind)==="dictionary"?c.entries.push(a):i.push({kind:"dictionary",entries:[a]});continue}const u=(o=e==null?void 0:e.properties)==null?void 0:o[l],d=u==null?void 0:u["x-lt-column-group"];if(s==="two-column"&&typeof d=="string"&&d.trim()){(c==null?void 0:c.kind)==="column-group"&&c.name===d?c.entries.push(a):i.push({kind:"column-group",name:d,entries:[a]});continue}i.push({kind:"field",entry:a})}return i}function ii({value:t,options:e,nullable:r,fieldKey:s,label:i,helperText:o,isRequired:a,error:l,onBlur:c,ids:u,ariaProps:d,onChange:p}){const x=t==null||t===""?"":String(t),m=e.some(b=>String(b.value)===x);return n.jsxs("div",{children:[n.jsx(R,{isRequired:a,htmlFor:u.field,children:i}),o&&n.jsx(M,{id:u.help,children:o}),n.jsxs("select",{value:m?x:"",disabled:e.length===0,onChange:b=>{const f=e.find(y=>String(y.value)===b.target.value);p(f?f.value:null),c==null||c()},onBlur:c,"data-field-key":s,className:es(!!l),...d,children:[(!m||r)&&n.jsx("option",{value:"",disabled:!r,children:"Choose…"}),e.map(b=>n.jsx("option",{value:String(b.value),children:b.label},String(b.value)))]}),n.jsx(D,{error:l,id:u.error})]})}function oi({value:t,options:e,fieldKey:r,label:s,helperText:i,isRequired:o,error:a,onBlur:l,ids:c,ariaProps:u,onChange:d}){const p=new Set(Array.isArray(t)?t:[]),x=m=>{const b=new Set(p);b.has(m)?b.delete(m):b.add(m),d(e.filter(f=>b.has(f.value)).map(f=>f.value)),l==null||l()};return n.jsxs("div",{role:"group","aria-label":s,"aria-required":o||void 0,"aria-invalid":a?!0:void 0,"aria-describedby":u["aria-describedby"],children:[n.jsx(R,{isRequired:o,children:s}),i&&n.jsx(M,{id:c.help,children:i}),e.length===0?n.jsx("p",{className:"text-xs text-text-tertiary italic mt-1",children:"No options yet"}):n.jsx("div",{className:"flex flex-wrap gap-2 mt-2",children:e.map((m,b)=>{const f=p.has(m.value);return n.jsxs("label",{className:`inline-flex items-center gap-1.5 cursor-pointer select-none px-3.5 py-2 text-sm border transition-colors rounded-[var(--lt-radius-field)] ${f?"bg-accent border-accent text-text-inverse":a?"bg-surface-field border-status-error/60 text-status-error":"bg-surface-field border-surface-field-border text-text-secondary hover:border-accent hover:text-text-primary"}`,children:[n.jsx("input",{type:"checkbox",checked:f,onChange:()=>x(m.value),className:"sr-only","data-testid":`multi-select-${r}-${String(m.value)}`,...b===0?{"data-field-key":r,id:c.field}:{}}),f&&n.jsx(Qt,{className:"w-3.5 h-3.5 shrink-0",strokeWidth:2.5}),m.label]},String(m.value))})}),n.jsx(D,{error:a,id:c.error})]})}function Yt(t){return typeof t=="string"?t:t==null?"":JSON.stringify(t,null,2)}function zt(t){try{return{ok:!0,value:JSON.parse(t)}}catch{return{ok:!1}}}function ai({value:t,fieldKey:e,label:r,helperText:s,isRequired:i,error:o,onBlur:a,ids:l,ariaProps:c,onChange:u}){const[d,p]=g.useState(()=>Yt(t));g.useEffect(()=>{if(typeof t=="string"){t!==d&&p(t);return}const m=zt(d);!(m.ok&&JSON.stringify(m.value)===JSON.stringify(t??null))&&!(d.trim()===""&&t===null)&&p(Yt(t))},[t]);const x=d.split(`
6
- `).length;return n.jsxs("div",{children:[n.jsx(R,{isRequired:i,htmlFor:l.field,children:r}),s&&n.jsx(M,{id:l.help,children:s}),n.jsx("textarea",{value:d,onChange:m=>{const b=m.target.value;if(p(b),b.trim()===""){u(null);return}const f=zt(b);u(f.ok?f.value:b)},onBlur:a,spellCheck:!1,"data-field-key":e,rows:Math.min(14,Math.max(4,x)),className:`${Y(!!o)} font-mono text-xs leading-relaxed`,...c}),n.jsx(D,{error:o,id:l.error})]})}function li({fieldKey:t,label:e,values:r,fieldSchema:s,helperText:i,isRequired:o,error:a,ids:l,notice:c,context:u,onChange:d}){const p=X(s),x=p?Mr(s,u):null,m=(p==null?void 0:p.prompt)??i,b=f=>d(r.filter((y,h)=>h!==f));return n.jsxs("div",{"data-field-key":t,tabIndex:p?-1:void 0,className:"outline-none",children:[n.jsxs("div",{className:"flex items-baseline justify-between gap-3",children:[n.jsx(R,{isRequired:o,children:e}),x!==null&&n.jsxs("span",{className:"text-2xs tabular-nums text-text-tertiary","data-testid":"list-field-count",children:[r.length," of ",x]})]}),i&&(r.length>0||!p)&&n.jsx(M,{id:l.help,children:i}),r.length===0&&p?n.jsx("p",{id:l.help,className:"text-xs text-text-tertiary mt-1 italic","data-testid":"list-field-empty",children:m??"Scan to add"}):n.jsx("div",{className:"flex flex-wrap gap-1.5 mt-1",children:r.map((f,y)=>n.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 text-2xs font-mono bg-surface-sunken rounded text-text-secondary",children:[String(f),p&&n.jsx("button",{type:"button",onClick:()=>b(y),className:"-mr-1 p-0.5 rounded text-text-quaternary hover:text-status-error hover:bg-surface-hover","aria-label":`Remove ${String(f)}`,"data-testid":"list-field-remove",children:n.jsx(tr,{className:"w-3 h-3",strokeWidth:2})})]},y))}),n.jsx(D,{error:a,id:l.error}),n.jsx(ae,{notice:c})]})}const Kt={date:"date","date-time":"datetime-local",email:"email",uri:"url"},ci={date:"max-w-48","date-time":"max-w-64"};function Ae({fieldKey:t,value:e,onChange:r,onBlur:s,schema:i,isRequired:o,isReadOnly:a,error:l,escalationContext:c,submitAttempted:u}){var P;const d=(P=i==null?void 0:i.properties)==null?void 0:P[t],p=Er(t),x=G(t,d),m=d==null?void 0:d["x-lt-widget"],b=ei(d,e),f=`lt-field-${t}`,y={field:f,help:`${f}-help`,error:`${f}-error`},h=typeof(d==null?void 0:d.description)=="string"&&d.description.length>0?d.description:void 0,k={id:f,"aria-required":o||void 0,"aria-invalid":l?!0:void 0,"aria-describedby":l?y.error:h?y.help:void 0},j={fieldKey:t,label:x,helperText:h,isRequired:o,error:l,onBlur:s,ids:y,ariaProps:k,onChange:r},N=m==="markdown"&&typeof e=="string",v=(m==="attachment"||m==="image")&&typeof e=="string",A=!!(m&&m in rt);if(a&&!N&&!v&&!A){const E=e===null?"null":typeof e=="object"?JSON.stringify(e,null,2):String(e);return n.jsxs("div",{children:[n.jsx(R,{isRequired:o,children:x}),n.jsx("p",{className:"text-sm text-text-secondary mt-0.5 whitespace-pre-wrap",children:E})]})}if(m===ke&&(b==="array"||b==="object"))return n.jsx(ai,{...j,value:e});if(m&&m in rt){const E=rt[m],T=o||(d==null?void 0:d["x-lt-require-all"])===!0,C={fieldKey:t,schema:d,escalationContext:c,isRequired:T,submitAttempted:u,error:l};if((d==null?void 0:d.type)==="object"){const $=typeof e=="string"?e:typeof e=="object"&&e!==null&&!Array.isArray(e)?JSON.stringify(e):"";return n.jsx(E,{...C,value:$,onChange:V=>{try{r(JSON.parse(V))}catch{r(V)}}})}if(typeof e=="string")return n.jsx(E,{...C,value:e,onChange:$=>r($)});if(typeof e=="object"&&e!==null&&!Array.isArray(e))return n.jsx(E,{...C,value:JSON.stringify(e),onChange:$=>{try{r(JSON.parse($))}catch{r($)}}})}const O=yt(d,c);if(b==="array"){if(O!==void 0&&(d==null?void 0:d["x-lt-options"])!==void 0)return n.jsx(oi,{...j,value:e,options:O})}else if(O!==void 0&&b!=="object")return n.jsx(ii,{...j,value:e,options:O,nullable:(d==null?void 0:d["x-lt-nullable"])===!0});switch(b){case"boolean":return n.jsxs("div",{children:[n.jsxs("label",{className:"flex items-center gap-2 cursor-pointer",children:[n.jsx("input",{type:"checkbox",checked:e===!0,onChange:E=>{r(E.target.checked),s==null||s()},className:"w-3.5 h-3.5 rounded accent-accent","data-field-key":t,...k}),n.jsxs("span",{className:"text-2xs font-semibold uppercase tracking-wider text-text-secondary",children:[x,o&&n.jsx("span",{className:"text-status-error ml-0.5",children:"*"})]})]}),h&&n.jsx(M,{id:y.help,children:h}),n.jsx(D,{error:l,id:y.error})]});case"number":case"integer":return n.jsxs("div",{children:[n.jsx(R,{isRequired:o,htmlFor:f,children:x}),h&&n.jsx(M,{id:y.help,children:h}),n.jsx("input",{type:"number",value:typeof e=="number"||typeof e=="string"?e:"",onChange:E=>r(parseFloat(E.target.value)||0),onBlur:s,step:"any","data-field-key":t,className:`${Y(!!l)} max-w-48`,...k}),n.jsx(D,{error:l,id:y.error})]});case"string":return S(typeof e=="string"?e:e==null?"":String(e));case"array":return!Array.isArray(e)&&!(e==null&&X(d))?S(e==null?"":String(e)):n.jsx(li,{fieldKey:t,label:x,values:Array.isArray(e)?e:[],fieldSchema:d,helperText:h,isRequired:o,error:l,ids:y,notice:p,context:c,onChange:r});case"object":{if(typeof e!="object"||e===null||Array.isArray(e))return S(e==null?"":String(e));const E=Object.entries(e);return n.jsxs("div",{children:[n.jsx(R,{isRequired:o,children:x}),n.jsx("div",{className:"ml-4 mt-2 pl-4 border-l border-accent-faint space-y-3",children:E.map(([T,C])=>n.jsx(Ae,{fieldKey:T,value:C,onChange:$=>r({...e,[T]:$})},T))})]})}default:return n.jsxs("div",{children:[n.jsx(R,{isRequired:o,children:x}),n.jsx("p",{className:"text-xs text-text-tertiary italic mt-1",children:"null"})]})}function S(E){const T=d==null?void 0:d.format;if(T==="password")return n.jsxs("div",{children:[n.jsx(R,{isRequired:o,htmlFor:f,children:x}),h&&n.jsx(M,{id:y.help,children:h}),n.jsx("input",{type:"password",value:E,onChange:C=>r(C.target.value),onBlur:s,"data-field-key":t,className:Y(!!l),autoComplete:"off",...k}),n.jsx(D,{error:l,id:y.error})]});if(T&&T in Kt)return n.jsxs("div",{children:[n.jsx(R,{isRequired:o,htmlFor:f,children:x}),h&&n.jsx(M,{id:y.help,children:h}),n.jsx("input",{type:Kt[T],value:E,onChange:C=>r(C.target.value),onBlur:s,"data-field-key":t,className:`${Y(!!l)} ${ci[T]??""}`,...k}),n.jsx(D,{error:l,id:y.error})]});if(T==="textarea"||m===ve||E.includes(`
7
- `)||E.length>80){const C=d==null?void 0:d.maxLength,$=d==null?void 0:d["x-lt-max-length"],V=$?Number(z($,c)):NaN,U=C??(Number.isFinite(V)?V:void 0),ct=U!==void 0&&E.length>U;return n.jsxs("div",{children:[n.jsx(R,{isRequired:o,htmlFor:f,children:x}),h&&n.jsx(M,{id:y.help,children:h}),n.jsx("textarea",{value:E,onChange:tt=>{r(tt.target.value),s==null||s()},onBlur:s,"data-field-key":t,className:`${Y(!!l)} leading-relaxed`,rows:Math.min(6,Math.max(3,Math.ceil(E.length/60))),...k}),U!==void 0&&n.jsxs("p",{className:`text-2xs mt-0.5 text-right tabular-nums ${ct?"text-status-error font-medium":"text-text-quaternary"}`,children:[E.length," / ",U]}),n.jsx(D,{error:l,id:y.error})]})}return n.jsxs("div",{children:[n.jsx(R,{isRequired:o,htmlFor:f,children:x}),h&&n.jsx(M,{id:y.help,children:h}),n.jsx("input",{type:"text",value:E,onChange:C=>r(C.target.value),onBlur:s,"data-field-key":t,className:Y(!!l),...k}),n.jsx(D,{error:l,id:y.error}),n.jsx(ae,{notice:p})]})}}function di({name:t,entries:e,formSchema:r,layout:s,renderField:i}){const o=si(e,r,t,s),a=we(r,t),l=(a==null?void 0:a.columns)??(s==="two-column"?2:1),c=d=>d.map(([p,x])=>{var m;return{key:p,label:G(p,(m=r==null?void 0:r.properties)==null?void 0:m[p]),value:x}}),u=()=>o.map((d,p)=>d.kind==="dictionary"?n.jsx("div",{className:s==="two-column"?"col-span-full":"",children:n.jsx(vr,{items:c(d.entries),columns:l})},`dict-${p}`):d.kind==="column-group"?n.jsx("div",{className:"@container",children:n.jsx("div",{className:"grid grid-cols-1 @grp-cols:grid-cols-2 gap-x-4 gap-y-5",children:d.entries.map(x=>i(x))})},`group-${d.name}-${p}`):i(d.entry));return n.jsxs("div",{className:t?"border border-surface-border bg-surface-sunken rounded-[var(--lt-radius-section)] p-4 animate-[section-enter_0.25s_ease-out]":"",children:[t&&n.jsx("p",{className:"mb-4 text-[1.40625rem] font-semibold tracking-wider text-heading [font-variant-caps:small-caps]",children:t}),s==="two-column"?n.jsx("div",{className:"@container",children:n.jsx("div",{className:"grid grid-cols-1 @form-cols:grid-cols-2 gap-x-col-gap gap-y-5",children:u()})}):n.jsx("div",{className:"space-y-5",children:u()})]})}function ui({value:t,onChange:e,disabled:r,submitAttempted:s,escalationContext:i,onOpenHelp:o,onDisabledClick:a,disabledHint:l}){var Et,It;const[c,u]=g.useState({}),[d,p]=g.useState({}),[x,m]=g.useState(null),[b,f]=g.useState(!1),[y,h]=g.useState(new Set);g.useEffect(()=>{try{const w=JSON.parse(t);if(typeof w=="object"&&w!==null&&!Array.isArray(w)){const _={},I={};for(const[F,J]of Object.entries(w))F.startsWith("_")||F.startsWith("$")?I[F]=J:_[F]=J;u(_),p(I),m(I._form_schema&&typeof I._form_schema=="object"?I._form_schema:null),f(!1)}}catch{f(!0)}},[t]);const k=g.useCallback(w=>{u(w),e(JSON.stringify({...w,...d},null,2))},[d,e]),j=g.useCallback((w,_)=>{k({...c,[w]:_})},[c,k]),N=g.useCallback(w=>{h(_=>{if(_.has(w))return _;const I=new Set(_);return I.add(w),I})},[]);if(b)return n.jsx("p",{className:"text-xs text-status-error",children:"Unable to parse resolver data as form. Use the JSON editor below."});const v=Object.entries(c);if(v.length===0)return n.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No resolver fields defined."});const A=x==null?void 0:x["x-lt-order"],O=A?[...v].sort((w,_)=>{const I=A.indexOf(w[0]),F=A.indexOf(_[0]);return(I===-1?1/0:I)-(F===-1?1/0:F)}):v,S={...i??{},resolver:c,input:c},P=O.filter(([w,_])=>{var F;const I=(F=x==null?void 0:x.properties)==null?void 0:F[w];return K(I==null?void 0:I["x-lt-showIf"],S)?!Hr(I,_):!1}),E=new Set((x==null?void 0:x.required)??[]),T=x==null?void 0:x["x-lt-layout"],C=x==null?void 0:x.title,$=x==null?void 0:x.description,V=typeof(x==null?void 0:x["x-lt-help"])=="string"||typeof(x==null?void 0:x["x-lt-context"])=="string",U=[];for(const w of P){const[_]=w,I=(Et=x==null?void 0:x.properties)==null?void 0:Et[_],F=((It=I==null?void 0:I["x-lt-section"])==null?void 0:It.trim())||null,J=U[U.length-1];!J||J.name!==F?U.push({name:F,entries:[w]}):J.entries.push(w)}const ct=([w,_])=>{var Ot;const I=(Ot=x==null?void 0:x.properties)==null?void 0:Ot[w],F=(I==null?void 0:I.readOnly)===!0,J=(I==null?void 0:I["x-lt-span"])??1,Ct=E.has(w),Ee=y.has(w)||!!s,Ie=pe(_,I,Ct,Ee,S);return n.jsx("div",{className:`animate-[field-enter_0.2s_ease-out] ${T==="two-column"&&J>=2?"col-span-full":""}`,children:n.jsx(Ae,{fieldKey:w,value:_,onChange:Ce=>j(w,Ce),onBlur:()=>N(w),schema:x,isRequired:Ct,isReadOnly:F,error:Ie,escalationContext:S,submitAttempted:!!s})},w)},tt=n.jsxs("div",{className:r?"pointer-events-none":void 0,inert:r||void 0,"aria-disabled":r||void 0,children:[C&&n.jsxs("div",{className:"mb-1 flex items-center gap-1.5",children:[n.jsx("h3",{className:"heading-3",children:C}),V&&o&&n.jsx("button",{type:"button",onClick:o,title:"Open instructions","aria-label":"Open instructions",className:"p-1 rounded-md text-text-tertiary hover:text-accent hover:bg-surface-hover transition-colors",children:n.jsx(ne,{className:"w-4 h-4",strokeWidth:1.5})})]}),$&&n.jsx("p",{className:"text-sm text-text-secondary leading-relaxed mb-6",children:$}),n.jsx("div",{className:"space-y-8",children:U.map((w,_)=>n.jsx(di,{name:w.name,entries:w.entries,formSchema:x,layout:T,renderField:ct},w.name??`__s${_}`))})]});return r?n.jsx(ts,{hint:l,onLockedClick:a,children:tt}):n.jsx("div",{className:"pb-8 max-w-form",children:tt})}export{le as E,ji as F,Vs as L,ui as R,kt as W,Ni as a,Pt as b,Tt as c,G as d,Gs as e,ge as f,Ai as g,Ls as h,Cr as i,Xt as j,Ss as l,vi as p,ys as r,wi as s,he as u,fe as v,ki as w};
8
- //# sourceMappingURL=ResolverForm-B1_x8Blv.js.map