@hotmeshio/long-tail 0.9.5 → 0.10.0

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 (255) hide show
  1. package/README.md +22 -93
  2. package/build/api/escalations/helpers.d.ts +27 -0
  3. package/build/api/escalations/helpers.js +34 -0
  4. package/build/api/escalations/list.d.ts +2 -0
  5. package/build/api/escalations/list.js +13 -3
  6. package/build/api/escalations/resolve.js +16 -4
  7. package/build/routes/escalations/list.js +2 -0
  8. package/build/services/escalation/crud.d.ts +1 -1
  9. package/build/services/escalation/crud.js +6 -2
  10. package/build/services/escalation/facet-sql.d.ts +8 -1
  11. package/build/services/escalation/facet-sql.js +29 -1
  12. package/build/types/facets.d.ts +9 -0
  13. package/dashboard/dist/assets/{AdminDashboard-PvD1IObg.js → AdminDashboard-DQS74RL0.js} +2 -2
  14. package/dashboard/dist/assets/{AdminDashboard-PvD1IObg.js.map → AdminDashboard-DQS74RL0.js.map} +1 -1
  15. package/dashboard/dist/assets/{AgentConfigPage-BB9NCIiK.js → AgentConfigPage-CSMCrFR4.js} +7 -7
  16. package/dashboard/dist/assets/{AgentConfigPage-BB9NCIiK.js.map → AgentConfigPage-CSMCrFR4.js.map} +1 -1
  17. package/dashboard/dist/assets/{AgentDetailPage-B570UVLx.js → AgentDetailPage-CDiopQ7D.js} +3 -3
  18. package/dashboard/dist/assets/{AgentDetailPage-B570UVLx.js.map → AgentDetailPage-CDiopQ7D.js.map} +1 -1
  19. package/dashboard/dist/assets/{AgentsPage-CgUucHar.js → AgentsPage-CyUXe9n4.js} +2 -2
  20. package/dashboard/dist/assets/{AgentsPage-CgUucHar.js.map → AgentsPage-CyUXe9n4.js.map} +1 -1
  21. package/dashboard/dist/assets/AvailableEscalationsPage-AiuiLcz-.js +2 -0
  22. package/dashboard/dist/assets/AvailableEscalationsPage-AiuiLcz-.js.map +1 -0
  23. package/dashboard/dist/assets/BotPicker-BuCGvEed.js +2 -0
  24. package/dashboard/dist/assets/BotPicker-BuCGvEed.js.map +1 -0
  25. package/dashboard/dist/assets/CapabilitiesPage-nTv4STcG.js +2 -0
  26. package/dashboard/dist/assets/{CapabilitiesPage-C8DL3cDA.js.map → CapabilitiesPage-nTv4STcG.js.map} +1 -1
  27. package/dashboard/dist/assets/{CollapsibleSection-CDdlmdb6.js → CollapsibleSection-CkOks9Cf.js} +2 -2
  28. package/dashboard/dist/assets/{CollapsibleSection-CDdlmdb6.js.map → CollapsibleSection-CkOks9Cf.js.map} +1 -1
  29. package/dashboard/dist/assets/{ConfirmDeleteModal-D9_1b4MW.js → ConfirmDeleteModal-C0x0HcHX.js} +2 -2
  30. package/dashboard/dist/assets/{ConfirmDeleteModal-D9_1b4MW.js.map → ConfirmDeleteModal-C0x0HcHX.js.map} +1 -1
  31. package/dashboard/dist/assets/CountdownTimer-DdKL8Ryt.js +2 -0
  32. package/dashboard/dist/assets/CountdownTimer-DdKL8Ryt.js.map +1 -0
  33. package/dashboard/dist/assets/CredentialsPage-BwA7k9Cb.js +2 -0
  34. package/dashboard/dist/assets/{CredentialsPage-Bt7tQHlp.js.map → CredentialsPage-BwA7k9Cb.js.map} +1 -1
  35. package/dashboard/dist/assets/{CronLabel-DbwuLMO0.js → CronLabel-jC_i-Lh9.js} +2 -2
  36. package/dashboard/dist/assets/{CronLabel-DbwuLMO0.js.map → CronLabel-jC_i-Lh9.js.map} +1 -1
  37. package/dashboard/dist/assets/{CustomDurationPicker-CKfgf650.js → CustomDurationPicker-F6bR2Q5A.js} +2 -2
  38. package/dashboard/dist/assets/{CustomDurationPicker-CKfgf650.js.map → CustomDurationPicker-F6bR2Q5A.js.map} +1 -1
  39. package/dashboard/dist/assets/{DropZone-C1TpkVQG.js → DropZone-zxH-9B8c.js} +2 -2
  40. package/dashboard/dist/assets/{DropZone-C1TpkVQG.js.map → DropZone-zxH-9B8c.js.map} +1 -1
  41. package/dashboard/dist/assets/{ElapsedCell-CgpTWk8N.js → ElapsedCell-DZ3RTZFc.js} +2 -2
  42. package/dashboard/dist/assets/{ElapsedCell-CgpTWk8N.js.map → ElapsedCell-DZ3RTZFc.js.map} +1 -1
  43. package/dashboard/dist/assets/{EscalationListSchemaPage-CxFxPz4C.js → EscalationListSchemaPage-CaMydHIO.js} +3 -3
  44. package/dashboard/dist/assets/{EscalationListSchemaPage-CxFxPz4C.js.map → EscalationListSchemaPage-CaMydHIO.js.map} +1 -1
  45. package/dashboard/dist/assets/{EscalationSchemaPage-CXvjwJ_I.js → EscalationSchemaPage-BlMx2WE6.js} +3 -3
  46. package/dashboard/dist/assets/{EscalationSchemaPage-CXvjwJ_I.js.map → EscalationSchemaPage-BlMx2WE6.js.map} +1 -1
  47. package/dashboard/dist/assets/{EscalationsOverview-BY4dLou7.js → EscalationsOverview-DcMkbiSo.js} +2 -2
  48. package/dashboard/dist/assets/{EscalationsOverview-BY4dLou7.js.map → EscalationsOverview-DcMkbiSo.js.map} +1 -1
  49. package/dashboard/dist/assets/{EventTable-MFAHeFTY.js → EventTable-CuZ2Q_wH.js} +2 -2
  50. package/dashboard/dist/assets/{EventTable-MFAHeFTY.js.map → EventTable-CuZ2Q_wH.js.map} +1 -1
  51. package/dashboard/dist/assets/FilterBar-B5Vk5tBF.js +2 -0
  52. package/dashboard/dist/assets/FilterBar-B5Vk5tBF.js.map +1 -0
  53. package/dashboard/dist/assets/{GraphInvokePage-7T-6qC2N.js → GraphInvokePage-CXElQqcV.js} +2 -2
  54. package/dashboard/dist/assets/{GraphInvokePage-7T-6qC2N.js.map → GraphInvokePage-CXElQqcV.js.map} +1 -1
  55. package/dashboard/dist/assets/HomePage-DcWfjZA-.js +2 -0
  56. package/dashboard/dist/assets/HomePage-DcWfjZA-.js.map +1 -0
  57. package/dashboard/dist/assets/ListToolbar-Dmd1UiM-.js +2 -0
  58. package/dashboard/dist/assets/{ListToolbar-DmRE3_dX.js.map → ListToolbar-Dmd1UiM-.js.map} +1 -1
  59. package/dashboard/dist/assets/{McpOverview-BukcrbtX.js → McpOverview-Cul2LFEw.js} +2 -2
  60. package/dashboard/dist/assets/{McpOverview-BukcrbtX.js.map → McpOverview-Cul2LFEw.js.map} +1 -1
  61. package/dashboard/dist/assets/{McpQueryDetailPage-BVx-cGFZ.js → McpQueryDetailPage-BVlQ0WBa.js} +2 -2
  62. package/dashboard/dist/assets/{McpQueryDetailPage-BVx-cGFZ.js.map → McpQueryDetailPage-BVlQ0WBa.js.map} +1 -1
  63. package/dashboard/dist/assets/{McpQueryPage-DPXnA6Wa.js → McpQueryPage-B7PmO_V-.js} +2 -2
  64. package/dashboard/dist/assets/{McpQueryPage-DPXnA6Wa.js.map → McpQueryPage-B7PmO_V-.js.map} +1 -1
  65. package/dashboard/dist/assets/{McpRunDetailPage-D3dcICPJ.js → McpRunDetailPage-B1RhxxlU.js} +2 -2
  66. package/dashboard/dist/assets/{McpRunDetailPage-D3dcICPJ.js.map → McpRunDetailPage-B1RhxxlU.js.map} +1 -1
  67. package/dashboard/dist/assets/{McpRunsPage-CzISyj7e.js → McpRunsPage-DlSrpxiv.js} +2 -2
  68. package/dashboard/dist/assets/{McpRunsPage-CzISyj7e.js.map → McpRunsPage-DlSrpxiv.js.map} +1 -1
  69. package/dashboard/dist/assets/Modal-D4afnAjc.js +2 -0
  70. package/dashboard/dist/assets/Modal-D4afnAjc.js.map +1 -0
  71. package/dashboard/dist/assets/{NamespacePill--ikKtMvx.js → NamespacePill-BQNMfY0m.js} +2 -2
  72. package/dashboard/dist/assets/{NamespacePill--ikKtMvx.js.map → NamespacePill-BQNMfY0m.js.map} +1 -1
  73. package/dashboard/dist/assets/OperationsPage-vm_ByX41.js +2 -0
  74. package/dashboard/dist/assets/OperationsPage-vm_ByX41.js.map +1 -0
  75. package/dashboard/dist/assets/OperatorDashboard-zviIxH-0.js +2 -0
  76. package/dashboard/dist/assets/{OperatorDashboard-C_bMBGyy.js.map → OperatorDashboard-zviIxH-0.js.map} +1 -1
  77. package/dashboard/dist/assets/{PageHeader-CiFhzGc0.js → PageHeader-BIY1YvKR.js} +2 -2
  78. package/dashboard/dist/assets/{PageHeader-CiFhzGc0.js.map → PageHeader-BIY1YvKR.js.map} +1 -1
  79. package/dashboard/dist/assets/{PageHeaderWithStats-_zOnWAhq.js → PageHeaderWithStats-TUyglVW0.js} +2 -2
  80. package/dashboard/dist/assets/{PageHeaderWithStats-_zOnWAhq.js.map → PageHeaderWithStats-TUyglVW0.js.map} +1 -1
  81. package/dashboard/dist/assets/{ProcessDetailPage-BVR41sYI.js → ProcessDetailPage-txiMHbMI.js} +2 -2
  82. package/dashboard/dist/assets/{ProcessDetailPage-BVR41sYI.js.map → ProcessDetailPage-txiMHbMI.js.map} +1 -1
  83. package/dashboard/dist/assets/{ProcessesListPage-DAgFK_ln.js → ProcessesListPage-CRttlU3L.js} +2 -2
  84. package/dashboard/dist/assets/{ProcessesListPage-DAgFK_ln.js.map → ProcessesListPage-CRttlU3L.js.map} +1 -1
  85. package/dashboard/dist/assets/RoleDetailPage-DBIl_mhK.js +8 -0
  86. package/dashboard/dist/assets/RoleDetailPage-DBIl_mhK.js.map +1 -0
  87. package/dashboard/dist/assets/RolePill-4LO_CuO3.js +2 -0
  88. package/dashboard/dist/assets/RolePill-4LO_CuO3.js.map +1 -0
  89. package/dashboard/dist/assets/RolesPage-DzrSv6m-.js +2 -0
  90. package/dashboard/dist/assets/{RolesPage-dRSC725H.js.map → RolesPage-DzrSv6m-.js.map} +1 -1
  91. package/dashboard/dist/assets/RunAsSelector-CiLjlmIE.js +2 -0
  92. package/dashboard/dist/assets/{RunAsSelector-C36xqdKj.js.map → RunAsSelector-CiLjlmIE.js.map} +1 -1
  93. package/dashboard/dist/assets/{SlidePanel-BcWKelpn.js → SlidePanel-DK4sWXmp.js} +2 -2
  94. package/dashboard/dist/assets/{SlidePanel-BcWKelpn.js.map → SlidePanel-DK4sWXmp.js.map} +1 -1
  95. package/dashboard/dist/assets/StickyPagination-Di6b2GDE.js +2 -0
  96. package/dashboard/dist/assets/{StickyPagination-D_HhyJ5V.js.map → StickyPagination-Di6b2GDE.js.map} +1 -1
  97. package/dashboard/dist/assets/{StreamMessageDetail-C39lLYKC.js → StreamMessageDetail-BbkU45X_.js} +2 -2
  98. package/dashboard/dist/assets/{StreamMessageDetail-C39lLYKC.js.map → StreamMessageDetail-BbkU45X_.js.map} +1 -1
  99. package/dashboard/dist/assets/{SwimlaneTimeline-dlaJS-DC.js → SwimlaneTimeline-BzsvdstG.js} +2 -2
  100. package/dashboard/dist/assets/{SwimlaneTimeline-dlaJS-DC.js.map → SwimlaneTimeline-BzsvdstG.js.map} +1 -1
  101. package/dashboard/dist/assets/{TagInput-BaFJCq9A.js → TagInput-CK-JhBG2.js} +2 -2
  102. package/dashboard/dist/assets/{TagInput-BaFJCq9A.js.map → TagInput-CK-JhBG2.js.map} +1 -1
  103. package/dashboard/dist/assets/{TaskDetailPage-DAnT9c0v.js → TaskDetailPage-Biikk9o_.js} +2 -2
  104. package/dashboard/dist/assets/{TaskDetailPage-DAnT9c0v.js.map → TaskDetailPage-Biikk9o_.js.map} +1 -1
  105. package/dashboard/dist/assets/{TaskQueuePill-D9e16qkU.js → TaskQueuePill-C_Vo2Clc.js} +2 -2
  106. package/dashboard/dist/assets/{TaskQueuePill-D9e16qkU.js.map → TaskQueuePill-C_Vo2Clc.js.map} +1 -1
  107. package/dashboard/dist/assets/{TasksListPage-CkbK3vdj.js → TasksListPage-t9WAft9-.js} +2 -2
  108. package/dashboard/dist/assets/{TasksListPage-CkbK3vdj.js.map → TasksListPage-t9WAft9-.js.map} +1 -1
  109. package/dashboard/dist/assets/{TimeAgo-drImakaN.js → TimeAgo-I7X6jdne.js} +2 -2
  110. package/dashboard/dist/assets/{TimeAgo-drImakaN.js.map → TimeAgo-I7X6jdne.js.map} +1 -1
  111. package/dashboard/dist/assets/{TimestampCell-CpWhUW0W.js → TimestampCell-Cex9nr0t.js} +2 -2
  112. package/dashboard/dist/assets/{TimestampCell-CpWhUW0W.js.map → TimestampCell-Cex9nr0t.js.map} +1 -1
  113. package/dashboard/dist/assets/ToolPill-BCi101Jh.js +2 -0
  114. package/dashboard/dist/assets/{ToolPill-Enc3nyic.js.map → ToolPill-BCi101Jh.js.map} +1 -1
  115. package/dashboard/dist/assets/{ToolTestPanel-PvMw4dIw.js → ToolTestPanel--MGaDY-1.js} +2 -2
  116. package/dashboard/dist/assets/{ToolTestPanel-PvMw4dIw.js.map → ToolTestPanel--MGaDY-1.js.map} +1 -1
  117. package/dashboard/dist/assets/{TopicDetailPage-DQa0EuM9.js → TopicDetailPage-B8pHHweA.js} +3 -3
  118. package/dashboard/dist/assets/{TopicDetailPage-DQa0EuM9.js.map → TopicDetailPage-B8pHHweA.js.map} +1 -1
  119. package/dashboard/dist/assets/{TopicsPage-OzE8IWZf.js → TopicsPage-tiOEQz2m.js} +2 -2
  120. package/dashboard/dist/assets/{TopicsPage-OzE8IWZf.js.map → TopicsPage-tiOEQz2m.js.map} +1 -1
  121. package/dashboard/dist/assets/{UserName-B-5Cnap4.js → UserName-Cdhyuv5K.js} +2 -2
  122. package/dashboard/dist/assets/{UserName-B-5Cnap4.js.map → UserName-Cdhyuv5K.js.map} +1 -1
  123. package/dashboard/dist/assets/{WorkflowExecutionPage-s4H5TnRv.js → WorkflowExecutionPage-DD1BKj5k.js} +2 -2
  124. package/dashboard/dist/assets/{WorkflowExecutionPage-s4H5TnRv.js.map → WorkflowExecutionPage-DD1BKj5k.js.map} +1 -1
  125. package/dashboard/dist/assets/WorkflowPill-DHxrAkp3.js +2 -0
  126. package/dashboard/dist/assets/{WorkflowPill-S6VV2Eax.js.map → WorkflowPill-DHxrAkp3.js.map} +1 -1
  127. package/dashboard/dist/assets/{WorkflowsDashboard-BqMJDhpp.js → WorkflowsDashboard-BeWjDHYW.js} +2 -2
  128. package/dashboard/dist/assets/{WorkflowsDashboard-BqMJDhpp.js.map → WorkflowsDashboard-BeWjDHYW.js.map} +1 -1
  129. package/dashboard/dist/assets/{WorkflowsOverview-CVd-TybI.js → WorkflowsOverview-CkI-Pmj7.js} +2 -2
  130. package/dashboard/dist/assets/{WorkflowsOverview-CVd-TybI.js.map → WorkflowsOverview-CkI-Pmj7.js.map} +1 -1
  131. package/dashboard/dist/assets/{YamlWorkflowDetailPage-BshuXnvM.js → YamlWorkflowDetailPage-BQnO8-PQ.js} +2 -2
  132. package/dashboard/dist/assets/{YamlWorkflowDetailPage-BshuXnvM.js.map → YamlWorkflowDetailPage-BQnO8-PQ.js.map} +1 -1
  133. package/dashboard/dist/assets/{YamlWorkflowsPage-D2LRoAki.js → YamlWorkflowsPage-DjmNTQ5r.js} +2 -2
  134. package/dashboard/dist/assets/{YamlWorkflowsPage-D2LRoAki.js.map → YamlWorkflowsPage-DjmNTQ5r.js.map} +1 -1
  135. package/dashboard/dist/assets/{agents-CqeRO052.js → agents-2DaoprdB.js} +2 -2
  136. package/dashboard/dist/assets/{agents-CqeRO052.js.map → agents-2DaoprdB.js.map} +1 -1
  137. package/dashboard/dist/assets/{bots-yo56kQZI.js → bots-BdwLwMUg.js} +2 -2
  138. package/dashboard/dist/assets/{bots-yo56kQZI.js.map → bots-BdwLwMUg.js.map} +1 -1
  139. package/dashboard/dist/assets/{capabilities-C-LyQnOQ.js → capabilities-BsuFeK9J.js} +2 -2
  140. package/dashboard/dist/assets/{capabilities-C-LyQnOQ.js.map → capabilities-BsuFeK9J.js.map} +1 -1
  141. package/dashboard/dist/assets/{controlplane-cpRK9tBf.js → controlplane-CxKOrcFO.js} +2 -2
  142. package/dashboard/dist/assets/{controlplane-cpRK9tBf.js.map → controlplane-CxKOrcFO.js.map} +1 -1
  143. package/dashboard/dist/assets/escalation-columns-y5SQ2Ulh.js +2 -0
  144. package/dashboard/dist/assets/escalation-columns-y5SQ2Ulh.js.map +1 -0
  145. package/dashboard/dist/assets/index-BC1NxetR.js +2 -0
  146. package/dashboard/dist/assets/{index-JMRKuqah.js.map → index-BC1NxetR.js.map} +1 -1
  147. package/dashboard/dist/assets/index-BVZINC_p.js +2 -0
  148. package/dashboard/dist/assets/{index-D3_Kc337.js.map → index-BVZINC_p.js.map} +1 -1
  149. package/dashboard/dist/assets/{index-DQgRu4cd.js → index-BXbt5NHG.js} +2 -2
  150. package/dashboard/dist/assets/{index-DQgRu4cd.js.map → index-BXbt5NHG.js.map} +1 -1
  151. package/dashboard/dist/assets/{index-C15QKc-V.js → index-BYEkfaUq.js} +2 -2
  152. package/dashboard/dist/assets/{index-C15QKc-V.js.map → index-BYEkfaUq.js.map} +1 -1
  153. package/dashboard/dist/assets/index-B_68lp-B.js +5 -0
  154. package/dashboard/dist/assets/index-B_68lp-B.js.map +1 -0
  155. package/dashboard/dist/assets/index-BeivyVtT.css +1 -0
  156. package/dashboard/dist/assets/{index-DNKzmRA3.js → index-CRBXgMsh.js} +2 -2
  157. package/dashboard/dist/assets/{index-DNKzmRA3.js.map → index-CRBXgMsh.js.map} +1 -1
  158. package/dashboard/dist/assets/{index-D_FpjN49.js → index-Cfq3UKd8.js} +2 -2
  159. package/dashboard/dist/assets/{index-D_FpjN49.js.map → index-Cfq3UKd8.js.map} +1 -1
  160. package/dashboard/dist/assets/{index-D9GgDI2q.js → index-DJ5nhcGB.js} +2 -2
  161. package/dashboard/dist/assets/{index-D9GgDI2q.js.map → index-DJ5nhcGB.js.map} +1 -1
  162. package/dashboard/dist/assets/{index-B9YOp7_Z.js → index-DVLBkcoD.js} +4 -4
  163. package/dashboard/dist/assets/index-DVLBkcoD.js.map +1 -0
  164. package/dashboard/dist/assets/index-DjI2AUbn.js +5 -0
  165. package/dashboard/dist/assets/{index-DpYsAAsj.js.map → index-DjI2AUbn.js.map} +1 -1
  166. package/dashboard/dist/assets/{index-d8dDpRIs.js → index-DyS2DHqy.js} +2 -2
  167. package/dashboard/dist/assets/{index-d8dDpRIs.js.map → index-DyS2DHqy.js.map} +1 -1
  168. package/dashboard/dist/assets/index-H6Vp-gPG.js +2 -0
  169. package/dashboard/dist/assets/{index-CvyZWk2N.js.map → index-H6Vp-gPG.js.map} +1 -1
  170. package/dashboard/dist/assets/index-YPLTjeli.js +63 -0
  171. package/dashboard/dist/assets/index-YPLTjeli.js.map +1 -0
  172. package/dashboard/dist/assets/{knowledge-DSTPZRsM.js → knowledge-CLnYcq0Y.js} +2 -2
  173. package/dashboard/dist/assets/{knowledge-DSTPZRsM.js.map → knowledge-CLnYcq0Y.js.map} +1 -1
  174. package/dashboard/dist/assets/{mcp-DPzcauBf.js → mcp-C1-iXkg7.js} +2 -2
  175. package/dashboard/dist/assets/{mcp-DPzcauBf.js.map → mcp-C1-iXkg7.js.map} +1 -1
  176. package/dashboard/dist/assets/{mcp-query-CYLlRjwY.js → mcp-query-DcyDxuGY.js} +2 -2
  177. package/dashboard/dist/assets/{mcp-query-CYLlRjwY.js.map → mcp-query-DcyDxuGY.js.map} +1 -1
  178. package/dashboard/dist/assets/{pipelines-BtfaUf7f.js → pipelines-BvG5D6bV.js} +2 -2
  179. package/dashboard/dist/assets/{pipelines-BtfaUf7f.js.map → pipelines-BvG5D6bV.js.map} +1 -1
  180. package/dashboard/dist/assets/{tasks-bMka9A7P.js → tasks-qwh8q5q7.js} +2 -2
  181. package/dashboard/dist/assets/{tasks-bMka9A7P.js.map → tasks-qwh8q5q7.js.map} +1 -1
  182. package/dashboard/dist/assets/{topics-CFcuDwn2.js → topics-MLKKA-Ql.js} +2 -2
  183. package/dashboard/dist/assets/{topics-CFcuDwn2.js.map → topics-MLKKA-Ql.js.map} +1 -1
  184. package/dashboard/dist/assets/{useEventHooks-DrtLEQzK.js → useEventHooks-B8uNFB-l.js} +2 -2
  185. package/dashboard/dist/assets/{useEventHooks-DrtLEQzK.js.map → useEventHooks-B8uNFB-l.js.map} +1 -1
  186. package/dashboard/dist/assets/{useNamespace-BUb0LZ9l.js → useNamespace-DjZmztJM.js} +2 -2
  187. package/dashboard/dist/assets/{useNamespace-BUb0LZ9l.js.map → useNamespace-DjZmztJM.js.map} +1 -1
  188. package/dashboard/dist/assets/{useYamlActivityEvents-6DPlPdg0.js → useYamlActivityEvents-DIvK20uI.js} +2 -2
  189. package/dashboard/dist/assets/{useYamlActivityEvents-6DPlPdg0.js.map → useYamlActivityEvents-DIvK20uI.js.map} +1 -1
  190. package/dashboard/dist/assets/{users-FTnxEv_t.js → users-CVjajeDg.js} +2 -2
  191. package/dashboard/dist/assets/{users-FTnxEv_t.js.map → users-CVjajeDg.js.map} +1 -1
  192. package/dashboard/dist/assets/{vendor-icons-DPmIjhZB.js → vendor-icons-Qk9qLjF_.js} +131 -126
  193. package/dashboard/dist/assets/vendor-icons-Qk9qLjF_.js.map +1 -0
  194. package/dashboard/dist/assets/{workflows-DgeQWLWK.js → workflows-BziTcJNq.js} +2 -2
  195. package/dashboard/dist/assets/{workflows-DgeQWLWK.js.map → workflows-BziTcJNq.js.map} +1 -1
  196. package/dashboard/dist/assets/{yaml-workflows-BjatB1t-.js → yaml-workflows-Dr-ZcE_0.js} +2 -2
  197. package/dashboard/dist/assets/{yaml-workflows-BjatB1t-.js.map → yaml-workflows-Dr-ZcE_0.js.map} +1 -1
  198. package/dashboard/dist/index.html +3 -3
  199. package/docs/dashboard.md +2 -2
  200. package/docs/faceted-routing.md +9 -0
  201. package/docs/hitl/escalation.md +206 -0
  202. package/docs/hitl/form.md +162 -0
  203. package/docs/hitl/iframe.md +170 -0
  204. package/docs/hitl/resolution.md +166 -0
  205. package/docs/hitl/roles.md +72 -0
  206. package/docs/hitl/x-lt-layout.md +167 -0
  207. package/docs/hitl/x-lt-list-schema.md +75 -0
  208. package/docs/hitl/x-lt-show-if.md +128 -0
  209. package/docs/hitl/x-lt-validation.md +168 -0
  210. package/docs/hitl/x-lt-widget.md +152 -0
  211. package/docs/hitl-guide.md +84 -1144
  212. package/docs/iam.md +1 -1
  213. package/package.json +2 -2
  214. package/dashboard/dist/assets/AvailableEscalationsPage-B1cCs4jO.js +0 -2
  215. package/dashboard/dist/assets/AvailableEscalationsPage-B1cCs4jO.js.map +0 -1
  216. package/dashboard/dist/assets/BotPicker-CYw4ZeAh.js +0 -2
  217. package/dashboard/dist/assets/BotPicker-CYw4ZeAh.js.map +0 -1
  218. package/dashboard/dist/assets/CapabilitiesPage-C8DL3cDA.js +0 -2
  219. package/dashboard/dist/assets/CountdownTimer-BrQl3JWm.js +0 -2
  220. package/dashboard/dist/assets/CountdownTimer-BrQl3JWm.js.map +0 -1
  221. package/dashboard/dist/assets/CredentialsPage-Bt7tQHlp.js +0 -2
  222. package/dashboard/dist/assets/FilterBar-DDIn8TOs.js +0 -2
  223. package/dashboard/dist/assets/FilterBar-DDIn8TOs.js.map +0 -1
  224. package/dashboard/dist/assets/HomePage-1PI7E3sw.js +0 -2
  225. package/dashboard/dist/assets/HomePage-1PI7E3sw.js.map +0 -1
  226. package/dashboard/dist/assets/ListToolbar-DmRE3_dX.js +0 -2
  227. package/dashboard/dist/assets/Modal-CSrxpXeM.js +0 -2
  228. package/dashboard/dist/assets/Modal-CSrxpXeM.js.map +0 -1
  229. package/dashboard/dist/assets/OperationsPage-BYth5Dxg.js +0 -2
  230. package/dashboard/dist/assets/OperationsPage-BYth5Dxg.js.map +0 -1
  231. package/dashboard/dist/assets/OperatorDashboard-C_bMBGyy.js +0 -2
  232. package/dashboard/dist/assets/RoleDetailPage-NxT8GaWV.js +0 -8
  233. package/dashboard/dist/assets/RoleDetailPage-NxT8GaWV.js.map +0 -1
  234. package/dashboard/dist/assets/RolePill-CUIJSgRq.js +0 -2
  235. package/dashboard/dist/assets/RolePill-CUIJSgRq.js.map +0 -1
  236. package/dashboard/dist/assets/RolesPage-dRSC725H.js +0 -2
  237. package/dashboard/dist/assets/RunAsSelector-C36xqdKj.js +0 -2
  238. package/dashboard/dist/assets/StickyPagination-D_HhyJ5V.js +0 -2
  239. package/dashboard/dist/assets/ToolPill-Enc3nyic.js +0 -2
  240. package/dashboard/dist/assets/WorkflowPill-S6VV2Eax.js +0 -2
  241. package/dashboard/dist/assets/escalation-columns-CSG3LG3F.js +0 -2
  242. package/dashboard/dist/assets/escalation-columns-CSG3LG3F.js.map +0 -1
  243. package/dashboard/dist/assets/index-B9YOp7_Z.js.map +0 -1
  244. package/dashboard/dist/assets/index-BJwHI2aX.js +0 -63
  245. package/dashboard/dist/assets/index-BJwHI2aX.js.map +0 -1
  246. package/dashboard/dist/assets/index-CvyZWk2N.js +0 -2
  247. package/dashboard/dist/assets/index-D3_Kc337.js +0 -2
  248. package/dashboard/dist/assets/index-D9I9XhrD.js +0 -5
  249. package/dashboard/dist/assets/index-D9I9XhrD.js.map +0 -1
  250. package/dashboard/dist/assets/index-DpYsAAsj.js +0 -5
  251. package/dashboard/dist/assets/index-JMRKuqah.js +0 -2
  252. package/dashboard/dist/assets/index-waKF7bKZ.css +0 -1
  253. package/dashboard/dist/assets/roles-CDi58HW9.js +0 -2
  254. package/dashboard/dist/assets/roles-CDi58HW9.js.map +0 -1
  255. package/dashboard/dist/assets/vendor-icons-DPmIjhZB.js.map +0 -1
@@ -0,0 +1,168 @@
1
+ # Pre-Submission Validation
2
+
3
+ The form runs a full validation pass before any submit is accepted. Every visible field is checked in sequence; the first failure displays an inline error and the submit is blocked. The right-side panel opens automatically with a tabular breakdown of all errors; clicking any error item scrolls to and focuses the corresponding field.
4
+
5
+ ---
6
+
7
+ ## Required
8
+
9
+ Fields listed in the schema's `required` array block submission when empty. A red asterisk marks required fields. Required validation is skipped for fields hidden by `x-lt-showIf` at submission time.
10
+
11
+ ```json
12
+ {
13
+ "required": ["approved", "reference_code"],
14
+ "properties": {
15
+ "approved": { "type": "boolean" },
16
+ "reference_code": { "type": "string" }
17
+ }
18
+ }
19
+ ```
20
+
21
+ ---
22
+
23
+ ## Format Guards
24
+
25
+ `"format": "email"` and `"format": "uri"` are enforced before submission:
26
+
27
+ | Format | Guard |
28
+ |--------|-------|
29
+ | `"email"` | Must match `user@host.tld` |
30
+ | `"uri"` | Must start with `https://` or `http://` |
31
+
32
+ Format errors appear inline beneath the field as soon as the field is blurred.
33
+
34
+ ---
35
+
36
+ ## String Length Bounds
37
+
38
+ | Keyword | Source | Type |
39
+ |---------|--------|------|
40
+ | `minLength` | JSON Schema standard | Static integer |
41
+ | `maxLength` | JSON Schema standard | Static integer |
42
+ | `x-lt-min-length` | Long-tail extension | `"domain.path"` resolved at submission time |
43
+ | `x-lt-max-length` | Long-tail extension | `"domain.path"` resolved at submission time |
44
+
45
+ Static and dynamic bounds compose: if both `minLength` and `x-lt-min-length` are present, the static value is used (the dynamic path is a fallback only when no static value is set).
46
+
47
+ ```json
48
+ {
49
+ "properties": {
50
+ "reference_code": {
51
+ "type": "string",
52
+ "minLength": 3
53
+ },
54
+ "notes": {
55
+ "type": "string",
56
+ "format": "textarea",
57
+ "x-lt-max-length": "envelope.max_notes_length"
58
+ }
59
+ }
60
+ }
61
+ ```
62
+
63
+ When `envelope.max_notes_length` is `500`, the notes field blocks submission once the input exceeds 500 characters. The error reads `Maximum 500 characters (534 entered)`. Textarea fields with a `maxLength` or `x-lt-max-length` bound also show a live `X / N` character counter as you type — the counter turns red when the limit is exceeded, before the form is submitted.
64
+
65
+ ---
66
+
67
+ ## Numeric Bounds
68
+
69
+ | Keyword | Source | Type |
70
+ |---------|--------|------|
71
+ | `minimum` | JSON Schema standard | Static number |
72
+ | `maximum` | JSON Schema standard | Static number |
73
+ | `exclusiveMinimum` | JSON Schema standard | Static number |
74
+ | `exclusiveMaximum` | JSON Schema standard | Static number |
75
+ | `x-lt-minimum` | Long-tail extension | `"domain.path"` resolved at submission time |
76
+ | `x-lt-maximum` | Long-tail extension | `"domain.path"` resolved at submission time |
77
+
78
+ Static and dynamic bounds compose: if both `minimum` and `x-lt-minimum` are present, the static value is used.
79
+
80
+ ```json
81
+ {
82
+ "properties": {
83
+ "score": {
84
+ "type": "number",
85
+ "maximum": 100,
86
+ "x-lt-minimum": "envelope.min_score"
87
+ }
88
+ }
89
+ }
90
+ ```
91
+
92
+ When `envelope.min_score` is `60`, submitting a score of `45` blocks with "Minimum value is 60".
93
+
94
+ ---
95
+
96
+ ## Pattern Guard
97
+
98
+ Apply a regular expression guard with `pattern`. If the input does not match, the field blocks submission. Provide `x-lt-pattern-error` for a human-readable error message; otherwise the generic "Invalid format" is shown.
99
+
100
+ ```json
101
+ {
102
+ "properties": {
103
+ "reference_code": {
104
+ "type": "string",
105
+ "pattern": "^[A-Z0-9][A-Z0-9-]*[A-Z0-9]$|^[A-Z0-9]$",
106
+ "x-lt-pattern-error": "Use uppercase letters, digits, and dashes (e.g. QA-2024-001)"
107
+ }
108
+ }
109
+ }
110
+ ```
111
+
112
+ ---
113
+
114
+ ## Dynamic Bounds — `"domain.path"` Resolution
115
+
116
+ `x-lt-minimum`, `x-lt-maximum`, `x-lt-min-length`, and `x-lt-max-length` all accept a `"domain.path"` string. The value is resolved from the escalation context at the moment of submission — the same domain/path convention as `x-lt-showIf` and `x-lt-help` tokens.
117
+
118
+ | Domain | Resolves against |
119
+ |--------|-----------------|
120
+ | `envelope` | The workflow-sent input envelope |
121
+ | `metadata` | The row's metadata dict |
122
+ | `payload` | The escalation context payload |
123
+ | `escalation` | Top-level escalation row fields |
124
+
125
+ The path is dot-separated, with optional `[n]` array indices. A missing or non-numeric value at the path means the bound is not enforced for that submission.
126
+
127
+ **Workflow side — passing the bound in the envelope:**
128
+
129
+ ```typescript
130
+ const decision = await conditionLT<{ score: number; notes: string }>(signalId, {
131
+ role: 'quality-reviewer',
132
+ envelope: {
133
+ min_score: 60,
134
+ max_notes_length: 500,
135
+ },
136
+ metadata: {
137
+ form_schema: {
138
+ properties: {
139
+ score: { type: 'number', maximum: 100, 'x-lt-minimum': 'envelope.min_score' },
140
+ notes: { type: 'string', 'x-lt-max-length': 'envelope.max_notes_length' },
141
+ },
142
+ },
143
+ },
144
+ });
145
+ ```
146
+
147
+ ---
148
+
149
+ ## Error Panel
150
+
151
+ When the pre-submission pass finds errors, the right-side panel opens automatically on the Errors view. The panel shows a numbered list of issues — field name and message — and each entry is a button: clicking it scrolls the form to the field and focuses it. The panel icon shows a `!` badge when errors are active.
152
+
153
+ The error panel updates in real-time as fields are corrected — fixing a field removes its entry from the panel immediately, without requiring another submit attempt. The panel clears entirely once all issues are resolved.
154
+
155
+ ---
156
+
157
+ ## Reference Example
158
+
159
+ `examples/workflows/constraint-form/` is the canonical reference for all constraint guards:
160
+
161
+ - `approved` — boolean toggle
162
+ - `rejection_reason` — hidden required field (`x-lt-showIf: '!resolver.approved'`)
163
+ - `reference_code` — `pattern` + `minLength` + `x-lt-pattern-error`
164
+ - `score` — `maximum: 100` + `x-lt-minimum: 'envelope.min_score'`
165
+ - `notes` — `x-lt-max-length: 'envelope.max_notes_length'`
166
+ - `checks` — checklist widget with `x-lt-source: 'envelope.checklist_items'`
167
+
168
+ The `quality-reviewer` role is seeded with two test escalations that carry different `min_score` and `max_notes_length` values so every dynamic bound is exercisable without code changes.
@@ -0,0 +1,152 @@
1
+ # Custom Widgets (`x-lt-widget`)
2
+
3
+ For rich inputs beyond standard HTML types, set `x-lt-widget` on any field:
4
+
5
+ | Widget | Description |
6
+ |--------|------------|
7
+ | `"file-upload"` | File picker with drag-and-drop. Stores a base64 data URL. Use `accept` to filter file types. |
8
+ | `"code-editor"` | Monospace textarea with tab-key support. Use `x-lt-language` for the syntax hint. |
9
+ | `"signature"` | HTML5 Canvas drawing pad. Outputs a PNG data URL. |
10
+ | `"rich-text"` | Tall textarea for formatted text input. |
11
+ | `"markdown"` | Markdown source rendered with headings, tables, lists, code blocks. Editable by default; set `readOnly: true` for a pure content block. |
12
+ | `"checklist"` | Dynamic labeled checkboxes driven by runtime data. Items come from a `"domain.path"` declared in `x-lt-source`. |
13
+
14
+ ---
15
+
16
+ ## File Upload
17
+
18
+ ```json
19
+ {
20
+ "properties": {
21
+ "screenshot": {
22
+ "type": "string",
23
+ "x-lt-widget": "file-upload",
24
+ "accept": "image/*",
25
+ "description": "Upload a screenshot of the issue"
26
+ },
27
+ "signed_form": {
28
+ "type": "string",
29
+ "x-lt-widget": "file-upload",
30
+ "accept": ".pdf",
31
+ "description": "Signed authorization form (PDF)"
32
+ }
33
+ }
34
+ }
35
+ ```
36
+
37
+ The submitted value is a base64 data URL (`data:image/png;base64,...`). `accept` follows the HTML `<input accept>` syntax.
38
+
39
+ ---
40
+
41
+ ## Code Editor
42
+
43
+ ```json
44
+ {
45
+ "properties": {
46
+ "fix_script": {
47
+ "type": "string",
48
+ "x-lt-widget": "code-editor",
49
+ "x-lt-language": "sql",
50
+ "description": "SQL migration to apply"
51
+ }
52
+ }
53
+ }
54
+ ```
55
+
56
+ `x-lt-language` is a display hint only — the editor does not enforce syntax.
57
+
58
+ ---
59
+
60
+ ## Signature
61
+
62
+ ```json
63
+ {
64
+ "properties": {
65
+ "signature": {
66
+ "type": "string",
67
+ "x-lt-widget": "signature",
68
+ "description": "Sign to confirm"
69
+ }
70
+ }
71
+ }
72
+ ```
73
+
74
+ The submitted value is a PNG data URL of the canvas drawing.
75
+
76
+ ---
77
+
78
+ ## Markdown
79
+
80
+ Without `readOnly`, the field is a markdown editor — the resolver writes source in a Write/Preview toggle and the submitted value is the markdown text.
81
+
82
+ With `readOnly: true`, the field is a rendered content block. The markdown in its `default` displays as HTML inside the form — headings, tables, checklists, callouts. The versioned schema carries the page source itself, so review instructions and SOPs version with the form they belong to.
83
+
84
+ ```json
85
+ {
86
+ "properties": {
87
+ "review_guide": {
88
+ "type": "string",
89
+ "readOnly": true,
90
+ "x-lt-widget": "markdown",
91
+ "x-lt-span": 2,
92
+ "default": "### Review checklist\n\n1. Confirm the **legal name** matches.\n2. Send a test message before approving.\n\n> Escalate non-standard contract language to legal."
93
+ }
94
+ }
95
+ }
96
+ ```
97
+
98
+ ---
99
+
100
+ ## Checklist (`x-lt-source`)
101
+
102
+ A dynamic list of labeled checkboxes driven by runtime data in the escalation context. The item definitions come from a domain path declared in `x-lt-source` — the form schema itself never changes as item count or labels vary across escalations.
103
+
104
+ The field type must be `"object"`. The submitted value is `Record<string, boolean>` keyed by item id (e.g. `{ "step_0": true, "step_1": false }`).
105
+
106
+ ```json
107
+ {
108
+ "properties": {
109
+ "checks": {
110
+ "type": "object",
111
+ "description": "Work through each step and check it off.",
112
+ "x-lt-widget": "checklist",
113
+ "x-lt-source": "envelope.checklist_items"
114
+ }
115
+ },
116
+ "required": ["checks"]
117
+ }
118
+ ```
119
+
120
+ `x-lt-source` uses the `"domain.path"` convention (same as `x-lt-showIf` and `x-lt-help` tokens). The renderer expects an array of `{ id: string; label: string; required?: boolean }` objects at that path.
121
+
122
+ - `"envelope"` — for item definitions that are render data only (no query cost). The workflow puts them in `conditionLT`'s `envelope` parameter.
123
+ - `"metadata"` — only when items need to be GIN-indexed and searchable as facets. Adds index cost.
124
+
125
+ Marking an item `required: true` flags it with an asterisk in the UI. A `required` checklist field is blocked from submission until at least one item is checked. When no items are checked after a submission attempt, every unchecked item that is individually required (or all unchecked items when the field itself is required) highlights in red. Once any item is checked — satisfying the group requirement — all per-item highlights clear.
126
+
127
+ **Workflow side:**
128
+
129
+ ```typescript
130
+ const checklistItems = [
131
+ { id: 'doc', label: 'All supporting documentation is attached', required: true },
132
+ { id: 'contact', label: 'Contact details have been verified', required: true },
133
+ { id: 'photos', label: 'Before/after photos are present', required: false },
134
+ ];
135
+
136
+ const decision = await conditionLT<{ checks: Record<string, boolean> }>(signalId, {
137
+ role: 'checklist-operator',
138
+ envelope: {
139
+ checklist_items: checklistItems,
140
+ formDefaults: {
141
+ // Pre-populate all checkboxes as unchecked
142
+ checks: Object.fromEntries(checklistItems.map((i) => [i.id, false])),
143
+ },
144
+ },
145
+ });
146
+
147
+ const allConfirmed = Object.values(decision.checks).every(Boolean);
148
+ ```
149
+
150
+ Pre-populating `formDefaults.checks` opens the form with every checkbox unchecked rather than indeterminate.
151
+
152
+ The `examples/workflows/checklist-confirmation/` and `examples/workflows/constraint-form/` workflows are complete references.