@hotmeshio/long-tail 0.10.2 → 0.10.4

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 (397) hide show
  1. package/README.md +1 -0
  2. package/build/api/bot-accounts.d.ts +4 -0
  3. package/build/api/bot-accounts.js +3 -1
  4. package/build/api/escalations/metadata.js +21 -1
  5. package/build/api/escalations/resolve.d.ts +8 -0
  6. package/build/api/escalations/resolve.js +82 -3
  7. package/build/api/roles.d.ts +2 -0
  8. package/build/api/roles.js +4 -0
  9. package/build/bin/ltc.js +10 -1
  10. package/build/index.js +7 -1
  11. package/build/lib/cli/client.d.ts +4 -1
  12. package/build/lib/cli/client.js +4 -2
  13. package/build/lib/db/schemas/023_role_enforce_schema.sql +18 -0
  14. package/build/lib/typed-resolution.d.ts +35 -0
  15. package/build/lib/typed-resolution.js +37 -0
  16. package/build/modules/branding.d.ts +21 -2
  17. package/build/modules/branding.js +22 -1
  18. package/build/modules/config.d.ts +1 -0
  19. package/build/modules/config.js +5 -0
  20. package/build/routes/bot-accounts.js +3 -1
  21. package/build/routes/settings.js +21 -0
  22. package/build/sdk/index.d.ts +4 -0
  23. package/build/sdk/index.js +14 -0
  24. package/build/services/escalation/crud.d.ts +18 -6
  25. package/build/services/escalation/crud.js +18 -2
  26. package/build/services/escalation/index.d.ts +1 -0
  27. package/build/services/escalation/index.js +1 -0
  28. package/build/services/escalation/resolver-validation.d.ts +28 -0
  29. package/build/services/escalation/resolver-validation.js +95 -0
  30. package/build/services/escalation/sql.d.ts +12 -2
  31. package/build/services/escalation/sql.js +22 -2
  32. package/build/services/iam/bots.d.ts +4 -1
  33. package/build/services/iam/bots.js +5 -3
  34. package/build/services/iam/sql.d.ts +2 -2
  35. package/build/services/iam/sql.js +15 -1
  36. package/build/services/role/enforcement-cache.d.ts +21 -0
  37. package/build/services/role/enforcement-cache.js +0 -0
  38. package/build/services/role/index.js +5 -0
  39. package/build/services/role/sql.d.ts +12 -2
  40. package/build/services/role/sql.js +15 -2
  41. package/build/services/role/types.d.ts +9 -0
  42. package/build/shared/form-validation/derive-field-label.d.ts +14 -0
  43. package/build/shared/form-validation/derive-field-label.js +31 -0
  44. package/build/shared/form-validation/field-validator.d.ts +45 -0
  45. package/build/shared/form-validation/field-validator.js +214 -0
  46. package/build/shared/form-validation/index.d.ts +12 -0
  47. package/build/shared/form-validation/index.js +28 -0
  48. package/build/shared/form-validation/validate-resolver-payload.d.ts +41 -0
  49. package/build/shared/form-validation/validate-resolver-payload.js +62 -0
  50. package/build/shared/form-validation/x-lt-bind.d.ts +41 -0
  51. package/build/shared/form-validation/x-lt-bind.js +110 -0
  52. package/build/shared/form-validation/x-lt-help.d.ts +21 -0
  53. package/build/shared/form-validation/x-lt-help.js +91 -0
  54. package/build/shared/form-validation/x-lt-show-if.d.ts +7 -0
  55. package/build/shared/form-validation/x-lt-show-if.js +84 -0
  56. package/build/system/mcp-servers/admin/schemas.d.ts +3 -0
  57. package/build/system/mcp-servers/admin/schemas.js +1 -0
  58. package/build/system/mcp-servers/admin/users.js +3 -1
  59. package/build/system/mcp-servers/human-queue-schemas.d.ts +4 -4
  60. package/build/system/mcp-servers/human-queue-schemas.js +4 -1
  61. package/build/system/mcp-servers/human-queue.js +41 -2
  62. package/build/tsconfig.tsbuildinfo +1 -1
  63. package/build/types/sdk.d.ts +6 -1
  64. package/build/types/startup.d.ts +26 -0
  65. package/build/types/validation.d.ts +43 -0
  66. package/build/types/validation.js +28 -0
  67. package/dashboard/dist/assets/{AdminDashboard-Dy031e9g.js → AdminDashboard-Cma2NGsF.js} +2 -2
  68. package/dashboard/dist/assets/{AdminDashboard-Dy031e9g.js.map → AdminDashboard-Cma2NGsF.js.map} +1 -1
  69. package/dashboard/dist/assets/AgentConfigPage-CbIhM-fa.js +16 -0
  70. package/dashboard/dist/assets/AgentConfigPage-CbIhM-fa.js.map +1 -0
  71. package/dashboard/dist/assets/AgentDetailPage-DuLEKzRT.js +4 -0
  72. package/dashboard/dist/assets/AgentDetailPage-DuLEKzRT.js.map +1 -0
  73. package/dashboard/dist/assets/AgentsPage-DZO9i7Nl.js +2 -0
  74. package/dashboard/dist/assets/AgentsPage-DZO9i7Nl.js.map +1 -0
  75. package/dashboard/dist/assets/AvailableEscalationsPage-DlVoNd8B.js +2 -0
  76. package/dashboard/dist/assets/AvailableEscalationsPage-DlVoNd8B.js.map +1 -0
  77. package/dashboard/dist/assets/{BotPicker-2QEIpc-K.js → BotPicker-CidlGr6f.js} +2 -2
  78. package/dashboard/dist/assets/{BotPicker-2QEIpc-K.js.map → BotPicker-CidlGr6f.js.map} +1 -1
  79. package/dashboard/dist/assets/CapabilitiesPage-BMNNTa0D.js +2 -0
  80. package/dashboard/dist/assets/{CapabilitiesPage-lQJGZ_-t.js.map → CapabilitiesPage-BMNNTa0D.js.map} +1 -1
  81. package/dashboard/dist/assets/{CollapsibleSection-CHWP0WI6.js → CollapsibleSection-W9F9lziT.js} +2 -2
  82. package/dashboard/dist/assets/{CollapsibleSection-CHWP0WI6.js.map → CollapsibleSection-W9F9lziT.js.map} +1 -1
  83. package/dashboard/dist/assets/ConfirmDeleteModal-BUh-Dzba.js +2 -0
  84. package/dashboard/dist/assets/{ConfirmDeleteModal-C0x0HcHX.js.map → ConfirmDeleteModal-BUh-Dzba.js.map} +1 -1
  85. package/dashboard/dist/assets/{CopyableId-uot2mE_g.js → CopyableId-B1mxKfVb.js} +2 -2
  86. package/dashboard/dist/assets/{CopyableId-uot2mE_g.js.map → CopyableId-B1mxKfVb.js.map} +1 -1
  87. package/dashboard/dist/assets/CountdownTimer-lkv_7msa.js +2 -0
  88. package/dashboard/dist/assets/{CountdownTimer-TXsRlTU4.js.map → CountdownTimer-lkv_7msa.js.map} +1 -1
  89. package/dashboard/dist/assets/{CredentialsPage-BKxS-1sA.js → CredentialsPage-DyOgfnPB.js} +2 -2
  90. package/dashboard/dist/assets/CredentialsPage-DyOgfnPB.js.map +1 -0
  91. package/dashboard/dist/assets/{CronLabel-Bd2G0Rap.js → CronLabel-geum95dj.js} +2 -2
  92. package/dashboard/dist/assets/{CronLabel-Bd2G0Rap.js.map → CronLabel-geum95dj.js.map} +1 -1
  93. package/dashboard/dist/assets/CustomDurationPicker-ClufO2ew.js +2 -0
  94. package/dashboard/dist/assets/CustomDurationPicker-ClufO2ew.js.map +1 -0
  95. package/dashboard/dist/assets/DataTable-BTu2AaEl.js +2 -0
  96. package/dashboard/dist/assets/DataTable-BTu2AaEl.js.map +1 -0
  97. package/dashboard/dist/assets/{DropZone-DNDEgMpJ.js → DropZone-C3hOjJtC.js} +2 -2
  98. package/dashboard/dist/assets/{DropZone-DNDEgMpJ.js.map → DropZone-C3hOjJtC.js.map} +1 -1
  99. package/dashboard/dist/assets/{ElapsedCell-g7GO7f8L.js → ElapsedCell-DFOW9T4b.js} +2 -2
  100. package/dashboard/dist/assets/{ElapsedCell-g7GO7f8L.js.map → ElapsedCell-DFOW9T4b.js.map} +1 -1
  101. package/dashboard/dist/assets/EscalationListSchemaPage-_IhqXIQu.js +20 -0
  102. package/dashboard/dist/assets/EscalationListSchemaPage-_IhqXIQu.js.map +1 -0
  103. package/dashboard/dist/assets/EscalationSchemaPage-BCC7iscN.js +9 -0
  104. package/dashboard/dist/assets/EscalationSchemaPage-BCC7iscN.js.map +1 -0
  105. package/dashboard/dist/assets/EscalationsOverview-CvIdOtoP.js +2 -0
  106. package/dashboard/dist/assets/EscalationsOverview-CvIdOtoP.js.map +1 -0
  107. package/dashboard/dist/assets/EventTable-DJWJ7J0m.js +2 -0
  108. package/dashboard/dist/assets/EventTable-DJWJ7J0m.js.map +1 -0
  109. package/dashboard/dist/assets/FilterBar-BR3ztZ8y.js +2 -0
  110. package/dashboard/dist/assets/FilterBar-BR3ztZ8y.js.map +1 -0
  111. package/dashboard/dist/assets/GraphInvokePage-Cwn-8Glr.js +2 -0
  112. package/dashboard/dist/assets/GraphInvokePage-Cwn-8Glr.js.map +1 -0
  113. package/dashboard/dist/assets/HomePage-D8RVntg0.js +2 -0
  114. package/dashboard/dist/assets/HomePage-D8RVntg0.js.map +1 -0
  115. package/dashboard/dist/assets/ListToolbar-DuoEdVtK.js +2 -0
  116. package/dashboard/dist/assets/ListToolbar-DuoEdVtK.js.map +1 -0
  117. package/dashboard/dist/assets/McpOverview-NXKsGiWU.js +2 -0
  118. package/dashboard/dist/assets/McpOverview-NXKsGiWU.js.map +1 -0
  119. package/dashboard/dist/assets/McpQueryDetailPage-BC-iXfIx.js +5 -0
  120. package/dashboard/dist/assets/McpQueryDetailPage-BC-iXfIx.js.map +1 -0
  121. package/dashboard/dist/assets/{McpQueryPage-CsKNXUhb.js → McpQueryPage-BPJmFYOY.js} +2 -2
  122. package/dashboard/dist/assets/{McpQueryPage-CsKNXUhb.js.map → McpQueryPage-BPJmFYOY.js.map} +1 -1
  123. package/dashboard/dist/assets/McpRunDetailPage-B49nUXEl.js +2 -0
  124. package/dashboard/dist/assets/McpRunDetailPage-B49nUXEl.js.map +1 -0
  125. package/dashboard/dist/assets/McpRunsPage-Ce_XIYpP.js +2 -0
  126. package/dashboard/dist/assets/McpRunsPage-Ce_XIYpP.js.map +1 -0
  127. package/dashboard/dist/assets/NamespacePill-LWvZXt_g.js +2 -0
  128. package/dashboard/dist/assets/NamespacePill-LWvZXt_g.js.map +1 -0
  129. package/dashboard/dist/assets/OperationsPage-DI7AQO9f.js +2 -0
  130. package/dashboard/dist/assets/OperationsPage-DI7AQO9f.js.map +1 -0
  131. package/dashboard/dist/assets/OperatorDashboard-DpXjhs-3.js +2 -0
  132. package/dashboard/dist/assets/{OperatorDashboard-_axS17fp.js.map → OperatorDashboard-DpXjhs-3.js.map} +1 -1
  133. package/dashboard/dist/assets/PageHeader-DvEmMMP6.js +2 -0
  134. package/dashboard/dist/assets/PageHeader-DvEmMMP6.js.map +1 -0
  135. package/dashboard/dist/assets/PageHeaderWithStats-X0eAmu-x.js +2 -0
  136. package/dashboard/dist/assets/PageHeaderWithStats-X0eAmu-x.js.map +1 -0
  137. package/dashboard/dist/assets/{PriorityBadge-B4ykBH7f.js → PriorityBadge-CCERr9vQ.js} +2 -2
  138. package/dashboard/dist/assets/PriorityBadge-CCERr9vQ.js.map +1 -0
  139. package/dashboard/dist/assets/ProcessDetailPage-DpYSMRj1.js +2 -0
  140. package/dashboard/dist/assets/ProcessDetailPage-DpYSMRj1.js.map +1 -0
  141. package/dashboard/dist/assets/{ProcessesListPage-CoQEi_Su.js → ProcessesListPage-CQ9tSw7U.js} +2 -2
  142. package/dashboard/dist/assets/{ProcessesListPage-CoQEi_Su.js.map → ProcessesListPage-CQ9tSw7U.js.map} +1 -1
  143. package/dashboard/dist/assets/RoleDetailPage-DKeQKDkW.js +8 -0
  144. package/dashboard/dist/assets/RoleDetailPage-DKeQKDkW.js.map +1 -0
  145. package/dashboard/dist/assets/RolePill-CWhoLwef.js +2 -0
  146. package/dashboard/dist/assets/RolePill-CWhoLwef.js.map +1 -0
  147. package/dashboard/dist/assets/RolesPage-D-6kIact.js +2 -0
  148. package/dashboard/dist/assets/RolesPage-D-6kIact.js.map +1 -0
  149. package/dashboard/dist/assets/RunAsSelector-DzYcpQTm.js +2 -0
  150. package/dashboard/dist/assets/RunAsSelector-DzYcpQTm.js.map +1 -0
  151. package/dashboard/dist/assets/StatCard-DBANWIss.js +2 -0
  152. package/dashboard/dist/assets/StatCard-DBANWIss.js.map +1 -0
  153. package/dashboard/dist/assets/StatusBadge-BbqghFMi.js +2 -0
  154. package/dashboard/dist/assets/StatusBadge-BbqghFMi.js.map +1 -0
  155. package/dashboard/dist/assets/{StickyPagination-Cd83AHd_.js → StickyPagination-BTGfmGV3.js} +2 -2
  156. package/dashboard/dist/assets/{StickyPagination-Cd83AHd_.js.map → StickyPagination-BTGfmGV3.js.map} +1 -1
  157. package/dashboard/dist/assets/StreamMessageDetail-DqRpzA_6.js +2 -0
  158. package/dashboard/dist/assets/StreamMessageDetail-DqRpzA_6.js.map +1 -0
  159. package/dashboard/dist/assets/SwimlaneTimeline-CA106TYo.js +2 -0
  160. package/dashboard/dist/assets/SwimlaneTimeline-CA106TYo.js.map +1 -0
  161. package/dashboard/dist/assets/TagInput-CoR4MzsW.js +2 -0
  162. package/dashboard/dist/assets/TagInput-CoR4MzsW.js.map +1 -0
  163. package/dashboard/dist/assets/{TaskDetailPage-DnjhW7qv.js → TaskDetailPage-BRg-w2Ev.js} +2 -2
  164. package/dashboard/dist/assets/{TaskDetailPage-DnjhW7qv.js.map → TaskDetailPage-BRg-w2Ev.js.map} +1 -1
  165. package/dashboard/dist/assets/TaskQueuePill-Dw3YN8M-.js +2 -0
  166. package/dashboard/dist/assets/TaskQueuePill-Dw3YN8M-.js.map +1 -0
  167. package/dashboard/dist/assets/{TasksListPage-DySfZFgs.js → TasksListPage-kB_j9G8o.js} +2 -2
  168. package/dashboard/dist/assets/{TasksListPage-DySfZFgs.js.map → TasksListPage-kB_j9G8o.js.map} +1 -1
  169. package/dashboard/dist/assets/{TimeAgo-BKOl-7Tt.js → TimeAgo-D7dSIY7-.js} +2 -2
  170. package/dashboard/dist/assets/{TimeAgo-BKOl-7Tt.js.map → TimeAgo-D7dSIY7-.js.map} +1 -1
  171. package/dashboard/dist/assets/TimestampCell-BZe6bx18.js +2 -0
  172. package/dashboard/dist/assets/TimestampCell-BZe6bx18.js.map +1 -0
  173. package/dashboard/dist/assets/ToolPill-xX-buQtY.js +2 -0
  174. package/dashboard/dist/assets/ToolPill-xX-buQtY.js.map +1 -0
  175. package/dashboard/dist/assets/ToolTestPanel-U3NaF_T_.js +2 -0
  176. package/dashboard/dist/assets/ToolTestPanel-U3NaF_T_.js.map +1 -0
  177. package/dashboard/dist/assets/TopicDetailPage-BpALvXP1.js +9 -0
  178. package/dashboard/dist/assets/TopicDetailPage-BpALvXP1.js.map +1 -0
  179. package/dashboard/dist/assets/TopicsPage-Cy3chaca.js +2 -0
  180. package/dashboard/dist/assets/{TopicsPage-5yW63ELl.js.map → TopicsPage-Cy3chaca.js.map} +1 -1
  181. package/dashboard/dist/assets/{UserName-DcXhOSVm.js → UserName-VXM1oHMC.js} +2 -2
  182. package/dashboard/dist/assets/{UserName-DcXhOSVm.js.map → UserName-VXM1oHMC.js.map} +1 -1
  183. package/dashboard/dist/assets/WorkflowExecutionPage-BCq2cR1V.js +2 -0
  184. package/dashboard/dist/assets/WorkflowExecutionPage-BCq2cR1V.js.map +1 -0
  185. package/dashboard/dist/assets/WorkflowPill-CQ1AmhlC.js +2 -0
  186. package/dashboard/dist/assets/WorkflowPill-CQ1AmhlC.js.map +1 -0
  187. package/dashboard/dist/assets/{WorkflowsDashboard-C0Bbrd5M.js → WorkflowsDashboard-BbM69MnB.js} +2 -2
  188. package/dashboard/dist/assets/{WorkflowsDashboard-C0Bbrd5M.js.map → WorkflowsDashboard-BbM69MnB.js.map} +1 -1
  189. package/dashboard/dist/assets/WorkflowsOverview-D5HthpAW.js +2 -0
  190. package/dashboard/dist/assets/WorkflowsOverview-D5HthpAW.js.map +1 -0
  191. package/dashboard/dist/assets/{YamlWorkflowDetailPage-BcbrYhDI.js → YamlWorkflowDetailPage-CDDVMYWi.js} +10 -10
  192. package/dashboard/dist/assets/{YamlWorkflowDetailPage-BcbrYhDI.js.map → YamlWorkflowDetailPage-CDDVMYWi.js.map} +1 -1
  193. package/dashboard/dist/assets/YamlWorkflowsPage-FFjWwydj.js +2 -0
  194. package/dashboard/dist/assets/YamlWorkflowsPage-FFjWwydj.js.map +1 -0
  195. package/dashboard/dist/assets/{agents-CopQ3t5o.js → agents-BwiSNu73.js} +2 -2
  196. package/dashboard/dist/assets/{agents-CopQ3t5o.js.map → agents-BwiSNu73.js.map} +1 -1
  197. package/dashboard/dist/assets/bots-ClgSrxel.js +2 -0
  198. package/dashboard/dist/assets/bots-ClgSrxel.js.map +1 -0
  199. package/dashboard/dist/assets/{capabilities-5JRieYUy.js → capabilities-JUaKsby4.js} +2 -2
  200. package/dashboard/dist/assets/{capabilities-5JRieYUy.js.map → capabilities-JUaKsby4.js.map} +1 -1
  201. package/dashboard/dist/assets/{controlplane-B4rT6tIw.js → controlplane-CuTQ7eUE.js} +2 -2
  202. package/dashboard/dist/assets/{controlplane-B4rT6tIw.js.map → controlplane-CuTQ7eUE.js.map} +1 -1
  203. package/dashboard/dist/assets/escalation-columns-CS0c7cAr.js +2 -0
  204. package/dashboard/dist/assets/escalation-columns-CS0c7cAr.js.map +1 -0
  205. package/dashboard/dist/assets/index-BBA4AxmL.js +2 -0
  206. package/dashboard/dist/assets/index-BBA4AxmL.js.map +1 -0
  207. package/dashboard/dist/assets/index-C-8xXyvr.js +63 -0
  208. package/dashboard/dist/assets/index-C-8xXyvr.js.map +1 -0
  209. package/dashboard/dist/assets/index-C1t0YIXC.js +5 -0
  210. package/dashboard/dist/assets/index-C1t0YIXC.js.map +1 -0
  211. package/dashboard/dist/assets/index-C9o2UNhC.js +2 -0
  212. package/dashboard/dist/assets/index-C9o2UNhC.js.map +1 -0
  213. package/dashboard/dist/assets/index-CBj-vstO.js +2 -0
  214. package/dashboard/dist/assets/{index-Dd1RxGNw.js.map → index-CBj-vstO.js.map} +1 -1
  215. package/dashboard/dist/assets/index-CUguKMXZ.js +2 -0
  216. package/dashboard/dist/assets/index-CUguKMXZ.js.map +1 -0
  217. package/dashboard/dist/assets/index-Cavwd8UU.js +6 -0
  218. package/dashboard/dist/assets/index-Cavwd8UU.js.map +1 -0
  219. package/dashboard/dist/assets/index-CnsPBTXL.js +2 -0
  220. package/dashboard/dist/assets/index-CnsPBTXL.js.map +1 -0
  221. package/dashboard/dist/assets/index-CoPWHo_H.js +2 -0
  222. package/dashboard/dist/assets/index-CoPWHo_H.js.map +1 -0
  223. package/dashboard/dist/assets/index-CwQVaa7x.js +2 -0
  224. package/dashboard/dist/assets/index-CwQVaa7x.js.map +1 -0
  225. package/dashboard/dist/assets/index-DSa-6Ux8.js +2 -0
  226. package/dashboard/dist/assets/index-DSa-6Ux8.js.map +1 -0
  227. package/dashboard/dist/assets/index-DeMs_aBT.css +1 -0
  228. package/dashboard/dist/assets/index-Ikj_NTuy.js +5 -0
  229. package/dashboard/dist/assets/index-Ikj_NTuy.js.map +1 -0
  230. package/dashboard/dist/assets/index-Xd1jcHe7.js +2 -0
  231. package/dashboard/dist/assets/index-Xd1jcHe7.js.map +1 -0
  232. package/dashboard/dist/assets/{knowledge-B9bmoXOe.js → knowledge-BHBt-6kW.js} +2 -2
  233. package/dashboard/dist/assets/{knowledge-B9bmoXOe.js.map → knowledge-BHBt-6kW.js.map} +1 -1
  234. package/dashboard/dist/assets/{mcp-DYMFBOFz.js → mcp-CBcz4BCS.js} +2 -2
  235. package/dashboard/dist/assets/{mcp-DYMFBOFz.js.map → mcp-CBcz4BCS.js.map} +1 -1
  236. package/dashboard/dist/assets/{mcp-query-wloSpyPM.js → mcp-query-C4fKTOYo.js} +2 -2
  237. package/dashboard/dist/assets/{mcp-query-wloSpyPM.js.map → mcp-query-C4fKTOYo.js.map} +1 -1
  238. package/dashboard/dist/assets/{pipelines-DBXX6TEi.js → pipelines-CmAAH3B6.js} +2 -2
  239. package/dashboard/dist/assets/{pipelines-DBXX6TEi.js.map → pipelines-CmAAH3B6.js.map} +1 -1
  240. package/dashboard/dist/assets/role-display-Dvo2lDpU.js +2 -0
  241. package/dashboard/dist/assets/role-display-Dvo2lDpU.js.map +1 -0
  242. package/dashboard/dist/assets/task-queues-7-sHKPsN.js +2 -0
  243. package/dashboard/dist/assets/task-queues-7-sHKPsN.js.map +1 -0
  244. package/dashboard/dist/assets/{tasks-CD3-C7tP.js → tasks-BAEsqcz2.js} +2 -2
  245. package/dashboard/dist/assets/{tasks-CD3-C7tP.js.map → tasks-BAEsqcz2.js.map} +1 -1
  246. package/dashboard/dist/assets/{topics-D8pKi6zA.js → topics-CY0pJ6_o.js} +2 -2
  247. package/dashboard/dist/assets/{topics-D8pKi6zA.js.map → topics-CY0pJ6_o.js.map} +1 -1
  248. package/dashboard/dist/assets/{useEventHooks-DV9pLDOW.js → useEventHooks-BlpwRvHO.js} +2 -2
  249. package/dashboard/dist/assets/{useEventHooks-DV9pLDOW.js.map → useEventHooks-BlpwRvHO.js.map} +1 -1
  250. package/dashboard/dist/assets/{useNamespace-DykYhZY9.js → useNamespace-CoNUlZ6Z.js} +2 -2
  251. package/dashboard/dist/assets/{useNamespace-DykYhZY9.js.map → useNamespace-CoNUlZ6Z.js.map} +1 -1
  252. package/dashboard/dist/assets/{useYamlActivityEvents-By044UAv.js → useYamlActivityEvents-8GUn5Wie.js} +2 -2
  253. package/dashboard/dist/assets/{useYamlActivityEvents-By044UAv.js.map → useYamlActivityEvents-8GUn5Wie.js.map} +1 -1
  254. package/dashboard/dist/assets/{users-mI9goDjj.js → users-uGtDRGxR.js} +2 -2
  255. package/dashboard/dist/assets/{users-mI9goDjj.js.map → users-uGtDRGxR.js.map} +1 -1
  256. package/dashboard/dist/assets/{vendor-icons-ihWGa7_d.js → vendor-icons-DKCAtTJ9.js} +135 -130
  257. package/dashboard/dist/assets/vendor-icons-DKCAtTJ9.js.map +1 -0
  258. package/dashboard/dist/assets/{workflows-DCUilz68.js → workflows-DoX-AtHN.js} +2 -2
  259. package/dashboard/dist/assets/{workflows-DCUilz68.js.map → workflows-DoX-AtHN.js.map} +1 -1
  260. package/dashboard/dist/assets/{yaml-workflows-DWNMP1PT.js → yaml-workflows-DM3jVem2.js} +2 -2
  261. package/dashboard/dist/assets/{yaml-workflows-DWNMP1PT.js.map → yaml-workflows-DM3jVem2.js.map} +1 -1
  262. package/dashboard/dist/index.html +3 -3
  263. package/docs/api/http/escalations.md +15 -1
  264. package/docs/api/http/roles.md +2 -0
  265. package/docs/design-principles.md +234 -0
  266. package/docs/hitl/design.md +228 -0
  267. package/docs/hitl/form.md +21 -1
  268. package/docs/hitl/iframe.md +1 -1
  269. package/docs/hitl/x-lt-display.md +56 -0
  270. package/docs/hitl/x-lt-layout.md +20 -1
  271. package/docs/hitl/x-lt-list-schema.md +8 -1
  272. package/docs/hitl/x-lt-widget.md +23 -0
  273. package/docs/hitl-guide.md +4 -2
  274. package/docs/schema-enforcement.md +149 -0
  275. package/package.json +1 -1
  276. package/dashboard/dist/assets/AgentConfigPage-CqmtYBbC.js +0 -16
  277. package/dashboard/dist/assets/AgentConfigPage-CqmtYBbC.js.map +0 -1
  278. package/dashboard/dist/assets/AgentDetailPage-oYLBrN74.js +0 -4
  279. package/dashboard/dist/assets/AgentDetailPage-oYLBrN74.js.map +0 -1
  280. package/dashboard/dist/assets/AgentsPage-CHczRx5N.js +0 -2
  281. package/dashboard/dist/assets/AgentsPage-CHczRx5N.js.map +0 -1
  282. package/dashboard/dist/assets/AvailableEscalationsPage-DDVuivEE.js +0 -2
  283. package/dashboard/dist/assets/AvailableEscalationsPage-DDVuivEE.js.map +0 -1
  284. package/dashboard/dist/assets/CapabilitiesPage-lQJGZ_-t.js +0 -2
  285. package/dashboard/dist/assets/ConfirmDeleteModal-C0x0HcHX.js +0 -2
  286. package/dashboard/dist/assets/CountdownTimer-TXsRlTU4.js +0 -2
  287. package/dashboard/dist/assets/CredentialsPage-BKxS-1sA.js.map +0 -1
  288. package/dashboard/dist/assets/CustomDurationPicker-j4bBrDJ6.js +0 -2
  289. package/dashboard/dist/assets/CustomDurationPicker-j4bBrDJ6.js.map +0 -1
  290. package/dashboard/dist/assets/DataTable-Byn3oyT9.js +0 -2
  291. package/dashboard/dist/assets/DataTable-Byn3oyT9.js.map +0 -1
  292. package/dashboard/dist/assets/EscalationListSchemaPage-CIJ-OgVC.js +0 -20
  293. package/dashboard/dist/assets/EscalationListSchemaPage-CIJ-OgVC.js.map +0 -1
  294. package/dashboard/dist/assets/EscalationSchemaPage-C7dHgG8e.js +0 -9
  295. package/dashboard/dist/assets/EscalationSchemaPage-C7dHgG8e.js.map +0 -1
  296. package/dashboard/dist/assets/EscalationsOverview-D8NrATg2.js +0 -2
  297. package/dashboard/dist/assets/EscalationsOverview-D8NrATg2.js.map +0 -1
  298. package/dashboard/dist/assets/EventTable-DBV1P2ME.js +0 -2
  299. package/dashboard/dist/assets/EventTable-DBV1P2ME.js.map +0 -1
  300. package/dashboard/dist/assets/FilterBar-B5Vk5tBF.js +0 -2
  301. package/dashboard/dist/assets/FilterBar-B5Vk5tBF.js.map +0 -1
  302. package/dashboard/dist/assets/GraphInvokePage-DbHvggQ_.js +0 -2
  303. package/dashboard/dist/assets/GraphInvokePage-DbHvggQ_.js.map +0 -1
  304. package/dashboard/dist/assets/HomePage-BpexnDO_.js +0 -2
  305. package/dashboard/dist/assets/HomePage-BpexnDO_.js.map +0 -1
  306. package/dashboard/dist/assets/ListToolbar-KC6LGtKP.js +0 -2
  307. package/dashboard/dist/assets/ListToolbar-KC6LGtKP.js.map +0 -1
  308. package/dashboard/dist/assets/McpOverview-BDZC9Hvl.js +0 -2
  309. package/dashboard/dist/assets/McpOverview-BDZC9Hvl.js.map +0 -1
  310. package/dashboard/dist/assets/McpQueryDetailPage-CXhgX1pS.js +0 -5
  311. package/dashboard/dist/assets/McpQueryDetailPage-CXhgX1pS.js.map +0 -1
  312. package/dashboard/dist/assets/McpRunDetailPage-BM3mUSlH.js +0 -2
  313. package/dashboard/dist/assets/McpRunDetailPage-BM3mUSlH.js.map +0 -1
  314. package/dashboard/dist/assets/McpRunsPage-f5hDbpLo.js +0 -2
  315. package/dashboard/dist/assets/McpRunsPage-f5hDbpLo.js.map +0 -1
  316. package/dashboard/dist/assets/NamespacePill-C4u6Go1W.js +0 -2
  317. package/dashboard/dist/assets/NamespacePill-C4u6Go1W.js.map +0 -1
  318. package/dashboard/dist/assets/OperationsPage-D37cZ8Qh.js +0 -2
  319. package/dashboard/dist/assets/OperationsPage-D37cZ8Qh.js.map +0 -1
  320. package/dashboard/dist/assets/OperatorDashboard-_axS17fp.js +0 -2
  321. package/dashboard/dist/assets/PageHeader-Bxa1XFz0.js +0 -2
  322. package/dashboard/dist/assets/PageHeader-Bxa1XFz0.js.map +0 -1
  323. package/dashboard/dist/assets/PageHeaderWithStats-D_sO0MqJ.js +0 -2
  324. package/dashboard/dist/assets/PageHeaderWithStats-D_sO0MqJ.js.map +0 -1
  325. package/dashboard/dist/assets/PriorityBadge-B4ykBH7f.js.map +0 -1
  326. package/dashboard/dist/assets/ProcessDetailPage-D8pAWUXx.js +0 -2
  327. package/dashboard/dist/assets/ProcessDetailPage-D8pAWUXx.js.map +0 -1
  328. package/dashboard/dist/assets/RoleDetailPage-ufbypNNR.js +0 -8
  329. package/dashboard/dist/assets/RoleDetailPage-ufbypNNR.js.map +0 -1
  330. package/dashboard/dist/assets/RolePill-DLwmVMam.js +0 -2
  331. package/dashboard/dist/assets/RolePill-DLwmVMam.js.map +0 -1
  332. package/dashboard/dist/assets/RolesPage-CxpXm4Sw.js +0 -2
  333. package/dashboard/dist/assets/RolesPage-CxpXm4Sw.js.map +0 -1
  334. package/dashboard/dist/assets/RunAsSelector-BebF8Lib.js +0 -2
  335. package/dashboard/dist/assets/RunAsSelector-BebF8Lib.js.map +0 -1
  336. package/dashboard/dist/assets/SlidePanel-BDVDuwIf.js +0 -2
  337. package/dashboard/dist/assets/SlidePanel-BDVDuwIf.js.map +0 -1
  338. package/dashboard/dist/assets/StatCard-DrdlUeQz.js +0 -2
  339. package/dashboard/dist/assets/StatCard-DrdlUeQz.js.map +0 -1
  340. package/dashboard/dist/assets/StatusBadge-CEQMRmSQ.js +0 -2
  341. package/dashboard/dist/assets/StatusBadge-CEQMRmSQ.js.map +0 -1
  342. package/dashboard/dist/assets/StreamMessageDetail-BIXbrZM0.js +0 -2
  343. package/dashboard/dist/assets/StreamMessageDetail-BIXbrZM0.js.map +0 -1
  344. package/dashboard/dist/assets/SwimlaneTimeline-CC5qZjYo.js +0 -2
  345. package/dashboard/dist/assets/SwimlaneTimeline-CC5qZjYo.js.map +0 -1
  346. package/dashboard/dist/assets/TagInput-C2gi47M8.js +0 -2
  347. package/dashboard/dist/assets/TagInput-C2gi47M8.js.map +0 -1
  348. package/dashboard/dist/assets/TaskQueuePill-BPP0Almh.js +0 -2
  349. package/dashboard/dist/assets/TaskQueuePill-BPP0Almh.js.map +0 -1
  350. package/dashboard/dist/assets/TimestampCell-DGOsba-A.js +0 -2
  351. package/dashboard/dist/assets/TimestampCell-DGOsba-A.js.map +0 -1
  352. package/dashboard/dist/assets/ToolPill-D74TkYB-.js +0 -2
  353. package/dashboard/dist/assets/ToolPill-D74TkYB-.js.map +0 -1
  354. package/dashboard/dist/assets/ToolTestPanel-Bez6OyRL.js +0 -2
  355. package/dashboard/dist/assets/ToolTestPanel-Bez6OyRL.js.map +0 -1
  356. package/dashboard/dist/assets/TopicDetailPage-BHccgkU_.js +0 -9
  357. package/dashboard/dist/assets/TopicDetailPage-BHccgkU_.js.map +0 -1
  358. package/dashboard/dist/assets/TopicsPage-5yW63ELl.js +0 -2
  359. package/dashboard/dist/assets/WorkflowExecutionPage-CDDLled5.js +0 -2
  360. package/dashboard/dist/assets/WorkflowExecutionPage-CDDLled5.js.map +0 -1
  361. package/dashboard/dist/assets/WorkflowPill-Fjc2q9U9.js +0 -2
  362. package/dashboard/dist/assets/WorkflowPill-Fjc2q9U9.js.map +0 -1
  363. package/dashboard/dist/assets/WorkflowsOverview-D8MkSMex.js +0 -2
  364. package/dashboard/dist/assets/WorkflowsOverview-D8MkSMex.js.map +0 -1
  365. package/dashboard/dist/assets/YamlWorkflowsPage-9Ki54d-9.js +0 -2
  366. package/dashboard/dist/assets/YamlWorkflowsPage-9Ki54d-9.js.map +0 -1
  367. package/dashboard/dist/assets/bots-CAYJYL9E.js +0 -2
  368. package/dashboard/dist/assets/bots-CAYJYL9E.js.map +0 -1
  369. package/dashboard/dist/assets/escalation-columns-BbS5X61l.js +0 -2
  370. package/dashboard/dist/assets/escalation-columns-BbS5X61l.js.map +0 -1
  371. package/dashboard/dist/assets/index-B68A3v-S.js +0 -2
  372. package/dashboard/dist/assets/index-B68A3v-S.js.map +0 -1
  373. package/dashboard/dist/assets/index-BAi89Xpm.js +0 -2
  374. package/dashboard/dist/assets/index-BAi89Xpm.js.map +0 -1
  375. package/dashboard/dist/assets/index-BJ0jjFsI.js +0 -5
  376. package/dashboard/dist/assets/index-BJ0jjFsI.js.map +0 -1
  377. package/dashboard/dist/assets/index-BOJMUk4F.js +0 -2
  378. package/dashboard/dist/assets/index-BOJMUk4F.js.map +0 -1
  379. package/dashboard/dist/assets/index-BrgYykPV.js +0 -2
  380. package/dashboard/dist/assets/index-BrgYykPV.js.map +0 -1
  381. package/dashboard/dist/assets/index-BxgtIqvl.js +0 -2
  382. package/dashboard/dist/assets/index-BxgtIqvl.js.map +0 -1
  383. package/dashboard/dist/assets/index-C0cHXaX-.css +0 -1
  384. package/dashboard/dist/assets/index-CDHDoHYz.js +0 -6
  385. package/dashboard/dist/assets/index-CDHDoHYz.js.map +0 -1
  386. package/dashboard/dist/assets/index-CUZJHXew.js +0 -2
  387. package/dashboard/dist/assets/index-CUZJHXew.js.map +0 -1
  388. package/dashboard/dist/assets/index-D5n_e59T.js +0 -2
  389. package/dashboard/dist/assets/index-D5n_e59T.js.map +0 -1
  390. package/dashboard/dist/assets/index-DIgiIoou.js +0 -63
  391. package/dashboard/dist/assets/index-DIgiIoou.js.map +0 -1
  392. package/dashboard/dist/assets/index-Dd1RxGNw.js +0 -2
  393. package/dashboard/dist/assets/index-iOb3sGsC.js +0 -5
  394. package/dashboard/dist/assets/index-iOb3sGsC.js.map +0 -1
  395. package/dashboard/dist/assets/index-mcAkQblr.js +0 -2
  396. package/dashboard/dist/assets/index-mcAkQblr.js.map +0 -1
  397. package/dashboard/dist/assets/vendor-icons-ihWGa7_d.js.map +0 -1
@@ -0,0 +1,5 @@
1
+ import{j as t,a as h,b as We}from"./vendor-query-B2UbickB.js";import{P as Et,M as Mt,J as mt,R as Fe,T as qe,U as G,b as At,m as Xt,n as Ve,V as Se,g as Je,h as He,W as Ue,X as ze,Y as Ye,u as Be,x as Ge,l as Xe,Z as Qe}from"./index-C-8xXyvr.js";import{b as Ze,d as Ke,H as ts,g as le,u as ce,C as de,m as es,c as xe,a as ss}from"./CustomDurationPicker-ClufO2ew.js";import{P as ns}from"./PageHeader-DvEmMMP6.js";import{L as rs}from"./ListToolbar-DuoEdVtK.js";import{i as ue,C as Pt}from"./CountdownTimer-lkv_7msa.js";import{u as as}from"./workflows-DoX-AtHN.js";import{g as is}from"./useEventHooks-BlpwRvHO.js";import{S as os}from"./StatusBadge-BbqghFMi.js";import{R as ls}from"./RolePill-CWhoLwef.js";import{C as st}from"./CopyableId-B1mxKfVb.js";import{U as pe}from"./UserName-VXM1oHMC.js";import{V as Lt,ao as cs,S as ds,ap as xs,J as me,m as us,a9 as fe,U as ps,ac as ms,ad as fs,a2 as hs,aq as gs,ar as js,as as bs,at as Qt,au as ys,av as Zt,aw as Kt,ax as Ns,X as ws}from"./vendor-icons-DKCAtTJ9.js";import{c as he,L as bt,e as vs}from"./vendor-react-CXumBFUA.js";import{M as ks}from"./Modal-D4afnAjc.js";import"./constants-BHkpVaqx.js";import"./users-uGtDRGxR.js";const Cs={SCHEMA_VALIDATION:"schema_validation"};function _s(e){return typeof e=="object"&&e!==null&&e.code===Cs.SCHEMA_VALIDATION&&Array.isArray(e.violations)}const jt={pending:"rgb(var(--lt-status-queued-graphic))",claimed:"rgb(var(--lt-status-claimed-graphic))",resolved:"rgb(var(--lt-status-success-graphic))",cancelled:"rgb(var(--lt-status-error))"},Tt=5;function te({pct:e,place:n,label:a,title:r,emphasis:s}){const i=t.jsx("span",{className:"w-px h-1.5 bg-text-quaternary","aria-hidden":!0}),c=t.jsx("span",{className:`whitespace-nowrap leading-none tabular-nums ${s?"text-text-secondary":"text-text-tertiary"}`,children:a});return t.jsx("div",{title:r,className:`absolute ${n==="above"?"bottom-0":"top-0"} flex flex-col items-center gap-0 -translate-x-1/2 cursor-help`,style:{left:`${e}%`},children:n==="above"?t.jsxs(t.Fragment,{children:[c,i]}):t.jsxs(t.Fragment,{children:[i,c]})})}function Es({esc:e,className:n=""}){const a=new Date(e.created_at).getTime(),r=e.claimed_at?new Date(e.claimed_at).getTime():null,s=e.status==="resolved",i=e.status==="cancelled"||e.status==="expired",c=s||i,d=ue(e),l=!!r&&(d||c),x=s&&e.resolved_at?new Date(e.resolved_at).getTime():i?new Date(e.updated_at).getTime():Date.now(),o=Math.max(x-a,1),u=l&&r?Math.max(r-a,0):o,g=l&&r?Math.max(x-r,0):0,m=Math.min(100,Math.max(0,u/o*100)),N=l?Math.max(0,100-m):0,j=s?jt.resolved:i?jt.cancelled:jt.claimed,p=s?"Resolved after":i?"Cancelled after":"In progress",w=Et(u),A=Et(o),f=s?`Resolved in ${A} total`:i?`Cancelled after ${A}`:`Open ${A} so far`,E=`Lifecycle bar: blue = time waiting to be claimed, ${s?"green":i?"red":"orange"} = ${p.toLowerCase()} the claim.`;return t.jsxs("div",{className:n,title:E,children:[t.jsx("div",{className:"relative h-3 text-2xs font-mono",children:l&&t.jsx(te,{pct:m,place:"above",label:w,title:`Time to claim: ${w}`})}),t.jsxs("div",{className:"flex w-full rounded-full overflow-hidden",style:{height:Tt,backgroundColor:"rgb(var(--lt-surface-sunken))"},title:E,children:[t.jsx("div",{style:{width:`${m}%`,minWidth:Tt,backgroundColor:jt.pending,opacity:.75},title:`Waiting ${w} — created → claimed`}),l&&N>0&&t.jsx("div",{style:{width:`${N}%`,minWidth:Tt,backgroundColor:j,opacity:.75},title:`${p} ${Et(g)}`})]}),t.jsx("div",{className:"relative h-3 text-2xs font-mono",children:t.jsx(te,{pct:100,place:"below",emphasis:!0,label:A,title:f})})]})}function As({triage:e,payload:n}){const a=e.confidence??0,r=a>=.8?"text-status-success":a>=.5?"text-status-pending":"text-status-error",s=Ts(e.originalData,n);return t.jsxs("div",{className:"space-y-5",children:[e.diagnosis&&t.jsx("p",{className:"text-sm text-text-primary leading-relaxed",children:e.diagnosis}),t.jsxs("div",{className:"flex flex-wrap items-center gap-3 text-xs text-text-tertiary",children:[e.tool_calls_made!=null&&t.jsxs("span",{children:[e.tool_calls_made," tool call",e.tool_calls_made!==1?"s":""]}),e.tool_calls_made!=null&&t.jsx("span",{className:"text-text-quaternary",children:"·"}),t.jsxs("span",{className:`font-medium ${r}`,children:[Math.round(a*100),"% confidence"]})]}),e.actions_taken&&e.actions_taken.length>0&&t.jsx("div",{className:"flex flex-wrap gap-1.5",children:e.actions_taken.map((i,c)=>t.jsxs("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 text-2xs
2
+ text-text-secondary`,children:[t.jsx("svg",{className:"w-3 h-3 text-status-success shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})}),i]},c))}),e.recommendation&&t.jsx("p",{className:"text-2xs text-text-tertiary italic",children:e.recommendation}),s.length>0&&t.jsx("div",{className:"space-y-4 pt-2",children:s.map(i=>t.jsx($s,{diff:i},i.key))})]})}function Ts(e,n){if(!e)return[];const a=[];for(const r of Object.keys(e)){if(r.startsWith("_"))continue;const s=e[r],i=n[r];i!==void 0&&JSON.stringify(s)!==JSON.stringify(i)&&a.push({key:r,label:r.replace(/[_-]/g," "),original:s,corrected:i})}return a}function $s({diff:e}){const n=ee(e.original),a=ee(e.corrected);return n!==null&&a!==null?t.jsx("div",{className:"@container",children:t.jsxs("div",{className:"grid grid-cols-1 @form-cols:grid-cols-2 gap-x-8 gap-y-3",children:[t.jsxs("div",{children:[t.jsxs("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[e.label," ",t.jsx("span",{className:"normal-case font-normal",children:"(original)"})]}),t.jsx("p",{className:"text-sm text-text-tertiary leading-relaxed line-through decoration-text-tertiary/30",children:n})]}),t.jsxs("div",{children:[t.jsxs("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[e.label," ",t.jsx("span",{className:"normal-case font-normal text-status-success",children:"(corrected)"})]}),t.jsx("p",{className:"text-sm text-text-primary leading-relaxed",children:a})]})]})}):t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{children:[t.jsxs("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[e.label," ",t.jsx("span",{className:"normal-case font-normal",children:"(original)"})]}),t.jsx("pre",{className:"text-xs text-text-tertiary font-mono whitespace-pre-wrap leading-relaxed",children:typeof e.original=="object"?JSON.stringify(e.original,null,2):String(e.original)})]}),t.jsxs("div",{children:[t.jsxs("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[e.label," ",t.jsx("span",{className:"normal-case font-normal text-status-success",children:"(corrected)"})]}),t.jsx("pre",{className:"text-xs text-text-primary font-mono whitespace-pre-wrap leading-relaxed",children:typeof e.corrected=="object"?JSON.stringify(e.corrected,null,2):String(e.corrected)})]})]})}function ee(e){return e==null?"null":typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):null}function Y(e,n){const a=n==null?void 0:n.title;if(typeof a=="string"&&a.trim().length>0)return a.trim();const r=e.split(/[_-]+/).filter(Boolean);return r.length<=1?e:r.map(s=>Rs(s)?s:s.charAt(0).toUpperCase()+s.slice(1)).join(" ")}function Rs(e){return e.length>1&&e===e.toUpperCase()&&/[A-Z]/.test(e)}const H={HELP:"help",DETAILS:"details",TRIAGE:"triage",METADATA:"metadata",CONTEXT:"context",RECORD:"record",ERRORS:"errors"},ge="lt:escalation:panel:view";function Is(e){try{const n=localStorage.getItem(ge);if(n&&e.includes(n))return n}catch{}return H.HELP}const Os=new Set(["form_schema"]);function Ms({metadata:e,role:n}){const a=Object.entries(e??{}).filter(([r])=>!r.startsWith("_")&&!Os.has(r));return a.length===0?t.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No metadata on this escalation."}):t.jsx("dl",{className:"space-y-3.5",children:a.map(([r,s])=>{const i=typeof s=="object"&&s!==null?JSON.stringify(s):String(s),c=Xt(r,s,n),d=Xt(r,s);return t.jsxs("div",{className:"group relative",children:[t.jsx("dt",{className:"text-2xs font-medium text-text-secondary uppercase tracking-wide",children:Y(r)}),t.jsxs("dd",{className:"mt-0.5 flex items-center gap-1",children:[t.jsx("span",{className:"text-xs text-text-primary font-mono break-all flex-1",children:i}),t.jsx(bt,{to:c,title:`Filter this queue: ${r} = ${i}`,className:"opacity-50 group-hover:opacity-100 transition-opacity shrink-0 p-0.5 text-text-quaternary hover:text-accent",children:t.jsx(ms,{className:"w-3 h-3"})}),t.jsx(bt,{to:d,title:`Search all queues: ${r} = ${i}`,className:"opacity-50 group-hover:opacity-100 transition-opacity shrink-0 p-0.5 text-text-quaternary hover:text-accent",children:t.jsx(fs,{className:"w-3 h-3"})})]})]},r)})})}function Ds({esc:e,claimed:n,isTerminal:a,isBuilder:r,traceUrl:s}){return t.jsxs("div",{className:"space-y-5",children:[t.jsxs("dl",{className:"space-y-3.5",children:[t.jsx(G,{label:"Status",children:t.jsx(os,{status:e.status})}),t.jsx(G,{label:"Assigned to Role",children:t.jsx(ls,{role:e.role,size:"md"})}),t.jsxs(G,{label:"Priority",children:["P",e.priority]}),(n||a)&&e.assigned_to&&t.jsx(G,{label:"Claimed By",children:t.jsxs("span",{className:"inline-flex items-center gap-1.5 font-medium text-text-primary",children:[t.jsx(ps,{className:"w-3 h-3 shrink-0 text-accent/75"}),t.jsx(pe,{userId:e.assigned_to})]})}),t.jsx(G,{label:"Created",children:t.jsx(At,{date:e.created_at})}),(n||a)&&e.claimed_at&&t.jsx(G,{label:"Claimed",children:t.jsx(At,{date:e.claimed_at})}),n&&!a&&e.assigned_until&&t.jsx(G,{label:"Time Remaining",children:t.jsx(Pt,{until:e.assigned_until})}),e.resolved_at&&t.jsx(G,{label:"Completed",children:t.jsx("span",{className:"text-status-success",children:t.jsx(At,{date:e.resolved_at})})})]}),r&&t.jsxs(t.Fragment,{children:[t.jsx("hr",{className:"border-surface-border/60"}),t.jsxs("div",{className:"space-y-3.5",children:[t.jsx(st,{label:"Escalation ID",value:e.id}),e.task_id&&t.jsx(st,{label:"Task ID",value:e.task_id,href:`/workflows/tasks/detail/${e.task_id}`}),e.workflow_type&&t.jsx(st,{label:"Workflow Name",value:e.workflow_type,href:`/workflows/executions?entity=${encodeURIComponent(e.workflow_type)}`}),e.workflow_id&&t.jsx(st,{label:"Workflow ID",value:e.workflow_id,href:`/workflows/executions/${e.workflow_id}`}),e.task_queue&&t.jsx(st,{label:"Task Queue",value:e.task_queue,href:`/admin/controlplane?queue=${encodeURIComponent(e.task_queue)}`}),e.origin_id&&e.origin_id!==e.workflow_id&&t.jsx(st,{label:"Origin",value:e.origin_id,href:`/processes/detail/${e.origin_id}`}),e.trace_id&&t.jsx(st,{label:"Trace",value:e.trace_id,href:s?s.replace("{traceId}",e.trace_id):void 0,external:!0})]})]})]})}function Ps({errors:e,schema:n}){const a=r=>{const s=document.querySelector(`[data-field-key="${r}"]`);s&&(s.scrollIntoView({behavior:"smooth",block:"center"}),s.focus({preventScroll:!0}))};return e.length===0?t.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No errors to display."}):t.jsxs("div",{className:"space-y-1",role:"alert","aria-live":"polite",children:[t.jsxs("p",{className:"text-2xs font-semibold uppercase tracking-wider text-status-error mb-4",children:[e.length," ",e.length===1?"issue":"issues"," to resolve"]}),t.jsx("div",{className:"space-y-1.5",children:e.map(({field:r,message:s})=>{var i;return t.jsxs("button",{onClick:()=>a(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:[t.jsx(fe,{className:"w-3.5 h-3.5 mt-0.5 shrink-0 text-status-error/60 group-hover:text-status-error transition-colors"}),t.jsxs("div",{children:[t.jsx("p",{className:"text-2xs font-semibold text-text-primary leading-snug",children:Y(r,(i=n==null?void 0:n.properties)==null?void 0:i[r])}),t.jsx("p",{className:"text-2xs text-text-tertiary group-hover:text-text-secondary transition-colors leading-snug mt-0.5",children:s})]})]},r)})}),t.jsx("p",{className:"text-2xs text-text-quaternary mt-4 px-3",children:"Click an issue to scroll to and focus the field."})]})}function Ls({esc:e,schema:n,envelope:a,payload:r,resolver:s,triage:i,hasAI:c,claimed:d,claimedByMe:l,isTerminal:x,isBuilder:o,traceUrl:u,open:g,noGutter:m,formErrors:N,activePanel:j,onPanelChange:p}){const w=he(),A=Object.values(H),[f,E]=h.useState(()=>Is(A)),P=j??f,R=h.useCallback(k=>{try{localStorage.setItem(ge,k)}catch{}E(k),p==null||p(k)},[p]);h.useEffect(()=>{j&&j!==f&&E(j)},[j]);const C=h.useMemo(()=>Ze(n,{escalation:e,metadata:e.metadata??null,envelope:a,payload:r,resolver:s})??Ke({isTerminal:x,status:e.status,claimed:d,claimedByMe:l}),[n,e,a,r,s,x,d,l]),T=h.useCallback(k=>{const W=k.target.closest("a"),M=W==null?void 0:W.getAttribute("href");M!=null&&M.startsWith("/")&&(k.preventDefault(),w(M))},[w]),I=[{id:H.HELP,icon:Lt,label:"Instructions",content:t.jsx(Mt,{content:C,onClick:T})},{id:H.DETAILS,icon:cs,label:"Details",content:t.jsx(Ds,{esc:e,claimed:d,isTerminal:x,isBuilder:o,traceUrl:u})},...c&&i?[{id:H.TRIAGE,icon:ds,label:"AI Analysis",content:t.jsx(As,{triage:i,payload:r??{}})}]:[],{id:H.METADATA,icon:xs,label:"Metadata",content:t.jsx(Ms,{metadata:e.metadata,role:e.role})},{id:H.CONTEXT,icon:me,label:"Context",content:t.jsxs("div",{className:"space-y-5",children:[a!=null&&t.jsx(mt,{data:a,label:"Input Envelope"}),r!=null&&t.jsx(mt,{data:r,label:"Escalation Context"}),s!=null&&t.jsx(mt,{data:s,label:"Resolver Payload"}),a==null&&r==null&&s==null&&t.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No context on this escalation."})]})},...o?[{id:H.RECORD,icon:us,label:"Record",content:t.jsx(mt,{data:e,label:"Escalation Record"})}]:[],...N&&N.length>0?[{id:H.ERRORS,icon:(({className:k})=>t.jsx(fe,{className:`${k??""} text-status-error`})),label:"Errors",content:t.jsx(Ps,{errors:N,schema:n})}]:[]];return t.jsx(Fe,{open:g,width:384,className:"h-full",children:t.jsx("div",{className:`h-full${m?"":" pl-6"}`,children:t.jsxs("div",{className:"h-full flex flex-col bg-surface-hover",children:[t.jsx("div",{className:"shrink-0 pt-1.5 pb-0.5 flex justify-center",children:t.jsx(Es,{esc:e,className:"w-[80%]"})}),t.jsx("div",{className:"flex-1 min-h-0",children:t.jsx(qe,{views:I,activeId:P,onViewChange:R,stickyClassName:"h-full min-h-0"})})]})})})}function Ws(e,n){if(typeof e!="string"||!n)return[];const a=e.indexOf(".");if(a===-1)return[];const r=n[e.slice(0,a)];if(!r||typeof r!="object")return[];let s=r;for(const i of e.slice(a+1).split("."))if(s=s[i],s===void 0)return[];return Array.isArray(s)?s:[]}function Fs(e,n,a){if((n==null?void 0:n["x-lt-widget"])!=="checklist"||n["x-lt-require-all"]!==!0)return;const s=Ws(n["x-lt-source"],a).filter(d=>d.required!==!1);if(s.length===0)return;const i=typeof e=="object"&&e!==null&&!Array.isArray(e)?e:{},c=s.filter(d=>!i[d.id]).length;if(c!==0)return`${c} of ${s.length} checks incomplete`}function qs(e,n){const a=n==null?void 0:n.type;if(typeof a=="string"&&!(e==null||e===""))switch(a){case"string":return typeof e=="string"?void 0:"Expected text";case"number":return typeof e=="number"&&Number.isFinite(e)?void 0:"Expected a number";case"integer":return typeof e=="number"&&Number.isInteger(e)?void 0:"Expected a whole number";case"boolean":return typeof e=="boolean"?void 0:"Expected true or false";case"array":return Array.isArray(e)?void 0:"Expected a list";case"object":return typeof e=="object"&&!Array.isArray(e)?void 0:"Expected an object";default:return}}function Vs(e,n,a){if(!n)return;const r=n.enum;if(Array.isArray(r)&&r.length>0&&e!==void 0&&e!==null&&e!==""&&!r.includes(e))return`Must be one of: ${r.map(s=>String(s)).join(", ")}`;if(typeof e=="string"){const s=e.trim();if(s==="")return;const i=ct(n.minLength,n["x-lt-min-length"],a);if(i!==void 0&&s.length<i)return`Minimum ${i} character${i===1?"":"s"}`;const c=ct(n.maxLength,n["x-lt-max-length"],a);if(c!==void 0&&s.length>c)return`Maximum ${c} characters (${s.length} entered)`;const d=n.pattern;if(d)try{if(!new RegExp(d).test(s))return n["x-lt-pattern-error"]??"Invalid format"}catch{}const l=n.format;if(l==="email"&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(s))return"Enter a valid email address";if(l==="uri"&&!/^https?:\/\/.+/.test(s))return"Enter a valid URL"}if(typeof e=="number"){const s=ct(n.minimum,n["x-lt-minimum"],a),i=ct(n.exclusiveMinimum,void 0,a),c=ct(n.maximum,n["x-lt-maximum"],a),d=ct(n.exclusiveMaximum,void 0,a);if(s!==void 0&&e<s)return`Minimum value is ${s}`;if(i!==void 0&&e<=i)return`Must be greater than ${i}`;if(c!==void 0&&e>c)return`Maximum value is ${c}`;if(d!==void 0&&e>=d)return`Must be less than ${d}`}}function ct(e,n,a){if(typeof e=="number")return e;if(typeof n=="string"&&a){const r=n.indexOf(".");if(r!==-1){const s=n.slice(0,r),i=n.slice(r+1),c=a[s];if(c&&typeof c=="object"){const d=i.split(".");let l=c;for(const x of d)if(l=l[x],l===void 0)break;if(typeof l=="number")return l;if(typeof l=="string"){const x=Number(l);if(!Number.isNaN(x))return x}}}}}function je(e,n,a,r,s){if(!r)return;if(a){if(e==null||typeof e=="boolean"&&!e||typeof e=="string"&&e.trim()==="")return"Required";if(typeof e=="object"&&!Array.isArray(e)&&e!==null){const d=Object.values(e);if(d.length===0||d.every(l=>!l))return"Required"}}const i=qs(e,n);if(i)return i;const c=Fs(e,n,s);return c||Vs(e,n,s)}function se(e){return e!=null&&e!==""&&e!==!1&&e!==0}function Ss(e){return e==null?"":typeof e=="object"?JSON.stringify(e):String(e)}function ne(e,n){const a=e.indexOf("."),r=a===-1?e:e.slice(0,a);if(!ts.includes(r))return{known:!1,value:void 0};const s=n[r];if(a===-1)return{known:!0,value:s};try{return{known:!0,value:le(s,e.slice(a+1))}}catch{return{known:!0,value:void 0}}}function be(e,n){if(typeof e!="string"||e.length===0||!n)return!0;const a=e.startsWith("!"),r=a?e.slice(1):e,s=r.indexOf("!="),i=r.indexOf("=");if(s!==-1||i!==-1&&i!==s+1){const l=s!==-1&&(i===-1||s<i),x=l?s:i,o=r.slice(0,x).trim(),u=r.slice(x+(l?2:1)).trim(),{known:g,value:m}=ne(o,n);if(!g)return!0;const N=Ss(m)===u,j=l?!N:N;return a?!j:j}const{known:c,value:d}=ne(r,n);return c?a?!se(d):se(d):!0}function ye(e,n,a){if(!e)return[];const r=e.properties??{},s=new Set(e.required??[]),i={...a??{},resolver:n},c=[];for(const[d,l]of Object.entries(r)){if(!be(l["x-lt-showIf"],i))continue;const x=je(n[d],l,s.has(d),!0,i);x&&c.push({field:d,message:x})}return c}function Js(e){const{mode:n,activeView:a,onActiveViewChange:r,onClaim:s,claimPending:i,workflowType:c,json:d,onResolve:l,resolvePending:x,resolveError:o,requestTriage:u,triageNotes:g,currentRole:m,escalationTargets:N,onEscalate:j,escalatePending:p,escalateError:w,onRelease:A,releasePending:f,onCancel:E,assignedTo:P,assignedUntil:R,onSubmitAttempt:C,onValidationErrors:T,escalationContext:I}=e,k=ce(),[W,M]=h.useState("30"),[L,q]=h.useState(0),[z,J]=h.useState(""),[y,$]=h.useState(""),b=W==="custom",O=h.useCallback(_=>q(_),[]);if(n==="terminal")return null;const F=()=>{const _=b?L:parseInt(W);!_||_<=0||s(_)},rt=()=>{if(J(""),u){const K={_lt:{needsTriage:!0}};g.trim()&&(K.notes=g.trim()),l(K);return}let _;try{_=JSON.parse(d)}catch{J("Invalid JSON");return}const D=_._form_schema;if(D){const K=ye(D,_,I);if(K.length>0){C==null||C(),T==null||T(K);return}}const{_form_schema:Z,...at}=_;l(es(at,D))},U=_=>`text-xs transition-colors ${_?"text-accent font-medium":"text-text-tertiary hover:text-accent"}`;return t.jsxs("div",{className:"shrink-0 h-[80px] bg-surface/95 backdrop-blur-sm border-t border-surface-border -ml-10 pl-10 pr-10 pt-3 pb-5","data-testid":"escalation-action-bar",children:[n==="available"&&t.jsxs("div",{"data-testid":"claim-bar",children:[t.jsxs("div",{className:"flex items-center gap-4 mb-2",children:[k.map(_=>t.jsx("button",{onClick:()=>{M(_.value),q(0)},className:U(!b&&W===_.value),children:_.label},_.value)),t.jsx("button",{onClick:()=>M("custom"),className:U(b),children:"Other"})]}),t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("button",{onClick:E,className:"text-xs text-text-tertiary hover:text-status-error transition-colors",children:"Cancel escalation"}),t.jsx("div",{className:"flex-1"}),b&&t.jsx(de,{onChange:O,compact:!0,autoFocus:!0}),t.jsx("button",{onClick:F,disabled:i||b&&L<=0,className:"btn-primary text-xs",children:i?"Claiming...":"Claim"})]})]}),n==="claimed_by_other"&&t.jsxs("div",{className:"flex items-center gap-4","data-testid":"claimed-other-bar",children:[t.jsxs("p",{className:"text-sm text-text-secondary",children:["Claimed by ",t.jsx("span",{className:"font-medium text-text-primary",children:P?t.jsx(pe,{userId:P}):"unknown"})]}),R&&t.jsx(Pt,{until:R})]}),n==="claimed_by_me"&&t.jsxs("div",{"data-testid":"action-bar",children:[t.jsxs("div",{className:"flex items-center gap-4 mb-2",children:[t.jsx("button",{onClick:()=>r("resolve"),className:U(a==="resolve"),children:c?"Resolve":"Acknowledge"}),N.length>0&&t.jsx("button",{onClick:()=>r("escalate"),className:U(a==="escalate"),children:"Escalate"}),t.jsx("button",{onClick:()=>r("release"),className:`text-xs transition-colors ${a==="release"?"text-status-error font-medium":"text-text-tertiary hover:text-status-error"}`,children:"Release"}),t.jsx("button",{onClick:E,className:"text-xs transition-colors text-text-tertiary hover:text-status-error",children:"Cancel"})]}),a==="resolve"&&t.jsxs("div",{className:"flex items-center gap-4",children:[t.jsx("div",{className:"flex-1"}),z&&t.jsx("span",{className:"text-xs text-status-error",children:z}),o&&t.jsx("span",{className:"text-xs text-status-error",children:o.message}),t.jsx("button",{onClick:rt,disabled:x,className:"btn-primary text-xs",children:x?c?"Submitting...":"Acknowledging...":u?"Send to Triage":c?"Submit":"Acknowledge"})]}),a==="escalate"&&t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsxs("span",{className:"text-xs text-text-secondary",children:["From ",t.jsx("span",{className:"font-medium text-text-primary",children:m})," to"]}),t.jsxs("select",{value:y,onChange:_=>$(_.target.value),className:"select text-xs","data-testid":"escalate-select",children:[t.jsx("option",{value:"",children:"Select role..."}),N.map(_=>t.jsx("option",{value:_,children:_},_))]}),t.jsx("div",{className:"flex-1"}),w&&t.jsx("span",{className:"text-xs text-status-error",children:w.message}),t.jsx("button",{onClick:()=>j(y),disabled:!y||p,className:"btn-primary text-xs",children:p?"Escalating...":"Escalate"})]}),a==="release"&&t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("span",{className:"text-xs text-text-secondary",children:"Release back to pool?"}),t.jsx("div",{className:"flex-1"}),t.jsx("button",{onClick:()=>r("resolve"),className:"btn-secondary text-xs",children:"Back"}),t.jsx("button",{onClick:A,disabled:f,className:"btn-primary text-xs bg-status-error hover:bg-status-error/80",children:f?"Releasing...":"Yes, Release"})]})]})]})}function X(e){return e.replace(/`([^`]+)`/g,'<code class="px-1 py-0.5 bg-surface-sunken rounded text-xs font-mono">$1</code>').replace(/\*\*\*(.+?)\*\*\*/g,"<strong><em>$1</em></strong>").replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>").replace(/\*(.+?)\*/g,"<em>$1</em>").replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2" class="text-accent-primary hover:underline" target="_blank" rel="noopener noreferrer">$1</a>')}function $t({content:e,compact:n}){const a=[],r=/^```(\w*)\n([\s\S]*?)^```$/gm;let s=0,i;for(;(i=r.exec(e))!==null;)i.index>s&&a.push({type:"text",text:e.slice(s,i.index)}),a.push({type:"code",lang:i[1],code:i[2].replace(/\n$/,"")}),s=i.index+i[0].length;s<e.length&&a.push({type:"text",text:e.slice(s)});const c=n?{text:"text-xs",heading:"text-xs",list:"text-xs",code:"text-2xs"}:{text:"text-sm",heading:"text-sm",list:"text-sm",code:"text-xs"},d=[];for(const l of a){if(l.type==="code"){const x=l.code.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");d.push(`<pre class="my-2 p-2.5 bg-surface-sunken rounded-md overflow-x-auto"><code class="${c.code} font-mono text-text-secondary leading-relaxed">${x}</code></pre>`);continue}d.push(...Hs(l.text,c))}return t.jsx("div",{className:"prose-sm",dangerouslySetInnerHTML:{__html:d.join(`
3
+ `)}})}function Hs(e,n){const a=e.split(`
4
+ `),r=[];let s=!1,i=!1,c=[];for(const d of a){const l=d.trim();if(l.startsWith("|")&&l.endsWith("|")){const x=l.slice(1,-1).split("|").map(o=>o.trim());if(x.every(o=>/^[-:]+$/.test(o)))continue;i||(i=!0,c=[]),c.push(x);continue}if(i){i=!1;const[x,...o]=c;r.push('<div class="overflow-x-auto my-2"><table class="text-xs w-full"><thead><tr>');for(const u of x)r.push(`<th class="text-left py-1 px-2 border-b border-border text-text-secondary font-medium">${X(u)}</th>`);r.push("</tr></thead><tbody>");for(const u of o){r.push("<tr>");for(const g of u)r.push(`<td class="py-1 px-2 border-b border-border/50">${X(g)}</td>`);r.push("</tr>")}r.push("</tbody></table></div>"),c=[]}if(!l){s&&(r.push("</ul>"),s=!1);continue}if(l.startsWith("### ")){s&&(r.push("</ul>"),s=!1),r.push(`<h4 class="${n.heading} font-semibold text-text-primary mt-3 mb-1">${X(l.slice(4))}</h4>`);continue}if(l.startsWith("## ")){s&&(r.push("</ul>"),s=!1),r.push(`<h3 class="${n.heading} font-semibold text-text-primary mt-3 mb-1">${X(l.slice(3))}</h3>`);continue}if(/^[-*_]{3,}$/.test(l)){s&&(r.push("</ul>"),s=!1),r.push('<hr class="border-border my-3" />');continue}if(/^[-*] /.test(l)){s||(r.push('<ul class="space-y-1 my-1">'),s=!0),r.push(`<li class="${n.list} text-text-secondary flex gap-2"><span class="text-text-tertiary shrink-0">-</span><span>${X(l.slice(2))}</span></li>`);continue}s&&(r.push("</ul>"),s=!1),r.push(`<p class="${n.text} text-text-secondary my-1">${X(l)}</p>`)}if(i&&c.length){const[d,...l]=c;r.push('<div class="overflow-x-auto my-2"><table class="text-xs w-full"><thead><tr>');for(const x of d)r.push(`<th class="text-left py-1 px-2 border-b border-border text-text-secondary font-medium">${X(x)}</th>`);r.push("</tr></thead><tbody>");for(const x of l){r.push("<tr>");for(const o of x)r.push(`<td class="py-1 px-2 border-b border-border/50">${X(o)}</td>`);r.push("</tr>")}r.push("</tbody></table></div>")}return s&&r.push("</ul>"),r}function Rt({children:e}){return t.jsx("p",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:e})}function Us({payload:e,isTerminal:n,resolverPayload:a,onRetryTriage:r,isRetrying:s}){const i=e.title,c=e.summary,d=e.diagnosis,l=e.tool_calls_made,x=e.result,o=a==null?void 0:a._lt,u=(o==null?void 0:o.triaged)===!0,g=o==null?void 0:o.triageWorkflowId,m=n&&u,[N,j]=h.useState(!1);return m?t.jsxs("div",{className:"rounded-md border border-status-success/30 bg-surface-raised",children:[t.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-surface-border",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("svg",{className:"w-4 h-4 text-status-success shrink-0",viewBox:"0 0 16 16",fill:"currentColor",children:t.jsx("path",{d:"M8 1a7 7 0 110 14A7 7 0 018 1zm3.36 4.65a.5.5 0 00-.72 0L7 9.29 5.36 7.65a.5.5 0 10-.72.7l2 2a.5.5 0 00.72 0l4-4a.5.5 0 000-.7z"})}),t.jsx("span",{className:"text-xs font-medium text-status-success",children:"Resolved by AI Triage"})]}),typeof l=="number"&&t.jsxs("span",{className:"text-2xs font-mono px-2 py-0.5 rounded-full bg-status-success/10 text-status-success",children:[l," tool calls used"]})]}),t.jsxs("div",{className:"px-4 py-4 space-y-4",children:[i&&t.jsx("p",{className:"text-sm font-medium text-text-primary",children:i}),d&&t.jsxs("div",{children:[t.jsx(Rt,{children:"Triage diagnosis"}),t.jsx("div",{className:"text-xs text-text-primary leading-relaxed",children:t.jsx($t,{content:d})})]}),t.jsx("div",{className:"flex items-center gap-3",children:g&&t.jsx(bt,{to:`/workflows/executions/${g}`,className:"text-2xs text-accent hover:underline",children:"View triage execution"})})]})]}):t.jsxs("div",{className:"rounded-md border border-status-warning/30 bg-surface-raised",children:[t.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-surface-border",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("svg",{className:"w-4 h-4 text-status-warning shrink-0",viewBox:"0 0 16 16",fill:"currentColor",children:t.jsx("path",{d:"M8 1a7 7 0 110 14A7 7 0 018 1zm0 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 4zm0 7a.75.75 0 100-1.5.75.75 0 000 1.5z"})}),t.jsx("span",{className:"text-xs font-medium text-status-warning",children:"Tool Rounds Exhausted"})]}),typeof l=="number"&&t.jsxs("span",{className:"text-2xs font-mono px-2 py-0.5 rounded-full bg-status-warning/10 text-status-warning",children:[l," tool calls used"]})]}),t.jsxs("div",{className:"px-4 py-4 space-y-4",children:[i&&t.jsx("p",{className:"text-sm font-medium text-text-primary",children:i}),c&&t.jsxs("div",{children:[t.jsx(Rt,{children:"What happened"}),t.jsx("div",{className:"text-xs text-text-secondary leading-relaxed",children:t.jsx($t,{content:c})})]}),d&&t.jsxs("div",{children:[t.jsx(Rt,{children:"What went wrong"}),t.jsx("div",{className:"text-xs text-text-primary leading-relaxed",children:t.jsx($t,{content:d})})]}),x!=null&&t.jsxs("div",{children:[t.jsxs("button",{onClick:()=>j(!N),className:"flex items-center gap-1 text-2xs font-semibold uppercase tracking-widest text-text-tertiary hover:text-text-secondary transition-colors",children:[t.jsx("svg",{className:`w-3 h-3 transition-transform ${N?"rotate-90":""}`,viewBox:"0 0 12 12",fill:"currentColor",children:t.jsx("path",{d:"M4.5 2l4 4-4 4"})}),"Partial results"]}),N&&t.jsx("div",{className:"mt-2",children:t.jsx(mt,{data:x,defaultMode:"tree"})})]}),r&&!n&&t.jsx("div",{className:"pt-2",children:t.jsxs("button",{onClick:r,disabled:s,className:"inline-flex items-center gap-2 px-4 py-2 text-xs font-medium bg-accent text-text-inverse rounded-md hover:bg-accent/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:[t.jsx("svg",{className:"w-3.5 h-3.5",viewBox:"0 0 14 14",fill:"currentColor",children:t.jsx("path",{d:"M7 1a6 6 0 100 12A6 6 0 007 1zm2.5 6.5l-3.5 2V5.5l3.5 2z"})}),s?"Sending to triage...":"Retry with AI Triage"]})})]})]})}function re(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function Ne({src:e,escalation:n,schema:a,onResolve:r,onEscalate:s,submitAttempted:i,fill:c}){const d=h.useRef(null),l=h.useRef("");h.useEffect(()=>{try{const o=new URL(e);l.current=o.origin}catch{l.current=""}},[e]);const x=h.useCallback(()=>{const o=d.current;if(!(o!=null&&o.contentWindow)||!l.current)return;const g={type:"lt:init",escalation:{id:n.id,type:n.type,subtype:n.subtype,description:n.description,status:n.status,priority:n.priority,role:n.role,workflow_type:n.workflow_type,envelope:re(n.envelope),metadata:n.metadata??null,escalation_payload:re(n.escalation_payload)},schema:a};o.contentWindow.postMessage(g,l.current)},[n,a]);return h.useEffect(()=>{const o=u=>{if(u.origin!==l.current)return;const g=u.data;if(!(!g||typeof g!="object"||typeof g.type!="string"))switch(g.type){case"lt:ready":x();break;case"lt:submit":g.payload&&typeof g.payload=="object"&&r(g.payload);break;case"lt:escalate":typeof g.target=="string"&&g.target&&s(g.target);break;case"lt:resize":{const m=d.current;m&&typeof g.height=="number"&&g.height>0&&(m.style.height=`${Math.min(g.height,2e3)}px`);break}}};return window.addEventListener("message",o),()=>window.removeEventListener("message",o)},[x,r,s]),h.useEffect(()=>{if(!i)return;const o=d.current;o!=null&&o.contentWindow&&l.current&&o.contentWindow.postMessage({type:"lt:validate"},l.current)},[i]),c?t.jsx("div",{className:"absolute inset-0 overflow-hidden",children:t.jsx("iframe",{ref:d,src:e,sandbox:"allow-scripts allow-same-origin allow-forms allow-pointer-lock allow-downloads",className:"w-full h-full border-0 block",title:"HITL Viewport",onLoad:x})}):t.jsx("div",{className:"rounded-md border border-surface-border overflow-hidden bg-white",children:t.jsx("iframe",{ref:d,src:e,sandbox:"allow-scripts allow-same-origin allow-forms allow-pointer-lock allow-downloads",className:"w-full border-0",style:{minHeight:"600px"},title:"HITL Viewport",onLoad:x})})}function V({children:e,isRequired:n,htmlFor:a}){return t.jsxs("label",{htmlFor:a,className:"block text-2xs font-semibold uppercase tracking-wider text-text-secondary",children:[e,n&&t.jsx("span",{className:"text-status-error ml-0.5",children:"*"})]})}function Q({id:e,children:n}){return t.jsx("p",{id:e,className:"text-2xs text-text-tertiary mt-0.5 leading-snug",children:n})}function nt({error:e,id:n}){return e?t.jsx("p",{id:n,role:"alert",className:"text-2xs text-status-error mt-1 animate-[field-error-in_0.3s_ease-out]",children:e}):null}function xt(e){return e?"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 zs(e){return e?"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 Ys({fieldKey:e,value:n,onChange:a,schema:r,isRequired:s}){const i=h.useRef(null),c=(r==null?void 0:r.accept)??void 0,d=Y(e,r),l=r==null?void 0:r.description,x=h.useCallback(u=>{var N;const g=(N=u.target.files)==null?void 0:N[0];if(!g)return;const m=new FileReader;m.onload=()=>{typeof m.result=="string"&&a(m.result)},m.readAsDataURL(g)},[a]),o=n.startsWith("data:");return t.jsxs("div",{children:[t.jsx(V,{isRequired:s,children:d}),l&&t.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:l}),t.jsxs("div",{className:"mt-1",children:[t.jsx("input",{ref:i,type:"file",accept:c,onChange:x,className:"hidden"}),t.jsx("button",{type:"button",onClick:()=>{var u;return(u=i.current)==null?void 0:u.click()},className:"btn-secondary text-xs px-3 py-1.5",children:o?"Replace file":"Choose file"}),o&&t.jsx("span",{className:"ml-2 text-xs text-status-success",children:"File attached"})]})]})}function Bs({fieldKey:e,value:n,onChange:a,schema:r,isRequired:s}){const i=Y(e,r),c=r==null?void 0:r.description,d=(r==null?void 0:r["x-lt-language"])??"",l=h.useCallback(x=>{if(x.key==="Tab"){x.preventDefault();const o=x.currentTarget,u=o.selectionStart,g=o.selectionEnd,m=n.substring(0,u)+" "+n.substring(g);a(m),requestAnimationFrame(()=>{o.selectionStart=o.selectionEnd=u+2})}},[n,a]);return t.jsxs("div",{children:[t.jsxs(V,{isRequired:s,children:[i,d&&t.jsx("span",{className:"ml-2 text-text-tertiary/60 normal-case font-normal",children:d})]}),c&&t.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:c}),t.jsx("textarea",{value:n,onChange:x=>a(x.target.value),onKeyDown:l,className:"input w-full mt-1 font-mono text-xs leading-relaxed",rows:10,spellCheck:!1})]})}function Gs({fieldKey:e,value:n,onChange:a,schema:r,isRequired:s}){const i=h.useRef(null),[c,d]=h.useState(!1),l=Y(e,r),x=r==null?void 0:r.description;h.useEffect(()=>{const j=i.current;if(!j)return;const p=j.getContext("2d");if(p&&(p.lineWidth=2,p.lineCap="round",p.strokeStyle="#1E1535",n&&n.startsWith("data:"))){const w=new Image;w.onload=()=>p.drawImage(w,0,0),w.src=n}},[]);const o=h.useCallback(j=>{const p=i.current,w=p.getBoundingClientRect(),A=w.width>0?p.width/w.width:1,f=w.height>0?p.height/w.height:1;return"touches"in j?{x:(j.touches[0].clientX-w.left)*A,y:(j.touches[0].clientY-w.top)*f}:{x:(j.clientX-w.left)*A,y:(j.clientY-w.top)*f}},[]),u=h.useCallback(j=>{var A;d(!0);const p=(A=i.current)==null?void 0:A.getContext("2d");if(!p)return;const w=o(j);p.beginPath(),p.moveTo(w.x,w.y)},[o]),g=h.useCallback(j=>{var A;if(!c)return;const p=(A=i.current)==null?void 0:A.getContext("2d");if(!p)return;const w=o(j);p.lineTo(w.x,w.y),p.stroke()},[c,o]),m=h.useCallback(()=>{d(!1);const j=i.current;j&&a(j.toDataURL("image/png"))},[a]),N=h.useCallback(()=>{const j=i.current;if(!j)return;const p=j.getContext("2d");p&&(p.clearRect(0,0,j.width,j.height),a(""))},[a]);return t.jsxs("div",{children:[t.jsx(V,{isRequired:s,children:l}),x&&t.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:x}),t.jsx("div",{className:"mt-1 max-w-[25rem] border border-surface-border rounded-md overflow-hidden bg-white",children:t.jsx("canvas",{ref:i,width:400,height:150,className:"w-full cursor-crosshair touch-none",onMouseDown:u,onMouseMove:g,onMouseUp:m,onMouseLeave:m,onTouchStart:u,onTouchMove:g,onTouchEnd:m})}),t.jsx("button",{type:"button",onClick:N,className:"mt-1 text-2xs text-text-tertiary hover:text-accent transition-colors",children:"Clear"})]})}function Xs({fieldKey:e,value:n,onChange:a,schema:r,isRequired:s}){const i=Y(e,r),c=r==null?void 0:r.description;return t.jsxs("div",{children:[t.jsx(V,{isRequired:s,children:i}),c&&t.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:c}),t.jsx("textarea",{value:n,onChange:d=>a(d.target.value),className:"input w-full mt-1 text-sm leading-relaxed",rows:8,placeholder:"Supports plain text. Markdown formatting is preserved."})]})}function Qs({fieldKey:e,value:n,onChange:a,schema:r,isRequired:s}){const[i,c]=h.useState("write"),d=Y(e,r),l=r==null?void 0:r.description;return(r==null?void 0:r.readOnly)===!0?t.jsx(Mt,{content:n,className:"my-1"}):t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx(V,{isRequired:s,children:d}),t.jsx("div",{className:"flex items-center gap-0.5",children:["write","preview"].map(o=>t.jsx("button",{type:"button",onClick:()=>c(o),className:`px-2 py-0.5 text-2xs rounded transition-colors ${i===o?"bg-accent/10 text-accent font-semibold":"text-text-quaternary hover:text-text-secondary"}`,children:o==="write"?"Write":"Preview"},o))})]}),l&&t.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:l}),i==="write"?t.jsx("textarea",{value:n,onChange:o=>a(o.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."}):t.jsx("div",{className:"mt-1 px-3 py-2 border border-surface-border rounded min-h-[120px]",children:n.trim()?t.jsx(Mt,{content:n}):t.jsx("p",{className:"text-xs text-text-quaternary italic",children:"Nothing to preview."})})]})}const Zs=28;function Ks({fieldKey:e,value:n,onChange:a,schema:r,escalationContext:s,isRequired:i,submitAttempted:c,error:d}){const l=r==null?void 0:r["x-lt-source"],x=(r==null?void 0:r["x-lt-require-all"])===!0,o=[];if(l&&s){const f=l.indexOf(".");if(f!==-1){const E=l.slice(0,f),P=l.slice(f+1);try{const R=le(s[E],P);Array.isArray(R)&&o.push(...R)}catch{}}}let u={};try{n&&(u=JSON.parse(n))}catch{}const g=f=>a(JSON.stringify({...u,[f]:!u[f]})),m=Y(e,r),N=r==null?void 0:r.description;if(o.length===0)return t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"text-xs text-text-tertiary italic mt-1",children:"No checklist items. Provide checklist_items in the escalation envelope or metadata."}),d&&t.jsx("p",{className:"text-2xs text-status-error mt-1 animate-[field-error-in_0.3s_ease-out]",children:d})]});const j=r==null?void 0:r["x-lt-variant"],p=j==="chips"||j==="rows"?j:x||o.some(f=>f.label.length>Zs)?"rows":"chips",w=o.filter(f=>u[f.id]).length,A=(o.find(f=>!u[f.id]&&f.required!==!1)??o[0]).id;return t.jsxs("div",{role:"group","aria-label":m,"aria-required":i||void 0,"aria-invalid":d?!0:void 0,children:[t.jsx(V,{isRequired:i,children:m}),N&&t.jsx(Q,{children:N}),p==="chips"?t.jsx("div",{className:"flex flex-wrap gap-2 mt-2",children:o.map(f=>{const E=u[f.id]??!1,P=!E&&!!c&&w===0&&(f.required||i);return t.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)] ${E?"bg-accent border-accent text-text-inverse":P?"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:[t.jsx("input",{type:"checkbox",checked:E,onChange:()=>g(f.id),className:"sr-only","data-testid":`checklist-item-${f.id}`,...f.id===A?{"data-field-key":e}:{}}),E&&t.jsx(hs,{className:"w-3.5 h-3.5 shrink-0",strokeWidth:2.5}),f.label]},f.id)})}):t.jsx("div",{className:"space-y-2.5 mt-2",children:o.map(f=>{const E=u[f.id]??!1,P=!E&&!!c&&(x?f.required!==!1:w===0&&(f.required||i));return t.jsxs("label",{className:`flex items-start gap-3 cursor-pointer group select-none rounded px-2 py-1 -mx-2 transition-colors ${P?"bg-status-error/5":"hover:bg-surface-hover"}`,children:[t.jsx("input",{type:"checkbox",checked:E,onChange:()=>g(f.id),className:`mt-0.5 w-3.5 h-3.5 shrink-0 rounded ${P?"accent-status-error":"accent-accent"}`,"data-testid":`checklist-item-${f.id}`,...f.id===A?{"data-field-key":e}:{}}),t.jsxs("span",{className:`text-sm leading-snug transition-colors ${P?"text-status-error":"text-text-secondary group-hover:text-text-primary"}`,children:[f.label,f.required&&t.jsx("span",{className:`ml-0.5 text-2xs ${P?"text-status-error":"text-text-quaternary"}`,children:"*"})]})]},f.id)})}),t.jsx("p",{className:"text-2xs text-text-quaternary mt-3 tabular-nums",children:p==="chips"?t.jsxs(t.Fragment,{children:[w," selected",i&&w===0&&!!c&&t.jsx("span",{className:"ml-1 text-text-quaternary/60",children:"(check at least one)"})]}):t.jsxs(t.Fragment,{children:[w," / ",o.length," confirmed",x?t.jsxs("span",{className:"ml-1 text-text-quaternary/60",children:["(all required",o.some(f=>f.required===!1)?" except optional":"",")"]}):i&&w===0&&!!c&&t.jsx("span",{className:"ml-1 text-text-quaternary/60",children:"(at least one required)"})]})}),d&&t.jsx("p",{role:"alert",className:"text-2xs text-status-error mt-1 animate-[field-error-in_0.3s_ease-out]",children:d})]})}const tn=/\.(png|jpe?g|gif|webp|avif|bmp|svg)(\?.*)?$/i;function en(e){var r,s,i,c;const n=e.trim();if(!n)return{kind:"none"};const a=(s=(r=/^data:([^;,]+)[;,]/.exec(n))==null?void 0:r[1])==null?void 0:s.toLowerCase();if(a)return a.startsWith("image/")?{kind:"image",src:n}:{kind:"file",href:n,label:a==="application/pdf"?"PDF":a,isData:!0};if(/^https?:\/\//i.test(n)){if(tn.test(n))return{kind:"image",src:n};const d=(c=(i=/\.([a-z0-9]{2,5})(\?.*)?$/i.exec(n))==null?void 0:i[1])==null?void 0:c.toUpperCase();return{kind:"file",href:n,label:d??"attachment",isData:!1}}return{kind:"none"}}function ae({fieldKey:e,value:n,schema:a}){const[r,s]=h.useState(!1),i=en(n??""),c=e.replace(/[_-]/g," "),d=a==null?void 0:a.description,l=t.jsxs(t.Fragment,{children:[t.jsx("label",{className:"text-2xs font-semibold uppercase tracking-widest text-text-tertiary",children:c}),d&&t.jsx("p",{className:"text-2xs text-text-tertiary mt-0.5",children:d})]});return i.kind==="none"?t.jsxs("div",{children:[l,t.jsx("p",{className:"text-xs text-text-quaternary italic mt-1",children:"No attachment"})]}):i.kind==="image"?t.jsxs("div",{children:[l,t.jsxs("div",{className:"mt-1",children:[t.jsx("button",{type:"button",onClick:()=>s(!0),className:"block rounded-[0.125em] border border-surface-border overflow-hidden hover:border-accent transition-colors",title:"View full size",children:t.jsx("img",{src:i.src,alt:e.replace(/[_-]/g," "),className:"max-h-48 max-w-full object-contain","data-testid":`attachment-image-${e}`})}),r&&t.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:()=>s(!1),role:"dialog","aria-modal":"true","aria-label":`${c} — full size`,children:t.jsx("img",{src:i.src,alt:c,className:"max-h-[90vh] max-w-[90vw] object-contain"})})]})]}):t.jsxs("div",{children:[l,t.jsx("div",{className:"mt-1",children:t.jsxs("a",{href:i.href,...i.isData?{download:`${e}.${i.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-${e}`,children:[t.jsx(gs,{className:"w-3.5 h-3.5",strokeWidth:1.5}),i.isData?`Download ${i.label}`:`Open ${i.label}`,i.isData?t.jsx(js,{className:"w-3 h-3",strokeWidth:1.5}):t.jsx(bs,{className:"w-3 h-3",strokeWidth:1.5})]})})]})}const ie={"file-upload":Ys,"code-editor":Bs,signature:Gs,"rich-text":Xs,markdown:Qs,checklist:Ks,attachment:ae,image:ae};function we({fieldKey:e,value:n,onChange:a,onBlur:r,schema:s,isRequired:i,isReadOnly:c,error:d,escalationContext:l,submitAttempted:x}){var R;const o=(R=s==null?void 0:s.properties)==null?void 0:R[e],u=Y(e,o),g=o==null?void 0:o["x-lt-widget"],m=`lt-field-${e}`,N=`${m}-error`,j=`${m}-help`,p=typeof(o==null?void 0:o.description)=="string"&&o.description.length>0?o.description:void 0,f={id:m,"aria-required":i||void 0,"aria-invalid":d?!0:void 0,"aria-describedby":d?N:p!==void 0?j:void 0};if(c&&!(g==="markdown"&&typeof n=="string")&&!((g==="attachment"||g==="image")&&typeof n=="string")){const C=n===null?"null":typeof n=="object"?JSON.stringify(n,null,2):String(n);return t.jsxs("div",{children:[t.jsx(V,{isRequired:i,children:u}),t.jsx("p",{className:"text-sm text-text-secondary mt-0.5 whitespace-pre-wrap",children:C})]})}if(g&&g in ie){const C=ie[g],T=i||(o==null?void 0:o["x-lt-require-all"])===!0,I={fieldKey:e,schema:o,escalationContext:l,isRequired:T,submitAttempted:x,error:d};if((o==null?void 0:o.type)==="object"){const k=typeof n=="string"?n:typeof n=="object"&&n!==null&&!Array.isArray(n)?JSON.stringify(n):"";return t.jsx(C,{...I,value:k,onChange:W=>{try{a(JSON.parse(W))}catch{a(W)}}})}if(typeof n=="string")return t.jsx(C,{...I,value:n,onChange:k=>a(k)});if(typeof n=="object"&&n!==null&&!Array.isArray(n))return t.jsx(C,{...I,value:JSON.stringify(n),onChange:k=>{try{a(JSON.parse(k))}catch{a(k)}}})}if(typeof n=="boolean")return t.jsxs("div",{children:[t.jsxs("label",{className:"flex items-center gap-2 cursor-pointer",children:[t.jsx("input",{type:"checkbox",checked:n,onChange:C=>{a(C.target.checked),r==null||r()},className:"w-3.5 h-3.5 rounded accent-accent","data-field-key":e,...f}),t.jsxs("span",{className:"text-2xs font-semibold uppercase tracking-wider text-text-secondary",children:[u,i&&t.jsx("span",{className:"text-status-error ml-0.5",children:"*"})]})]}),p&&t.jsx(Q,{id:j,children:p}),t.jsx(nt,{error:d,id:N})]});if(typeof n=="number")return t.jsxs("div",{children:[t.jsx(V,{isRequired:i,htmlFor:m,children:u}),p&&t.jsx(Q,{id:j,children:p}),t.jsx("input",{type:"number",value:n,onChange:C=>a(parseFloat(C.target.value)||0),onBlur:r,step:"any","data-field-key":e,className:`${xt(!!d)} max-w-48`,...f}),t.jsx(nt,{error:d,id:N})]});if(typeof n=="string"){const C=(o==null?void 0:o.format)==="password",T=o==null?void 0:o.enum;if(T!=null&&T.length){const M=n===""&&!T.includes("");return t.jsxs("div",{children:[t.jsx(V,{isRequired:i,htmlFor:m,children:u}),p&&t.jsx(Q,{id:j,children:p}),t.jsxs("select",{value:n,onChange:L=>a(L.target.value),onBlur:r,"data-field-key":e,className:zs(!!d),...f,children:[M&&t.jsx("option",{value:"",disabled:!0,children:"Choose…"}),T.map(L=>t.jsx("option",{value:L,children:L},L))]}),t.jsx(nt,{error:d,id:N})]})}if(C)return t.jsxs("div",{children:[t.jsx(V,{isRequired:i,htmlFor:m,children:u}),p&&t.jsx(Q,{id:j,children:p}),t.jsx("input",{type:"password",value:n,onChange:M=>a(M.target.value),onBlur:r,"data-field-key":e,className:xt(!!d),autoComplete:"off",...f}),t.jsx(nt,{error:d,id:N})]});const I=o==null?void 0:o.format,k={date:"date","date-time":"datetime-local",email:"email",uri:"url"},W={date:"max-w-48","date-time":"max-w-64"};if(I&&I in k)return t.jsxs("div",{children:[t.jsx(V,{isRequired:i,htmlFor:m,children:u}),p&&t.jsx(Q,{id:j,children:p}),t.jsx("input",{type:k[I],value:n,onChange:M=>a(M.target.value),onBlur:r,"data-field-key":e,className:`${xt(!!d)} ${W[I]??""}`,...f}),t.jsx(nt,{error:d,id:N})]});if(I==="textarea"||n.length>80){const M=o==null?void 0:o.maxLength,L=o==null?void 0:o["x-lt-max-length"];let q=M;if(q===void 0&&L&&l){const J=L.indexOf(".");if(J!==-1){const y=L.slice(0,J),$=L.slice(J+1),b=l[y];if(b&&typeof b=="object"){let O=b;for(const F of $.split("."))if(O=O[F],O===void 0)break;if(typeof O=="number")q=O;else if(typeof O=="string"){const F=Number(O);Number.isNaN(F)||(q=F)}}}}const z=q!==void 0&&n.length>q;return t.jsxs("div",{children:[t.jsx(V,{isRequired:i,htmlFor:m,children:u}),p&&t.jsx(Q,{id:j,children:p}),t.jsx("textarea",{value:n,onChange:J=>{a(J.target.value),r==null||r()},onBlur:r,"data-field-key":e,className:`${xt(!!d)} leading-relaxed`,rows:Math.min(6,Math.max(3,Math.ceil(n.length/60))),...f}),q!==void 0&&t.jsxs("p",{className:`text-2xs mt-0.5 text-right tabular-nums ${z?"text-status-error font-medium":"text-text-quaternary"}`,children:[n.length," / ",q]}),t.jsx(nt,{error:d,id:N})]})}return t.jsxs("div",{children:[t.jsx(V,{isRequired:i,htmlFor:m,children:u}),p&&t.jsx(Q,{id:j,children:p}),t.jsx("input",{type:"text",value:n,onChange:M=>a(M.target.value),onBlur:r,"data-field-key":e,className:xt(!!d),...f}),t.jsx(nt,{error:d,id:N})]})}if(n===null)return t.jsxs("div",{children:[t.jsx(V,{isRequired:i,children:u}),t.jsx("p",{className:"text-xs text-text-tertiary italic mt-1",children:"null"})]});if(Array.isArray(n))return t.jsxs("div",{children:[t.jsx(V,{isRequired:i,children:u}),t.jsx("div",{className:"flex flex-wrap gap-1.5 mt-1",children:n.map((C,T)=>t.jsx("span",{className:"px-2 py-0.5 text-2xs font-mono bg-surface-sunken rounded text-text-secondary",children:String(C)},T))})]});if(typeof n=="object"){const C=Object.entries(n);return t.jsxs("div",{children:[t.jsx(V,{isRequired:i,children:u}),t.jsx("div",{className:"ml-4 mt-2 pl-4 border-l border-accent-faint space-y-3",children:C.map(([T,I])=>t.jsx(we,{fieldKey:T,value:I,onChange:k=>a({...n,[T]:k})},T))})]})}return null}function sn({items:e,columns:n=1}){if(e.length===0)return null;const a=n>=2&&e.length>1?"grid-cols-1 @dict-inline:grid-cols-[max-content_1fr] @dict-pairs:grid-cols-[max-content_1fr_max-content_1fr]":"grid-cols-1 @dict-inline:grid-cols-[max-content_1fr]";return t.jsx("div",{className:"@container",children:t.jsx("dl",{className:`grid ${a} items-baseline gap-x-6 @dict-pairs:gap-x-8 gap-y-1.5`,children:e.map(({key:r,label:s,value:i})=>t.jsxs(h.Fragment,{children:[t.jsx("dt",{className:"text-2xs font-semibold uppercase tracking-wide text-text-secondary mt-2 first:mt-0 @dict-inline:mt-0",children:s}),t.jsx("dd",{className:"text-sm text-text-primary break-words min-w-0","data-field-key":r,children:nn(i)})]},r))})})}function nn(e){return e==null||e===""?"—":typeof e=="boolean"?e?"Yes":"No":typeof e=="object"?JSON.stringify(e):String(e)}const It="dictionary",rn=new Set(["markdown","attachment","image"]);function ve(e,n){if(!n)return;const a=e==null?void 0:e["x-lt-section-options"],r=a==null?void 0:a[n];return r&&typeof r=="object"?r:void 0}function an(e,n,a){var d,l;const r=(d=e==null?void 0:e.properties)==null?void 0:d[a];if((r==null?void 0:r.readOnly)!==!0)return!1;const s=r==null?void 0:r["x-lt-widget"];if(typeof s=="string"&&rn.has(s))return!1;const i=r==null?void 0:r["x-lt-display"];if(typeof i=="string")return i===It;const c=(l=ve(e,n))==null?void 0:l.display;return typeof c=="string"?c===It:(e==null?void 0:e["x-lt-display"])===It}function on(e,n,a,r){var i;const s=[];for(const c of e){const[d]=c,l=s[s.length-1];if(an(n,a,d)){(l==null?void 0:l.kind)==="dictionary"?l.entries.push(c):s.push({kind:"dictionary",entries:[c]});continue}const x=(i=n==null?void 0:n.properties)==null?void 0:i[d],o=x==null?void 0:x["x-lt-column-group"];if(r==="two-column"&&typeof o=="string"&&o.trim()){(l==null?void 0:l.kind)==="column-group"&&l.name===o?l.entries.push(c):s.push({kind:"column-group",name:o,entries:[c]});continue}s.push({kind:"field",entry:c})}return s}function ln({name:e,entries:n,formSchema:a,layout:r,renderField:s}){const i=on(n,a,e,r),c=ve(a,e),d=(c==null?void 0:c.columns)??(r==="two-column"?2:1),l=o=>o.map(([u,g])=>{var m;return{key:u,label:Y(u,(m=a==null?void 0:a.properties)==null?void 0:m[u]),value:g}}),x=()=>i.map((o,u)=>o.kind==="dictionary"?t.jsx("div",{className:r==="two-column"?"col-span-full":"",children:t.jsx(sn,{items:l(o.entries),columns:d})},`dict-${u}`):o.kind==="column-group"?t.jsx("div",{className:"@container",children:t.jsx("div",{className:"grid grid-cols-1 @grp-cols:grid-cols-2 gap-x-4 gap-y-5",children:o.entries.map(g=>s(g))})},`group-${o.name}-${u}`):s(o.entry));return t.jsxs("div",{className:e?"border border-surface-border/60 border-l-2 border-l-accent/30 bg-surface-sunken rounded-[0.125em] p-4 animate-[section-enter_0.25s_ease-out]":"",children:[e&&t.jsxs("div",{className:"mb-4 flex items-center gap-2",children:[t.jsx(me,{className:"w-5 h-5 text-accent/60 shrink-0",strokeWidth:1.5}),t.jsx("p",{className:"text-[1.40625rem] font-semibold tracking-wider text-heading [font-variant-caps:small-caps]",children:e})]}),r==="two-column"?t.jsx("div",{className:"@container",children:t.jsx("div",{className:"grid grid-cols-1 @form-cols:grid-cols-2 gap-x-col-gap gap-y-5",children:x()})}):t.jsx("div",{className:"space-y-5",children:x()})]})}function ke({value:e,onChange:n,disabled:a,submitAttempted:r,escalationContext:s,onOpenHelp:i}){var z,J;const[c,d]=h.useState({}),[l,x]=h.useState({}),[o,u]=h.useState(null),[g,m]=h.useState(!1),[N,j]=h.useState(new Set);h.useEffect(()=>{try{const y=JSON.parse(e);if(typeof y=="object"&&y!==null&&!Array.isArray(y)){const $={},b={};for(const[O,F]of Object.entries(y))O.startsWith("_")?b[O]=F:$[O]=F;d($),x(b),u(b._form_schema&&typeof b._form_schema=="object"?b._form_schema:null),m(!1)}}catch{m(!0)}},[e]);const p=h.useCallback(y=>{d(y),n(JSON.stringify({...y,...l},null,2))},[l,n]),w=h.useCallback((y,$)=>{p({...c,[y]:$})},[c,p]),A=h.useCallback(y=>{j($=>{if($.has(y))return $;const b=new Set($);return b.add(y),b})},[]);if(g)return t.jsx("p",{className:"text-xs text-status-error",children:"Unable to parse resolver data as form. Use the JSON editor below."});const f=Object.entries(c);if(f.length===0)return t.jsx("p",{className:"text-xs text-text-tertiary italic",children:"No resolver fields defined."});const E=o==null?void 0:o["x-lt-order"],P=E?[...f].sort((y,$)=>{const b=E.indexOf(y[0]),O=E.indexOf($[0]);return(b===-1?1/0:b)-(O===-1?1/0:O)}):f,R={...s??{},resolver:c},C=P.filter(([y,$])=>{var O;const b=(O=o==null?void 0:o.properties)==null?void 0:O[y];return!(!be(b==null?void 0:b["x-lt-showIf"],R)||(b==null?void 0:b["x-lt-hide-if-empty"])===!0&&($==null||$===""||$===!1||$===0))}),T=new Set((o==null?void 0:o.required)??[]),I=o==null?void 0:o["x-lt-layout"],k=o==null?void 0:o.title,W=o==null?void 0:o.description,M=typeof(o==null?void 0:o["x-lt-help"])=="string"||typeof(o==null?void 0:o["x-lt-context"])=="string",L=[];for(const y of C){const[$]=y,b=(z=o==null?void 0:o.properties)==null?void 0:z[$],O=((J=b==null?void 0:b["x-lt-section"])==null?void 0:J.trim())||null,F=L[L.length-1];!F||F.name!==O?L.push({name:O,entries:[y]}):F.entries.push(y)}const q=([y,$])=>{var D;const b=(D=o==null?void 0:o.properties)==null?void 0:D[y],O=(b==null?void 0:b.readOnly)===!0,F=(b==null?void 0:b["x-lt-span"])??1,rt=T.has(y),U=N.has(y)||!!r,_=je($,b,rt,U,R);return t.jsx("div",{className:`animate-[field-enter_0.2s_ease-out] ${I==="two-column"&&F>=2?"col-span-full":""}`,children:t.jsx(we,{fieldKey:y,value:$,onChange:Z=>w(y,Z),onBlur:()=>A(y),schema:o,isRequired:rt,isReadOnly:O,error:_,escalationContext:R,submitAttempted:!!r})},y)};return t.jsxs("div",{className:`pb-8 max-w-form ${a?"opacity-60 pointer-events-none":""}`,inert:a||void 0,"aria-disabled":a||void 0,children:[k&&t.jsxs("div",{className:"mb-1 flex items-center gap-1.5",children:[t.jsx("h3",{className:"heading-3",children:k}),M&&i&&t.jsx("button",{type:"button",onClick:i,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:t.jsx(Lt,{className:"w-4 h-4",strokeWidth:1.5})})]}),W&&t.jsx("p",{className:"text-sm text-text-secondary leading-relaxed mb-6",children:W}),t.jsx("div",{className:"space-y-8",children:L.map((y,$)=>t.jsx(ln,{name:y.name,entries:y.entries,formSchema:o,layout:I,renderField:q},y.name??`__s${$}`))})]})}function cn({json:e,onJsonChange:n,requestTriage:a,onRequestTriageChange:r,triageNotes:s,onTriageNotesChange:i,disabled:c=!1,submitAttempted:d=!1,showTriage:l=!1,escalationContext:x,onOpenHelp:o}){return t.jsxs(t.Fragment,{children:[l&&t.jsx("div",{className:"flex items-center justify-between mb-3",children:a?t.jsxs("button",{onClick:()=>r(!1),className:"group flex items-center gap-2 text-left","data-testid":"triage-cancel",children:[t.jsx("span",{className:"flex items-center justify-center w-5 h-5 rounded-full bg-accent/10 text-accent shrink-0",children:t.jsx("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})}),t.jsxs("span",{className:"text-xs text-text-secondary group-hover:text-text-primary transition-colors",children:["AI Triage active."," ",t.jsx("span",{className:"text-accent group-hover:underline",children:"Cancel"})]})]}):t.jsxs("button",{onClick:()=>r(!0),className:"group flex items-center gap-2.5 text-left my-4","data-testid":"triage-callout",children:[t.jsx("span",{className:"flex items-center justify-center w-6 h-6 rounded-full bg-accent/10 text-accent shrink-0 animate-[triage-glow_6s_ease-in-out_infinite]",children:t.jsx("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.674M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})})}),t.jsxs("span",{className:"text-sm text-text-secondary group-hover:text-text-primary transition-colors",children:["This form doesn't capture the issue?"," ",t.jsx("span",{className:"text-accent group-hover:underline",children:"Request AI Triage"})]})]})}),t.jsxs("div",{className:"relative min-h-[200px]",children:[t.jsx("div",{className:a?"pointer-events-none select-none":"",children:t.jsx(ke,{value:e,onChange:n,disabled:c,submitAttempted:d,escalationContext:x,onOpenHelp:o})}),a&&t.jsxs("div",{className:"absolute inset-0 z-10 flex flex-col bg-surface/90 backdrop-blur-[2px] rounded-md border border-accent/20 p-5","data-testid":"triage-overlay",children:[t.jsx("p",{className:"text-xs text-text-secondary mb-3 leading-relaxed",children:"The resolution form will not be submitted. Describe the issue so AI triage can diagnose and fix it using available tools. The corrected result will come back as a new escalation for your review."}),t.jsx("textarea",{value:s,onChange:u=>i(u.target.value),placeholder:"e.g. Content is in Spanish — needs translation to English before review...",className:"input text-xs w-full flex-1 min-h-[80px] resize-none",autoFocus:!0,"data-testid":"triage-notes"})]})]})]})}function Ce(e,n){if(!e.includes("{"))return e;try{const a=s=>{if(!s)return{};try{return JSON.parse(s)}catch{return{}}},r={...n.metadata??{},...a(n.envelope),...a(n.escalation_payload)};return e.replace(/\{([^}]+)\}/g,(s,i)=>Object.prototype.hasOwnProperty.call(r,i)?String(r[i]):`{${i}}`)}catch{return e}}function oe(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function Dt(e){return{escalation:e,metadata:e.metadata??null,envelope:oe(e.envelope),payload:oe(e.escalation_payload),resolver:null}}function dn({isRoundsExhausted:e,payloadObj:n,isTerminal:a,resolverPayload:r,onRetryTriage:s,isRetrying:i}){return t.jsxs(t.Fragment,{children:[e&&n&&t.jsx("div",{className:"mt-8",children:t.jsx(Us,{payload:n,isTerminal:a,resolverPayload:r,onRetryTriage:s,isRetrying:i})}),(n==null?void 0:n.category)==="missing_credential"&&t.jsxs("div",{className:"mt-8 bg-status-warning/10 border border-status-warning/30 rounded-md px-5 py-4 flex items-start gap-3",children:[t.jsx(Qt,{size:20,className:"text-status-warning mt-0.5 shrink-0"}),t.jsxs("div",{children:[t.jsx("p",{className:"text-sm font-medium text-text-primary mb-1",children:"Missing Credential"}),t.jsxs("p",{className:"text-xs text-text-secondary mb-3",children:["This workflow requires a ",t.jsx("span",{className:"font-medium capitalize",children:String(n.provider)})," credential to continue. Register one and then resolve this escalation to retry."]}),t.jsxs(bt,{to:"/credentials",className:"btn-primary text-xs inline-flex items-center gap-1.5",children:[t.jsx(Qt,{size:12}),"Go to Credentials"]})]})]})]})}function xn({esc:e,resolverPayload:n,isTerminal:a,claimedByMe:r,activeView:s,metadataFormSchema:i,effectiveSchema:c,json:d,onJsonChange:l,requestTriage:x,onRequestTriageChange:o,triageNotes:u,onTriageNotesChange:g,onResolve:m,onEscalate:N,onClaim:j,submitAttempted:p,isCertified:w,hasAI:A,onOpenHelp:f}){const E=c,P=Dt(e);if(a){if(n==null)return null;const I=typeof n=="object"&&n!==null?n:{},k=c??i,W=k!=null&&k.properties?{...xe(I,k),_form_schema:k}:I;return t.jsx("div",{className:"mt-3",children:t.jsx(ke,{value:JSON.stringify(W,null,2),onChange:()=>{},disabled:!0,escalationContext:P})})}if(s!=="resolve"||!(e.workflow_type||c))return null;const R=E==null?void 0:E["x-lt-viewport"],C=(R==null?void 0:R.type)==="iframe"&&!!R.src&&m&&N;if(C&&!r)return t.jsxs("button",{onClick:()=>j==null?void 0:j(),disabled:!j,className:"flex flex-col items-center justify-center min-h-[55vh] w-full gap-3 text-center group disabled:opacity-50 disabled:cursor-default",children:[t.jsx(ys,{className:"w-10 h-10 text-text-tertiary group-hover:text-accent transition-colors",strokeWidth:1}),t.jsx("p",{className:"text-base font-medium text-text-primary group-hover:text-accent transition-colors",children:"Claim to launch the editor"})]});const T=C?Ce(R.src,e):"";return t.jsx("div",{className:"mt-3",children:C?t.jsx(Ne,{src:T,escalation:e,schema:E,onResolve:m,onEscalate:N,submitAttempted:p}):t.jsx(cn,{json:d,onJsonChange:l,requestTriage:x,onRequestTriageChange:o,triageNotes:u,onTriageNotesChange:g,disabled:!r,submitAttempted:p,showTriage:!!w&&!!A,escalationContext:P,onOpenHelp:f})})}function un({open:e,assignedUntil:n,onClose:a,onExtend:r,isPending:s}){const i=ce(),[c,d]=h.useState("30"),[l,x]=h.useState(0),o=c==="custom",u=o?l:parseInt(c),g=h.useCallback(m=>x(m),[]);return t.jsx(ks,{open:e,onClose:a,title:"Claim Expiring",children:t.jsxs("div",{className:"space-y-4",children:[t.jsxs("p",{className:"text-sm text-text-secondary",children:["Your claim on this escalation expires in"," ",t.jsx(Pt,{until:n}),". When it lapses, the form locks and the item returns to the queue — your edits are kept as a draft. Extend to keep working."]}),t.jsxs("select",{value:c,onChange:m=>{d(m.target.value),x(0)},className:"select w-full text-sm","aria-label":"Extension duration",children:[i.map(m=>t.jsx("option",{value:m.value,children:m.label},m.value)),t.jsx("option",{value:"custom",children:"Other..."})]}),o&&t.jsx(de,{onChange:g,autoFocus:!0}),t.jsxs("div",{className:"flex justify-end gap-3 pt-2",children:[t.jsx("button",{onClick:a,className:"btn-secondary text-xs",children:"Dismiss"}),t.jsx("button",{onClick:()=>r(u),className:"btn-primary text-xs",disabled:s||!u||u<=0,children:s?"Extending...":"Extend Claim"})]})]})})}const pn=9e4;function mn(e,n=pn){const[,a]=h.useState(0);if(h.useEffect(()=>{if(!e)return;const s=new Date(e).getTime()-Date.now();if(s<=0)return;const i=()=>a(l=>l+1),c=[],d=s-n;return d>0&&c.push(window.setTimeout(i,d)),c.push(window.setTimeout(i,s)),()=>c.forEach(l=>window.clearTimeout(l))},[e,n]),!e)return{expired:!1,expiringSoon:!1,msRemaining:0};const r=Math.max(0,new Date(e).getTime()-Date.now());return{expired:r<=0,expiringSoon:r>0&&r<=n,msRemaining:r}}const fn="lt:escalation:draft:";function Wt(e){return`${fn}${e}`}function hn(e){try{return localStorage.getItem(Wt(e))}catch{return null}}function gn(e,n){try{localStorage.setItem(Wt(e),n)}catch{}}function Ot(e){try{localStorage.removeItem(Wt(e))}catch{}}const _e="lt:escalation:panel:open";function jn(){try{const e=localStorage.getItem(_e);return e===null?!0:e==="true"}catch{return!0}}function ut(e){try{localStorage.setItem(_e,String(e))}catch{}}function pt(e){if(!e)return null;try{return JSON.parse(e)}catch{return e}}function Ln(){var St,Jt,Ht,Ut;const{id:e}=vs(),{user:n}=Ve(),a=he(),r=We(),{data:s,isLoading:i,refetch:c,isFetching:d}=Se(e);is(e);const l=Je(),x=He(),o=Ue(),u=ze(),[g,m]=h.useState(!1),{data:N}=Ye((s==null?void 0:s.role)??""),{data:j}=as(),{data:p}=Be(),{isBuilder:w}=Ge(),A=j==null?void 0:j.find(v=>v.workflow_type===(s==null?void 0:s.workflow_type)),f=((St=p==null?void 0:p.telemetry)==null?void 0:St.traceUrl)??null,[E,P]=h.useState("resolve"),[R,C]=h.useState("{}"),[T,I]=h.useState(jn),[k,W]=h.useState(!1),[M,L]=h.useState(""),[q,z]=h.useState(!1),[J,y]=h.useState([]),[$,b]=h.useState(void 0),O=mn(s==null?void 0:s.assigned_until),[F,rt]=h.useState(null);h.useEffect(()=>{if(!(!q||!s))try{const v=JSON.parse(R),S=v._form_schema;if(!S){y([]);return}y(ye(S,v,Dt(s)))}catch{}},[R,q,s]);const U=((Jt=s==null?void 0:s.metadata)==null?void 0:Jt.form_schema)??null,_=(s==null?void 0:s.form_schema)??(A==null?void 0:A.resolver_schema)??null,D=U??_,Z=h.useRef(!1),at=h.useRef(null);h.useEffect(()=>{if(Z.current)return;const v=U??(_!=null&&_.properties?_:null);if(v!=null&&v.properties){Z.current=!0;const S=pt(s==null?void 0:s.envelope),lt=S==null?void 0:S.formDefaults,Ct={...(s==null?void 0:s.metadata)??{},...typeof lt=="object"&&lt!==null?lt:{}},_t=xe(Ct,v),zt={_form_schema:v};for(const[Bt,Pe]of Object.entries(v.properties)){const Gt=Pe,Le=Gt.type==="object"?{}:"";zt[Bt]=_t[Bt]??Gt.default??Le}at.current=JSON.stringify(zt,null,2);const Yt=!((s==null?void 0:s.status)==="resolved"||(s==null?void 0:s.status)==="cancelled")&&(s!=null&&s.id)?hn(s.id):null,gt=Yt?pt(Yt):null;gt&&typeof gt=="object"&&!Array.isArray(gt)?C(JSON.stringify({...gt,_form_schema:v},null,2)):C(at.current)}else D&&(Z.current=!0,C(JSON.stringify(D,null,2)))},[D,U,_,s==null?void 0:s.envelope,s==null?void 0:s.metadata,s==null?void 0:s.id,s==null?void 0:s.status]),h.useEffect(()=>{if(!Z.current||at.current===null||!(s!=null&&s.id)||s.status!=="pending")return;const v=s.id,S=window.setTimeout(()=>{R===at.current?Ot(v):gn(v,R)},400);return()=>window.clearTimeout(S)},[R,s==null?void 0:s.id,s==null?void 0:s.status]);const K=(s==null?void 0:s.subtype)==="rounds_exhausted";if(i)return t.jsxs("div",{className:"animate-pulse space-y-8",children:[t.jsx("div",{className:"h-8 bg-surface-sunken rounded w-64"}),t.jsx("div",{className:"h-32 bg-surface-sunken rounded w-full"})]});if(!s)return t.jsx("p",{className:"text-sm text-text-secondary",children:"Escalation not found."});const yt=ue(s),tt=yt&&s.assigned_to===(n==null?void 0:n.userId),Ee=yt&&!tt,it=s.status==="resolved"||s.status==="cancelled",et=D==null?void 0:D["x-lt-viewport"],Nt=(et==null?void 0:et.type)==="iframe"&&!!(et!=null&&et.src)&&tt&&!it,ft=pt(s.escalation_payload),ot=pt(s.resolver_payload),ht=pt(s.envelope),Ae=!!((Ht=ht==null?void 0:ht.metadata)!=null&&Ht.certified),Ft=Xe(),qt=Ft!==null?Ft:!!((Ut=p==null?void 0:p.ai)!=null&&Ut.enabled),B=typeof ft=="object"&&ft!==null&&!Array.isArray(ft)?ft:null,Te=B==null?void 0:B._triage,$e=typeof ot=="object"&&ot!==null&&!Array.isArray(ot)?ot:null,Re=it?"terminal":tt?"claimed_by_me":Ee?"claimed_by_other":"available",wt=v=>{l.mutate({id:s.id,durationMinutes:v})},dt=()=>{r.resetQueries({queryKey:["escalations"]}),r.resetQueries({queryKey:["escalationStats"]}),a(-1)},vt=async v=>{try{await x.mutateAsync({id:s.id,resolverPayload:v})}catch(S){if(S instanceof Qe&&_s(S.body)){z(!0),y(S.body.violations),b(H.ERRORS);return}throw S}Ot(s.id),dt()},kt=async v=>{v&&(await o.mutateAsync({id:s.id,targetRole:v}),dt())},Ie=async()=>{tt||await l.mutateAsync({id:s.id,durationMinutes:30});const v=(B==null?void 0:B.diagnosis)||s.description||"";await x.mutateAsync({id:s.id,resolverPayload:{_lt:{needsTriage:!0},notes:v}}),dt()},Vt=async()=>{await l.mutateAsync({id:s.id,durationMinutes:0}),dt()},Oe=async()=>{await u.mutateAsync(s.id),Ot(s.id),m(!1),dt()},Me=typeof(D==null?void 0:D["x-lt-help"])=="string"||typeof(D==null?void 0:D["x-lt-context"])=="string",De=t.jsxs("div",{className:"flex items-center gap-2",children:[Me&&t.jsx("button",{onClick:()=>{I(!0),ut(!0),b(H.HELP)},className:"text-text-tertiary hover:text-accent transition-colors",title:"Open instructions",children:t.jsx(Lt,{className:"w-5 h-5",strokeWidth:1.5})}),t.jsx(rs,{onRefresh:()=>c(),isFetching:d,apiPath:`/escalations/${s.id}`,standalone:!0}),t.jsx("button",{onClick:()=>I(v=>(ut(!v),!v)),className:"ml-2 text-text-tertiary hover:text-accent transition-colors",title:T?"Hide side panel":"Show side panel",children:T?t.jsx(Zt,{className:"w-5 h-5",strokeWidth:1.5}):t.jsx(Kt,{className:"w-5 h-5",strokeWidth:1.5})})]});return t.jsxs("div",{className:"flex-1 min-h-0 min-w-0 flex items-stretch -mt-8 -mr-page-x -mb-16",children:[t.jsxs("div",{className:"flex-1 min-w-0 flex flex-col min-h-0",children:[Nt?t.jsxs("div",{className:"relative flex-1 min-h-0 -ml-page-x",children:[t.jsx("div",{className:"absolute top-3 right-3 z-50 flex items-center gap-0.5 bg-surface/90 backdrop-blur-sm rounded-lg px-1.5 py-1 shadow-sm border border-surface-border/40",children:[{onClick:Vt,disabled:l.isPending,label:"Release",hoverClass:"hover:text-accent",icon:t.jsx(Ns,{className:"w-4 h-4",strokeWidth:1.5})},{onClick:()=>m(!0),disabled:!1,label:"Cancel",hoverClass:"hover:text-status-error",icon:t.jsx(ws,{className:"w-4 h-4",strokeWidth:1.5})},{onClick:()=>I(v=>(ut(!v),!v)),disabled:!1,label:T?"Hide panel":"Show panel",hoverClass:"hover:text-accent",icon:T?t.jsx(Zt,{className:"w-4 h-4",strokeWidth:1.5}):t.jsx(Kt,{className:"w-4 h-4",strokeWidth:1.5})}].map(({onClick:v,disabled:S,label:lt,hoverClass:Ct,icon:_t})=>t.jsxs("div",{className:"relative group/tip",children:[t.jsx("button",{onClick:v,disabled:S,className:`text-text-tertiary ${Ct} transition-colors disabled:opacity-40 disabled:cursor-default p-1.5 rounded-md`,children:_t}),t.jsx("span",{className:"pointer-events-none absolute top-full left-1/2 -translate-x-1/2 mt-1.5 px-2 py-0.5 rounded text-2xs bg-surface-sunken text-text-primary whitespace-nowrap opacity-0 group-hover/tip:opacity-100 transition-opacity",children:lt})]},lt))}),t.jsx(Ne,{src:Ce(et.src,s),escalation:s,schema:D,onResolve:vt,onEscalate:kt,submitAttempted:q,fill:!0})]}):t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"shrink-0 pt-8 pr-page-x",children:t.jsx(ns,{title:s.description||"Escalation",actions:De})}),t.jsxs("div",{className:"flex-1 min-h-0 overflow-y-auto pr-page-x",children:[t.jsx(dn,{isRoundsExhausted:K,payloadObj:B,isTerminal:it,resolverPayload:ot,onRetryTriage:Ie,isRetrying:l.isPending||x.isPending}),t.jsx(xn,{esc:s,resolverPayload:ot,isTerminal:it,claimedByMe:tt,activeView:E,metadataFormSchema:U,effectiveSchema:D,json:R,onJsonChange:C,requestTriage:k,onRequestTriageChange:W,triageNotes:M,onTriageNotesChange:L,onResolve:vt,onEscalate:kt,onClaim:()=>wt(30),submitAttempted:q,isCertified:Ae,hasAI:qt,onOpenHelp:()=>{I(!0),ut(!0),b(H.HELP)}}),t.jsx("div",{className:"h-10"})]})]}),!Nt&&t.jsx(Js,{escalationContext:Dt(s),mode:Re,activeView:E,onActiveViewChange:P,onClaim:wt,claimPending:l.isPending,workflowType:s.workflow_type,json:R,onResolve:vt,resolvePending:x.isPending,resolveError:x.error,requestTriage:k,triageNotes:M,currentRole:s.role,escalationTargets:((N==null?void 0:N.targets)??[]).filter(v=>v!==s.role),onEscalate:kt,escalatePending:o.isPending,escalateError:o.error,onRelease:Vt,releasePending:l.isPending,onCancel:()=>m(!0),assignedTo:s.assigned_to,assignedUntil:s.assigned_until,onSubmitAttempt:()=>z(!0),onValidationErrors:v=>{y(v),I(!0),ut(!0),b(H.ERRORS)}})]}),t.jsx(Ls,{esc:s,schema:D,envelope:ht,payload:B,resolver:$e,triage:Te??null,hasAI:qt,claimed:yt,claimedByMe:tt,isTerminal:it,isBuilder:w,traceUrl:f,open:T,noGutter:Nt,formErrors:J,activePanel:$,onPanelChange:b}),t.jsx(ss,{open:g,onClose:()=>m(!1),onConfirm:Oe,isPending:u.isPending,error:u.error}),tt&&!it&&s.assigned_until&&t.jsx(un,{open:O.expiringSoon&&s.assigned_until!==F,assignedUntil:s.assigned_until,onClose:()=>rt(s.assigned_until??null),onExtend:wt,isPending:l.isPending})]})}export{Ln as EscalationDetailPage};
5
+ //# sourceMappingURL=index-Ikj_NTuy.js.map