@hotmeshio/long-tail 0.31.1 → 0.32.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 (320) hide show
  1. package/build/api/escalations/create.js +17 -6
  2. package/build/api/escalations/files.d.ts +18 -0
  3. package/build/api/escalations/files.js +73 -0
  4. package/build/api/escalations/index.d.ts +1 -0
  5. package/build/api/escalations/index.js +4 -2
  6. package/build/api/escalations/metadata.js +5 -4
  7. package/build/api/escalations/resolve.js +6 -4
  8. package/build/bin/ltc.js +4 -2
  9. package/build/index.d.ts +2 -0
  10. package/build/index.js +13 -2
  11. package/build/lib/cli/commands/escalations.d.ts +2 -0
  12. package/build/lib/cli/commands/escalations.js +12 -4
  13. package/build/lib/storage/s3.js +1 -0
  14. package/build/modules/config.d.ts +9 -0
  15. package/build/modules/config.js +9 -0
  16. package/build/routes/escalations/single.js +11 -0
  17. package/build/sdk/index.d.ts +4 -0
  18. package/build/sdk/index.js +2 -0
  19. package/build/services/escalation/aggregate-resolved-sql.d.ts +19 -0
  20. package/build/services/escalation/aggregate-resolved-sql.js +57 -0
  21. package/build/services/escalation/aggregate-sql.d.ts +6 -1
  22. package/build/services/escalation/aggregate-sql.js +33 -12
  23. package/build/services/escalation/aggregate-validate.d.ts +5 -2
  24. package/build/services/escalation/aggregate-validate.js +7 -4
  25. package/build/services/escalation/aggregates.js +5 -3
  26. package/build/services/escalation/crud.js +3 -0
  27. package/build/services/escalation/file-links.d.ts +39 -0
  28. package/build/services/escalation/file-links.js +118 -0
  29. package/build/services/escalation/resolver-validation.d.ts +33 -0
  30. package/build/services/escalation/resolver-validation.js +22 -6
  31. package/build/services/orchestrator/condition.d.ts +20 -4
  32. package/build/services/orchestrator/condition.js +27 -8
  33. package/build/shared/form-validation/display-only-widgets.d.ts +3 -2
  34. package/build/shared/form-validation/display-only-widgets.js +3 -2
  35. package/build/shared/form-validation/index.d.ts +2 -0
  36. package/build/shared/form-validation/index.js +2 -0
  37. package/build/shared/form-validation/x-lt-confidence-facets.d.ts +27 -0
  38. package/build/shared/form-validation/x-lt-confidence-facets.js +60 -0
  39. package/build/shared/form-validation/x-lt-confidence.d.ts +57 -0
  40. package/build/shared/form-validation/x-lt-confidence.js +177 -0
  41. package/build/shared/form-validation/x-lt-help.d.ts +1 -1
  42. package/build/shared/form-validation/x-lt-help.js +1 -1
  43. package/build/system/mcp-servers/admin/escalations.js +4 -2
  44. package/build/system/mcp-servers/admin/labels-schemas.d.ts +4 -4
  45. package/build/system/mcp-servers/admin/schemas.d.ts +111 -70
  46. package/build/system/mcp-servers/admin/schemas.js +8 -3
  47. package/build/system/mcp-servers/human-queue-files.d.ts +8 -0
  48. package/build/system/mcp-servers/human-queue-files.js +32 -0
  49. package/build/system/mcp-servers/human-queue-schemas.d.ts +7 -0
  50. package/build/system/mcp-servers/human-queue-schemas.js +4 -1
  51. package/build/system/mcp-servers/human-queue.d.ts +1 -0
  52. package/build/system/mcp-servers/human-queue.js +23 -16
  53. package/build/system/seed/tool-manifests-admin.js +1 -1
  54. package/build/system/seed/tool-manifests-escalation.js +13 -0
  55. package/build/tsconfig.tsbuildinfo +1 -1
  56. package/build/types/analytics.d.ts +14 -3
  57. package/build/types/analytics.js +3 -1
  58. package/build/types/escalation.d.ts +34 -0
  59. package/build/types/escalation.js +72 -1
  60. package/build/types/index.d.ts +4 -4
  61. package/build/types/index.js +5 -1
  62. package/dashboard/dist/assets/{AdminDashboard-BafKaq50.js → AdminDashboard-C25co77C.js} +2 -2
  63. package/dashboard/dist/assets/{AdminDashboard-BafKaq50.js.map → AdminDashboard-C25co77C.js.map} +1 -1
  64. package/dashboard/dist/assets/{AgentConfigPage-CFHf31DT.js → AgentConfigPage-CsCpI15j.js} +5 -5
  65. package/dashboard/dist/assets/{AgentConfigPage-CFHf31DT.js.map → AgentConfigPage-CsCpI15j.js.map} +1 -1
  66. package/dashboard/dist/assets/{AgentDetailPage-CEvz5rJr.js → AgentDetailPage-ByaepsB5.js} +3 -3
  67. package/dashboard/dist/assets/{AgentDetailPage-CEvz5rJr.js.map → AgentDetailPage-ByaepsB5.js.map} +1 -1
  68. package/dashboard/dist/assets/{AgentsPage-DjQaio0O.js → AgentsPage-ByHU42SO.js} +2 -2
  69. package/dashboard/dist/assets/{AgentsPage-DjQaio0O.js.map → AgentsPage-ByHU42SO.js.map} +1 -1
  70. package/dashboard/dist/assets/{AvailableEscalationsPage-UB03VTJx.js → AvailableEscalationsPage--o6qcz7-.js} +2 -2
  71. package/dashboard/dist/assets/{AvailableEscalationsPage-UB03VTJx.js.map → AvailableEscalationsPage--o6qcz7-.js.map} +1 -1
  72. package/dashboard/dist/assets/{BotPicker-C7MNWOF7.js → BotPicker-B3y3H3fs.js} +2 -2
  73. package/dashboard/dist/assets/{BotPicker-C7MNWOF7.js.map → BotPicker-B3y3H3fs.js.map} +1 -1
  74. package/dashboard/dist/assets/{BulkAssignModal-h5fX-_cV.js → BulkAssignModal-DMNIkIn6.js} +2 -2
  75. package/dashboard/dist/assets/{BulkAssignModal-h5fX-_cV.js.map → BulkAssignModal-DMNIkIn6.js.map} +1 -1
  76. package/dashboard/dist/assets/{CapabilitiesPage-BIzDl-ZT.js → CapabilitiesPage-BekfKHlk.js} +2 -2
  77. package/dashboard/dist/assets/{CapabilitiesPage-BIzDl-ZT.js.map → CapabilitiesPage-BekfKHlk.js.map} +1 -1
  78. package/dashboard/dist/assets/{CollapsibleSection-B5TivtEg.js → CollapsibleSection-BAteHgBG.js} +2 -2
  79. package/dashboard/dist/assets/{CollapsibleSection-B5TivtEg.js.map → CollapsibleSection-BAteHgBG.js.map} +1 -1
  80. package/dashboard/dist/assets/{ConfirmDeleteModal-CB4nKePb.js → ConfirmDeleteModal-BNY287W9.js} +2 -2
  81. package/dashboard/dist/assets/{ConfirmDeleteModal-CB4nKePb.js.map → ConfirmDeleteModal-BNY287W9.js.map} +1 -1
  82. package/dashboard/dist/assets/{ConnectedAppsPage-B3S5gVWw.js → ConnectedAppsPage-LLiiH3da.js} +2 -2
  83. package/dashboard/dist/assets/{ConnectedAppsPage-B3S5gVWw.js.map → ConnectedAppsPage-LLiiH3da.js.map} +1 -1
  84. package/dashboard/dist/assets/{CountdownTimer-BHVIq3kA.js → CountdownTimer-DBLURjxh.js} +2 -2
  85. package/dashboard/dist/assets/{CountdownTimer-BHVIq3kA.js.map → CountdownTimer-DBLURjxh.js.map} +1 -1
  86. package/dashboard/dist/assets/{CredentialConfirmModal-w0AGmCIe.js → CredentialConfirmModal-BqpY3yen.js} +2 -2
  87. package/dashboard/dist/assets/{CredentialConfirmModal-w0AGmCIe.js.map → CredentialConfirmModal-BqpY3yen.js.map} +1 -1
  88. package/dashboard/dist/assets/{CredentialsPage-BtCGBJrT.js → CredentialsPage-CW3_dbm2.js} +2 -2
  89. package/dashboard/dist/assets/{CredentialsPage-BtCGBJrT.js.map → CredentialsPage-CW3_dbm2.js.map} +1 -1
  90. package/dashboard/dist/assets/{CronLabel-BG1rZK-5.js → CronLabel-CR6DiZZr.js} +2 -2
  91. package/dashboard/dist/assets/{CronLabel-BG1rZK-5.js.map → CronLabel-CR6DiZZr.js.map} +1 -1
  92. package/dashboard/dist/assets/{DataTable-FjFhx0SE.js → DataTable-C-IlbLhY.js} +2 -2
  93. package/dashboard/dist/assets/{DataTable-FjFhx0SE.js.map → DataTable-C-IlbLhY.js.map} +1 -1
  94. package/dashboard/dist/assets/{DropZone-D8ZVdEb5.js → DropZone-CHmz59w4.js} +2 -2
  95. package/dashboard/dist/assets/{DropZone-D8ZVdEb5.js.map → DropZone-CHmz59w4.js.map} +1 -1
  96. package/dashboard/dist/assets/{ElapsedCell-l4m8Yvfv.js → ElapsedCell-CEapQvgU.js} +2 -2
  97. package/dashboard/dist/assets/{ElapsedCell-l4m8Yvfv.js.map → ElapsedCell-CEapQvgU.js.map} +1 -1
  98. package/dashboard/dist/assets/{EntityTimelinePanel-BOHlIaxF.js → EntityTimelinePanel-DqD_BpJM.js} +2 -2
  99. package/dashboard/dist/assets/{EntityTimelinePanel-BOHlIaxF.js.map → EntityTimelinePanel-DqD_BpJM.js.map} +1 -1
  100. package/dashboard/dist/assets/{EscalationListSchemaPage-BotlwlX3.js → EscalationListSchemaPage-DDKcrVbb.js} +3 -3
  101. package/dashboard/dist/assets/{EscalationListSchemaPage-BotlwlX3.js.map → EscalationListSchemaPage-DDKcrVbb.js.map} +1 -1
  102. package/dashboard/dist/assets/{EscalationSchemaPage-CfZSVOSD.js → EscalationSchemaPage-BZHZfJiQ.js} +3 -3
  103. package/dashboard/dist/assets/{EscalationSchemaPage-CfZSVOSD.js.map → EscalationSchemaPage-BZHZfJiQ.js.map} +1 -1
  104. package/dashboard/dist/assets/{EscalationTimeline-CCKpuRBU.js → EscalationTimeline-Dv0XUgQX.js} +2 -2
  105. package/dashboard/dist/assets/{EscalationTimeline-CCKpuRBU.js.map → EscalationTimeline-Dv0XUgQX.js.map} +1 -1
  106. package/dashboard/dist/assets/{EscalationTitleSelect-cpTzPHiW.js → EscalationTitleSelect-BN7D52wT.js} +2 -2
  107. package/dashboard/dist/assets/{EscalationTitleSelect-cpTzPHiW.js.map → EscalationTitleSelect-BN7D52wT.js.map} +1 -1
  108. package/dashboard/dist/assets/{EscalationsOverview-DS-nK0qV.js → EscalationsOverview-DE6EPkhT.js} +2 -2
  109. package/dashboard/dist/assets/{EscalationsOverview-DS-nK0qV.js.map → EscalationsOverview-DE6EPkhT.js.map} +1 -1
  110. package/dashboard/dist/assets/{EventTable-UfebhJf0.js → EventTable-CiV62txY.js} +2 -2
  111. package/dashboard/dist/assets/{EventTable-UfebhJf0.js.map → EventTable-CiV62txY.js.map} +1 -1
  112. package/dashboard/dist/assets/{FilterBar-newA5l-X.js → FilterBar-WyNQPyQ1.js} +2 -2
  113. package/dashboard/dist/assets/{FilterBar-newA5l-X.js.map → FilterBar-WyNQPyQ1.js.map} +1 -1
  114. package/dashboard/dist/assets/{GraphInvokePage-6SCDyQcK.js → GraphInvokePage--gn48yUD.js} +2 -2
  115. package/dashboard/dist/assets/{GraphInvokePage-6SCDyQcK.js.map → GraphInvokePage--gn48yUD.js.map} +1 -1
  116. package/dashboard/dist/assets/{HomePage-BEc-XdKj.js → HomePage-IR_jgBE8.js} +2 -2
  117. package/dashboard/dist/assets/{HomePage-BEc-XdKj.js.map → HomePage-IR_jgBE8.js.map} +1 -1
  118. package/dashboard/dist/assets/{LabelJobsPage-BO50zXT5.js → LabelJobsPage-C8LSts4O.js} +2 -2
  119. package/dashboard/dist/assets/{LabelJobsPage-BO50zXT5.js.map → LabelJobsPage-C8LSts4O.js.map} +1 -1
  120. package/dashboard/dist/assets/{LinePage-NYxJQ-ex.js → LinePage-CS7uUv00.js} +2 -2
  121. package/dashboard/dist/assets/{LinePage-NYxJQ-ex.js.map → LinePage-CS7uUv00.js.map} +1 -1
  122. package/dashboard/dist/assets/{LinesPage-RbWTaQRh.js → LinesPage-CJprjG39.js} +3 -3
  123. package/dashboard/dist/assets/{LinesPage-RbWTaQRh.js.map → LinesPage-CJprjG39.js.map} +1 -1
  124. package/dashboard/dist/assets/{ListToolbar-B-E9-toh.js → ListToolbar-YP3uwvXC.js} +2 -2
  125. package/dashboard/dist/assets/{ListToolbar-B-E9-toh.js.map → ListToolbar-YP3uwvXC.js.map} +1 -1
  126. package/dashboard/dist/assets/{McpOverview-Shcf9QhZ.js → McpOverview-Ce-m2JON.js} +2 -2
  127. package/dashboard/dist/assets/{McpOverview-Shcf9QhZ.js.map → McpOverview-Ce-m2JON.js.map} +1 -1
  128. package/dashboard/dist/assets/{McpQueryDetailPage-D8kmjy2v.js → McpQueryDetailPage-CtnUqO1v.js} +2 -2
  129. package/dashboard/dist/assets/{McpQueryDetailPage-D8kmjy2v.js.map → McpQueryDetailPage-CtnUqO1v.js.map} +1 -1
  130. package/dashboard/dist/assets/{McpQueryPage-ck-o5m8A.js → McpQueryPage-C-lqUPlg.js} +2 -2
  131. package/dashboard/dist/assets/{McpQueryPage-ck-o5m8A.js.map → McpQueryPage-C-lqUPlg.js.map} +1 -1
  132. package/dashboard/dist/assets/{McpRunDetailPage-BJKkM9-3.js → McpRunDetailPage-MnIe0hwz.js} +2 -2
  133. package/dashboard/dist/assets/{McpRunDetailPage-BJKkM9-3.js.map → McpRunDetailPage-MnIe0hwz.js.map} +1 -1
  134. package/dashboard/dist/assets/{McpRunsPage-DqhHfD5G.js → McpRunsPage-CpYLXVPF.js} +2 -2
  135. package/dashboard/dist/assets/{McpRunsPage-DqhHfD5G.js.map → McpRunsPage-CpYLXVPF.js.map} +1 -1
  136. package/dashboard/dist/assets/{NamespacePill--uIaGtrN.js → NamespacePill-DilSgLyE.js} +2 -2
  137. package/dashboard/dist/assets/{NamespacePill--uIaGtrN.js.map → NamespacePill-DilSgLyE.js.map} +1 -1
  138. package/dashboard/dist/assets/{OperationsPage-D6B9Vv__.js → OperationsPage-xe6bAwaq.js} +2 -2
  139. package/dashboard/dist/assets/{OperationsPage-D6B9Vv__.js.map → OperationsPage-xe6bAwaq.js.map} +1 -1
  140. package/dashboard/dist/assets/{OperatorDashboard-CIH1cxjQ.js → OperatorDashboard-Cm9_C0EP.js} +2 -2
  141. package/dashboard/dist/assets/{OperatorDashboard-CIH1cxjQ.js.map → OperatorDashboard-Cm9_C0EP.js.map} +1 -1
  142. package/dashboard/dist/assets/{PageHeader-DClJ33fV.js → PageHeader-B7SOvLT8.js} +2 -2
  143. package/dashboard/dist/assets/{PageHeader-DClJ33fV.js.map → PageHeader-B7SOvLT8.js.map} +1 -1
  144. package/dashboard/dist/assets/{PageHeaderWithStats-C-TrbKQL.js → PageHeaderWithStats-DWKap7gs.js} +2 -2
  145. package/dashboard/dist/assets/{PageHeaderWithStats-C-TrbKQL.js.map → PageHeaderWithStats-DWKap7gs.js.map} +1 -1
  146. package/dashboard/dist/assets/{PersonaDetailPage-DjvfyIph.js → PersonaDetailPage-CvstNkh3.js} +2 -2
  147. package/dashboard/dist/assets/{PersonaDetailPage-DjvfyIph.js.map → PersonaDetailPage-CvstNkh3.js.map} +1 -1
  148. package/dashboard/dist/assets/{PersonasPage-D7ryA8Vc.js → PersonasPage-ba1KeInW.js} +2 -2
  149. package/dashboard/dist/assets/{PersonasPage-D7ryA8Vc.js.map → PersonasPage-ba1KeInW.js.map} +1 -1
  150. package/dashboard/dist/assets/{PortalPage-D3ybr0mo.js → PortalPage-GDgG88TM.js} +2 -2
  151. package/dashboard/dist/assets/{PortalPage-D3ybr0mo.js.map → PortalPage-GDgG88TM.js.map} +1 -1
  152. package/dashboard/dist/assets/{PrintLabelsPanel-D0HF5x8b.js → PrintLabelsPanel-BkUN00Qd.js} +2 -2
  153. package/dashboard/dist/assets/{PrintLabelsPanel-D0HF5x8b.js.map → PrintLabelsPanel-BkUN00Qd.js.map} +1 -1
  154. package/dashboard/dist/assets/{ProcessDetailPage-0xS9EdHe.js → ProcessDetailPage-BKu9_wWv.js} +2 -2
  155. package/dashboard/dist/assets/{ProcessDetailPage-0xS9EdHe.js.map → ProcessDetailPage-BKu9_wWv.js.map} +1 -1
  156. package/dashboard/dist/assets/{ProcessesListPage-93SMj1Fd.js → ProcessesListPage-BfJYTU_v.js} +2 -2
  157. package/dashboard/dist/assets/{ProcessesListPage-93SMj1Fd.js.map → ProcessesListPage-BfJYTU_v.js.map} +1 -1
  158. package/dashboard/dist/assets/ResolverForm-DZmY6wJV.js +8 -0
  159. package/dashboard/dist/assets/ResolverForm-DZmY6wJV.js.map +1 -0
  160. package/dashboard/dist/assets/{RoleDetailPage-DlUOJWSB.js → RoleDetailPage-vGeth3ve.js} +3 -3
  161. package/dashboard/dist/assets/{RoleDetailPage-DlUOJWSB.js.map → RoleDetailPage-vGeth3ve.js.map} +1 -1
  162. package/dashboard/dist/assets/{RolePill-BjD1Qw5y.js → RolePill-KhT-Yehm.js} +2 -2
  163. package/dashboard/dist/assets/{RolePill-BjD1Qw5y.js.map → RolePill-KhT-Yehm.js.map} +1 -1
  164. package/dashboard/dist/assets/{RolesPage-DqhHSvaw.js → RolesPage-CwxHOkqF.js} +2 -2
  165. package/dashboard/dist/assets/{RolesPage-DqhHSvaw.js.map → RolesPage-CwxHOkqF.js.map} +1 -1
  166. package/dashboard/dist/assets/{RosterWidget-BrIq61HR.js → RosterWidget-DRVj9xyk.js} +2 -2
  167. package/dashboard/dist/assets/{RosterWidget-BrIq61HR.js.map → RosterWidget-DRVj9xyk.js.map} +1 -1
  168. package/dashboard/dist/assets/{RunAsSelector-D6zQrCNr.js → RunAsSelector-DvPX3XmA.js} +2 -2
  169. package/dashboard/dist/assets/{RunAsSelector-D6zQrCNr.js.map → RunAsSelector-DvPX3XmA.js.map} +1 -1
  170. package/dashboard/dist/assets/{ScanCodesPage-B2S9DR2f.js → ScanCodesPage-Cptbe7h8.js} +2 -2
  171. package/dashboard/dist/assets/{ScanCodesPage-B2S9DR2f.js.map → ScanCodesPage-Cptbe7h8.js.map} +1 -1
  172. package/dashboard/dist/assets/{ScanSchemeDetailPage-gpxKN-pL.js → ScanSchemeDetailPage-DquNJ7Or.js} +4 -4
  173. package/dashboard/dist/assets/{ScanSchemeDetailPage-gpxKN-pL.js.map → ScanSchemeDetailPage-DquNJ7Or.js.map} +1 -1
  174. package/dashboard/dist/assets/{ScanStationPage-B-UTgXsG.js → ScanStationPage-DaRfGGa8.js} +2 -2
  175. package/dashboard/dist/assets/{ScanStationPage-B-UTgXsG.js.map → ScanStationPage-DaRfGGa8.js.map} +1 -1
  176. package/dashboard/dist/assets/{SchemeMatchFields-BK24aa7K.js → SchemeMatchFields-w-pffi98.js} +2 -2
  177. package/dashboard/dist/assets/{SchemeMatchFields-BK24aa7K.js.map → SchemeMatchFields-w-pffi98.js.map} +1 -1
  178. package/dashboard/dist/assets/{ScopeBadge-ofLQ6HW-.js → ScopeBadge-HeuiMJhW.js} +2 -2
  179. package/dashboard/dist/assets/{ScopeBadge-ofLQ6HW-.js.map → ScopeBadge-HeuiMJhW.js.map} +1 -1
  180. package/dashboard/dist/assets/{StickyPagination-CgVv7vc_.js → StickyPagination-D6fDHCcJ.js} +2 -2
  181. package/dashboard/dist/assets/{StickyPagination-CgVv7vc_.js.map → StickyPagination-D6fDHCcJ.js.map} +1 -1
  182. package/dashboard/dist/assets/{StreamMessageDetail-B9sxDVw4.js → StreamMessageDetail-BmYVQrzl.js} +2 -2
  183. package/dashboard/dist/assets/{StreamMessageDetail-B9sxDVw4.js.map → StreamMessageDetail-BmYVQrzl.js.map} +1 -1
  184. package/dashboard/dist/assets/{SwimlaneTimeline-DQc0CYSL.js → SwimlaneTimeline-KCqA-PeL.js} +2 -2
  185. package/dashboard/dist/assets/{SwimlaneTimeline-DQc0CYSL.js.map → SwimlaneTimeline-KCqA-PeL.js.map} +1 -1
  186. package/dashboard/dist/assets/{TagInput-47qVYzke.js → TagInput-CZBAu1Hy.js} +2 -2
  187. package/dashboard/dist/assets/{TagInput-47qVYzke.js.map → TagInput-CZBAu1Hy.js.map} +1 -1
  188. package/dashboard/dist/assets/{TaskDetailPage-D6VOsA1f.js → TaskDetailPage-WtVv2z7T.js} +2 -2
  189. package/dashboard/dist/assets/{TaskDetailPage-D6VOsA1f.js.map → TaskDetailPage-WtVv2z7T.js.map} +1 -1
  190. package/dashboard/dist/assets/{TaskQueuePill-C5KmdXAl.js → TaskQueuePill-DWGn3CWx.js} +2 -2
  191. package/dashboard/dist/assets/{TaskQueuePill-C5KmdXAl.js.map → TaskQueuePill-DWGn3CWx.js.map} +1 -1
  192. package/dashboard/dist/assets/{TasksListPage-DG8hvO8G.js → TasksListPage-DMYQNDIw.js} +2 -2
  193. package/dashboard/dist/assets/{TasksListPage-DG8hvO8G.js.map → TasksListPage-DMYQNDIw.js.map} +1 -1
  194. package/dashboard/dist/assets/{TimeAgo-CL02EhFi.js → TimeAgo-BkY4lahi.js} +2 -2
  195. package/dashboard/dist/assets/{TimeAgo-CL02EhFi.js.map → TimeAgo-BkY4lahi.js.map} +1 -1
  196. package/dashboard/dist/assets/{TimestampCell-BE7oKVJg.js → TimestampCell-BBPb9TI2.js} +2 -2
  197. package/dashboard/dist/assets/{TimestampCell-BE7oKVJg.js.map → TimestampCell-BBPb9TI2.js.map} +1 -1
  198. package/dashboard/dist/assets/{ToolPill-Cp9Drk1s.js → ToolPill-B2aRk0o1.js} +2 -2
  199. package/dashboard/dist/assets/{ToolPill-Cp9Drk1s.js.map → ToolPill-B2aRk0o1.js.map} +1 -1
  200. package/dashboard/dist/assets/{ToolTestPanel-CRecLh6S.js → ToolTestPanel-CNMbmymK.js} +2 -2
  201. package/dashboard/dist/assets/{ToolTestPanel-CRecLh6S.js.map → ToolTestPanel-CNMbmymK.js.map} +1 -1
  202. package/dashboard/dist/assets/{TopicDetailPage-QzkinTfN.js → TopicDetailPage-CodBRylU.js} +2 -2
  203. package/dashboard/dist/assets/{TopicDetailPage-QzkinTfN.js.map → TopicDetailPage-CodBRylU.js.map} +1 -1
  204. package/dashboard/dist/assets/TopicsPage-BtD8jTU7.js +2 -0
  205. package/dashboard/dist/assets/{TopicsPage-D8dW6J65.js.map → TopicsPage-BtD8jTU7.js.map} +1 -1
  206. package/dashboard/dist/assets/{UserName-Dw3R_zrl.js → UserName-D6y9AnuY.js} +2 -2
  207. package/dashboard/dist/assets/{UserName-Dw3R_zrl.js.map → UserName-D6y9AnuY.js.map} +1 -1
  208. package/dashboard/dist/assets/{WorkflowExecutionPage-BTocv8or.js → WorkflowExecutionPage-BeffqV13.js} +2 -2
  209. package/dashboard/dist/assets/{WorkflowExecutionPage-BTocv8or.js.map → WorkflowExecutionPage-BeffqV13.js.map} +1 -1
  210. package/dashboard/dist/assets/{WorkflowPill-BiLYq__w.js → WorkflowPill-BNm3R4pP.js} +2 -2
  211. package/dashboard/dist/assets/{WorkflowPill-BiLYq__w.js.map → WorkflowPill-BNm3R4pP.js.map} +1 -1
  212. package/dashboard/dist/assets/{WorkflowsDashboard-CIPEt3et.js → WorkflowsDashboard-m4Co5diK.js} +2 -2
  213. package/dashboard/dist/assets/{WorkflowsDashboard-CIPEt3et.js.map → WorkflowsDashboard-m4Co5diK.js.map} +1 -1
  214. package/dashboard/dist/assets/{WorkflowsOverview-Bj4MJIE-.js → WorkflowsOverview-DNoI9qY8.js} +2 -2
  215. package/dashboard/dist/assets/{WorkflowsOverview-Bj4MJIE-.js.map → WorkflowsOverview-DNoI9qY8.js.map} +1 -1
  216. package/dashboard/dist/assets/{YamlWorkflowDetailPage-DMEk5k9-.js → YamlWorkflowDetailPage-8Vpc4Oxy.js} +2 -2
  217. package/dashboard/dist/assets/{YamlWorkflowDetailPage-DMEk5k9-.js.map → YamlWorkflowDetailPage-8Vpc4Oxy.js.map} +1 -1
  218. package/dashboard/dist/assets/{YamlWorkflowsPage-F2yyyoiB.js → YamlWorkflowsPage-D1JNwDSg.js} +2 -2
  219. package/dashboard/dist/assets/{YamlWorkflowsPage-F2yyyoiB.js.map → YamlWorkflowsPage-D1JNwDSg.js.map} +1 -1
  220. package/dashboard/dist/assets/{agents-mSgxEPpI.js → agents-LTHUsfv3.js} +2 -2
  221. package/dashboard/dist/assets/{agents-mSgxEPpI.js.map → agents-LTHUsfv3.js.map} +1 -1
  222. package/dashboard/dist/assets/{bots-p4Hp0CV6.js → bots-CQxehfBo.js} +2 -2
  223. package/dashboard/dist/assets/{bots-p4Hp0CV6.js.map → bots-CQxehfBo.js.map} +1 -1
  224. package/dashboard/dist/assets/{capabilities-D_-I_SXR.js → capabilities-DECTnJrK.js} +2 -2
  225. package/dashboard/dist/assets/{capabilities-D_-I_SXR.js.map → capabilities-DECTnJrK.js.map} +1 -1
  226. package/dashboard/dist/assets/{controlplane-DjdoQnRU.js → controlplane-Dx20db5g.js} +2 -2
  227. package/dashboard/dist/assets/{controlplane-DjdoQnRU.js.map → controlplane-Dx20db5g.js.map} +1 -1
  228. package/dashboard/dist/assets/{escalation-columns-R_IEVQjQ.js → escalation-columns-CVFGUB79.js} +2 -2
  229. package/dashboard/dist/assets/{escalation-columns-R_IEVQjQ.js.map → escalation-columns-CVFGUB79.js.map} +1 -1
  230. package/dashboard/dist/assets/escalation-items-Bj7bkwWy.js +2 -0
  231. package/dashboard/dist/assets/escalation-items-Bj7bkwWy.js.map +1 -0
  232. package/dashboard/dist/assets/index-BD4O-ISx.js +13 -0
  233. package/dashboard/dist/assets/{index-Dk2KKo0z.js.map → index-BD4O-ISx.js.map} +1 -1
  234. package/dashboard/dist/assets/{index-D9RAN9sA.js → index-BL8XOMHT.js} +2 -2
  235. package/dashboard/dist/assets/{index-D9RAN9sA.js.map → index-BL8XOMHT.js.map} +1 -1
  236. package/dashboard/dist/assets/index-C2vRDf96.js +2 -0
  237. package/dashboard/dist/assets/{index-C5osluV3.js.map → index-C2vRDf96.js.map} +1 -1
  238. package/dashboard/dist/assets/{index-DUYAGxwc.js → index-CNgyKRQ8.js} +2 -2
  239. package/dashboard/dist/assets/{index-DUYAGxwc.js.map → index-CNgyKRQ8.js.map} +1 -1
  240. package/dashboard/dist/assets/{index-DlJkZ12b.js → index-CdXPbBgs.js} +2 -2
  241. package/dashboard/dist/assets/{index-DlJkZ12b.js.map → index-CdXPbBgs.js.map} +1 -1
  242. package/dashboard/dist/assets/{index-BuCEhhnl.js → index-CnBUFCV7.js} +2 -2
  243. package/dashboard/dist/assets/{index-BuCEhhnl.js.map → index-CnBUFCV7.js.map} +1 -1
  244. package/dashboard/dist/assets/index-CoLciFzq.css +1 -0
  245. package/dashboard/dist/assets/{index-D-FYj9jT.js → index-D_TSx-k_.js} +2 -2
  246. package/dashboard/dist/assets/{index-D-FYj9jT.js.map → index-D_TSx-k_.js.map} +1 -1
  247. package/dashboard/dist/assets/{index-C_dAJUzh.js → index-Do9Y6Fgt.js} +16 -16
  248. package/dashboard/dist/assets/index-Do9Y6Fgt.js.map +1 -0
  249. package/dashboard/dist/assets/{index-D6K_IgCz.js → index-Dq1zjilj.js} +2 -2
  250. package/dashboard/dist/assets/{index-D6K_IgCz.js.map → index-Dq1zjilj.js.map} +1 -1
  251. package/dashboard/dist/assets/{index-BEMdD58x.js → index-Dz4LSzA2.js} +2 -2
  252. package/dashboard/dist/assets/{index-BEMdD58x.js.map → index-Dz4LSzA2.js.map} +1 -1
  253. package/dashboard/dist/assets/{index-D7L_VoBD.js → index-g1MmARVR.js} +2 -2
  254. package/dashboard/dist/assets/{index-D7L_VoBD.js.map → index-g1MmARVR.js.map} +1 -1
  255. package/dashboard/dist/assets/{index-BxbQmeqh.js → index-qEd4FVmN.js} +2 -2
  256. package/dashboard/dist/assets/{index-BxbQmeqh.js.map → index-qEd4FVmN.js.map} +1 -1
  257. package/dashboard/dist/assets/index-v4rQ8ctJ.js +3 -0
  258. package/dashboard/dist/assets/index-v4rQ8ctJ.js.map +1 -0
  259. package/dashboard/dist/assets/{knowledge-DSsPTqkK.js → knowledge-CT1I1t1S.js} +2 -2
  260. package/dashboard/dist/assets/{knowledge-DSsPTqkK.js.map → knowledge-CT1I1t1S.js.map} +1 -1
  261. package/dashboard/dist/assets/{machines-DSgGtqqr.js → machines-Dsuw-l1y.js} +2 -2
  262. package/dashboard/dist/assets/{machines-DSgGtqqr.js.map → machines-Dsuw-l1y.js.map} +1 -1
  263. package/dashboard/dist/assets/{mcp-Cg-_uLw8.js → mcp-C3o5wzO8.js} +2 -2
  264. package/dashboard/dist/assets/{mcp-Cg-_uLw8.js.map → mcp-C3o5wzO8.js.map} +1 -1
  265. package/dashboard/dist/assets/{mcp-query-DQombEK_.js → mcp-query-IvkIG7gH.js} +2 -2
  266. package/dashboard/dist/assets/{mcp-query-DQombEK_.js.map → mcp-query-IvkIG7gH.js.map} +1 -1
  267. package/dashboard/dist/assets/pdf-CcZYcL52.js +13 -0
  268. package/dashboard/dist/assets/pdf-CcZYcL52.js.map +1 -0
  269. package/dashboard/dist/assets/pdf.worker.min-DgRcL-GR.js +2 -0
  270. package/dashboard/dist/assets/pdf.worker.min-DgRcL-GR.js.map +1 -0
  271. package/dashboard/dist/assets/pdf.worker.min-yatZIOMy.mjs +21 -0
  272. package/dashboard/dist/assets/{personas-DYrcoVBu.js → personas-zWlWjj6j.js} +2 -2
  273. package/dashboard/dist/assets/{personas-DYrcoVBu.js.map → personas-zWlWjj6j.js.map} +1 -1
  274. package/dashboard/dist/assets/{pipelines-wdb4xsey.js → pipelines-BKNvBMdf.js} +2 -2
  275. package/dashboard/dist/assets/{pipelines-wdb4xsey.js.map → pipelines-BKNvBMdf.js.map} +1 -1
  276. package/dashboard/dist/assets/{tasks-Bil7gvm9.js → tasks-BQSO3Sjv.js} +2 -2
  277. package/dashboard/dist/assets/{tasks-Bil7gvm9.js.map → tasks-BQSO3Sjv.js.map} +1 -1
  278. package/dashboard/dist/assets/{topics-wBqaVhRR.js → topics-Dr_1TtUM.js} +2 -2
  279. package/dashboard/dist/assets/{topics-wBqaVhRR.js.map → topics-Dr_1TtUM.js.map} +1 -1
  280. package/dashboard/dist/assets/{useContainerWidth-DSLp1gEm.js → useContainerWidth-D38m8eub.js} +2 -2
  281. package/dashboard/dist/assets/{useContainerWidth-DSLp1gEm.js.map → useContainerWidth-D38m8eub.js.map} +1 -1
  282. package/dashboard/dist/assets/{useDebouncedValue-CwrY8TpV.js → useDebouncedValue-C5ESASfo.js} +2 -2
  283. package/dashboard/dist/assets/{useDebouncedValue-CwrY8TpV.js.map → useDebouncedValue-C5ESASfo.js.map} +1 -1
  284. package/dashboard/dist/assets/{useNamespace-Sod_xApz.js → useNamespace-DLLOJRYY.js} +2 -2
  285. package/dashboard/dist/assets/{useNamespace-Sod_xApz.js.map → useNamespace-DLLOJRYY.js.map} +1 -1
  286. package/dashboard/dist/assets/{useYamlActivityEvents-CKLInV3C.js → useYamlActivityEvents-D0XNXli1.js} +2 -2
  287. package/dashboard/dist/assets/{useYamlActivityEvents-CKLInV3C.js.map → useYamlActivityEvents-D0XNXli1.js.map} +1 -1
  288. package/dashboard/dist/assets/{validate-CYhW1xMJ.js → validate-Be4GWnJ1.js} +2 -2
  289. package/dashboard/dist/assets/{validate-CYhW1xMJ.js.map → validate-Be4GWnJ1.js.map} +1 -1
  290. package/dashboard/dist/assets/{vendor-icons-ed7mYQw4.js → vendor-icons-D48ijXZU.js} +209 -189
  291. package/dashboard/dist/assets/vendor-icons-D48ijXZU.js.map +1 -0
  292. package/dashboard/dist/assets/{yaml-workflows-C20qHo3L.js → yaml-workflows-BQpO-G-I.js} +2 -2
  293. package/dashboard/dist/assets/{yaml-workflows-C20qHo3L.js.map → yaml-workflows-BQpO-G-I.js.map} +1 -1
  294. package/dashboard/dist/index.html +3 -3
  295. package/docs/api/http/escalations.md +54 -7
  296. package/docs/api/mcp/admin.md +7 -5
  297. package/docs/api/mcp/human-queue.md +17 -1
  298. package/docs/api/sdk/escalations.md +30 -4
  299. package/docs/api/sdk/files.md +19 -0
  300. package/docs/cli.md +4 -1
  301. package/docs/escalation-analytics.md +17 -0
  302. package/docs/hitl/files.md +104 -0
  303. package/docs/hitl/x-lt-confidence.md +139 -0
  304. package/docs/hitl/x-lt-layout.md +19 -0
  305. package/docs/hitl/x-lt-widget.md +20 -0
  306. package/docs/hitl-guide.md +6 -0
  307. package/docs/mcp.md +2 -1
  308. package/package.json +1 -1
  309. package/dashboard/dist/assets/ResolverForm-DfogHDzl.js +0 -8
  310. package/dashboard/dist/assets/ResolverForm-DfogHDzl.js.map +0 -1
  311. package/dashboard/dist/assets/TopicsPage-D8dW6J65.js +0 -2
  312. package/dashboard/dist/assets/escalation-items-BGZlJMpk.js +0 -2
  313. package/dashboard/dist/assets/escalation-items-BGZlJMpk.js.map +0 -1
  314. package/dashboard/dist/assets/index-BUmz0NMg.css +0 -1
  315. package/dashboard/dist/assets/index-C5osluV3.js +0 -2
  316. package/dashboard/dist/assets/index-C_dAJUzh.js.map +0 -1
  317. package/dashboard/dist/assets/index-Dk2KKo0z.js +0 -13
  318. package/dashboard/dist/assets/index-FiNThtNU.js +0 -3
  319. package/dashboard/dist/assets/index-FiNThtNU.js.map +0 -1
  320. package/dashboard/dist/assets/vendor-icons-ed7mYQw4.js.map +0 -1
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Review facets: a few low-cardinality metadata keys summarizing how a
3
+ * reviewer treated a model's proposals, stamped onto the row in the same
4
+ * guarded UPDATE that resolves it. Opt in on the schema root with
5
+ * `"x-lt-confidence": { "facets": true }`. Counts cover the fields the form
6
+ * shows for the submitted answer, the same set the legend counts. Values are
7
+ * strings so `metadata @>` filters and analytics projections match exactly.
8
+ */
9
+ import { type ShowIfContext } from './x-lt-show-if';
10
+ export declare const REVIEW_FACET_KEYS: {
11
+ readonly OUTCOME: "review_outcome";
12
+ readonly CHANGED: "review_changed";
13
+ readonly WORST: "review_worst";
14
+ };
15
+ export declare const REVIEW_OUTCOMES: {
16
+ readonly ACCEPTED: "accepted";
17
+ readonly CORRECTED: "corrected";
18
+ };
19
+ export type ReviewFacets = Partial<Record<(typeof REVIEW_FACET_KEYS)[keyof typeof REVIEW_FACET_KEYS], string>>;
20
+ /** The fields the form shows for these values: x-lt-hidden, x-lt-showIf and x-lt-hide-if-empty applied. */
21
+ export declare function visibleFieldKeys(formSchema: Record<string, unknown>, formValues: Record<string, unknown>, ctx: ShowIfContext): string[];
22
+ /**
23
+ * The review facets for a submitted answer, or null when the schema does not
24
+ * opt in or no shown field carries a proposal or score. `review_worst` is the
25
+ * lowest tranche any shown field fell into, absent when every score cleared.
26
+ */
27
+ export declare function buildReviewFacets(formSchema: Record<string, unknown> | null | undefined, ctx: ShowIfContext | null | undefined, formValues: Record<string, unknown>): ReviewFacets | null;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.REVIEW_OUTCOMES = exports.REVIEW_FACET_KEYS = void 0;
4
+ exports.visibleFieldKeys = visibleFieldKeys;
5
+ exports.buildReviewFacets = buildReviewFacets;
6
+ /**
7
+ * Review facets: a few low-cardinality metadata keys summarizing how a
8
+ * reviewer treated a model's proposals, stamped onto the row in the same
9
+ * guarded UPDATE that resolves it. Opt in on the schema root with
10
+ * `"x-lt-confidence": { "facets": true }`. Counts cover the fields the form
11
+ * shows for the submitted answer, the same set the legend counts. Values are
12
+ * strings so `metadata @>` filters and analytics projections match exactly.
13
+ */
14
+ const x_lt_show_if_1 = require("./x-lt-show-if");
15
+ const x_lt_confidence_1 = require("./x-lt-confidence");
16
+ exports.REVIEW_FACET_KEYS = {
17
+ OUTCOME: 'review_outcome',
18
+ CHANGED: 'review_changed',
19
+ WORST: 'review_worst',
20
+ };
21
+ exports.REVIEW_OUTCOMES = {
22
+ ACCEPTED: 'accepted',
23
+ CORRECTED: 'corrected',
24
+ };
25
+ /** The fields the form shows for these values: x-lt-hidden, x-lt-showIf and x-lt-hide-if-empty applied. */
26
+ function visibleFieldKeys(formSchema, formValues, ctx) {
27
+ const props = (formSchema.properties ?? {});
28
+ return Object.keys(props).filter((key) => {
29
+ const def = props[key];
30
+ if ((0, x_lt_show_if_1.isHiddenField)(def))
31
+ return false;
32
+ if (!(0, x_lt_show_if_1.evaluateShowIf)(def?.['x-lt-showIf'], ctx))
33
+ return false;
34
+ return !(0, x_lt_show_if_1.isHiddenIfEmpty)(def, formValues[key]);
35
+ });
36
+ }
37
+ /**
38
+ * The review facets for a submitted answer, or null when the schema does not
39
+ * opt in or no shown field carries a proposal or score. `review_worst` is the
40
+ * lowest tranche any shown field fell into, absent when every score cleared.
41
+ */
42
+ function buildReviewFacets(formSchema, ctx, formValues) {
43
+ if (!formSchema)
44
+ return null;
45
+ const spec = (0, x_lt_confidence_1.readConfidenceSpec)(formSchema);
46
+ if (!spec?.facets)
47
+ return null;
48
+ const liveCtx = { ...(ctx ?? {}), resolver: formValues, input: formValues };
49
+ const review = (0, x_lt_confidence_1.buildFormReview)(spec, formSchema, liveCtx, formValues);
50
+ const shown = visibleFieldKeys(formSchema, formValues, liveCtx).filter((key) => review[key]);
51
+ if (shown.length === 0)
52
+ return null;
53
+ const summary = (0, x_lt_confidence_1.summarizeReview)(spec, review, shown);
54
+ const worst = summary.tranches.find((t) => t.fields.length > 0)?.tranche;
55
+ return {
56
+ [exports.REVIEW_FACET_KEYS.OUTCOME]: summary.changed.length > 0 ? exports.REVIEW_OUTCOMES.CORRECTED : exports.REVIEW_OUTCOMES.ACCEPTED,
57
+ [exports.REVIEW_FACET_KEYS.CHANGED]: String(summary.changed.length),
58
+ ...(worst ? { [exports.REVIEW_FACET_KEYS.WORST]: worst.label } : {}),
59
+ };
60
+ }
@@ -0,0 +1,57 @@
1
+ export declare const CONFIDENCE_TONES: {
2
+ readonly ERROR: "error";
3
+ readonly WARNING: "warning";
4
+ readonly INFO: "info";
5
+ };
6
+ export type ConfidenceTone = (typeof CONFIDENCE_TONES)[keyof typeof CONFIDENCE_TONES];
7
+ export interface ConfidenceTranche {
8
+ below: number;
9
+ label: string;
10
+ tone: ConfidenceTone;
11
+ }
12
+ export interface ConfidenceSpec {
13
+ scores: string;
14
+ proposed: string;
15
+ tranches: ConfidenceTranche[];
16
+ /** Stamp the review summary onto the row's metadata at resolve. */
17
+ facets: boolean;
18
+ }
19
+ export declare const CONFIDENCE_SCORES_PATH = "envelope.confidence";
20
+ export declare const CONFIDENCE_PROPOSED_PATH = "envelope.formDefaults";
21
+ export declare const DEFAULT_CONFIDENCE_TRANCHES: readonly ConfidenceTranche[];
22
+ /** The schema's confidence declaration, or null when the form declares none. */
23
+ export declare function readConfidenceSpec(schema: Record<string, unknown> | null | undefined): ConfidenceSpec | null;
24
+ /** The tranche a score falls into, or null when the score clears every threshold. */
25
+ export declare function trancheFor(tranches: readonly ConfidenceTranche[], score: number): ConfidenceTranche | null;
26
+ /** Whether an answer differs from what was proposed for it. */
27
+ export declare function differsFromProposal(proposed: unknown, current: unknown): boolean;
28
+ export interface FieldReview {
29
+ /** The field's score in [0, 1], when the workflow scored it. */
30
+ score?: number;
31
+ /** The tranche the score falls into; absent when confident or unscored. */
32
+ tranche?: ConfidenceTranche;
33
+ /** Whether the workflow proposed a value for the field. */
34
+ hasProposal: boolean;
35
+ /** The proposed value, in form shape. */
36
+ proposed?: unknown;
37
+ /** Whether the current answer differs from the proposal. */
38
+ changed: boolean;
39
+ }
40
+ /**
41
+ * The review state of every field the spec covers: its score and tranche,
42
+ * its proposal, and whether `values` (the live form, or a submitted payload
43
+ * mapped back to form shape) differs from it. Proposals and scores are read
44
+ * in payload shape and mapped through x-lt-bind, like formDefaults.
45
+ */
46
+ export declare function buildFormReview(spec: ConfidenceSpec, formSchema: Record<string, unknown>, ctx: Record<string, unknown> | undefined, values: Record<string, unknown>): Record<string, FieldReview>;
47
+ export interface ReviewSummary {
48
+ /** Field keys per tranche label, in tranche order. */
49
+ tranches: Array<{
50
+ tranche: ConfidenceTranche;
51
+ fields: string[];
52
+ }>;
53
+ /** Field keys whose answer differs from the proposal. */
54
+ changed: string[];
55
+ }
56
+ /** Counts for the form's legend, over the fields actually shown, in their order. */
57
+ export declare function summarizeReview(spec: ConfidenceSpec, review: Record<string, FieldReview>, shownKeys: readonly string[]): ReviewSummary;
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_CONFIDENCE_TRANCHES = exports.CONFIDENCE_PROPOSED_PATH = exports.CONFIDENCE_SCORES_PATH = exports.CONFIDENCE_TONES = void 0;
4
+ exports.readConfidenceSpec = readConfidenceSpec;
5
+ exports.trancheFor = trancheFor;
6
+ exports.differsFromProposal = differsFromProposal;
7
+ exports.buildFormReview = buildFormReview;
8
+ exports.summarizeReview = summarizeReview;
9
+ /**
10
+ * x-lt-confidence: review state for a form a model filled in. The workflow
11
+ * proposes values (`envelope.formDefaults`) and scores them
12
+ * (`envelope.confidence`, the same shape, numbers in [0, 1]); the schema root
13
+ * declares the tranches a score falls into:
14
+ *
15
+ * "x-lt-confidence": {
16
+ * "tranches": [
17
+ * { "below": 0.6, "label": "Low", "tone": "error" },
18
+ * { "below": 0.9, "label": "Check", "tone": "warning" }
19
+ * ]
20
+ * }
21
+ *
22
+ * A score falls into the first tranche whose `below` it is under; a score at
23
+ * or above every threshold is confident and carries no tranche. Every field
24
+ * with a proposal also reports whether the answer differs from it, so the
25
+ * form shows what a value was and what it became, before and after submit.
26
+ * `scores` and `proposed` name other context paths when the workflow keeps
27
+ * them elsewhere. `"facets": true` stamps a review summary onto the row's
28
+ * metadata when it resolves (see x-lt-confidence-facets). A field opts out
29
+ * with `"x-lt-confidence": false`. Pure: the dashboard renders with it, and
30
+ * workflows and agents can diff with it.
31
+ */
32
+ const ctx_path_1 = require("./ctx-path");
33
+ const display_only_widgets_1 = require("./display-only-widgets");
34
+ const x_lt_bind_1 = require("./x-lt-bind");
35
+ exports.CONFIDENCE_TONES = {
36
+ ERROR: 'error',
37
+ WARNING: 'warning',
38
+ INFO: 'info',
39
+ };
40
+ exports.CONFIDENCE_SCORES_PATH = 'envelope.confidence';
41
+ exports.CONFIDENCE_PROPOSED_PATH = 'envelope.formDefaults';
42
+ exports.DEFAULT_CONFIDENCE_TRANCHES = [
43
+ { below: 0.6, label: 'Low', tone: exports.CONFIDENCE_TONES.ERROR },
44
+ { below: 0.85, label: 'Check', tone: exports.CONFIDENCE_TONES.WARNING },
45
+ ];
46
+ const TONES = new Set(Object.values(exports.CONFIDENCE_TONES));
47
+ function readTranches(raw) {
48
+ if (!Array.isArray(raw))
49
+ return [...exports.DEFAULT_CONFIDENCE_TRANCHES];
50
+ const byThreshold = new Map();
51
+ for (const entry of raw) {
52
+ const t = (entry ?? {});
53
+ if (typeof t.below !== 'number' || !Number.isFinite(t.below) || t.below <= 0 || t.below > 1)
54
+ continue;
55
+ if (typeof t.label !== 'string' || t.label.trim().length === 0)
56
+ continue;
57
+ const tone = typeof t.tone === 'string' && TONES.has(t.tone) ? t.tone : exports.CONFIDENCE_TONES.WARNING;
58
+ if (!byThreshold.has(t.below))
59
+ byThreshold.set(t.below, { below: t.below, label: t.label.trim(), tone });
60
+ }
61
+ return [...byThreshold.values()].sort((a, b) => a.below - b.below);
62
+ }
63
+ /** The schema's confidence declaration, or null when the form declares none. */
64
+ function readConfidenceSpec(schema) {
65
+ const raw = schema?.['x-lt-confidence'];
66
+ if (raw === true) {
67
+ return {
68
+ scores: exports.CONFIDENCE_SCORES_PATH,
69
+ proposed: exports.CONFIDENCE_PROPOSED_PATH,
70
+ tranches: [...exports.DEFAULT_CONFIDENCE_TRANCHES],
71
+ facets: false,
72
+ };
73
+ }
74
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw))
75
+ return null;
76
+ const spec = raw;
77
+ return {
78
+ scores: typeof spec.scores === 'string' && spec.scores ? spec.scores : exports.CONFIDENCE_SCORES_PATH,
79
+ proposed: typeof spec.proposed === 'string' && spec.proposed ? spec.proposed : exports.CONFIDENCE_PROPOSED_PATH,
80
+ tranches: readTranches(spec.tranches),
81
+ facets: spec.facets === true,
82
+ };
83
+ }
84
+ /** The tranche a score falls into, or null when the score clears every threshold. */
85
+ function trancheFor(tranches, score) {
86
+ for (const tranche of tranches) {
87
+ if (score < tranche.below)
88
+ return tranche;
89
+ }
90
+ return null;
91
+ }
92
+ /** Text compared by its words: surrounding and repeated whitespace is not a change. */
93
+ function normalizeText(value) {
94
+ return value.trim().replace(/\s+/g, ' ');
95
+ }
96
+ function stableJson(value) {
97
+ if (typeof value === 'string')
98
+ return JSON.stringify(normalizeText(value));
99
+ if (Array.isArray(value))
100
+ return `[${value.map(stableJson).join(',')}]`;
101
+ if (value && typeof value === 'object') {
102
+ const entries = Object.keys(value).sort()
103
+ .map((k) => `${JSON.stringify(k)}:${stableJson(value[k])}`);
104
+ return `{${entries.join(',')}}`;
105
+ }
106
+ return JSON.stringify(value);
107
+ }
108
+ /**
109
+ * A value's comparable form: empty answers compare equal, "42" equals 42,
110
+ * whitespace-only edits are not changes, and key order is ignored.
111
+ */
112
+ function comparable(value) {
113
+ if (value === null || value === undefined)
114
+ return '';
115
+ if (typeof value === 'object')
116
+ return stableJson(value);
117
+ return normalizeText(String(value));
118
+ }
119
+ /** Whether an answer differs from what was proposed for it. */
120
+ function differsFromProposal(proposed, current) {
121
+ return comparable(proposed) !== comparable(current);
122
+ }
123
+ function asFormMap(source, formSchema) {
124
+ if (!source || typeof source !== 'object' || Array.isArray(source))
125
+ return {};
126
+ try {
127
+ return (0, x_lt_bind_1.mapPayloadToForm)(source, formSchema);
128
+ }
129
+ catch {
130
+ return {};
131
+ }
132
+ }
133
+ /**
134
+ * The review state of every field the spec covers: its score and tranche,
135
+ * its proposal, and whether `values` (the live form, or a submitted payload
136
+ * mapped back to form shape) differs from it. Proposals and scores are read
137
+ * in payload shape and mapped through x-lt-bind, like formDefaults.
138
+ */
139
+ function buildFormReview(spec, formSchema, ctx, values) {
140
+ const props = (formSchema.properties ?? {});
141
+ const scores = asFormMap((0, ctx_path_1.resolveCtxPath)(spec.scores, ctx), formSchema);
142
+ const proposals = asFormMap((0, ctx_path_1.resolveCtxPath)(spec.proposed, ctx), formSchema);
143
+ const review = {};
144
+ for (const [key, def] of Object.entries(props)) {
145
+ if (def?.['x-lt-confidence'] === false || (0, display_only_widgets_1.isDisplayOnlyField)(def))
146
+ continue;
147
+ const raw = scores[key];
148
+ const score = typeof raw === 'number' && Number.isFinite(raw) ? Math.min(Math.max(raw, 0), 1) : undefined;
149
+ const hasProposal = key in proposals;
150
+ if (score === undefined && !hasProposal)
151
+ continue;
152
+ const tranche = score === undefined ? null : trancheFor(spec.tranches, score);
153
+ review[key] = {
154
+ ...(score !== undefined ? { score } : {}),
155
+ ...(tranche ? { tranche } : {}),
156
+ hasProposal,
157
+ ...(hasProposal ? { proposed: proposals[key] } : {}),
158
+ changed: hasProposal && differsFromProposal(proposals[key], values[key]),
159
+ };
160
+ }
161
+ return review;
162
+ }
163
+ /** Counts for the form's legend, over the fields actually shown, in their order. */
164
+ function summarizeReview(spec, review, shownKeys) {
165
+ const tranches = spec.tranches.map((tranche) => ({ tranche, fields: [] }));
166
+ const changed = [];
167
+ for (const key of shownKeys) {
168
+ const field = review[key];
169
+ if (!field)
170
+ continue;
171
+ if (field.tranche)
172
+ tranches.find((t) => t.tranche.below === field.tranche.below)?.fields.push(key);
173
+ if (field.changed)
174
+ changed.push(key);
175
+ }
176
+ return { tranches, changed };
177
+ }
@@ -1,5 +1,5 @@
1
1
  /** The token domains a help template may reference. `input` is the invoke-form name for the live values `resolver` also carries. */
2
- export declare const HELP_DOMAINS: readonly ["escalation", "metadata", "envelope", "payload", "resolver", "lookup", "input", "roster"];
2
+ export declare const HELP_DOMAINS: readonly ["escalation", "metadata", "envelope", "payload", "resolver", "lookup", "input", "roster", "file"];
3
3
  export type HelpDomain = (typeof HELP_DOMAINS)[number];
4
4
  export type HelpTokenContext = Partial<Record<HelpDomain, Record<string, unknown> | null>>;
5
5
  /** Replace every `{{domain.path}}` token with its value from the context. */
@@ -25,7 +25,7 @@ exports.defaultHelpMarkdown = defaultHelpMarkdown;
25
25
  */
26
26
  const x_lt_bind_1 = require("./x-lt-bind");
27
27
  /** The token domains a help template may reference. `input` is the invoke-form name for the live values `resolver` also carries. */
28
- exports.HELP_DOMAINS = ['escalation', 'metadata', 'envelope', 'payload', 'resolver', 'lookup', 'input', 'roster'];
28
+ exports.HELP_DOMAINS = ['escalation', 'metadata', 'envelope', 'payload', 'resolver', 'lookup', 'input', 'roster', 'file'];
29
29
  const TOKEN_PATTERN = /\{\{\s*([^{}]+?)\s*\}\}/g;
30
30
  const MISSING_VALUE = '—';
31
31
  function formatTokenValue(value) {
@@ -308,9 +308,11 @@ function registerEscalationTools(server) {
308
308
  server.registerTool('aggregate_by_facets', {
309
309
  title: 'Aggregate by Facets',
310
310
  description: 'Grouped analytics over the escalation intervals. Every escalation is one open ' +
311
- 'interval [created_at, ended_at); this tool reads it two ways: membership (rows or, ' +
311
+ 'interval [created_at, ended_at); this tool reads it three ways: membership (rows or, ' +
312
312
  'with distinctBy, distinct entities open at an instant — a past asOf reconstructs the ' +
313
- 'live set then) and dwell (open-seconds per group within a half-open [from,to) window). ' +
313
+ 'live set then), dwell (open-seconds per group within a half-open [from,to) window), and ' +
314
+ 'resolved (rows resolved within a window, optionally per day/week/month bucket: trends ' +
315
+ 'such as weekly review outcomes by extractor; needs a role scope). ' +
314
316
  'Group by role/subtype/status columns plus metadata facet keys; optional states[] label ' +
315
317
  'each group. One call replaces N per-filter count round-trips. The filter takes the WHAT ' +
316
318
  'fields only — status/available/jeopardy are rejected (liveness derives from the measure).',
@@ -16,12 +16,12 @@ export declare const upsertLabelTemplateSchema: z.ZodObject<{
16
16
  caption: z.ZodOptional<z.ZodString>;
17
17
  tone: z.ZodEnum<["solid", "outline", "plain"]>;
18
18
  }, "strip", z.ZodTypeAny, {
19
- category: string;
20
19
  tone: "solid" | "outline" | "plain";
20
+ category: string;
21
21
  caption?: string | undefined;
22
22
  }, {
23
- category: string;
24
23
  tone: "solid" | "outline" | "plain";
24
+ category: string;
25
25
  caption?: string | undefined;
26
26
  }>, "many">;
27
27
  text: z.ZodOptional<z.ZodObject<{
@@ -45,8 +45,8 @@ export declare const upsertLabelTemplateSchema: z.ZodObject<{
45
45
  scheme_version: number;
46
46
  title: string;
47
47
  codes: {
48
- category: string;
49
48
  tone: "solid" | "outline" | "plain";
49
+ category: string;
50
50
  caption?: string | undefined;
51
51
  }[];
52
52
  enabled?: boolean | undefined;
@@ -65,8 +65,8 @@ export declare const upsertLabelTemplateSchema: z.ZodObject<{
65
65
  scheme_version: number;
66
66
  title: string;
67
67
  codes: {
68
- category: string;
69
68
  tone: "solid" | "outline" | "plain";
69
+ category: string;
70
70
  caption?: string | undefined;
71
71
  }[];
72
72
  enabled?: boolean | undefined;