@hotmeshio/long-tail 0.25.0 → 0.25.2

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 (282) hide show
  1. package/build/api/escalations/batch-flag.d.ts +19 -0
  2. package/build/api/escalations/batch-flag.js +138 -0
  3. package/build/api/escalations/index.d.ts +2 -0
  4. package/build/api/escalations/index.js +8 -1
  5. package/build/api/escalations/roster-action.d.ts +37 -0
  6. package/build/api/escalations/roster-action.js +179 -0
  7. package/build/api/scan-codes/choice-roles.d.ts +3 -0
  8. package/build/api/scan-codes/choice-roles.js +48 -0
  9. package/build/api/scan-codes/choice.js +8 -0
  10. package/build/api/scan-codes/fill-labels.d.ts +15 -0
  11. package/build/api/scan-codes/fill-labels.js +99 -0
  12. package/build/api/scan-codes/hold.js +1 -0
  13. package/build/api/scan-codes/present.js +7 -2
  14. package/build/api/scan-codes/verb-fill.js +22 -5
  15. package/build/routes/escalations/resolve.js +45 -0
  16. package/build/sdk/index.d.ts +11 -0
  17. package/build/sdk/index.js +3 -0
  18. package/build/services/domain/seed.d.ts +12 -10
  19. package/build/services/domain/seed.js +31 -25
  20. package/build/services/escalation/batch-flag.d.ts +25 -0
  21. package/build/services/escalation/batch-flag.js +51 -0
  22. package/build/services/escalation/index.d.ts +1 -0
  23. package/build/services/escalation/index.js +1 -0
  24. package/build/services/escalation/roster.d.ts +3 -1
  25. package/build/services/escalation/roster.js +6 -1
  26. package/build/services/scan-code/validate-subject.js +16 -0
  27. package/build/services/scan-code/validate.js +7 -0
  28. package/build/shared/form-validation/index.d.ts +1 -0
  29. package/build/shared/form-validation/index.js +1 -0
  30. package/build/shared/form-validation/x-lt-actions.d.ts +80 -0
  31. package/build/shared/form-validation/x-lt-actions.js +133 -0
  32. package/build/shared/form-validation/x-lt-roster.d.ts +2 -0
  33. package/build/shared/form-validation/x-lt-roster.js +50 -6
  34. package/build/start/workers.d.ts +3 -0
  35. package/build/start/workers.js +15 -5
  36. package/build/tsconfig.tsbuildinfo +1 -1
  37. package/build/types/escalation.d.ts +19 -0
  38. package/build/types/escalation.js +4 -0
  39. package/build/types/index.d.ts +1 -1
  40. package/build/types/scan-choice.d.ts +9 -0
  41. package/build/types/scan-code/response.d.ts +2 -0
  42. package/build/types/scan-code/rule.d.ts +17 -0
  43. package/build/types/startup.d.ts +8 -1
  44. package/dashboard/dist/assets/{AdminDashboard-DWVRAu63.js → AdminDashboard-B8MqNLiB.js} +2 -2
  45. package/dashboard/dist/assets/{AdminDashboard-DWVRAu63.js.map → AdminDashboard-B8MqNLiB.js.map} +1 -1
  46. package/dashboard/dist/assets/{AgentConfigPage-Exjtjbvp.js → AgentConfigPage-Yg81Eiuo.js} +2 -2
  47. package/dashboard/dist/assets/{AgentConfigPage-Exjtjbvp.js.map → AgentConfigPage-Yg81Eiuo.js.map} +1 -1
  48. package/dashboard/dist/assets/{AgentDetailPage-nDbZo6RB.js → AgentDetailPage-ZUGYEONO.js} +3 -3
  49. package/dashboard/dist/assets/{AgentDetailPage-nDbZo6RB.js.map → AgentDetailPage-ZUGYEONO.js.map} +1 -1
  50. package/dashboard/dist/assets/{AgentsPage-Dsk9iHps.js → AgentsPage-CZIWMwak.js} +2 -2
  51. package/dashboard/dist/assets/{AgentsPage-Dsk9iHps.js.map → AgentsPage-CZIWMwak.js.map} +1 -1
  52. package/dashboard/dist/assets/AvailableEscalationsPage-BVtpc4xO.js +2 -0
  53. package/dashboard/dist/assets/{AvailableEscalationsPage-D1mCqj8Z.js.map → AvailableEscalationsPage-BVtpc4xO.js.map} +1 -1
  54. package/dashboard/dist/assets/{BotPicker-u5760MWZ.js → BotPicker-8bf0yOCT.js} +2 -2
  55. package/dashboard/dist/assets/{BotPicker-u5760MWZ.js.map → BotPicker-8bf0yOCT.js.map} +1 -1
  56. package/dashboard/dist/assets/{BulkAssignModal-CtISXXmW.js → BulkAssignModal-B2lr1J6P.js} +2 -2
  57. package/dashboard/dist/assets/{BulkAssignModal-CtISXXmW.js.map → BulkAssignModal-B2lr1J6P.js.map} +1 -1
  58. package/dashboard/dist/assets/{CapabilitiesPage-BKIlrQfU.js → CapabilitiesPage-BQQBR2sj.js} +2 -2
  59. package/dashboard/dist/assets/{CapabilitiesPage-BKIlrQfU.js.map → CapabilitiesPage-BQQBR2sj.js.map} +1 -1
  60. package/dashboard/dist/assets/{CollapsibleSection-DlBVTFqc.js → CollapsibleSection-DFW8TYyU.js} +2 -2
  61. package/dashboard/dist/assets/{CollapsibleSection-DlBVTFqc.js.map → CollapsibleSection-DFW8TYyU.js.map} +1 -1
  62. package/dashboard/dist/assets/{ConfirmDeleteModal-Pabkchg_.js → ConfirmDeleteModal-DGlOlQAo.js} +2 -2
  63. package/dashboard/dist/assets/{ConfirmDeleteModal-Pabkchg_.js.map → ConfirmDeleteModal-DGlOlQAo.js.map} +1 -1
  64. package/dashboard/dist/assets/{ConnectedAppsPage-DG2YZGN3.js → ConnectedAppsPage-CIM9gzHj.js} +2 -2
  65. package/dashboard/dist/assets/{ConnectedAppsPage-DG2YZGN3.js.map → ConnectedAppsPage-CIM9gzHj.js.map} +1 -1
  66. package/dashboard/dist/assets/{CountdownTimer-5t8S2qMi.js → CountdownTimer-BD_iWm6S.js} +2 -2
  67. package/dashboard/dist/assets/{CountdownTimer-5t8S2qMi.js.map → CountdownTimer-BD_iWm6S.js.map} +1 -1
  68. package/dashboard/dist/assets/{CredentialsPage-CPVbYQow.js → CredentialsPage-CTtUkvoD.js} +2 -2
  69. package/dashboard/dist/assets/{CredentialsPage-CPVbYQow.js.map → CredentialsPage-CTtUkvoD.js.map} +1 -1
  70. package/dashboard/dist/assets/{CronLabel-C7UbTrO-.js → CronLabel-rZMptkYQ.js} +2 -2
  71. package/dashboard/dist/assets/{CronLabel-C7UbTrO-.js.map → CronLabel-rZMptkYQ.js.map} +1 -1
  72. package/dashboard/dist/assets/{DropZone-DCZpORx-.js → DropZone-u1JGfR9G.js} +2 -2
  73. package/dashboard/dist/assets/{DropZone-DCZpORx-.js.map → DropZone-u1JGfR9G.js.map} +1 -1
  74. package/dashboard/dist/assets/{ElapsedCell-Yz7-LbtE.js → ElapsedCell-CmK9gHC5.js} +2 -2
  75. package/dashboard/dist/assets/{ElapsedCell-Yz7-LbtE.js.map → ElapsedCell-CmK9gHC5.js.map} +1 -1
  76. package/dashboard/dist/assets/{EntityTimelinePanel-xgPRdKEq.js → EntityTimelinePanel-Cfg0EMZs.js} +2 -2
  77. package/dashboard/dist/assets/{EntityTimelinePanel-xgPRdKEq.js.map → EntityTimelinePanel-Cfg0EMZs.js.map} +1 -1
  78. package/dashboard/dist/assets/{EscalationListSchemaPage-CqCd-y6B.js → EscalationListSchemaPage-CPcbC1-9.js} +3 -3
  79. package/dashboard/dist/assets/{EscalationListSchemaPage-CqCd-y6B.js.map → EscalationListSchemaPage-CPcbC1-9.js.map} +1 -1
  80. package/dashboard/dist/assets/{EscalationSchemaPage-D8YVQNph.js → EscalationSchemaPage-BsYdNVN7.js} +3 -3
  81. package/dashboard/dist/assets/{EscalationSchemaPage-D8YVQNph.js.map → EscalationSchemaPage-BsYdNVN7.js.map} +1 -1
  82. package/dashboard/dist/assets/EscalationTimeline-D1enxZDs.js +2 -0
  83. package/dashboard/dist/assets/{EscalationTimeline-D6jrDcBb.js.map → EscalationTimeline-D1enxZDs.js.map} +1 -1
  84. package/dashboard/dist/assets/{EscalationTitleSelect-CGGT-QTu.js → EscalationTitleSelect-DwqhnPKX.js} +2 -2
  85. package/dashboard/dist/assets/{EscalationTitleSelect-CGGT-QTu.js.map → EscalationTitleSelect-DwqhnPKX.js.map} +1 -1
  86. package/dashboard/dist/assets/{EscalationsOverview-B7O4ttP4.js → EscalationsOverview-ChuKh02E.js} +2 -2
  87. package/dashboard/dist/assets/{EscalationsOverview-B7O4ttP4.js.map → EscalationsOverview-ChuKh02E.js.map} +1 -1
  88. package/dashboard/dist/assets/{EventTable-DJniXnhe.js → EventTable-GqZIKPce.js} +2 -2
  89. package/dashboard/dist/assets/{EventTable-DJniXnhe.js.map → EventTable-GqZIKPce.js.map} +1 -1
  90. package/dashboard/dist/assets/{FilterBar-f-LEKcHI.js → FilterBar-CqPFZkVU.js} +2 -2
  91. package/dashboard/dist/assets/{FilterBar-f-LEKcHI.js.map → FilterBar-CqPFZkVU.js.map} +1 -1
  92. package/dashboard/dist/assets/{GraphInvokePage-CR0MtYv8.js → GraphInvokePage-_fB7mtBU.js} +2 -2
  93. package/dashboard/dist/assets/{GraphInvokePage-CR0MtYv8.js.map → GraphInvokePage-_fB7mtBU.js.map} +1 -1
  94. package/dashboard/dist/assets/{HomePage-HVw7T5ER.js → HomePage-BXA0Cz0F.js} +2 -2
  95. package/dashboard/dist/assets/{HomePage-HVw7T5ER.js.map → HomePage-BXA0Cz0F.js.map} +1 -1
  96. package/dashboard/dist/assets/{ListToolbar-CTGK5BXW.js → ListToolbar-Bf4DFITI.js} +2 -2
  97. package/dashboard/dist/assets/{ListToolbar-CTGK5BXW.js.map → ListToolbar-Bf4DFITI.js.map} +1 -1
  98. package/dashboard/dist/assets/{McpOverview-B2bbKKu2.js → McpOverview-H61XQRji.js} +2 -2
  99. package/dashboard/dist/assets/{McpOverview-B2bbKKu2.js.map → McpOverview-H61XQRji.js.map} +1 -1
  100. package/dashboard/dist/assets/{McpQueryDetailPage-DgLxwwJy.js → McpQueryDetailPage-wbwK8WWq.js} +2 -2
  101. package/dashboard/dist/assets/{McpQueryDetailPage-DgLxwwJy.js.map → McpQueryDetailPage-wbwK8WWq.js.map} +1 -1
  102. package/dashboard/dist/assets/{McpQueryPage-CSkczeJP.js → McpQueryPage-CYvVEk3G.js} +2 -2
  103. package/dashboard/dist/assets/{McpQueryPage-CSkczeJP.js.map → McpQueryPage-CYvVEk3G.js.map} +1 -1
  104. package/dashboard/dist/assets/{McpRunDetailPage-CrUsDPRD.js → McpRunDetailPage-TZBX68i4.js} +2 -2
  105. package/dashboard/dist/assets/{McpRunDetailPage-CrUsDPRD.js.map → McpRunDetailPage-TZBX68i4.js.map} +1 -1
  106. package/dashboard/dist/assets/{McpRunsPage-twxFdTtJ.js → McpRunsPage-Cu91Mh52.js} +2 -2
  107. package/dashboard/dist/assets/{McpRunsPage-twxFdTtJ.js.map → McpRunsPage-Cu91Mh52.js.map} +1 -1
  108. package/dashboard/dist/assets/{NamespacePill-CSZT2fA4.js → NamespacePill-C5epAgq6.js} +2 -2
  109. package/dashboard/dist/assets/{NamespacePill-CSZT2fA4.js.map → NamespacePill-C5epAgq6.js.map} +1 -1
  110. package/dashboard/dist/assets/{OperationsPage-gOVMrL_a.js → OperationsPage-D-6sKw6y.js} +3 -3
  111. package/dashboard/dist/assets/{OperationsPage-gOVMrL_a.js.map → OperationsPage-D-6sKw6y.js.map} +1 -1
  112. package/dashboard/dist/assets/OperatorDashboard-DD8JUU3L.js +2 -0
  113. package/dashboard/dist/assets/{OperatorDashboard-BoeZIyup.js.map → OperatorDashboard-DD8JUU3L.js.map} +1 -1
  114. package/dashboard/dist/assets/{PageHeader-C4z1ExF7.js → PageHeader-BSWIspNB.js} +2 -2
  115. package/dashboard/dist/assets/{PageHeader-C4z1ExF7.js.map → PageHeader-BSWIspNB.js.map} +1 -1
  116. package/dashboard/dist/assets/{PageHeaderWithStats-B_f_Sz_Q.js → PageHeaderWithStats-DDjopQ-k.js} +2 -2
  117. package/dashboard/dist/assets/{PageHeaderWithStats-B_f_Sz_Q.js.map → PageHeaderWithStats-DDjopQ-k.js.map} +1 -1
  118. package/dashboard/dist/assets/{PersonaDetailPage-CDktk1mi.js → PersonaDetailPage-CGri6okV.js} +2 -2
  119. package/dashboard/dist/assets/{PersonaDetailPage-CDktk1mi.js.map → PersonaDetailPage-CGri6okV.js.map} +1 -1
  120. package/dashboard/dist/assets/{PersonasPage-Bs097x07.js → PersonasPage-DtHW6-Qx.js} +2 -2
  121. package/dashboard/dist/assets/{PersonasPage-Bs097x07.js.map → PersonasPage-DtHW6-Qx.js.map} +1 -1
  122. package/dashboard/dist/assets/PortalPage-Dgbk_mzr.js +2 -0
  123. package/dashboard/dist/assets/{PortalPage-DjfjerpF.js.map → PortalPage-Dgbk_mzr.js.map} +1 -1
  124. package/dashboard/dist/assets/{ProcessDetailPage-B30RatjD.js → ProcessDetailPage-BdkacBrD.js} +2 -2
  125. package/dashboard/dist/assets/{ProcessDetailPage-B30RatjD.js.map → ProcessDetailPage-BdkacBrD.js.map} +1 -1
  126. package/dashboard/dist/assets/{ProcessesListPage-DrvjzgWT.js → ProcessesListPage-DO5A-OfZ.js} +2 -2
  127. package/dashboard/dist/assets/{ProcessesListPage-DrvjzgWT.js.map → ProcessesListPage-DO5A-OfZ.js.map} +1 -1
  128. package/dashboard/dist/assets/ResolverForm-CqGE5lf-.js +8 -0
  129. package/dashboard/dist/assets/ResolverForm-CqGE5lf-.js.map +1 -0
  130. package/dashboard/dist/assets/{RoleDetailPage-ClYgn-3d.js → RoleDetailPage-DgVp0Hih.js} +2 -2
  131. package/dashboard/dist/assets/{RoleDetailPage-ClYgn-3d.js.map → RoleDetailPage-DgVp0Hih.js.map} +1 -1
  132. package/dashboard/dist/assets/{RolePill-Bw_n7EpR.js → RolePill-CoETDpjF.js} +2 -2
  133. package/dashboard/dist/assets/{RolePill-Bw_n7EpR.js.map → RolePill-CoETDpjF.js.map} +1 -1
  134. package/dashboard/dist/assets/{RolesPage-B_3qWsvQ.js → RolesPage-BmsWq83e.js} +2 -2
  135. package/dashboard/dist/assets/{RolesPage-B_3qWsvQ.js.map → RolesPage-BmsWq83e.js.map} +1 -1
  136. package/dashboard/dist/assets/RosterWidget-DR-T4Izu.js +2 -0
  137. package/dashboard/dist/assets/RosterWidget-DR-T4Izu.js.map +1 -0
  138. package/dashboard/dist/assets/{RunAsSelector-CbJT50Hp.js → RunAsSelector-CyUWGp5P.js} +2 -2
  139. package/dashboard/dist/assets/{RunAsSelector-CbJT50Hp.js.map → RunAsSelector-CyUWGp5P.js.map} +1 -1
  140. package/dashboard/dist/assets/{ScanCodesPage-CIIDuh8w.js → ScanCodesPage-Cy05JOt4.js} +2 -2
  141. package/dashboard/dist/assets/{ScanCodesPage-CIIDuh8w.js.map → ScanCodesPage-Cy05JOt4.js.map} +1 -1
  142. package/dashboard/dist/assets/{ScanSchemeDetailPage-Bd3P3eyh.js → ScanSchemeDetailPage-BX1afzOg.js} +2 -2
  143. package/dashboard/dist/assets/{ScanSchemeDetailPage-Bd3P3eyh.js.map → ScanSchemeDetailPage-BX1afzOg.js.map} +1 -1
  144. package/dashboard/dist/assets/ScanStationPage-DLAB41tb.js +2 -0
  145. package/dashboard/dist/assets/ScanStationPage-DLAB41tb.js.map +1 -0
  146. package/dashboard/dist/assets/{ScopeBadge-CKgfwTy3.js → ScopeBadge-CGsTtqFr.js} +2 -2
  147. package/dashboard/dist/assets/{ScopeBadge-CKgfwTy3.js.map → ScopeBadge-CGsTtqFr.js.map} +1 -1
  148. package/dashboard/dist/assets/{StickyPagination-BNOuYZ1m.js → StickyPagination-BzUTnYYE.js} +2 -2
  149. package/dashboard/dist/assets/{StickyPagination-BNOuYZ1m.js.map → StickyPagination-BzUTnYYE.js.map} +1 -1
  150. package/dashboard/dist/assets/{StreamMessageDetail-ALVUnfF1.js → StreamMessageDetail-D0W1ekgG.js} +2 -2
  151. package/dashboard/dist/assets/{StreamMessageDetail-ALVUnfF1.js.map → StreamMessageDetail-D0W1ekgG.js.map} +1 -1
  152. package/dashboard/dist/assets/{SwimlaneTimeline-B5b8-xqI.js → SwimlaneTimeline-BPBwmwuO.js} +2 -2
  153. package/dashboard/dist/assets/{SwimlaneTimeline-B5b8-xqI.js.map → SwimlaneTimeline-BPBwmwuO.js.map} +1 -1
  154. package/dashboard/dist/assets/{TagInput-B6fMAqxd.js → TagInput-S7UuVT_M.js} +2 -2
  155. package/dashboard/dist/assets/{TagInput-B6fMAqxd.js.map → TagInput-S7UuVT_M.js.map} +1 -1
  156. package/dashboard/dist/assets/{TaskDetailPage-CoV3WcTA.js → TaskDetailPage-VuaIXISy.js} +2 -2
  157. package/dashboard/dist/assets/{TaskDetailPage-CoV3WcTA.js.map → TaskDetailPage-VuaIXISy.js.map} +1 -1
  158. package/dashboard/dist/assets/{TaskQueuePill-BnDp_DE6.js → TaskQueuePill-BlHNpYiZ.js} +2 -2
  159. package/dashboard/dist/assets/{TaskQueuePill-BnDp_DE6.js.map → TaskQueuePill-BlHNpYiZ.js.map} +1 -1
  160. package/dashboard/dist/assets/{TasksListPage-CkMmOYOE.js → TasksListPage-KaUSoqos.js} +2 -2
  161. package/dashboard/dist/assets/{TasksListPage-CkMmOYOE.js.map → TasksListPage-KaUSoqos.js.map} +1 -1
  162. package/dashboard/dist/assets/{TimeAgo-DVkFgECX.js → TimeAgo-C_E6u0fr.js} +2 -2
  163. package/dashboard/dist/assets/{TimeAgo-DVkFgECX.js.map → TimeAgo-C_E6u0fr.js.map} +1 -1
  164. package/dashboard/dist/assets/{TimestampCell-CfTc6Txy.js → TimestampCell-CUJiAmax.js} +2 -2
  165. package/dashboard/dist/assets/{TimestampCell-CfTc6Txy.js.map → TimestampCell-CUJiAmax.js.map} +1 -1
  166. package/dashboard/dist/assets/{ToolPill-BRZWo4l8.js → ToolPill-D40uLM_v.js} +2 -2
  167. package/dashboard/dist/assets/{ToolPill-BRZWo4l8.js.map → ToolPill-D40uLM_v.js.map} +1 -1
  168. package/dashboard/dist/assets/{ToolTestPanel-kvqZqM0A.js → ToolTestPanel-Ch5nQANh.js} +2 -2
  169. package/dashboard/dist/assets/{ToolTestPanel-kvqZqM0A.js.map → ToolTestPanel-Ch5nQANh.js.map} +1 -1
  170. package/dashboard/dist/assets/{TopicDetailPage-CjkAAyy8.js → TopicDetailPage-BprToO7w.js} +2 -2
  171. package/dashboard/dist/assets/{TopicDetailPage-CjkAAyy8.js.map → TopicDetailPage-BprToO7w.js.map} +1 -1
  172. package/dashboard/dist/assets/{TopicsPage-CJZnv50y.js → TopicsPage-8SmCnQ-E.js} +2 -2
  173. package/dashboard/dist/assets/{TopicsPage-CJZnv50y.js.map → TopicsPage-8SmCnQ-E.js.map} +1 -1
  174. package/dashboard/dist/assets/{UserName-CPJPZnN1.js → UserName-BkJryunF.js} +2 -2
  175. package/dashboard/dist/assets/{UserName-CPJPZnN1.js.map → UserName-BkJryunF.js.map} +1 -1
  176. package/dashboard/dist/assets/{WorkflowExecutionPage-46UV5pJd.js → WorkflowExecutionPage-B2S5ODie.js} +2 -2
  177. package/dashboard/dist/assets/{WorkflowExecutionPage-46UV5pJd.js.map → WorkflowExecutionPage-B2S5ODie.js.map} +1 -1
  178. package/dashboard/dist/assets/{WorkflowPill-Cly9Ln_3.js → WorkflowPill-DJLcK_CM.js} +2 -2
  179. package/dashboard/dist/assets/{WorkflowPill-Cly9Ln_3.js.map → WorkflowPill-DJLcK_CM.js.map} +1 -1
  180. package/dashboard/dist/assets/{WorkflowsDashboard-DtxYdQbQ.js → WorkflowsDashboard-CABuRCXp.js} +2 -2
  181. package/dashboard/dist/assets/{WorkflowsDashboard-DtxYdQbQ.js.map → WorkflowsDashboard-CABuRCXp.js.map} +1 -1
  182. package/dashboard/dist/assets/{WorkflowsOverview-Cg4LSfck.js → WorkflowsOverview-BPUHAj8T.js} +2 -2
  183. package/dashboard/dist/assets/{WorkflowsOverview-Cg4LSfck.js.map → WorkflowsOverview-BPUHAj8T.js.map} +1 -1
  184. package/dashboard/dist/assets/{YamlWorkflowDetailPage-Del-RCgi.js → YamlWorkflowDetailPage-DZGjT-Tl.js} +2 -2
  185. package/dashboard/dist/assets/{YamlWorkflowDetailPage-Del-RCgi.js.map → YamlWorkflowDetailPage-DZGjT-Tl.js.map} +1 -1
  186. package/dashboard/dist/assets/{YamlWorkflowsPage-BF6Jtx24.js → YamlWorkflowsPage-DIxHURlM.js} +2 -2
  187. package/dashboard/dist/assets/{YamlWorkflowsPage-BF6Jtx24.js.map → YamlWorkflowsPage-DIxHURlM.js.map} +1 -1
  188. package/dashboard/dist/assets/{agents-wL-3dMOX.js → agents-BnDp2rcb.js} +2 -2
  189. package/dashboard/dist/assets/{agents-wL-3dMOX.js.map → agents-BnDp2rcb.js.map} +1 -1
  190. package/dashboard/dist/assets/{bots-D72EsztP.js → bots-maURYoyr.js} +2 -2
  191. package/dashboard/dist/assets/{bots-D72EsztP.js.map → bots-maURYoyr.js.map} +1 -1
  192. package/dashboard/dist/assets/{capabilities-DXFo6bRb.js → capabilities-5-TakMUh.js} +2 -2
  193. package/dashboard/dist/assets/{capabilities-DXFo6bRb.js.map → capabilities-5-TakMUh.js.map} +1 -1
  194. package/dashboard/dist/assets/{controlplane-gQdOgVtH.js → controlplane-BXVVTWoh.js} +2 -2
  195. package/dashboard/dist/assets/{controlplane-gQdOgVtH.js.map → controlplane-BXVVTWoh.js.map} +1 -1
  196. package/dashboard/dist/assets/escalation-columns-v8gx8wFb.js +2 -0
  197. package/dashboard/dist/assets/{escalation-columns-CSE5wfWQ.js.map → escalation-columns-v8gx8wFb.js.map} +1 -1
  198. package/dashboard/dist/assets/escalation-items-OWntjDaH.js +2 -0
  199. package/dashboard/dist/assets/escalation-items-OWntjDaH.js.map +1 -0
  200. package/dashboard/dist/assets/{index-Btm8FtTQ.js → index-BIfY4mR2.js} +2 -2
  201. package/dashboard/dist/assets/{index-Btm8FtTQ.js.map → index-BIfY4mR2.js.map} +1 -1
  202. package/dashboard/dist/assets/{index-h1Useskt.js → index-BTm3-qwq.js} +2 -2
  203. package/dashboard/dist/assets/{index-h1Useskt.js.map → index-BTm3-qwq.js.map} +1 -1
  204. package/dashboard/dist/assets/{index-Cu0xdX2t.js → index-CR9rhAvN.js} +2 -2
  205. package/dashboard/dist/assets/{index-Cu0xdX2t.js.map → index-CR9rhAvN.js.map} +1 -1
  206. package/dashboard/dist/assets/index-CWKs10VQ.js +13 -0
  207. package/dashboard/dist/assets/{index-D1lfq5iZ.js.map → index-CWKs10VQ.js.map} +1 -1
  208. package/dashboard/dist/assets/index-CvKegIVe.js +3 -0
  209. package/dashboard/dist/assets/index-CvKegIVe.js.map +1 -0
  210. package/dashboard/dist/assets/{index-BaCDL5fh.js → index-D7peGNN0.js} +27 -27
  211. package/dashboard/dist/assets/index-D7peGNN0.js.map +1 -0
  212. package/dashboard/dist/assets/{index-CptTEhWp.js → index-D_ojXTgO.js} +2 -2
  213. package/dashboard/dist/assets/{index-CptTEhWp.js.map → index-D_ojXTgO.js.map} +1 -1
  214. package/dashboard/dist/assets/index-Dafrbwk_.js +2 -0
  215. package/dashboard/dist/assets/{index-BvH8T-jb.js.map → index-Dafrbwk_.js.map} +1 -1
  216. package/dashboard/dist/assets/{index-czgLyfSo.js → index-Dk7nwVpm.js} +2 -2
  217. package/dashboard/dist/assets/{index-czgLyfSo.js.map → index-Dk7nwVpm.js.map} +1 -1
  218. package/dashboard/dist/assets/{index-CDxOQ84B.js → index-DvkcyTE2.js} +2 -2
  219. package/dashboard/dist/assets/{index-CDxOQ84B.js.map → index-DvkcyTE2.js.map} +1 -1
  220. package/dashboard/dist/assets/{index-C1iuZ4Q5.js → index-WPVpyoD3.js} +2 -2
  221. package/dashboard/dist/assets/{index-C1iuZ4Q5.js.map → index-WPVpyoD3.js.map} +1 -1
  222. package/dashboard/dist/assets/{index-C-QQ5rKF.js → index-YGTGxcTF.js} +2 -2
  223. package/dashboard/dist/assets/{index-C-QQ5rKF.js.map → index-YGTGxcTF.js.map} +1 -1
  224. package/dashboard/dist/assets/{index-ujGmmwl6.js → index-vgHzaGmW.js} +2 -2
  225. package/dashboard/dist/assets/{index-ujGmmwl6.js.map → index-vgHzaGmW.js.map} +1 -1
  226. package/dashboard/dist/assets/{knowledge-150lsM68.js → knowledge-L_zY1zmy.js} +2 -2
  227. package/dashboard/dist/assets/{knowledge-150lsM68.js.map → knowledge-L_zY1zmy.js.map} +1 -1
  228. package/dashboard/dist/assets/{mcp-query-CDsSMaYq.js → mcp-query-CFbGudkb.js} +2 -2
  229. package/dashboard/dist/assets/{mcp-query-CDsSMaYq.js.map → mcp-query-CFbGudkb.js.map} +1 -1
  230. package/dashboard/dist/assets/{mcp-CRtY4v5W.js → mcp-wCWFRA0T.js} +2 -2
  231. package/dashboard/dist/assets/{mcp-CRtY4v5W.js.map → mcp-wCWFRA0T.js.map} +1 -1
  232. package/dashboard/dist/assets/{personas-C2Wm4ng1.js → personas-B_VIacZJ.js} +2 -2
  233. package/dashboard/dist/assets/{personas-C2Wm4ng1.js.map → personas-B_VIacZJ.js.map} +1 -1
  234. package/dashboard/dist/assets/{pipelines-BH0F9-jf.js → pipelines-Bv0Z8xQA.js} +2 -2
  235. package/dashboard/dist/assets/{pipelines-BH0F9-jf.js.map → pipelines-Bv0Z8xQA.js.map} +1 -1
  236. package/dashboard/dist/assets/{tasks-BkUVpaOa.js → tasks-DP6yaNZs.js} +2 -2
  237. package/dashboard/dist/assets/{tasks-BkUVpaOa.js.map → tasks-DP6yaNZs.js.map} +1 -1
  238. package/dashboard/dist/assets/{topics-Crl8HKHq.js → topics-UBSIcpSR.js} +2 -2
  239. package/dashboard/dist/assets/{topics-Crl8HKHq.js.map → topics-UBSIcpSR.js.map} +1 -1
  240. package/dashboard/dist/assets/{useDebouncedValue-Dk3r5xo-.js → useDebouncedValue-R62q3Xpx.js} +2 -2
  241. package/dashboard/dist/assets/{useDebouncedValue-Dk3r5xo-.js.map → useDebouncedValue-R62q3Xpx.js.map} +1 -1
  242. package/dashboard/dist/assets/{useNamespace-BXuyHKAs.js → useNamespace-CAaszJDE.js} +2 -2
  243. package/dashboard/dist/assets/{useNamespace-BXuyHKAs.js.map → useNamespace-CAaszJDE.js.map} +1 -1
  244. package/dashboard/dist/assets/{useYamlActivityEvents-DSlkjQfb.js → useYamlActivityEvents-emCp9U69.js} +2 -2
  245. package/dashboard/dist/assets/{useYamlActivityEvents-DSlkjQfb.js.map → useYamlActivityEvents-emCp9U69.js.map} +1 -1
  246. package/dashboard/dist/assets/validate-C7yskdEn.js +2 -0
  247. package/dashboard/dist/assets/validate-C7yskdEn.js.map +1 -0
  248. package/dashboard/dist/assets/{vendor-icons-C_DQEeBy.js → vendor-icons-DUYcKTjP.js} +2 -2
  249. package/dashboard/dist/assets/{vendor-icons-C_DQEeBy.js.map → vendor-icons-DUYcKTjP.js.map} +1 -1
  250. package/dashboard/dist/assets/{yaml-workflows-B230v5Za.js → yaml-workflows-C2sOwz1p.js} +2 -2
  251. package/dashboard/dist/assets/{yaml-workflows-B230v5Za.js.map → yaml-workflows-C2sOwz1p.js.map} +1 -1
  252. package/dashboard/dist/index.html +2 -2
  253. package/docs/accumulator.md +1 -1
  254. package/docs/api/http/escalations.md +33 -0
  255. package/docs/api/sdk/escalations.md +26 -1
  256. package/docs/code-owned-configuration.md +2 -2
  257. package/docs/domain-dictionary.md +19 -3
  258. package/docs/faceted-routing.md +4 -3
  259. package/docs/hitl/escalation.md +9 -0
  260. package/docs/hitl/x-lt-display.md +1 -1
  261. package/docs/hitl/x-lt-embed.md +2 -0
  262. package/docs/hitl/x-lt-roster.md +32 -8
  263. package/docs/scan-codes.md +45 -3
  264. package/package.json +2 -2
  265. package/dashboard/dist/assets/AvailableEscalationsPage-D1mCqj8Z.js +0 -2
  266. package/dashboard/dist/assets/EscalationTimeline-D6jrDcBb.js +0 -2
  267. package/dashboard/dist/assets/FormattedValue-CUtv1g3k.js +0 -2
  268. package/dashboard/dist/assets/FormattedValue-CUtv1g3k.js.map +0 -1
  269. package/dashboard/dist/assets/OperatorDashboard-BoeZIyup.js +0 -2
  270. package/dashboard/dist/assets/PortalPage-DjfjerpF.js +0 -2
  271. package/dashboard/dist/assets/ResolverForm-Bl8Pibyz.js +0 -8
  272. package/dashboard/dist/assets/ResolverForm-Bl8Pibyz.js.map +0 -1
  273. package/dashboard/dist/assets/ScanStationPage-BiO34nov.js +0 -2
  274. package/dashboard/dist/assets/ScanStationPage-BiO34nov.js.map +0 -1
  275. package/dashboard/dist/assets/escalation-columns-CSE5wfWQ.js +0 -2
  276. package/dashboard/dist/assets/escalation-items-BIgBWbaw.js +0 -2
  277. package/dashboard/dist/assets/escalation-items-BIgBWbaw.js.map +0 -1
  278. package/dashboard/dist/assets/index-BaCDL5fh.js.map +0 -1
  279. package/dashboard/dist/assets/index-BvH8T-jb.js +0 -2
  280. package/dashboard/dist/assets/index-CED9cLE2.js +0 -3
  281. package/dashboard/dist/assets/index-CED9cLE2.js.map +0 -1
  282. package/dashboard/dist/assets/index-D1lfq5iZ.js +0 -13
@@ -1,2 +0,0 @@
1
- import{j as t}from"./vendor-query-DvWWuNIB.js";import{a$ as o,bg as c,g as u}from"./index-BaCDL5fh.js";import{U as p}from"./UserName-CPJPZnN1.js";const r=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/,i="—",a={AGE:"age",AGO:"ago",DATE:"date",USER:"user"};function m(e){return e===a.AGE||e===a.AGO}function x({raw:e,format:s}){if(!e||e===i)return t.jsx("span",{className:"text-text-quaternary",children:i});if(s===a.USER)return t.jsx(p,{userId:e,className:"block truncate"});const n=r.test(e)||!Number.isNaN(new Date(e).getTime())&&(m(s)||s===a.DATE);return m(s)&&n?t.jsx("span",{title:c(e),className:"tabular-nums whitespace-nowrap",children:o(e)}):n&&(s===a.DATE||r.test(e))?t.jsx(u,{date:e,format:"datetime",className:"text-text-primary whitespace-nowrap"}):t.jsx(t.Fragment,{children:e})}export{i as E,x as F,m as i};
2
- //# sourceMappingURL=FormattedValue-CUtv1g3k.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormattedValue-CUtv1g3k.js","sources":["../../src/components/common/display/FormattedValue.tsx"],"sourcesContent":["import { DateValue } from './DateValue';\nimport { UserName } from './UserName';\nimport { formatAgoCompact } from '../../../lib/format';\nimport { formatDisplayDateTime } from '../../../lib/display-zone';\n\nconst ISO_DATETIME = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}/;\nexport const EM_DASH = '—';\n\n/** Value formats an author may name on a column, card field, or fact. `ago` is the spoken form of `age`. */\nexport const FIELD_FORMATS = {\n AGE: 'age',\n AGO: 'ago',\n DATE: 'date',\n USER: 'user',\n} as const;\n\n/** True when the format renders as an age that ages with the clock. */\nexport function isAgeFormat(format?: string): boolean {\n return format === FIELD_FORMATS.AGE || format === FIELD_FORMATS.AGO;\n}\n\n/**\n * Render a value with a little care: `age`/`ago` turns a timestamp into a\n * compact age (\"12m\", \"3h\") with the absolute time as its tooltip; `date`\n * renders the full date, hoverable, and so does any ISO datetime with no\n * format; `user` resolves a user id to a display name; an empty value a quiet\n * em dash; anything else plain text.\n */\nexport function FormattedValue({ raw, format }: { raw: string; format?: string }) {\n if (!raw || raw === EM_DASH) return <span className=\"text-text-quaternary\">{EM_DASH}</span>;\n if (format === FIELD_FORMATS.USER) return <UserName userId={raw} className=\"block truncate\" />;\n const isDate = ISO_DATETIME.test(raw) || !Number.isNaN(new Date(raw).getTime()) && (isAgeFormat(format) || format === FIELD_FORMATS.DATE);\n if (isAgeFormat(format) && isDate) {\n return <span title={formatDisplayDateTime(raw)} className=\"tabular-nums whitespace-nowrap\">{formatAgoCompact(raw)}</span>;\n }\n if (isDate && (format === FIELD_FORMATS.DATE || ISO_DATETIME.test(raw))) {\n return <DateValue date={raw} format=\"datetime\" className=\"text-text-primary whitespace-nowrap\" />;\n }\n return <>{raw}</>;\n}\n"],"names":["ISO_DATETIME","EM_DASH","FIELD_FORMATS","isAgeFormat","format","FormattedValue","raw","jsx","UserName","isDate","formatDisplayDateTime","formatAgoCompact","DateValue"],"mappings":"kJAKA,MAAMA,EAAe,iCACRC,EAAU,IAGVC,EAAgB,CAC3B,IAAK,MACL,IAAK,MACL,KAAM,OACN,KAAM,MACR,EAGO,SAASC,EAAYC,EAA0B,CACpD,OAAOA,IAAWF,EAAc,KAAOE,IAAWF,EAAc,GAClE,CASO,SAASG,EAAe,CAAE,IAAAC,EAAK,OAAAF,GAA4C,CAChF,GAAI,CAACE,GAAOA,IAAQL,SAAgBM,EAAAA,IAAC,OAAA,CAAK,UAAU,uBAAwB,SAAAN,CAAA,CAAQ,EACpF,GAAIG,IAAWF,EAAc,KAAM,aAAQM,EAAA,CAAS,OAAQF,EAAK,UAAU,gBAAA,CAAiB,EAC5F,MAAMG,EAAST,EAAa,KAAKM,CAAG,GAAK,CAAC,OAAO,MAAM,IAAI,KAAKA,CAAG,EAAE,SAAS,IAAMH,EAAYC,CAAM,GAAKA,IAAWF,EAAc,MACpI,OAAIC,EAAYC,CAAM,GAAKK,EAClBF,EAAAA,IAAC,OAAA,CAAK,MAAOG,EAAsBJ,CAAG,EAAG,UAAU,iCAAkC,SAAAK,EAAiBL,CAAG,CAAA,CAAE,EAEhHG,IAAWL,IAAWF,EAAc,MAAQF,EAAa,KAAKM,CAAG,SAC3DM,EAAA,CAAU,KAAMN,EAAK,OAAO,WAAW,UAAU,sCAAsC,oBAEvF,SAAAA,CAAA,CAAI,CAChB"}
@@ -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-BaCDL5fh.js";import{u as le}from"./useFilterParams-DBRw1Hcv.js";import{u as ce}from"./useDebouncedValue-Dk3r5xo-.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-BNOuYZ1m.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-CSE5wfWQ.js";import{E as ye}from"./EscalationTitleSelect-CGGT-QTu.js";import{L as ve}from"./ListToolbar-CTGK5BXW.js";import{y as Pe,al as Se,am as je,P as Ce,ap as Re}from"./vendor-icons-C_DQEeBy.js";import{u as Ee,a as ke,f as Le}from"./vendor-react-_9U4mKFr.js";import"./EmptyState-DgC_6njU.js";import"./useContainerWidth-DSLp1gEm.js";import"./escalation-items-BIgBWbaw.js";import"./StatusBadge-DHVwxre2.js";import"./FormattedValue-CUtv1g3k.js";import"./UserName-CPJPZnN1.js";import"./EntityTimelinePanel-xgPRdKEq.js";import"./FilterBar-f-LEKcHI.js";import"./PriorityBadge-r33mpDju.js";import"./RolePill-Bw_n7EpR.js";import"./WorkflowPill-Cly9Ln_3.js";import"./CountdownTimer-5t8S2qMi.js";function ts(){var T,V;const z=Ee(),{user:i,isSuperAdmin:F,hasRoleType:_}=Z(),{filters:o,setFilter:y,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(),v=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(v?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,v,P]),l=ke(),{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,E=!!m&&!!p&&!!p["x-lt-layout"]&&p["x-lt-layout"]!=="table",u=E&&(C?C==="rich":!0),k={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({...k,limit:t.pageSize,offset:t.offset}),L=(r==null?void 0:r.escalations)??[],h=(r==null?void 0:r.total)??0,Q=me("/escalations",{...k,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(ye,{role:o.role,options:I,onChange:s=>y("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:y,roles:(b==null?void 0:b.roles)??[],types:(w==null?void 0:w.types)??[],actions:e.jsxs(e.Fragment,{children:[e.jsx(ve,{onRefresh:()=>D(),isFetching:G,apiPath:Q}),E&&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-BoeZIyup.js.map
@@ -1,2 +0,0 @@
1
- import{a as f,j as e}from"./vendor-query-DvWWuNIB.js";import{aY as w,bb as R,bl as N,bm as I,a3 as F,bn as v,a6 as j,Z as _,w as O,bo as M,aW as k,j as $,b0 as A,a0 as V}from"./index-BaCDL5fh.js";import{u as W}from"./useContainerWidth-DSLp1gEm.js";import{u as T,E as q,a as B,b as z}from"./EscalationTimeline-D6jrDcBb.js";import{a as K}from"./escalation-columns-CSE5wfWQ.js";import{P as Y,al as G,am as H,an as U,aB as D,L as S}from"./vendor-icons-C_DQEeBy.js";import{u as Q,L as y,e as X}from"./vendor-react-_9U4mKFr.js";import"./escalation-items-BIgBWbaw.js";import"./StatusBadge-DHVwxre2.js";import"./DataTable-FjFhx0SE.js";import"./EmptyState-DgC_6njU.js";import"./UserName-CPJPZnN1.js";import"./FormattedValue-CUtv1g3k.js";import"./StickyPagination-BNOuYZ1m.js";import"./EntityTimelinePanel-xgPRdKEq.js";import"./FilterBar-f-LEKcHI.js";import"./PriorityBadge-r33mpDju.js";import"./RolePill-Bw_n7EpR.js";import"./WorkflowPill-Cly9Ln_3.js";import"./CountdownTimer-5t8S2qMi.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(B,{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(z,{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=M(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=$("LIST");A(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-DjfjerpF.js.map
@@ -1,8 +0,0 @@
1
- import{a as g,j as s,d as Ve}from"./vendor-query-DvWWuNIB.js";import{aj as ft,ak as le,ac as ce,aS as Be,aT as de,aB as ht,aU as Xe,Z as Ye,ax as ze,aV as Qe,aW as Ke,n as Ze,q as ts,U as es,aX as ss,aY as ns,A as rs,aZ as is,a_ as os,aN as as,a$ as ls,b0 as cs,b1 as ds,S as us,b2 as xs,b3 as ps,aA as fs,O as ms,H as gs,b as bs,b4 as ys,a as hs,b5 as js,b6 as Ns,b7 as vs,ag as ks,an as ws,b8 as As,b9 as Es,ba as Is,bb as Cs,bc as Os,bd as Ts,be as _s,bf as Rs,a3 as Ls,M as Ss,bg as Fs,bh as $s,l as Ms,bi as Ds,bj as Ps,a2 as Ws,aM as Us,bk as Gs,bl as qs,bm as Hs,G as Js,bn as Vs,bo as ue,bp as Bs,bq as Xs,br as Ys,bs as zs,r as Qs,a7 as Ks,bt as Zs,ay as tn,bu as en,bv as sn,bw as nn,bx as rn,by as on,ar as an,bz as ln,g as cn,aD as dn,bA as un,bB as xn,bC as pn,ao as xe,$ as fn,W as mn,bD as gn,a6 as pe,aK as bn,bE as yn,X as hn}from"./vendor-icons-C_DQEeBy.js";import{m as fe,g as et,H as jn,h as Nn,c as G,r as jt,j as me,b as vn,f as ge,k as kn}from"./escalation-items-BIgBWbaw.js";import{ah as nt,aq as wn,a$ as Nt,$ as An,a9 as En,s as be,b0 as In,m as Cn,J as On,b1 as Tn,O as _n,b2 as Rn,aw as Ln,b3 as Sn,aZ as Fn,i as $n,M as ye,az as Mn,aA as Dn,aB as Pn,b4 as Wn,b5 as Un}from"./index-BaCDL5fh.js";import{L as mt}from"./vendor-react-_9U4mKFr.js";import{S as Gn}from"./StatusBadge-DHVwxre2.js";import{E as qn}from"./constants-CeBBTzf5.js";import{V as Hn}from"./WorkflowPill-Cly9Ln_3.js";const he=g.createContext(null),lo=he.Provider;function Jn(t){const e=g.useContext(he);return e&&e.field===t?e:null}function je({notice:t}){return t?t.error?s.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):s.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 Vn={SCHEMA_VALIDATION:"schema_validation"};function Bn(t){return typeof t=="object"&&t!==null&&t.code===Vn.SCHEMA_VALIDATION&&Array.isArray(t.violations)}function $t(t,e={}){const n=fe(e,t),r={_form_schema:t};for(const[i,o]of Object.entries(t.properties??{})){const a=o.type==="object"?{}:"";r[i]=n[i]??o.default??a}return JSON.stringify(r,null,2)}function B(t,e){const n=e==null?void 0:e.title;if(typeof n=="string"&&n.trim().length>0)return n.trim();const r=t.split(/[_-]+/).filter(Boolean);return r.length<=1?t:r.map(i=>Xn(i)?i:i.charAt(0).toUpperCase()+i.slice(1)).join(" ")}function Xn(t){return t.length>1&&t===t.toUpperCase()&&/[A-Z]/.test(t)}function Ne({errors:t,schema:e}){const n=r=>{const i=document.querySelector(`[data-field-key="${r}"]`);i&&(i.scrollIntoView({behavior:"smooth",block:"center"}),i.focus({preventScroll:!0}))};return t.length===0?s.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No errors to display."}):s.jsxs("div",{className:"space-y-1",role:"alert","aria-live":"polite",children:[s.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"]}),s.jsx("div",{className:"space-y-1.5",children:t.map(({field:r,message:i})=>{var o;return s.jsxs("button",{onClick:()=>n(r),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:[s.jsx(ft,{className:"w-3.5 h-3.5 mt-0.5 shrink-0 text-status-error/60 group-hover:text-status-error transition-colors"}),s.jsxs("div",{children:[s.jsx("p",{className:"text-2xs font-semibold text-text-primary leading-snug",children:B(r,(o=e==null?void 0:e.properties)==null?void 0:o[r])}),s.jsx("p",{className:"text-2xs text-text-tertiary group-hover:text-text-secondary transition-colors leading-snug mt-0.5",children:i})]})]},r)})}),s.jsx("p",{className:"text-2xs text-text-quaternary mt-4 px-3",children:"Click an issue to scroll to and focus the field."})]})}const Yn=/\{\{\s*([^{}]+?)\s*\}\}/g;function dt(t){return typeof t=="string"&&/\{\{[^{}]+\}\}/.test(t)}function V(t,e){if(!e)return;const n=t.indexOf("."),r=e[n===-1?t:t.slice(0,n)];if(n===-1)return r;if(!(r===null||typeof r!="object"))return et(r,t.slice(n+1))}function vt(t,e){let n=!1;const r=t.replace(Yn,(i,o)=>{const a=V(o,e);return typeof a=="string"&&a.trim().length>0?a:typeof a=="number"&&Number.isFinite(a)?String(a):(n=!0,"")});return n?null:r}const zn="x-lt-scan",Qn="x-lt-scan-submit",Mt="x-lt-order",Kn="Expected {{expected}}";function K(t){const e=t==null?void 0:t[zn];if(!e||typeof e!="object"||Array.isArray(e))return null;const n=e,r=Array.isArray(n.schemes)?n.schemes.filter(o=>Number.isInteger(o)):[];if(r.length===0)return null;const i=Array.isArray(n.expect)?n.expect.filter(o=>typeof o=="string"):void 0;return{schemes:r,value:n.value==="code"?"code":"target",...i!=null&&i.length?{expect:i}:{},expectError:typeof n["expect-error"]=="string"?n["expect-error"]:Kn,multiplicity:n.multiplicity==="count"?"count":"once",...typeof n.prompt=="string"&&n.prompt.trim()?{prompt:n.prompt}:{}}}function Zn(t,e){if(t===e)return!0;const n=/^[0-9]{8,14}$/;return n.test(t)&&n.test(e)&&t.padStart(14,"0")===e.padStart(14,"0")}function ve(t,e){if(!t.expect)return null;const n=[];for(const r of t.expect){const i=V(r,e),o=Array.isArray(i)?i:[i];for(const a of o)typeof a=="string"&&a?n.push(a):typeof a=="number"&&n.push(String(a))}return n}function tr(t,e){return t.expectError.replace(/\{\{\s*expected\s*\}\}/g,[...new Set(e)].join(", ")||"nothing")}function ke(t,e,n){const r=K(e);if(!r)return;const i=ve(r,n);if(i===null)return;const o=Array.isArray(t)?t:t==null||t===""?[]:[t],a=r.multiplicity==="count"?[...i]:[...new Set(i)];for(const l of o){const c=a.findIndex(u=>Zn(String(l),u));if(c===-1)return tr(r,i);a.splice(c,1)}}function er(t,e){const n=K(t);if(n){const i=ve(n,e);if(i!==null)return n.multiplicity==="count"?i.length:new Set(i).size}const r=t==null?void 0:t.maxItems;return typeof r=="number"?r:null}function co(t,e,n,r){const i=K(n);if(!i)return{ok:!1,error:"This field takes no scans"};const o=i.value==="code"?e.code:e.target,a=n.type==="array",l=a?[...Array.isArray(t)?t:[],o]:o,c=ke(l,n,r);if(c)return{ok:!1,error:c};const u=n.maxItems;return a&&typeof u=="number"&&l.length>u?{ok:!1,error:`At most ${u}`}:{ok:!0,value:l}}function sr(t,e){if(e.type==="array"){const n=e.maxItems;return typeof n!="number"||!Array.isArray(t)||t.length<n}return t==null||t===""}function uo(t,e,n,r){const i=(t==null?void 0:t.properties)??{},o=Array.isArray(t==null?void 0:t[Mt])?t[Mt]:[],l=[...o.filter(c=>c in i),...Object.keys(i).filter(c=>!o.includes(c))].filter(c=>{var u;return(u=K(i[c]))==null?void 0:u.schemes.includes(n)});return l.length===0?null:r&&l.includes(r)?r:l.find(c=>sr(e[c],i[c]))??l[0]}function xo(t){return(t==null?void 0:t[Qn])===!0}function po(t,e){const n=(t==null?void 0:t.properties)??{},r=new Set((t==null?void 0:t.required)??[]),i=Object.keys(n).filter(o=>K(n[o])&&r.has(o));return i.length===0?!1:i.every(o=>{const a=e[o];if(Array.isArray(a)){const l=n[o].minItems;return a.length>=(typeof l=="number"?l:1)}return a!=null&&a!==""})}const we="x-lt-options";function Dt(t){return typeof t=="string"||typeof t=="boolean"||typeof t=="number"&&Number.isFinite(t)}function nr(t){return Array.isArray(t)&&t.length>0&&!t.some(e=>typeof e=="string")}function Pt(t){if(Dt(t))return{value:t,label:String(t)};if(t&&typeof t=="object"&&!Array.isArray(t)){const e=t,n=e.value!==void 0?e.value:e.id;if(Dt(n)&&typeof e.label=="string"&&e.label.length>0)return{value:n,label:e.label}}return null}function kt(t,e){if(!t)return;const n=t.enum;if(Array.isArray(n)&&n.length>0)return n.map(a=>({value:a,label:String(a)}));const r=t[we];if(nr(r)){const a=r.map(Pt).filter(l=>l!==null);return a.length>0?a:void 0}const i=(typeof r=="string"?[r]:Array.isArray(r)?r:[]).filter(a=>typeof a=="string"&&a.length>0);if(i.length===0)return;const o=i.some(dt)?[]:void 0;for(const a of i){let l=a;if(dt(a)){const d=vt(a,e);if(d===null)continue;l=d}const c=V(l,e);if(!Array.isArray(c))continue;const u=c.map(Pt).filter(d=>d!==null);if(u.length>0)return u}return o}function wt(t,e){const n=(typeof t=="string"?[t]:Array.isArray(t)?t:[]).filter(r=>typeof r=="string"&&r.length>0);if(n.length===0||!e)return[];for(const r of n){let i=r;if(dt(r)){const a=vt(r,e);if(a===null)continue;i=a}const o=V(i,e);if(Array.isArray(o)&&o.length>0)return o}return[]}const rr="x-lt-default-checked";function ir(t,e,n){if((t==null?void 0:t["x-lt-widget"])!=="checklist"||t[rr]!==!0||e&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length>0)return null;const r=wt(t["x-lt-source"],n);return r.length===0?null:Object.fromEntries(r.map(i=>[i.id,!0]))}function or(t,e,n){if((e==null?void 0:e["x-lt-widget"])!=="checklist"||e["x-lt-require-all"]!==!0)return;const i=wt(e["x-lt-source"],n).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 Wt="Invalid JSON";function ut(t){return(t==null?void 0:t["x-lt-widget"])==="json"}function Ae(t){return ut(t)||(t==null?void 0:t[we])!==void 0}function Ut(t,e){return`${t} ${e}${t===1?"":"s"}`}function At(t,e){const n=e==null?void 0:e.type;if(typeof n=="string"&&!(t==null||t===""))switch(n){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:ut(e)&&typeof t=="string"?Wt:"Expected a list";case"object":return typeof t=="object"&&!Array.isArray(t)?void 0:ut(e)&&typeof t=="string"?Wt:"Expected an object";default:return}}function Et(t,e,n){if(!e)return;const r=kt(e,n);if(r!==void 0&&t!==void 0&&t!==null&&t!==""&&!Array.isArray(t)){if(r.length===0)return"No valid options for this selection";if(!r.some(o=>o.value===t))return`Must be one of: ${r.map(o=>String(o.value)).join(", ")}`}const i=ke(t,e,n);if(i)return i;if(Array.isArray(t))return Ae(e)?ar(t,e,r,n):void 0;if(t!==null&&typeof t=="object")return lr(t,e,n);if(typeof t=="string"){const o=t.trim();if(o==="")return;const a=Y(e.minLength,e["x-lt-min-length"],n);if(a!==void 0&&o.length<a)return`Minimum ${a} character${a===1?"":"s"}`;const l=Y(e.maxLength,e["x-lt-max-length"],n);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=Y(e.minimum,e["x-lt-minimum"],n),a=Y(e.exclusiveMinimum,void 0,n),l=Y(e.maximum,e["x-lt-maximum"],n),c=Y(e.exclusiveMaximum,void 0,n);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 ar(t,e,n,r){if(t.length===0)return;if(n!==void 0){if(n.length===0)return"No valid options for this selection";if(t.some(l=>!n.some(c=>c.value===l)))return`Must be one of: ${n.map(l=>String(l.value)).join(", ")}`}const i=Y(e.minItems,void 0,r);if(i!==void 0&&t.length<i)return`At least ${Ut(i,"item")}`;const o=Y(e.maxItems,void 0,r);if(o!==void 0&&t.length>o)return`At most ${Ut(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=At(t[c],l)??Et(t[c],l,r);if(u)return`Item ${c+1}: ${u}`}}}function lr(t,e,n){const r=Object.entries(t);if(r.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=r.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 r){const d=At(u,l)??Et(u,l,n);if(d)return`"${c}": ${d}`}}}function Y(t,e,n){if(typeof t=="number")return t;if(typeof e=="string"&&n){const r=e.indexOf(".");if(r!==-1){const i=e.slice(0,r),o=e.slice(r+1),a=n[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 Ee(t,e,n,r,i){if(!r)return;if(n){if(t==null||typeof t=="boolean"&&!t&&kt(e,i)===void 0||typeof t=="string"&&t.trim()===""||Array.isArray(t)&&t.length===0&&Ae(e))return"Required";if(typeof t=="object"&&!Array.isArray(t)&&t!==null){const l=Object.values(t);if(l.length===0||!ut(e)&&l.every(c=>!c))return"Required"}}const o=At(t,e);if(o)return o;const a=or(t,e,i);return a||Et(t,e,i)}function Gt(t){return t!=null&&t!==""&&t!==!1&&t!==0}function cr(t){return t==null?"":typeof t=="object"?JSON.stringify(t):String(t)}function qt(t,e){const n=t.indexOf("."),r=n===-1?t:t.slice(0,n);if(!jn.includes(r))return{known:!1,value:void 0};const i=e[r];if(n===-1)return{known:!0,value:i};try{return{known:!0,value:et(i,t.slice(n+1))}}catch{return{known:!0,value:void 0}}}function tt(t,e){if(Array.isArray(t))return t.every(c=>tt(c,e));if(typeof t!="string"||t.length===0||!e)return!0;const n=t.startsWith("!"),r=n?t.slice(1):t,i=r.indexOf("!="),o=r.indexOf("=");if(i!==-1||o!==-1&&o!==i+1){const c=i!==-1&&(o===-1||i<o),u=c?i:o,d=r.slice(0,u).trim(),x=r.slice(u+(c?2:1)).trim(),{known:p,value:m}=qt(d,e);if(!p)return!0;const b=cr(m)===x,f=c?!b:b;return n?!f:f}const{known:a,value:l}=qt(r,e);return a?n?!Gt(l):Gt(l):!0}function dr(t,e){return(t==null?void 0:t["x-lt-hide-if-empty"])!==!0?!1:e==null||e===""||e===!1||e===0}const ur="x-lt-hidden";function Ie(t){return(t==null?void 0:t[ur])===!0}const xr="x-lt-require-any";function pr(t){const e=t==null?void 0:t[xr];return Array.isArray(e)?e.filter(n=>Array.isArray(n)).map(n=>n.filter(r=>typeof r=="string"&&r.length>0)).filter(n=>n.length>0):[]}function fr(t){return t==null?!1:typeof t=="string"?t.trim().length>0:!0}const mr="x-lt-require-sum";function gr(t){const e=t==null?void 0:t[mr];if(!Array.isArray(e))return[];const n=[];for(const r of e){if(!r||typeof r!="object"||Array.isArray(r))continue;const{fields:i,minimum:o}=r;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"||n.push({fields:a,minimum:typeof o=="number"?o:1}))}return n}function br(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 Ce(t,e,n){if(!t)return[];const r=t.properties??{},i=new Set(t.required??[]),o={...n??{},resolver:e,input:e},a=[];for(const[l,c]of Object.entries(r)){if(!tt(c["x-lt-showIf"],o))continue;const u=Ee(e[l],c,i.has(l)&&!Ie(c),!0,o);u&&a.push({field:l,message:u})}for(const l of pr(t)){const c=l.filter(d=>r[d]&&tt(r[d]["x-lt-showIf"],o));if(c.length===0||c.some(d=>fr(e[d])))continue;const u=c.map(d=>r[d].title??d);a.push({field:c[0],message:`Enter a value for at least one of: ${u.join(", ")}`})}for(const l of gr(t)){const c=l.fields.filter(x=>r[x]&&tt(r[x]["x-lt-showIf"],o));if(c.length===0||c.reduce((x,p)=>x+br(e[p]),0)>=l.minimum)continue;const d=c.map(x=>r[x].title??x);a.push({field:c[0],message:`Combined value of ${d.join(", ")} must be at least ${l.minimum}`})}return a}function yr(t,e,n){if(!t)return[];const r=fe(e,t);return Ce(t,r,n)}function Ht(t,e){let n;try{n=JSON.parse(t)}catch{return{payload:null,errors:[],parseError:"Invalid JSON"}}const r=n._form_schema;if(r){const a=Ce(r,n,e);if(a.length>0)return{payload:null,errors:a,parseError:null}}const{_form_schema:i,...o}=n;return{payload:Nn(o,r),errors:[],parseError:null}}const hr=2600;function jr({hint:t,onLockedClick:e,children:n}){const[r,i]=g.useState(null);g.useEffect(()=>{if(!r)return;const a=setTimeout(()=>i(null),hr);return()=>clearTimeout(a)},[r]);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 s.jsxs("div",{className:"pb-8 max-w-form",onClick:o,"data-testid":"locked-form-frame",children:[n,t&&r&&s.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:r.x,top:r.y-12},onAnimationEnd:()=>i(null),"data-testid":"locked-form-hint",children:[s.jsx(le,{className:"w-3.5 h-3.5 text-accent shrink-0",strokeWidth:1.5}),t]},r.n)]})}function _({children:t,isRequired:e,htmlFor:n}){return s.jsxs("label",{htmlFor:n,className:"block text-2xs font-semibold uppercase tracking-wider text-text-secondary",children:[t,e&&s.jsx("span",{className:"text-status-error ml-0.5",children:"*"})]})}function F({id:t,children:e}){return s.jsx("p",{id:t,className:"text-2xs text-text-tertiary mt-0.5 leading-snug",children:e})}function U({error:t,id:e}){return t?s.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 Z(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 Nr(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 vr({fieldKey:t,value:e,onChange:n,schema:r,isRequired:i}){const o=g.useRef(null),a=(r==null?void 0:r.accept)??void 0,l=B(t,r),c=r==null?void 0:r.description,u=g.useCallback(x=>{var b;const p=(b=x.target.files)==null?void 0:b[0];if(!p)return;const m=new FileReader;m.onload=()=>{typeof m.result=="string"&&n(m.result)},m.readAsDataURL(p)},[n]),d=e.startsWith("data:");return s.jsxs("div",{children:[s.jsx(_,{isRequired:i,children:l}),c&&s.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:c}),s.jsxs("div",{className:"mt-1",children:[s.jsx("input",{ref:o,type:"file",accept:a,onChange:u,className:"hidden"}),s.jsx("button",{type:"button",onClick:()=>{var x;return(x=o.current)==null?void 0:x.click()},className:"btn-secondary text-xs px-3 py-1.5",children:d?"Replace file":"Choose file"}),d&&s.jsx("span",{className:"ml-2 text-xs text-status-success",children:"File attached"})]})]})}function kr({fieldKey:t,value:e,onChange:n,schema:r,isRequired:i}){const o=B(t,r),a=r==null?void 0:r.description,l=(r==null?void 0:r["x-lt-language"])??"",c=g.useCallback(u=>{if(u.key==="Tab"){u.preventDefault();const d=u.currentTarget,x=d.selectionStart,p=d.selectionEnd,m=e.substring(0,x)+" "+e.substring(p);n(m),requestAnimationFrame(()=>{d.selectionStart=d.selectionEnd=x+2})}},[e,n]);return s.jsxs("div",{children:[s.jsxs(_,{isRequired:i,children:[o,l&&s.jsx("span",{className:"ml-2 text-text-tertiary/60 normal-case font-normal",children:l})]}),a&&s.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:a}),s.jsx("textarea",{value:e,onChange:u=>n(u.target.value),onKeyDown:c,className:"input w-full mt-1 font-mono text-xs leading-relaxed",rows:10,spellCheck:!1})]})}function wr({fieldKey:t,value:e,onChange:n,schema:r,isRequired:i}){const o=g.useRef(null),[a,l]=g.useState(!1),c=B(t,r),u=r==null?void 0:r.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 j=new Image;j.onload=()=>y.drawImage(j,0,0),j.src=e}},[]);const d=g.useCallback(f=>{const y=o.current,j=y.getBoundingClientRect(),N=j.width>0?y.width/j.width:1,h=j.height>0?y.height/j.height:1;return"touches"in f?{x:(f.touches[0].clientX-j.left)*N,y:(f.touches[0].clientY-j.top)*h}:{x:(f.clientX-j.left)*N,y:(f.clientY-j.top)*h}},[]),x=g.useCallback(f=>{var N;l(!0);const y=(N=o.current)==null?void 0:N.getContext("2d");if(!y)return;const j=d(f);y.beginPath(),y.moveTo(j.x,j.y)},[d]),p=g.useCallback(f=>{var N;if(!a)return;const y=(N=o.current)==null?void 0:N.getContext("2d");if(!y)return;const j=d(f);y.lineTo(j.x,j.y),y.stroke()},[a,d]),m=g.useCallback(()=>{l(!1);const f=o.current;f&&n(f.toDataURL("image/png"))},[n]),b=g.useCallback(()=>{const f=o.current;if(!f)return;const y=f.getContext("2d");y&&(y.clearRect(0,0,f.width,f.height),n(""))},[n]);return s.jsxs("div",{children:[s.jsx(_,{isRequired:i,children:c}),u&&s.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:u}),s.jsx("div",{className:"mt-1 max-w-[25rem] border border-surface-border rounded-md overflow-hidden bg-white",children:s.jsx("canvas",{ref:o,width:400,height:150,className:"w-full cursor-crosshair touch-none",onMouseDown:x,onMouseMove:p,onMouseUp:m,onMouseLeave:m,onTouchStart:x,onTouchMove:p,onTouchEnd:m})}),s.jsx("button",{type:"button",onClick:b,className:"mt-1 text-2xs text-text-tertiary hover:text-accent transition-colors",children:"Clear"})]})}function Ar({fieldKey:t,value:e,onChange:n,schema:r,isRequired:i}){const o=B(t,r),a=r==null?void 0:r.description;return s.jsxs("div",{children:[s.jsx(_,{isRequired:i,children:o}),a&&s.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:a}),s.jsx("textarea",{value:e,onChange:l=>n(l.target.value),className:"input w-full mt-1 text-sm leading-relaxed",rows:8,placeholder:"Supports plain text. Markdown formatting is preserved."})]})}function Er({fieldKey:t,value:e,onChange:n,schema:r,isRequired:i}){const[o,a]=g.useState("write"),l=B(t,r),c=r==null?void 0:r.description;return(r==null?void 0:r.readOnly)===!0?s.jsx(nt,{content:e,className:"my-1"}):s.jsxs("div",{children:[s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx(_,{isRequired:i,children:l}),s.jsx("div",{className:"flex items-center gap-0.5",children:["write","preview"].map(d=>s.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&&s.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:c}),o==="write"?s.jsx("textarea",{value:e,onChange:d=>n(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."}):s.jsx("div",{className:"mt-1 px-3 py-2 border border-surface-border rounded min-h-[120px]",children:e.trim()?s.jsx(nt,{content:e}):s.jsx("p",{className:"text-xs text-text-quaternary italic",children:"Nothing to preview."})})]})}const Ir=28;function Cr({fieldKey:t,value:e,onChange:n,schema:r,escalationContext:i,isRequired:o,submitAttempted:a,error:l}){const c=(r==null?void 0:r["x-lt-require-all"])===!0,u=wt(r==null?void 0:r["x-lt-source"],i);let d={};try{e&&(d=JSON.parse(e))}catch{}const x=(()=>{const h=ir(r,d,i);return h?JSON.stringify(h):null})();g.useEffect(()=>{x&&n(x)},[x]);const p=h=>n(JSON.stringify({...d,[h]:!d[h]})),m=B(t,r),b=r==null?void 0:r.description;if(u.length===0)return s.jsxs(s.Fragment,{children:[s.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&&s.jsx("p",{className:"text-2xs text-status-error mt-1 animate-[field-error-in_0.3s_ease-out]",children:l})]});const f=r==null?void 0:r["x-lt-variant"],y=f==="chips"||f==="rows"?f:c||u.some(h=>h.label.length>Ir)?"rows":"chips",j=u.filter(h=>d[h.id]).length,N=(u.find(h=>!d[h.id]&&h.required!==!1)??u[0]).id;return s.jsxs("div",{role:"group","aria-label":m,"aria-required":o||void 0,"aria-invalid":l?!0:void 0,children:[s.jsx(_,{isRequired:o,children:m}),b&&s.jsx(F,{children:b}),y==="chips"?s.jsx("div",{className:"flex flex-wrap gap-2 mt-2",children:u.map(h=>{const v=d[h.id]??!1,k=!v&&!!a&&j===0&&(h.required||o);return s.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)] ${v?"bg-accent border-accent text-text-inverse":k?"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:[s.jsx("input",{type:"checkbox",checked:v,onChange:()=>p(h.id),className:"sr-only","data-testid":`checklist-item-${h.id}`,...h.id===N?{"data-field-key":t}:{}}),v&&s.jsx(ce,{className:"w-3.5 h-3.5 shrink-0",strokeWidth:2.5}),h.label]},h.id)})}):s.jsx("div",{className:"space-y-2.5 mt-2",children:u.map(h=>{const v=d[h.id]??!1,k=!v&&!!a&&(c?h.required!==!1:j===0&&(h.required||o));return s.jsxs("label",{className:`flex items-start gap-3 cursor-pointer group select-none rounded px-2 py-1 -mx-2 transition-colors ${k?"bg-status-error/5":"hover:bg-surface-hover"}`,children:[s.jsx("input",{type:"checkbox",checked:v,onChange:()=>p(h.id),className:`mt-0.5 w-3.5 h-3.5 shrink-0 rounded ${k?"accent-status-error":"accent-accent"}`,"data-testid":`checklist-item-${h.id}`,...h.id===N?{"data-field-key":t}:{}}),s.jsxs("span",{className:`text-sm leading-snug transition-colors ${k?"text-status-error":"text-text-secondary group-hover:text-text-primary"}`,children:[h.label,h.required&&s.jsx("span",{className:`ml-0.5 text-2xs ${k?"text-status-error":"text-text-quaternary"}`,children:"*"})]})]},h.id)})}),s.jsx("p",{className:"text-2xs text-text-quaternary mt-3 tabular-nums",children:y==="chips"?s.jsxs(s.Fragment,{children:[j," selected",o&&j===0&&!!a&&s.jsx("span",{className:"ml-1 text-text-quaternary/60",children:"(check at least one)"})]}):s.jsxs(s.Fragment,{children:[j," / ",u.length," confirmed",c?s.jsxs("span",{className:"ml-1 text-text-quaternary/60",children:["(all required",u.some(h=>h.required===!1)?" except optional":"",")"]}):o&&j===0&&!!a&&s.jsx("span",{className:"ml-1 text-text-quaternary/60",children:"(at least one required)"})]})}),l&&s.jsx("p",{role:"alert",className:"text-2xs text-status-error mt-1 animate-[field-error-in_0.3s_ease-out]",children:l})]})}const Or=/\.(png|jpe?g|gif|webp|avif|bmp|svg)(\?.*)?$/i;function Tr(t){var r,i,o,a;const e=t.trim();if(!e)return{kind:"none"};const n=(i=(r=/^data:([^;,]+)[;,]/.exec(e))==null?void 0:r[1])==null?void 0:i.toLowerCase();if(n)return n.startsWith("image/")?{kind:"image",src:e}:{kind:"file",href:e,label:n==="application/pdf"?"PDF":n,isData:!0};if(/^https?:\/\//i.test(e)){if(Or.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 Jt({fieldKey:t,value:e,schema:n}){const[r,i]=g.useState(!1),o=Tr(e??""),a=t.replace(/[_-]/g," "),l=n==null?void 0:n.description,c=s.jsxs(s.Fragment,{children:[s.jsx("label",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:a}),l&&s.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:l})]});return o.kind==="none"?s.jsxs("div",{children:[c,s.jsx("p",{className:"text-xs text-text-quaternary italic mt-1",children:"No attachment"})]}):o.kind==="image"?s.jsxs("div",{children:[c,s.jsxs("div",{className:"mt-1",children:[s.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:s.jsx("img",{src:o.src,alt:t.replace(/[_-]/g," "),className:"max-h-48 max-w-full object-contain","data-testid":`attachment-image-${t}`})}),r&&s.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:s.jsx("img",{src:o.src,alt:a,className:"max-h-[90vh] max-w-[90vw] object-contain"})})]})]}):s.jsxs("div",{children:[c,s.jsx("div",{className:"mt-1",children:s.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:[s.jsx(Be,{className:"w-3.5 h-3.5",strokeWidth:1.5}),o.isData?`Download ${o.label}`:`Open ${o.label}`,o.isData?s.jsx(de,{className:"w-3 h-3",strokeWidth:1.5}):s.jsx(ht,{className:"w-3 h-3",strokeWidth:1.5})]})})]})}function _r({fieldKey:t,schema:e,escalationContext:n}){const r=(e==null?void 0:e["x-lt-href"])??"",i=r&&n?G(r,n):r,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 s.jsxs("div",{"data-field-key":t,children:[s.jsx(_,{children:o}),a&&s.jsx(F,{children:a}),s.jsx("div",{className:"mt-1",children:c?s.jsx("span",{className:"text-xs text-text-quaternary italic",children:"No link configured"}):l?s.jsxs(mt,{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,s.jsx(ht,{className:"w-3 h-3 shrink-0",strokeWidth:1.5})]}):s.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,s.jsx(ht,{className:"w-3 h-3 shrink-0",strokeWidth:1.5})]})})]})}function It({to:t,className:e=""}){return s.jsxs(mt,{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:[s.jsx(Xe,{className:"w-3.5 h-3.5",strokeWidth:2}),s.jsx("span",{className:"sr-only",children:"View details"})]})}const Vt="—";function Rr(t,e){if(!t||!e)return"";const n=t.indexOf(".");if(n===-1)return"";const r=t.slice(0,n),i=t.slice(n+1);try{const o=et(e[r],i);return typeof o=="string"?o:""}catch{return""}}function Lr(t,e){if(!t||t===Vt)return Vt;if(e==="age"){const n=new Date(t);return Number.isNaN(n.getTime())?t:Nt(t)}return t}function Sr({fieldKey:t,schema:e,escalationContext:n}){const r=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=Rr(r,n),{data:c,isLoading:u,isError:d}=wn(l);return s.jsxs("div",{"data-field-key":t,children:[s.jsx(_,{children:o}),a&&s.jsx(F,{children:a}),s.jsx("div",{className:"mt-1",children:!l||d?s.jsx("p",{className:"text-xs text-text-quaternary italic","data-testid":`escalation-widget-empty-${t}`,children:"No linked record"}):u?s.jsx($r,{}):c?s.jsx(Fr,{esc:c,fields:i,fieldKey:t}):s.jsx("p",{className:"text-xs text-text-quaternary italic",children:"No linked record"})})]})}function Fr({esc:t,fields:e,fieldKey:n}){if(!t)return null;const r=jt(t);return s.jsxs("div",{className:"border-l-2 border-accent-faint pl-3 py-2 space-y-2","data-testid":`escalation-widget-card-${n}`,children:[s.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[s.jsxs("span",{className:"text-2xs font-semibold uppercase tracking-wider text-text-secondary",children:[t.type,t.subtype&&t.subtype!==t.type?` · ${t.subtype}`:""]}),s.jsx(Gn,{status:t.status})]}),t.description&&s.jsx("p",{className:"text-xs text-text-primary leading-snug",children:t.description}),e.length>0&&s.jsx("dl",{className:"grid grid-cols-[auto_1fr] gap-x-4 gap-y-0.5",children:e.map(i=>{const o=G(i.value,r),a=Lr(o,i.format);return s.jsxs("div",{className:"contents",children:[s.jsx("dt",{className:"text-2xs text-text-tertiary whitespace-nowrap",children:i.label}),s.jsx("dd",{className:"text-2xs text-text-primary",children:a})]},i.label)})}),s.jsxs("div",{className:"flex items-center justify-between gap-2",children:[s.jsxs("span",{className:"text-2xs text-text-quaternary",children:[t.role," · ",Nt(t.created_at)]}),s.jsx(It,{to:`/escalations/detail/${t.id}`})]})]})}function $r(){return s.jsxs("div",{className:"border-l-2 border-accent-faint pl-3 py-2 space-y-2 animate-pulse",children:[s.jsx("div",{className:"h-3 w-32 bg-surface-sunken rounded"}),s.jsx("div",{className:"h-3 w-48 bg-surface-sunken rounded"}),s.jsx("div",{className:"h-3 w-24 bg-surface-sunken rounded"})]})}function Oe({message:t,onConfirm:e,onCancel:n,testId:r}){return s.jsxs("span",{className:"inline-flex flex-wrap items-center gap-2",role:"group","aria-label":"Confirm action","data-testid":r,children:[s.jsx("span",{className:"text-xs text-text-primary whitespace-normal",children:t}),s.jsx("button",{type:"button",onClick:e,className:"px-2 py-0.5 text-2xs font-medium text-text-inverse bg-accent rounded hover:bg-accent/90 transition-colors","data-testid":r?`${r}-yes`:void 0,autoFocus:!0,children:"Confirm"}),s.jsx("button",{type:"button",onClick:n,className:"px-2 py-0.5 text-2xs font-medium text-text-secondary border border-surface-border rounded hover:bg-surface-hover transition-colors","data-testid":r?`${r}-no`:void 0,children:"Cancel"})]})}function Mr(t,e){if(!t)return{};const n={};for(const[r,i]of Object.entries(t))n[r]=typeof i=="string"?G(i,e):i;return n}function Dr(t,e,n){const r=Mr(t.facets,e),i={role:t.role,status:t.status??"pending",facets:r,limit:t.limit,enabled:!!(t.role||Object.keys(r).length)};return t.assigned==="me"?{...i,assigned_to:n,available:!1,enabled:i.enabled&&!!n}:t.assigned==="any"?i:{...i,available:t.available??!0}}const Bt="—";function Te(t,e){if(!t||t===Bt)return Bt;if(e==="age"){const n=new Date(t);return Number.isNaN(n.getTime())?t:Nt(t)}return t}function xt(t,e){return typeof t=="string"?G(t,e):Array.isArray(t)?t.map(n=>xt(n,e)):t&&typeof t=="object"?Object.fromEntries(Object.entries(t).map(([n,r])=>[n,xt(r,e)])):t}const Pr=[{label:"Description",value:"{{escalation.description}}"},{label:"Role",value:"{{escalation.role}}"},{label:"Age",value:"{{escalation.created_at}}",format:"age"}];function Wr({fieldKey:t,schema:e,escalationContext:n}){const r=(e==null?void 0:e["x-lt-query"])??{},i=(e==null?void 0:e["x-lt-columns"])??Pr,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=n??{},{user:u}=An(),d=Dr(r,c,u==null?void 0:u.userId),{data:x,isLoading:p}=En({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:me({columns:i,actions:o})?"envelope":void 0}),m=(x==null?void 0:x.escalations)??[],b=be(),[f,y]=g.useState({}),[j,N]=g.useState(null),[h,v]=g.useState(null),k=(w,R)=>{R.confirm?v({id:w.id,action:R}):I(w,R)},I=async(w,R)=>{const P=jt(w);v(null),N(w.id),y(A=>({...A,[w.id]:""}));try{await b.mutateAsync({id:w.id,resolverPayload:xt(R.resolverPayload,P)})}catch(A){y(T=>({...T,[w.id]:A.message}))}finally{N(null)}};return s.jsxs("div",{"data-field-key":t,children:[s.jsx(_,{children:a}),l&&s.jsx(F,{children:l}),s.jsx("div",{className:"mt-1","data-testid":`escalation-list-widget-${t}`,children:p?s.jsx(Gr,{columns:i.length}):s.jsx(Ur,{escalations:m,columns:i,fieldKey:t,actions:o,onAction:k,confirming:h,onConfirm:w=>h&&void I(w,h.action),onCancel:()=>v(null),pendingRow:j,rowErrors:f})})]})}function Ur({escalations:t,columns:e,fieldKey:n,actions:r,onAction:i,confirming:o,onConfirm:a,onCancel:l,pendingRow:c,rowErrors:u}){return t.length===0?s.jsx("p",{className:"text-xs text-text-quaternary italic py-1","data-testid":`escalation-list-empty-${n}`,children:"No items found"}):s.jsxs("table",{className:"w-full text-xs border-collapse","data-testid":`escalation-list-table-${n}`,children:[s.jsx("thead",{children:s.jsxs("tr",{className:"border-b border-surface-border",children:[e.map(d=>s.jsx("th",{className:"text-left text-2xs font-semibold uppercase tracking-wider text-text-tertiary pb-1 pr-3 last:pr-0",children:d.label},d.label)),r.length>0&&s.jsx("th",{className:"w-px"}),s.jsx("th",{className:"w-8"})]})}),s.jsx("tbody",{children:t.map(d=>{const x=jt(d),p=u[d.id];return s.jsxs("tr",{className:"border-b border-surface-border/50 last:border-0 hover:bg-surface-sunken/50 transition-colors",children:[e.map(m=>{const b=G(m.value,x),f=Te(b,m.format);return s.jsx("td",{className:"py-1 pr-3 last:pr-0 text-text-primary align-top",children:f},m.label)}),r.length>0&&s.jsxs("td",{className:"py-1 pr-2 align-top whitespace-nowrap",children:[(o==null?void 0:o.id)===d.id?s.jsx(Oe,{message:G(o.action.confirm??"",x),onConfirm:()=>a(d),onCancel:l,testId:`escalation-list-confirm-${d.id}`}):r.map(m=>s.jsx("button",{type:"button",onClick:()=>i(d,m),disabled:c===d.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-${d.id}`,children:m.label},m.label)),p&&s.jsx("p",{className:"text-2xs text-status-error mt-0.5 whitespace-normal max-w-[16rem]","data-testid":`escalation-list-action-error-${d.id}`,children:p})]}),s.jsx("td",{className:"py-1 pl-2 align-top",children:s.jsx(It,{to:`/escalations/detail/${d.id}`})})]},d.id)})})]})}function Gr({columns:t}){return s.jsx("div",{className:"space-y-1.5 animate-pulse",children:[0,1,2].map(e=>s.jsx("div",{className:"flex gap-4",children:Array.from({length:t},(n,r)=>s.jsx("div",{className:"h-3 bg-surface-sunken rounded flex-1"},r))},e))})}function _e(t,e){return{metadata:t??{},...e?{lookup:e}:{}}}const qr="x-lt-invoke",rt={LINK:"link",BUTTON:"button"},Hr=/^\{\{\s*([^{}]+?)\s*\}\}$/;function lt(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function Jr(t){return t===rt.LINK||t===rt.BUTTON}function Vr(t){const e=t==null?void 0:t[qr];if(!lt(e))return null;const n=e.workflow;if(typeof n!="string"||n.trim().length===0)return null;const r=e.confirm;return{workflow:n.trim(),data:lt(e.data)?e.data:{},metadata:lt(e.metadata)?e.metadata:{},modal:e.modal===!0,confirm:typeof r=="string"&&r.trim().length>0?r:null,variant:Jr(e.variant)?e.variant:rt.LINK,icon:e.icon!==!1}}function pt(t,e){if(typeof t=="string"){const n=Hr.exec(t);if(n){const r=V(n[1],e??void 0);return r===null?void 0:r}return dt(t)?vt(t,e??void 0)??void 0:t}if(Array.isArray(t))return t.map(n=>pt(n,e)).filter(n=>n!==void 0);if(lt(t)){const n={};for(const[r,i]of Object.entries(t)){const o=pt(i,e);o!==void 0&&(n[r]=o)}return n}return t}function Br(t,e){return{data:pt(t.data,e),metadata:pt(t.metadata,e)}}const Ct={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"},Xr=new Set(Object.values(Ct));function Yr(t){return typeof t=="string"&&Xr.has(t)}const zr={Activity:fn,AlertTriangle:xe,Archive:pn,Award:xn,Barcode:un,Bell:dn,Bot:cn,Box:ln,Boxes:an,Building2:on,Calendar:rn,Camera:nn,ClipboardCheck:sn,ClipboardList:en,Clock:tn,Cog:Zs,Cpu:Ks,Database:Qs,Download:de,Droplets:zs,Factory:Ys,Fan:Xs,FileText:Bs,Flag:ue,Flame:Vs,Gauge:Js,Hammer:Hs,Heart:qs,Image:Gs,Key:Us,Layers:Ws,Leaf:Ps,LifeBuoy:Ds,ListChecks:Ms,Lock:le,Mail:$s,Map:Fs,Megaphone:Ss,MessageSquare:Ls,Package:Rs,Palette:_s,PenTool:Ts,Pill:Os,Power:Cs,Printer:Is,Receipt:Es,Recycle:As,RefreshCw:ws,Rocket:ks,Route:vs,Ruler:Ns,Scale:js,ScanBarcode:hs,Scissors:ys,Search:bs,Send:gs,Server:ms,ShieldCheck:fs,ShoppingCart:ps,Snowflake:xs,Sparkles:us,Star:ds,Store:cs,Sun:ls,Tag:as,TestTube:os,Thermometer:is,Trash2:rs,Truck:ns,Upload:ss,User:es,Users:ts,Wand2:Ze,Warehouse:Ke,Wifi:Qe,Wrench:ze,Zap:Ye},Xt=Object.values(Ct),Qr=Object.fromEntries(Object.entries(Ct).map(([t,e])=>[e,t]));function Kr(t){return Yr(t)?zr[t]:null}function fo(t){const e=t.trim().toLowerCase().replace(/[\s_-]+/g,"");return e?Xt.filter(n=>n.toLowerCase().includes(e)||Qr[n].toLowerCase().replace(/_/g,"").includes(e)):[...Xt]}function Ot({icon:t,tier:e,className:n,strokeWidth:r=1.5}){const i=Kr(t)??Hn[e]??mn;return s.jsx(i,{className:n,strokeWidth:r,"aria-hidden":!0})}function Zr(t){return`${t.domain}/${t.key} ${t.current||t.version===null?"(current)":`v${t.version}`}`}const S={RUNNING:"running",COMPLETED:"completed",FAILED:"failed"};function Yt(t,e){return`lt.events.system.workflow.${t}.${e}`}function Tt(t){const[e,n]=g.useState(S.RUNNING),[r,i]=g.useState(void 0);return g.useEffect(()=>{n(S.RUNNING),i(void 0)},[t]),In(t?[Yt(t,"completed"),Yt(t,"failed")]:[],o=>{if(o.workflowId!==t)return;const a=o.type.endsWith(".failed");n(a?S.FAILED:S.COMPLETED),i(o.data),o.data===void 0&&Cn(`/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:r}}const ti={[S.RUNNING]:"Working…",[S.COMPLETED]:"Completed",[S.FAILED]:"Failed"};function Re({outcome:t,className:e=""}){const n=t===S.FAILED?"text-status-error":t===S.COMPLETED?"text-status-success":"text-text-secondary";return s.jsxs("p",{className:`flex items-center gap-1.5 text-xs ${n} ${e}`,role:"status","data-testid":"run-outcome",children:[ti[t],t===S.RUNNING&&s.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-accent animate-pulse","aria-hidden":!0})]})}function Le({payload:t}){return!t||Object.keys(t).length===0?null:s.jsx("div",{className:"max-h-72 overflow-y-auto px-3 py-2 bg-surface-sunken","data-testid":"run-outline",children:s.jsx(Tn,{data:t})})}function ei({workflowId:t,outcome:e,executionPath:n}){const r=e===S.FAILED?"text-status-error":"text-status-success",i=e===S.RUNNING?"Started":e===S.COMPLETED?"Completed":"Failed";return s.jsxs("p",{className:"flex items-center gap-1.5 text-xs min-w-0",role:"status","data-testid":"started-run",children:[s.jsx("span",{className:r,children:i}),e===S.RUNNING&&s.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-accent animate-pulse","aria-hidden":!0}),s.jsx("span",{className:"text-text-quaternary",children:"·"}),s.jsx("span",{className:"font-mono text-text-secondary truncate",children:t}),n&&s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"text-text-quaternary",children:"·"}),s.jsx(mt,{to:n,className:"text-accent hover:underline shrink-0",children:"View workflow →"})]})]})}function si({payload:t}){return!t||Object.keys(t).length===0?null:s.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:s.jsx(On,{data:t,label:"Result"})})}const ni="/workflows/executions",q={PAGE:"page",MODAL:"modal"};function Se(t,e){const{realIsBuilder:n}=_n(),r=Rn(),[i,o]=g.useState(null),[a,l]=g.useState([]),[c,u]=g.useState(null),d=g.useCallback(()=>{o(null),l([]),u(null),r.reset()},[r]);return{submit:g.useCallback(async(p,m)=>{o(null),l([]),u(null);const b={...m};e.certified&&(b.certified=!0);try{const f=await r.mutateAsync({workflowType:t.workflow_type,data:p,metadata:b,...e.overrideBot?{execute_as:e.overrideBot}:{}});u(f.workflowId)}catch(f){f instanceof Ln&&Bn(f.body)?(l(f.body.violations),o(f.body.error)):o(f instanceof Error?f.message:"Invocation failed")}},[r,e.certified,e.overrideBot,t.workflow_type]),reset:d,pending:r.isPending,error:i,violations:a,startedId:c,executionPath:c&&n?`${ni}/${encodeURIComponent(c)}`:null}}function _t(){const{connected:t}=Sn();return t?null:s.jsxs("p",{className:"flex items-center gap-1.5 text-2xs text-status-warning","data-testid":"events-warning",children:[s.jsx(gn,{className:"w-3 h-3 shrink-0",strokeWidth:1.5}),"Live events are off, so the result will not appear here.",s.jsx("button",{type:"button",onClick:()=>window.location.reload(),className:"text-accent hover:underline",children:"Reconnect events"})]})}const ri={[q.PAGE]:"sticky bottom-0 z-10 bg-surface border-t border-surface-border/40 pt-3 pb-16 -mb-16",[q.MODAL]:"border-t border-surface-border/40 pt-3"};function Fe({onSubmit:t,onSubmitAgain:e,pending:n,error:r,issueCount:i=0,onShowIssues:o,startedId:a,executionPath:l,host:c=q.PAGE}){const u=c===q.PAGE,d=Tt(u?a??"":""),x=u&&a!==null;return s.jsxs("div",{className:ri[c],children:[s.jsxs("div",{className:"flex items-center justify-between gap-6 min-h-9",children:[s.jsxs("div",{className:"flex-1 min-w-0 flex flex-col gap-1",children:[s.jsx(_t,{}),i>0&&o?s.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:[s.jsx(ft,{className:"w-3.5 h-3.5",strokeWidth:1.5}),i," ",i===1?"issue":"issues"," to resolve"]}):r?s.jsx("p",{className:"text-xs text-status-error",role:"alert",children:r}):null,x&&s.jsx(ei,{workflowId:a,outcome:d.outcome,executionPath:l})]}),s.jsx("div",{className:"shrink-0",children:x?s.jsx("button",{type:"button",onClick:e,className:"text-xs text-accent hover:underline","data-testid":"invoke-again",children:"Submit again"}):s.jsx("button",{type:"button",onClick:t,disabled:n,className:"btn-primary px-8 py-2","data-testid":"invoke-start",children:n?"Submitting…":"Submit"})})]}),x&&d.outcome!==S.RUNNING&&s.jsx(si,{payload:d.payload})]})}const ot="invoke-help",ii=380,J={INSTRUCTIONS:"instructions",ISSUES:"issues"};function oi({view:t,onViewChange:e,onClose:n,helpMarkdown:r,errors:i,schema:o}){const a=[];r&&a.push({id:J.INSTRUCTIONS,icon:pe,label:"Instructions",content:s.jsx(nt,{content:r})}),a.push({id:J.ISSUES,icon:ft,label:"Issues",content:s.jsx(Ne,{errors:i,schema:o})});const l=a.some(c=>c.id===t)?t:a[0].id;return s.jsx($n,{views:a,activeId:l,onViewChange:c=>e(c),onClose:n,stickyClassName:"h-full min-h-0",labelInline:!0})}function ai({schema:t,context:e,errors:n,enabled:r=!0}){const i=Fn(),o=r?i==null?void 0:i.setPanel:void 0,a=r?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),x=g.useMemo(()=>vn(t,e),[t,e]),p=g.useCallback(()=>{d(null),a==null||a(ot)},[a]);g.useEffect(()=>{!o||!u||o(s.jsx(oi,{view:u,onViewChange:d,onClose:p,helpMarkdown:x,errors:n,schema:t}),{key:ot,width:ii})},[o,u,x,n,t,p]),g.useEffect(()=>{u&&c&&l&&l!==ot&&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,ot)},[]),{helpMarkdown:x,hasInstructions:!!x,open:u!==null,showInstructions:()=>d(J.INSTRUCTIONS),showIssues:()=>d(J.ISSUES),close:p}}function li({selected:t,schema:e,metadata:n,lookup:r,submission:i,lead:o,prefill:a,host:l=q.PAGE}){const c=l===q.MODAL,[u,d]=g.useState(()=>$t(e,a)),[x,p]=g.useState(!1),[m,b]=g.useState([]),[f,y]=g.useState(null),[j,N]=g.useState(null);g.useEffect(()=>{d($t(e,a)),p(!1),b([]),y(null),N(null),i.reset()},[t.workflow_type]);const h=g.useMemo(()=>({..._e(n,r),resolver:null}),[n,r]),v=g.useMemo(()=>{try{const O=JSON.parse(u);return{...h,resolver:O,input:O}}catch{return h}},[u,h]);g.useEffect(()=>{x&&b(Ht(u,h).errors)},[u,x,h]);const k=m.length>0?m:i.violations,I=ai({schema:e,context:v,errors:k,enabled:!c}),w=c?()=>N(J.ISSUES):I.showIssues,R=c?()=>N(O=>O===J.INSTRUCTIONS?null:J.INSTRUCTIONS):I.showInstructions;g.useEffect(()=>{i.violations.length>0&&w()},[i.violations]);const P=()=>{p(!0);const O=Ht(u,h);if(O.parseError){y(O.parseError);return}if(y(null),O.errors.length>0){b(O.errors),w();return}b([]),i.submit(O.payload,n)},A=c&&j===J.ISSUES&&k.length>0,T=c&&j===J.INSTRUCTIONS&&I.helpMarkdown;return s.jsxs("div",{"data-testid":"rich-invoke-form",children:[s.jsxs("div",{className:"space-y-6 pb-6",children:[o,T&&s.jsx("div",{className:"px-4 py-3 bg-surface-hover","data-testid":"invoke-inline-help",children:s.jsx(nt,{content:I.helpMarkdown})}),s.jsx(Zi,{value:u,onChange:d,submitAttempted:x,escalationContext:h,onOpenHelp:I.hasInstructions?R:void 0}),A&&s.jsx("div",{"data-testid":"invoke-inline-issues",children:s.jsx(Ne,{errors:k,schema:e})})]}),s.jsx(Fe,{onSubmitAgain:i.reset,onSubmit:P,pending:i.pending,error:f??i.error,issueCount:k.length,onShowIssues:w,startedId:i.startedId,executionPath:i.executionPath,host:l})]})}const zt=`{
2
- "data": {},
3
- "metadata": {}
4
- }`;function ci(t){return typeof t=="boolean"?"boolean":typeof t=="number"?"number":Array.isArray(t)?"array":t!==null&&typeof t=="object"?"object":"string"}function Qt(t){if(!t)return[];const e=t.data;return!e||typeof e!="object"?[]:Object.entries(e).map(([n,r])=>({key:n,type:ci(r),defaultValue:r}))}function bt(t){return{...t}}function Kt(t,e){return JSON.stringify({data:t,metadata:e},null,2)}function di({selectedConfig:t,isJsonMode:e,hasFormView:n,jsonInput:r,formFields:i,dataFields:o,onJsonChange:a,onToggleMode:l,onUpdateFormField:c,onSetFormFields:u}){return s.jsxs("div",{children:[s.jsxs("div",{className:"flex items-baseline justify-between mb-2",children:[s.jsx("label",{className:"block text-xs text-text-secondary",children:"Envelope"}),s.jsxs("div",{className:"flex items-center gap-3",children:[n&&s.jsx("button",{type:"button",onClick:l,className:"text-2xs text-accent hover:underline",children:e?"Form view":"JSON view"}),t.envelope_schema?s.jsx("span",{className:"text-2xs text-accent",children:"Pre-filled from workflow config"}):s.jsx("span",{className:"text-2xs text-status-warning",children:"No template"})]})]}),!t.envelope_schema&&s.jsx("div",{className:"bg-surface-sunken border border-surface-border rounded px-4 py-3 mb-3",children:s.jsxs("p",{className:"text-xs text-text-secondary leading-relaxed",children:["This workflow has no input template. Edit the JSON directly below, or ",s.jsx(mt,{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||!n?s.jsx("textarea",{value:r,onChange:d=>a(d.target.value),className:"input-json",rows:12,spellCheck:!1}):s.jsx("div",{className:"space-y-3",children:o.map(({key:d,type:x})=>{var f,y;const p=i[d],m=typeof p=="string"?p:JSON.stringify(p??(x==="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 s.jsxs("div",{children:[s.jsxs("label",{className:"block text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[d,s.jsx("span",{className:"ml-2 font-normal normal-case",children:x})]}),x==="boolean"?s.jsxs("select",{value:String(p??!1),onChange:j=>c(d,j.target.value,x),className:"select text-xs w-full",children:[s.jsx("option",{value:"true",children:"true"}),s.jsx("option",{value:"false",children:"false"})]}):x==="object"||x==="array"?s.jsx("textarea",{value:m,onChange:j=>{try{c(d,JSON.parse(j.target.value),x)}catch{u({...i,[d]:j.target.value})}},className:"input-json w-full",rows:b,spellCheck:!1}):s.jsx("input",{type:x==="number"?"number":"text",value:String(p??""),onChange:j=>c(d,j.target.value,x),className:"input text-xs w-full"})]},d)})}),s.jsxs("p",{className:"text-2xs text-text-tertiary mt-1.5",children:["The envelope wraps your workflow input. ",s.jsx("code",{className:"text-accent/80",children:"data"})," holds workflow-specific fields; ",s.jsx("code",{className:"text-accent/80",children:"metadata"})," is optional context."]})]})}const Zt="lt:invoke:prefill";function ui({selected:t,metadata:e,submission:n,lead:r,prefill:i,host:o=q.PAGE}){const[a,l]=g.useState(zt),[c,u]=g.useState(""),[d,x]=g.useState({}),[p,m]=g.useState(!1),b=g.useMemo(()=>{const v=t.envelope_schema??null;if(!i||Object.keys(i).length===0)return v;const k=v==null?void 0:v.data,I={...k&&typeof k=="object"?k:{},...i};return{...v??{},data:I}},[t.envelope_schema,i]),f=g.useMemo(()=>Qt(b),[b]),y=f.length>0;g.useEffect(()=>{u(""),n.reset();const v=o===q.PAGE?sessionStorage.getItem(Zt):null;if(v){sessionStorage.removeItem(Zt),l(v);try{const I=JSON.parse(v),w=(I==null?void 0:I.data)??I;w&&typeof w=="object"&&x(bt(w))}catch{}m(!0);return}l(b?JSON.stringify(b,null,2):zt);const k=b==null?void 0:b.data;x(k&&typeof k=="object"?bt(k):{}),m(!Qt(b).length)},[t.workflow_type]);const j=()=>{if(p)try{const v=JSON.parse(a);v.data&&typeof v.data=="object"&&x(bt(v.data))}catch{}else l(Kt(d,e));m(!p)},N=(v,k,I)=>{let w=k;I==="number"?w=k===""?0:Number(k):I==="boolean"&&(w=k==="true"||k===!0);const R={...d,[v]:w};x(R),l(Kt(R,e))},h=()=>{u("");let v;try{v=JSON.parse(a)}catch{u("Invalid JSON");return}const{data:k,metadata:I}=v;if(!k||typeof k!="object"){u('Envelope must include a "data" object');return}n.submit(k,I??{})};return s.jsxs("div",{children:[s.jsxs("div",{className:"space-y-6 pb-6",children:[r,s.jsx(di,{selectedConfig:t,isJsonMode:p,hasFormView:y,jsonInput:a,formFields:d,dataFields:f,onJsonChange:v=>{l(v),u("")},onToggleMode:j,onUpdateFormField:N,onSetFormFields:x})]}),s.jsx(Fe,{onSubmitAgain:n.reset,onSubmit:h,pending:n.pending,error:c||n.error,startedId:n.startedId,executionPath:n.executionPath,host:o})]})}function xi({workflow:t,workflowId:e,onDone:n,onRetry:r}){var c;const i=Tt(e),o=i.outcome===S.FAILED,a=i.outcome===S.RUNNING,l=o&&typeof((c=i.payload)==null?void 0:c.error)=="string"?i.payload.error:null;return s.jsxs("div",{className:"flex flex-col gap-4","data-testid":"run-receipt","data-outcome":i.outcome,children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(Ot,{icon:t.icon,tier:t.tier,className:"w-6 h-6 shrink-0 text-accent"}),s.jsx(Re,{outcome:i.outcome,className:"text-sm"})]}),a&&s.jsx(_t,{}),l&&s.jsx("p",{className:"text-xs text-status-error",role:"alert",children:l}),!a&&s.jsx(Le,{payload:l?void 0:i.payload}),s.jsxs("div",{className:"flex justify-end gap-2 pt-2 border-t border-surface-border/40",children:[o&&s.jsx("button",{type:"button",onClick:r,className:"btn-secondary text-xs","data-testid":"run-retry",children:"Try again"}),s.jsx("button",{type:"button",onClick:n,className:"btn-primary text-xs px-6","data-testid":"run-done",children:a||o?"Close":"Done"})]})]})}function $e(t,e){var r;const n=(r=t.envelope_schema)==null?void 0:r.metadata;return{...n&&typeof n=="object"?n:{},...e}}function pi({workflow:t,prefill:e,onClose:n}){const r=g.useMemo(()=>$e(t,e.metadata),[t,e.metadata]),i=Array.isArray(t.input_lookups)&&t.input_lookups.length>0,{data:o}=Mn(t.workflow_type,i),a=g.useMemo(()=>o?Dn(o.lookups):void 0,[o]),l=(o==null?void 0:o.lookups.filter(x=>x.missing))??[],c=Se(t,{certified:t.certified,overrideBot:""}),u=t.description?s.jsx(nt,{content:t.description,className:"text-xs text-text-secondary leading-relaxed"}):void 0,d=c.startedId!==null;return s.jsxs("div",{"data-testid":"invoke-modal",children:[d&&s.jsx(xi,{workflow:t,workflowId:c.startedId,onDone:n,onRetry:c.reset}),s.jsxs("div",{hidden:d,children:[l.length>0&&s.jsxs("p",{className:"flex items-center gap-1.5 text-2xs text-status-warning mb-4","data-testid":"lookup-missing",children:[s.jsx(xe,{className:"w-3 h-3 shrink-0",strokeWidth:1.5}),l.map(Zr).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?s.jsx(li,{selected:t,schema:t.input_schema,metadata:r,lookup:a,submission:c,lead:u,prefill:e.data,host:q.MODAL}):s.jsx(ui,{selected:t,metadata:r,submission:c,lead:u,prefill:e.data,host:q.MODAL})]})]})}function fi({open:t,onClose:e,workflow:n,prefill:r}){const i=s.jsxs("span",{className:"flex items-center gap-2 min-w-0",children:[s.jsx(Ot,{icon:n.icon,tier:n.tier,className:"w-4 h-4 shrink-0 text-accent"}),s.jsx("span",{className:"truncate",title:n.workflow_type,children:ge(n.workflow_type)})]});return s.jsx(ye,{open:t,onClose:e,title:i,maxWidth:"max-w-2xl",closeOnBackdrop:!1,children:s.jsx(pi,{workflow:n,prefill:r,onClose:e})})}const mi={[rt.LINK]:"inline-flex items-center gap-1.5 text-xs text-accent hover:text-accent-hover transition-colors",[rt.BUTTON]:"btn-secondary inline-flex items-center gap-1.5 text-xs px-3 py-1.5"};function gi({fieldKey:t,schema:e,escalationContext:n}){var u;const r=g.useMemo(()=>Vr(e),[e]),{data:i,isPending:o}=Pn(),a=i==null?void 0:i.find(d=>d.workflow_type===(r==null?void 0:r.workflow)),l=(u=n==null?void 0:n.escalation)==null?void 0:u.status,c=l!==void 0&&l!==qn.PENDING;return!r||c?null:o?s.jsx("div",{className:"h-4 w-32 rounded bg-surface-hover animate-pulse","data-testid":`invoke-widget-${t}-loading`}):a?s.jsx(bi,{fieldKey:t,schema:e,config:r,workflow:a,escalationContext:n}):null}function bi({fieldKey:t,schema:e,config:n,workflow:r,escalationContext:i}){var A;const o=i,a=g.useMemo(()=>Br(n,o),[n,o]),l=g.useMemo(()=>$e(r,a.metadata),[r,a.metadata]),c=Se(r,{certified:r.certified,overrideBot:""}),u=Tt(c.startedId??""),[d,x]=g.useState([]),[p,m]=g.useState(!1),[b,f]=g.useState(!1),y=(e==null?void 0:e.title)??ge(r.workflow_type),j=e==null?void 0:e.description,N=n.icon?s.jsx(Ot,{icon:r.icon,tier:r.tier,className:"w-3.5 h-3.5 shrink-0"}):null,h=()=>{m(!1),c.submit(a.data,l)},v=()=>{if(n.modal){f(!0);return}if(x([]),r.input_schema){const T=yr(r.input_schema,a.data,_e(l));if(T.length>0){x(T);return}}n.confirm?m(!0):h()},k=()=>{x([]),c.reset(),f(!0)},I=d.length>0?d:c.violations,w=c.startedId!==null,R=w&&u.outcome===S.RUNNING,P=w&&u.outcome===S.FAILED&&typeof((A=u.payload)==null?void 0:A.error)=="string"?u.payload.error:null;return s.jsxs("div",{"data-field-key":t,"data-testid":`invoke-widget-${t}`,children:[s.jsx(_,{children:y}),j&&s.jsx(F,{children:j}),s.jsxs("div",{className:"mt-1 flex flex-col gap-1.5",children:[w&&s.jsxs(s.Fragment,{children:[s.jsx(Re,{outcome:u.outcome}),R&&s.jsx(_t,{}),P&&s.jsx("p",{className:"text-2xs text-status-error",role:"alert",children:P}),!R&&s.jsx(Le,{payload:P?void 0:u.payload})]}),!R&&s.jsxs("button",{type:"button",onClick:v,disabled:c.pending,className:`self-start ${mi[n.variant]}`,"data-testid":`invoke-control-${t}`,children:[N,c.pending?"Starting…":y]}),I.length>0&&s.jsxs("div",{className:"text-2xs",role:"alert","data-testid":`invoke-issues-${t}`,children:[s.jsx("ul",{className:"space-y-0.5 text-status-error",children:I.map(T=>s.jsxs("li",{className:"flex items-start gap-1.5",children:[s.jsx(ft,{className:"w-3 h-3 mt-px shrink-0",strokeWidth:1.5}),s.jsxs("span",{children:[s.jsx("span",{className:"font-semibold",children:T.field})," · ",T.message]})]},T.field))}),s.jsx("button",{type:"button",onClick:k,className:"mt-1 text-accent hover:underline","data-testid":`invoke-open-form-${t}`,children:"Open form"})]}),I.length===0&&c.error&&s.jsx("p",{className:"text-2xs text-status-error",role:"alert",children:c.error})]}),n.confirm&&s.jsxs(ye,{open:p,onClose:()=>m(!1),title:y,children:[s.jsx("p",{className:"text-sm text-text-secondary mb-5",children:G(n.confirm,i??{})}),s.jsxs("div",{className:"flex justify-end gap-2",children:[s.jsx("button",{type:"button",onClick:()=>m(!1),className:"btn-secondary text-xs",children:"Cancel"}),s.jsx("button",{type:"button",onClick:h,className:"btn-primary text-xs","data-testid":`invoke-confirm-${t}`,children:y})]})]}),s.jsx(fi,{open:b,onClose:()=>f(!1),workflow:r,prefill:a})]})}const yi="x-lt-roster",hi=200,te="items",ji="any",D={WAITING:"waiting",IN:"in",FLAGGED:"flagged"},Ni="{{escalation.id}}",Me="—",De="batch_keys",ee="batch_pending",vi="accumulate_keys";function W(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function z(t){return typeof t=="string"?t?[t]:[]:Array.isArray(t)?t.filter(e=>typeof e=="string"&&e.length>0):[]}function ki(t){const e=t==null?void 0:t[yi];if(!W(e)||!W(e.expected))return;const n=e.expected;return W(n.query)||typeof n.list=="string"||n.batch===!0?e:void 0}function wi(t){const e=W(t==null?void 0:t.properties)?t.properties:{},n={};for(const[r,i]of Object.entries(e)){const o=W(i)?ki(i):void 0;o&&(n[r]=o)}return n}function Ai(t){return"query"in t.expected&&W(t.expected.query)?t.expected.query:null}function Ei(t,e){const n={};for(const[o,a]of Object.entries(t.facets??{})){if(typeof a!="string")continue;const l=G(a,e);if(!l||l===Me)return null;n[o]=l}const r=[...t.role?[t.role]:[],...z(t.roles)];if(!r.length&&!Object.keys(n).length)return null;const i=t.status&&t.status!==ji?t.status:void 0;return{...r.length?{roles:r}:{},facets:n,...i?{status:i}:{},limit:hi}}function at(t){if(W(t))return t;if(typeof t!="string"||!t)return null;try{const e=JSON.parse(t);return W(e)?e:null}catch{return null}}function Ii(t){return{escalation:t,metadata:W(t.metadata)?t.metadata:at(t.metadata),envelope:at(t.envelope),payload:at(t.escalation_payload),resolver:at(t.resolver_payload)}}function Ci(t){const e=t.metadata??{},n=e[vi];if(Array.isArray(n))return new Set(z(n));const r=et(t.envelope,"accumulate_items");if(W(r))return new Set(Object.keys(r));if(Array.isArray(e[ee])){const i=new Set(z(e[ee]));return new Set(z(e[De]).filter(o=>!i.has(o)))}return new Set}function Oi(t,e){const n=new Set;for(const r of t.in??[te])(r===te?[...Ci(e)]:z(V(r,e))).forEach(o=>n.add(o));return n}function Ti(t,e){if(e)for(const n of t.flagged??[]){const r=z(n.when);if(!(!r.length||typeof n.label!="string")&&tt(r,e))return n.label}}function _i(t,e,n){var l;const r=new Set,i=[],o=(c,u={})=>{!c||c===Me||r.has(c)||(r.add(c),i.push({key:c,...u}))},a=t.expected;if("query"in a){const c=t.key??Ni;for(const u of n)o(G(c,u),{row:u})}else if("list"in a)z(V(a.list,e)).forEach(c=>o(c));else{const c=a.labels?V(a.labels,e):void 0;for(const u of z((l=e.metadata)==null?void 0:l[De]))o(u,W(c)&&u in c?{label:c[u]}:{})}return i}function se(t,e,n=[]){const r=Oi(t,e),i=_i(t,e,n).map(l=>{if(r.has(l.key))return{...l,state:D.IN};const c=Ti(t,l.row);return c?{...l,state:D.FLAGGED,flag:c}:{...l,state:D.WAITING}}),o=l=>i.filter(c=>c.state===l).length,a=o(D.WAITING);return{entries:i,counts:{expected:i.length,in:o(D.IN),flagged:o(D.FLAGGED),waiting:a,outstanding:a}}}function Ri(t){const{counts:e}=t,n=[`${e.in} of ${e.expected} in`],r=new Map;for(const i of t.entries)i.state===D.FLAGGED&&i.flag&&r.set(i.flag,(r.get(i.flag)??0)+1);for(const[i,o]of r)n.push(`${o} ${i}`);return n.join(" · ")}const ne={waiting:"Waiting",in:"In",flagged:"Flagged"};function Li(t,e){const n=t.when??D.WAITING;return Array.isArray(n)?n.includes(e):n===e}function Si({state:t}){return t===D.IN?s.jsx(bn,{className:"w-4 h-4 text-status-success shrink-0",strokeWidth:2,"aria-hidden":!0}):t===D.FLAGGED?s.jsx(ue,{className:"w-4 h-4 text-status-warning shrink-0",strokeWidth:2,"aria-hidden":!0}):s.jsx(yn,{className:"w-4 h-4 text-text-tertiary shrink-0",strokeWidth:2,"aria-hidden":!0})}function Fi({entry:t,item:e,hostCtx:n,columns:r,actions:i,confirming:o,pending:a,error:l,onAction:c,onConfirm:u,onCancel:d}){const x=t.row??n,p=t.row?i.filter(f=>Li(f,t.state)):[],m=t.state===D.IN,b=t.state===D.FLAGGED?t.flag??ne.flagged:ne[t.state];return s.jsxs("li",{className:"py-2 flex items-start gap-3 border-b border-surface-border/50 last:border-0","data-testid":`roster-entry-${t.key}`,"data-state":t.state,children:[s.jsx("span",{className:"pt-0.5",children:s.jsx(Si,{state:t.state})}),s.jsx("div",{className:"min-w-0 flex-1 flex flex-wrap items-baseline gap-x-4 gap-y-0.5",children:r.map(f=>s.jsxs("span",{className:`text-sm min-w-0 ${m?"text-text-secondary":"text-text-primary"}`,children:[s.jsxs("span",{className:"sr-only",children:[f.label,": "]}),Te(kn(f.value,e,x),f.format)]},f.label))}),s.jsx("span",{className:`text-xs font-medium shrink-0 pt-0.5 ${m?"text-status-success":t.state===D.FLAGGED?"text-status-warning":"text-text-tertiary"}`,"data-testid":`roster-state-${t.key}`,children:b}),(p.length>0||o)&&s.jsxs("span",{className:"shrink-0 flex flex-col items-end gap-0.5",children:[o?s.jsx(Oe,{message:G(o.confirm??"",x),onConfirm:u,onCancel:d,testId:`roster-confirm-${t.key}`}):s.jsx("span",{className:"flex gap-1",children:p.map(f=>s.jsx("button",{type:"button",onClick:()=>c(f),disabled:a,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","data-testid":`roster-action-${t.key}`,children:f.label},f.label))}),l&&s.jsx("span",{className:"text-2xs text-status-error max-w-[16rem] text-right","data-testid":`roster-error-${t.key}`,children:l})]}),t.row&&s.jsx(It,{to:`/escalations/detail/${String(t.row.escalation.id)}`})]})}function $i(t,e){const n=Ai(t),r=n?Ei(n,e):null;return r?{roles:r.roles,status:r.status,facets:r.facets,limit:r.limit,include:me({key:t.key,flagged:t.flagged})?"envelope":void 0}:null}function Mi(t,e){const n=Object.entries(wi(t)),r=e??{},i=n.map(([,l])=>$i(l,r)),o=Ve({queries:i.map(l=>({...Wn(l??{}),enabled:!!l}))}),a={};return n.forEach(([l,c],u)=>{if(!i[u]){a[l]=se(c,r);return}const d=o[u];if(!d.isSuccess){a[l]=null;return}const x=d.data.escalations.map(p=>Ii(p));a[l]=se(c,r,x)}),a}function mo(t){const e=Object.entries(t).filter(([,n])=>n!==null);return e.length?Object.fromEntries(e.map(([n,r])=>[n,r.counts])):null}const Di=[{label:"Item",value:"{{item.itemKey}}"}];function st(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function Pi(t,e){const n=et(e.envelope,"accumulate_items"),r=et(e.envelope,"batch_items"),i=st(n)&&st(n[t.key])?n[t.key]:null,o=i&&st(i.payload)?i.payload:st(r)&&st(r[t.key])?r[t.key]:void 0;return{itemKey:t.key,at:typeof(i==null?void 0:i.at)=="string"?i.at:"",...o?{payload:o}:{},...typeof(i==null?void 0:i.actor)=="string"?{actor:i.actor}:{},...t.label!==void 0?{label:t.label}:{}}}function Wi({fieldKey:t,schema:e,escalationContext:n}){const r=n??{},i=Mi({properties:{[t]:e??{}}},r)[t],o=(e==null?void 0:e["x-lt-columns"])??Di,a=(e==null?void 0:e["x-lt-actions"])??[],l=(e==null?void 0:e.title)??"Expected items",c=e==null?void 0:e.description,u=be(),[d,x]=g.useState(null),[p,m]=g.useState(null),[b,f]=g.useState({}),y=async(N,h)=>{if(N.row){x(null),m(N.key),f(v=>({...v,[N.key]:""}));try{await u.mutateAsync({id:String(N.row.escalation.id),resolverPayload:xt(h.resolverPayload,N.row)})}catch(v){f(k=>({...k,[N.key]:v.message}))}finally{m(null)}}},j=(N,h)=>{h.confirm?x({key:N.key,action:h}):y(N,h)};return s.jsxs("div",{"data-field-key":t,"data-testid":`roster-widget-${t}`,children:[s.jsxs("div",{className:"flex items-baseline justify-between gap-3",children:[s.jsx(_,{children:l}),i&&s.jsx("span",{className:"text-sm font-medium text-text-primary","data-testid":`roster-headline-${t}`,children:Ri(i)})]}),c&&s.jsx(F,{children:c}),i?i.entries.length===0?s.jsx("p",{className:"text-xs text-text-tertiary italic py-2","data-testid":`roster-empty-${t}`,children:"Nothing expected."}):s.jsx("ul",{className:"mt-1","data-testid":`roster-list-${t}`,children:i.entries.map(N=>s.jsx(Fi,{entry:N,item:Pi(N,r),hostCtx:r,columns:o,actions:a,confirming:(d==null?void 0:d.key)===N.key?d.action:null,pending:p===N.key,error:b[N.key]||void 0,onAction:h=>j(N,h),onConfirm:()=>d&&void y(N,d.action),onCancel:()=>x(null)},N.key))}):s.jsx("p",{className:"text-xs text-text-tertiary py-2","data-testid":`roster-loading-${t}`,children:"Loading expected items…"})]})}const ct={"file-upload":vr,"code-editor":kr,signature:wr,"rich-text":Ar,markdown:Er,checklist:Cr,attachment:Jt,image:Jt,link:_r,escalation:Sr,"escalation-list":Wr,invoke:gi,roster:Wi},Pe="textarea",We="json";function Ui(t){return t in ct||t===Pe||t===We}function re(t,e=""){if(!t||typeof t!="object"||Array.isArray(t))return[];const n=t,r=[],i=n["x-lt-widget"];typeof i=="string"&&e&&!Ui(i)&&r.push({path:e,widget:i});const o=n.properties;if(o&&typeof o=="object"&&!Array.isArray(o))for(const[a,l]of Object.entries(o))r.push(...re(l,e?`${e}.${a}`:a));return n.items&&r.push(...re(n.items,e)),r}const Gi=new Set(["string","number","integer","boolean","array","object"]);function qi(t,e){const n=t==null?void 0:t.type;if(typeof n=="string"&&Gi.has(n))return n;if(e==null)return"null";if(Array.isArray(e))return"array";const r=typeof e;return r==="number"||r==="boolean"||r==="string"?r:"object"}const yt="dictionary",Hi=new Set(["markdown","attachment","image"]);function Ue(t,e){if(!e)return;const n=t==null?void 0:t["x-lt-section-options"],r=n==null?void 0:n[e];return r&&typeof r=="object"?r:void 0}function Ji(t,e,n){var l,c;const r=(l=t==null?void 0:t.properties)==null?void 0:l[n];if((r==null?void 0:r.readOnly)!==!0)return!1;const i=r==null?void 0:r["x-lt-widget"];if(typeof i=="string"&&Hi.has(i))return!1;const o=r==null?void 0:r["x-lt-display"];if(typeof o=="string")return o===yt;const a=(c=Ue(t,e))==null?void 0:c.display;return typeof a=="string"?a===yt:(t==null?void 0:t["x-lt-display"])===yt}function Vi(t,e,n,r){var o;const i=[];for(const a of t){const[l]=a,c=i[i.length-1];if(Ji(e,n,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(r==="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 Bi({value:t,options:e,nullable:n,fieldKey:r,label:i,helperText:o,isRequired:a,error:l,onBlur:c,ids:u,ariaProps:d,onChange:x}){const p=t==null||t===""?"":String(t),m=e.some(b=>String(b.value)===p);return s.jsxs("div",{children:[s.jsx(_,{isRequired:a,htmlFor:u.field,children:i}),o&&s.jsx(F,{id:u.help,children:o}),s.jsxs("select",{value:m?p:"",disabled:e.length===0,onChange:b=>{const f=e.find(y=>String(y.value)===b.target.value);x(f?f.value:null),c==null||c()},onBlur:c,"data-field-key":r,className:Nr(!!l),...d,children:[(!m||n)&&s.jsx("option",{value:"",disabled:!n,children:"Choose…"}),e.map(b=>s.jsx("option",{value:String(b.value),children:b.label},String(b.value)))]}),s.jsx(U,{error:l,id:u.error})]})}function Xi({value:t,options:e,fieldKey:n,label:r,helperText:i,isRequired:o,error:a,onBlur:l,ids:c,ariaProps:u,onChange:d}){const x=new Set(Array.isArray(t)?t:[]),p=m=>{const b=new Set(x);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 s.jsxs("div",{role:"group","aria-label":r,"aria-required":o||void 0,"aria-invalid":a?!0:void 0,"aria-describedby":u["aria-describedby"],children:[s.jsx(_,{isRequired:o,children:r}),i&&s.jsx(F,{id:c.help,children:i}),e.length===0?s.jsx("p",{className:"text-xs text-text-tertiary italic mt-1",children:"No options yet"}):s.jsx("div",{className:"flex flex-wrap gap-2 mt-2",children:e.map((m,b)=>{const f=x.has(m.value);return s.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:[s.jsx("input",{type:"checkbox",checked:f,onChange:()=>p(m.value),className:"sr-only","data-testid":`multi-select-${n}-${String(m.value)}`,...b===0?{"data-field-key":n,id:c.field}:{}}),f&&s.jsx(ce,{className:"w-3.5 h-3.5 shrink-0",strokeWidth:2.5}),m.label]},String(m.value))})}),s.jsx(U,{error:a,id:c.error})]})}function ie(t){return typeof t=="string"?t:t==null?"":JSON.stringify(t,null,2)}function oe(t){try{return{ok:!0,value:JSON.parse(t)}}catch{return{ok:!1}}}function Yi({value:t,fieldKey:e,label:n,helperText:r,isRequired:i,error:o,onBlur:a,ids:l,ariaProps:c,onChange:u}){const[d,x]=g.useState(()=>ie(t));g.useEffect(()=>{if(typeof t=="string"){t!==d&&x(t);return}const m=oe(d);!(m.ok&&JSON.stringify(m.value)===JSON.stringify(t??null))&&!(d.trim()===""&&t===null)&&x(ie(t))},[t]);const p=d.split(`
6
- `).length;return s.jsxs("div",{children:[s.jsx(_,{isRequired:i,htmlFor:l.field,children:n}),r&&s.jsx(F,{id:l.help,children:r}),s.jsx("textarea",{value:d,onChange:m=>{const b=m.target.value;if(x(b),b.trim()===""){u(null);return}const f=oe(b);u(f.ok?f.value:b)},onBlur:a,spellCheck:!1,"data-field-key":e,rows:Math.min(14,Math.max(4,p)),className:`${Z(!!o)} font-mono text-xs leading-relaxed`,...c}),s.jsx(U,{error:o,id:l.error})]})}function zi({fieldKey:t,label:e,values:n,fieldSchema:r,helperText:i,isRequired:o,error:a,ids:l,notice:c,context:u,onChange:d}){const x=K(r),p=x?er(r,u):null,m=(x==null?void 0:x.prompt)??i,b=f=>d(n.filter((y,j)=>j!==f));return s.jsxs("div",{"data-field-key":t,tabIndex:x?-1:void 0,className:"outline-none",children:[s.jsxs("div",{className:"flex items-baseline justify-between gap-3",children:[s.jsx(_,{isRequired:o,children:e}),p!==null&&s.jsxs("span",{className:"text-2xs tabular-nums text-text-tertiary","data-testid":"list-field-count",children:[n.length," of ",p]})]}),i&&(n.length>0||!x)&&s.jsx(F,{id:l.help,children:i}),n.length===0&&x?s.jsx("p",{id:l.help,className:"text-xs text-text-tertiary mt-1 italic","data-testid":"list-field-empty",children:m??"Scan to add"}):s.jsx("div",{className:"flex flex-wrap gap-1.5 mt-1",children:n.map((f,y)=>s.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),x&&s.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:s.jsx(hn,{className:"w-3 h-3",strokeWidth:2})})]},y))}),s.jsx(U,{error:a,id:l.error}),s.jsx(je,{notice:c})]})}const ae={date:"date","date-time":"datetime-local",email:"email",uri:"url"},Qi={date:"max-w-48","date-time":"max-w-64"};function Ge({fieldKey:t,value:e,onChange:n,onBlur:r,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],x=Jn(t),p=B(t,d),m=d==null?void 0:d["x-lt-widget"],b=qi(d,e),f=`lt-field-${t}`,y={field:f,help:`${f}-help`,error:`${f}-error`},j=typeof(d==null?void 0:d.description)=="string"&&d.description.length>0?d.description:void 0,N={id:f,"aria-required":o||void 0,"aria-invalid":l?!0:void 0,"aria-describedby":l?y.error:j?y.help:void 0},h={fieldKey:t,label:p,helperText:j,isRequired:o,error:l,onBlur:r,ids:y,ariaProps:N,onChange:n},v=m==="markdown"&&typeof e=="string",k=(m==="attachment"||m==="image")&&typeof e=="string",I=!!(m&&m in ct);if(a&&!v&&!k&&!I){const A=e===null?"null":typeof e=="object"?JSON.stringify(e,null,2):String(e);return s.jsxs("div",{children:[s.jsx(_,{isRequired:o,children:p}),s.jsx("p",{className:"text-sm text-text-secondary mt-0.5 whitespace-pre-wrap",children:A})]})}if(m===We&&(b==="array"||b==="object"))return s.jsx(Yi,{...h,value:e});if(m&&m in ct){const A=ct[m],T=o||(d==null?void 0:d["x-lt-require-all"])===!0,O={fieldKey:t,schema:d,escalationContext:c,isRequired:T,submitAttempted:u,error:l};if((d==null?void 0:d.type)==="object"){const M=typeof e=="string"?e:typeof e=="object"&&e!==null&&!Array.isArray(e)?JSON.stringify(e):"";return s.jsx(A,{...O,value:M,onChange:Q=>{try{n(JSON.parse(Q))}catch{n(Q)}}})}if(typeof e=="string")return s.jsx(A,{...O,value:e,onChange:M=>n(M)});if(typeof e=="object"&&e!==null&&!Array.isArray(e))return s.jsx(A,{...O,value:JSON.stringify(e),onChange:M=>{try{n(JSON.parse(M))}catch{n(M)}}})}const w=kt(d,c);if(b==="array"){if(w!==void 0&&(d==null?void 0:d["x-lt-options"])!==void 0)return s.jsx(Xi,{...h,value:e,options:w})}else if(w!==void 0&&b!=="object")return s.jsx(Bi,{...h,value:e,options:w,nullable:(d==null?void 0:d["x-lt-nullable"])===!0});switch(b){case"boolean":return s.jsxs("div",{children:[s.jsxs("label",{className:"flex items-center gap-2 cursor-pointer",children:[s.jsx("input",{type:"checkbox",checked:e===!0,onChange:A=>{n(A.target.checked),r==null||r()},className:"w-3.5 h-3.5 rounded accent-accent","data-field-key":t,...N}),s.jsxs("span",{className:"text-2xs font-semibold uppercase tracking-wider text-text-secondary",children:[p,o&&s.jsx("span",{className:"text-status-error ml-0.5",children:"*"})]})]}),j&&s.jsx(F,{id:y.help,children:j}),s.jsx(U,{error:l,id:y.error})]});case"number":case"integer":return s.jsxs("div",{children:[s.jsx(_,{isRequired:o,htmlFor:f,children:p}),j&&s.jsx(F,{id:y.help,children:j}),s.jsx("input",{type:"number",value:typeof e=="number"||typeof e=="string"?e:"",onChange:A=>n(parseFloat(A.target.value)||0),onBlur:r,step:"any","data-field-key":t,className:`${Z(!!l)} max-w-48`,...N}),s.jsx(U,{error:l,id:y.error})]});case"string":return R(typeof e=="string"?e:e==null?"":String(e));case"array":return!Array.isArray(e)&&!(e==null&&K(d))?R(e==null?"":String(e)):s.jsx(zi,{fieldKey:t,label:p,values:Array.isArray(e)?e:[],fieldSchema:d,helperText:j,isRequired:o,error:l,ids:y,notice:x,context:c,onChange:n});case"object":{if(typeof e!="object"||e===null||Array.isArray(e))return R(e==null?"":String(e));const A=Object.entries(e);return s.jsxs("div",{children:[s.jsx(_,{isRequired:o,children:p}),s.jsx("div",{className:"ml-4 mt-2 pl-4 border-l border-accent-faint space-y-3",children:A.map(([T,O])=>s.jsx(Ge,{fieldKey:T,value:O,onChange:M=>n({...e,[T]:M})},T))})]})}default:return s.jsxs("div",{children:[s.jsx(_,{isRequired:o,children:p}),s.jsx("p",{className:"text-xs text-text-tertiary italic mt-1",children:"null"})]})}function R(A){const T=d==null?void 0:d.format;if(T==="password")return s.jsxs("div",{children:[s.jsx(_,{isRequired:o,htmlFor:f,children:p}),j&&s.jsx(F,{id:y.help,children:j}),s.jsx("input",{type:"password",value:A,onChange:O=>n(O.target.value),onBlur:r,"data-field-key":t,className:Z(!!l),autoComplete:"off",...N}),s.jsx(U,{error:l,id:y.error})]});if(T&&T in ae)return s.jsxs("div",{children:[s.jsx(_,{isRequired:o,htmlFor:f,children:p}),j&&s.jsx(F,{id:y.help,children:j}),s.jsx("input",{type:ae[T],value:A,onChange:O=>n(O.target.value),onBlur:r,"data-field-key":t,className:`${Z(!!l)} ${Qi[T]??""}`,...N}),s.jsx(U,{error:l,id:y.error})]});if(T==="textarea"||m===Pe||A.includes(`
7
- `)||A.length>80){const O=d==null?void 0:d.maxLength,M=d==null?void 0:d["x-lt-max-length"],Q=M?Number(V(M,c)):NaN,H=O??(Number.isFinite(Q)?Q:void 0),gt=H!==void 0&&A.length>H;return s.jsxs("div",{children:[s.jsx(_,{isRequired:o,htmlFor:f,children:p}),j&&s.jsx(F,{id:y.help,children:j}),s.jsx("textarea",{value:A,onChange:it=>{n(it.target.value),r==null||r()},onBlur:r,"data-field-key":t,className:`${Z(!!l)} leading-relaxed`,rows:Math.min(6,Math.max(3,Math.ceil(A.length/60))),...N}),H!==void 0&&s.jsxs("p",{className:`text-2xs mt-0.5 text-right tabular-nums ${gt?"text-status-error font-medium":"text-text-quaternary"}`,children:[A.length," / ",H]}),s.jsx(U,{error:l,id:y.error})]})}return s.jsxs("div",{children:[s.jsx(_,{isRequired:o,htmlFor:f,children:p}),j&&s.jsx(F,{id:y.help,children:j}),s.jsx("input",{type:"text",value:A,onChange:O=>n(O.target.value),onBlur:r,"data-field-key":t,className:Z(!!l),...N}),s.jsx(U,{error:l,id:y.error}),s.jsx(je,{notice:x})]})}}function Ki({name:t,entries:e,formSchema:n,layout:r,renderField:i}){const o=Vi(e,n,t,r),a=Ue(n,t),l=(a==null?void 0:a.columns)??(r==="two-column"?2:1),c=d=>d.map(([x,p])=>{var m;return{key:x,label:B(x,(m=n==null?void 0:n.properties)==null?void 0:m[x]),value:p}}),u=()=>o.map((d,x)=>d.kind==="dictionary"?s.jsx("div",{className:r==="two-column"?"col-span-full":"",children:s.jsx(Un,{items:c(d.entries),columns:l})},`dict-${x}`):d.kind==="column-group"?s.jsx("div",{className:"@container",children:s.jsx("div",{className:"grid grid-cols-1 @grp-cols:grid-cols-2 gap-x-4 gap-y-5",children:d.entries.map(p=>i(p))})},`group-${d.name}-${x}`):i(d.entry));return s.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&&s.jsx("p",{className:"mb-4 text-[1.40625rem] font-semibold tracking-wider text-heading [font-variant-caps:small-caps]",children:t}),r==="two-column"?s.jsx("div",{className:"@container",children:s.jsx("div",{className:"grid grid-cols-1 @form-cols:grid-cols-2 gap-x-col-gap gap-y-5",children:u()})}):s.jsx("div",{className:"space-y-5",children:u()})]})}function Zi({value:t,onChange:e,disabled:n,submitAttempted:r,escalationContext:i,onOpenHelp:o,onDisabledClick:a,disabledHint:l}){var Rt,Lt;const[c,u]=g.useState({}),[d,x]=g.useState({}),[p,m]=g.useState(null),[b,f]=g.useState(!1),[y,j]=g.useState(new Set);g.useEffect(()=>{try{const E=JSON.parse(t);if(typeof E=="object"&&E!==null&&!Array.isArray(E)){const L={},C={};for(const[$,X]of Object.entries(E))$.startsWith("_")||$.startsWith("$")?C[$]=X:L[$]=X;u(L),x(C),m(C._form_schema&&typeof C._form_schema=="object"?C._form_schema:null),f(!1)}}catch{f(!0)}},[t]);const N=g.useCallback(E=>{u(E),e(JSON.stringify({...E,...d},null,2))},[d,e]),h=g.useCallback((E,L)=>{N({...c,[E]:L})},[c,N]),v=g.useCallback(E=>{j(L=>{if(L.has(E))return L;const C=new Set(L);return C.add(E),C})},[]);if(b)return s.jsx("p",{className:"text-xs text-status-error",children:"Unable to parse resolver data as form. Use the JSON editor below."});const k=Object.entries(c);if(k.length===0)return s.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No resolver fields defined."});const I=p==null?void 0:p["x-lt-order"],w=I?[...k].sort((E,L)=>{const C=I.indexOf(E[0]),$=I.indexOf(L[0]);return(C===-1?1/0:C)-($===-1?1/0:$)}):k,R={...i??{},resolver:c,input:c},P=w.filter(([E,L])=>{var $;const C=($=p==null?void 0:p.properties)==null?void 0:$[E];return Ie(C)||!tt(C==null?void 0:C["x-lt-showIf"],R)?!1:!dr(C,L)}),A=new Set((p==null?void 0:p.required)??[]),T=p==null?void 0:p["x-lt-layout"],O=p==null?void 0:p.title,M=p==null?void 0:p.description,Q=typeof(p==null?void 0:p["x-lt-help"])=="string"||typeof(p==null?void 0:p["x-lt-context"])=="string",H=[];for(const E of P){const[L]=E,C=(Rt=p==null?void 0:p.properties)==null?void 0:Rt[L],$=((Lt=C==null?void 0:C["x-lt-section"])==null?void 0:Lt.trim())||null,X=H[H.length-1];!X||X.name!==$?H.push({name:$,entries:[E]}):X.entries.push(E)}const gt=([E,L])=>{var Ft;const C=(Ft=p==null?void 0:p.properties)==null?void 0:Ft[E],$=(C==null?void 0:C.readOnly)===!0,X=(C==null?void 0:C["x-lt-span"])??1,St=A.has(E),qe=y.has(E)||!!r,He=Ee(L,C,St,qe,R);return s.jsx("div",{className:`animate-[field-enter_0.2s_ease-out] ${T==="two-column"&&X>=2?"col-span-full":""}`,children:s.jsx(Ge,{fieldKey:E,value:L,onChange:Je=>h(E,Je),onBlur:()=>v(E),schema:p,isRequired:St,isReadOnly:$,error:He,escalationContext:R,submitAttempted:!!r})},E)},it=s.jsxs("div",{className:n?"pointer-events-none":void 0,inert:n||void 0,"aria-disabled":n||void 0,children:[O&&s.jsxs("div",{className:"mb-1 flex items-center gap-1.5",children:[s.jsx("h3",{className:"heading-3",children:O}),Q&&o&&s.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:s.jsx(pe,{className:"w-4 h-4",strokeWidth:1.5})})]}),M&&s.jsx("p",{className:"text-sm text-text-secondary leading-relaxed mb-6",children:M}),s.jsx("div",{className:"space-y-8",children:H.map((E,L)=>s.jsx(Ki,{name:E.name,entries:E.entries,formSchema:p,layout:T,renderField:gt},E.name??`__s${L}`))})]});return n?s.jsx(jr,{hint:l,onLockedClick:a,children:it}):s.jsx("div",{className:"pb-8 max-w-form",children:it})}export{Ne as E,lo as F,ui as L,Zi as R,Ot as W,co as a,Ht as b,mo as c,B as d,$t as e,Se as f,li as g,_e as h,Bn as i,fo as j,Kr as k,Zr as l,re as m,uo as p,Dr as r,po as s,Mi as u,Ce as v,xo as w};
8
- //# sourceMappingURL=ResolverForm-Bl8Pibyz.js.map