@hotmeshio/long-tail 0.5.11 → 0.6.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 (350) hide show
  1. package/README.md +1 -0
  2. package/build/api/diagnostics.d.ts +5 -0
  3. package/build/api/diagnostics.js +5 -1
  4. package/build/api/escalations/bulk.js +9 -1
  5. package/build/api/escalations/cancel.js +5 -7
  6. package/build/api/escalations/claim.js +18 -15
  7. package/build/api/escalations/create.d.ts +6 -0
  8. package/build/api/escalations/create.js +11 -8
  9. package/build/api/escalations/facets.d.ts +18 -0
  10. package/build/api/escalations/facets.js +115 -0
  11. package/build/api/escalations/helpers.d.ts +70 -1
  12. package/build/api/escalations/helpers.js +101 -7
  13. package/build/api/escalations/index.d.ts +3 -2
  14. package/build/api/escalations/index.js +7 -1
  15. package/build/api/escalations/list.d.ts +23 -2
  16. package/build/api/escalations/list.js +111 -10
  17. package/build/api/escalations/metadata.js +22 -27
  18. package/build/api/escalations/resolve.d.ts +19 -1
  19. package/build/api/escalations/resolve.js +111 -26
  20. package/build/api/escalations/single.js +8 -8
  21. package/build/api/settings.d.ts +1 -1
  22. package/build/api/settings.js +3 -1
  23. package/build/api/users.d.ts +6 -0
  24. package/build/api/users.js +29 -1
  25. package/build/api/workflows/invocation.d.ts +6 -0
  26. package/build/api/workflows/invocation.js +6 -2
  27. package/build/bin/ltc.js +40 -0
  28. package/build/lib/cli/commands/escalations.d.ts +36 -0
  29. package/build/lib/cli/commands/escalations.js +98 -0
  30. package/build/lib/db/schemas/001_schema.sql +10 -5
  31. package/build/lib/db/schemas/012_lt_tasks_workflow_id_unique.sql +20 -0
  32. package/build/lib/db/schemas/013_role_scope.sql +37 -0
  33. package/build/modules/features.d.ts +19 -0
  34. package/build/modules/features.js +16 -0
  35. package/build/modules/version.d.ts +10 -5
  36. package/build/modules/version.js +27 -11
  37. package/build/routes/diagnostics.js +15 -2
  38. package/build/routes/escalations/facets.d.ts +7 -0
  39. package/build/routes/escalations/facets.js +81 -0
  40. package/build/routes/escalations/index.js +3 -0
  41. package/build/routes/escalations/list.js +48 -0
  42. package/build/routes/escalations/resolve.js +22 -4
  43. package/build/routes/users.js +9 -5
  44. package/build/routes/workflows/invocation.js +12 -4
  45. package/build/sdk/index.d.ts +35 -2
  46. package/build/sdk/index.js +7 -0
  47. package/build/services/diagnostics/index.d.ts +40 -6
  48. package/build/services/diagnostics/index.js +54 -5
  49. package/build/services/escalation/crud.d.ts +56 -6
  50. package/build/services/escalation/crud.js +102 -31
  51. package/build/services/escalation/facet-sql.d.ts +18 -0
  52. package/build/services/escalation/facet-sql.js +118 -0
  53. package/build/services/escalation/facets.d.ts +45 -0
  54. package/build/services/escalation/facets.js +218 -0
  55. package/build/services/escalation/index.d.ts +1 -0
  56. package/build/services/escalation/index.js +8 -1
  57. package/build/services/escalation/queries.d.ts +47 -0
  58. package/build/services/escalation/queries.js +185 -2
  59. package/build/services/escalation/sql.d.ts +15 -2
  60. package/build/services/escalation/sql.js +80 -3
  61. package/build/services/interceptor/activities/escalation.d.ts +2 -0
  62. package/build/services/interceptor/activities/escalation.js +1 -1
  63. package/build/services/interceptor/lifecycle.js +4 -0
  64. package/build/services/mcp/server-tools.js +10 -4
  65. package/build/services/orchestrator/condition.js +6 -2
  66. package/build/services/role/index.js +2 -3
  67. package/build/services/role/sql.d.ts +8 -0
  68. package/build/services/role/sql.js +17 -1
  69. package/build/services/task/crud.js +22 -14
  70. package/build/services/task/process.js +3 -21
  71. package/build/services/task/resolve.d.ts +5 -3
  72. package/build/services/task/resolve.js +9 -6
  73. package/build/services/task/sql.d.ts +30 -2
  74. package/build/services/task/sql.js +72 -2
  75. package/build/services/user/crud.d.ts +1 -0
  76. package/build/services/user/crud.js +29 -11
  77. package/build/services/user/index.d.ts +2 -1
  78. package/build/services/user/index.js +12 -1
  79. package/build/services/user/rbac.d.ts +18 -0
  80. package/build/services/user/rbac.js +27 -0
  81. package/build/services/user/roles.d.ts +7 -2
  82. package/build/services/user/roles.js +21 -5
  83. package/build/services/user/scope.d.ts +22 -0
  84. package/build/services/user/scope.js +50 -0
  85. package/build/services/user/seed-admin.js +34 -17
  86. package/build/services/user/sql.d.ts +18 -7
  87. package/build/services/user/sql.js +38 -13
  88. package/build/services/user/sso-provision.js +41 -24
  89. package/build/services/user/types.d.ts +9 -5
  90. package/build/start/adapters.js +3 -0
  91. package/build/system/mcp-servers/admin/diagnostics.d.ts +5 -4
  92. package/build/system/mcp-servers/admin/diagnostics.js +12 -10
  93. package/build/system/mcp-servers/admin/escalations.d.ts +6 -0
  94. package/build/system/mcp-servers/admin/escalations.js +247 -54
  95. package/build/system/mcp-servers/admin/index.js +3 -3
  96. package/build/system/mcp-servers/admin/schemas.d.ts +417 -3
  97. package/build/system/mcp-servers/admin/schemas.js +101 -5
  98. package/build/system/mcp-servers/admin/users.js +28 -2
  99. package/build/system/mcp-servers/admin/workflows.js +23 -12
  100. package/build/system/seed/tool-manifests-admin.d.ts +1324 -562
  101. package/build/system/seed/tool-manifests-admin.js +10 -2
  102. package/build/tsconfig.tsbuildinfo +1 -1
  103. package/build/types/envelope.d.ts +7 -0
  104. package/build/types/facets.d.ts +60 -0
  105. package/build/types/facets.js +10 -0
  106. package/build/types/index.d.ts +2 -1
  107. package/build/types/startup.d.ts +9 -0
  108. package/build/types/user.d.ts +11 -0
  109. package/dashboard/dist/assets/AdminDashboard-2CZ8py9X.js +2 -0
  110. package/dashboard/dist/assets/{AdminDashboard-DZpduYdW.js.map → AdminDashboard-2CZ8py9X.js.map} +1 -1
  111. package/dashboard/dist/assets/{AgentConfigPage-SFnHMIP6.js → AgentConfigPage-D68sodgo.js} +7 -7
  112. package/dashboard/dist/assets/{AgentConfigPage-SFnHMIP6.js.map → AgentConfigPage-D68sodgo.js.map} +1 -1
  113. package/dashboard/dist/assets/AgentDetailPage-BmhuWbKi.js +4 -0
  114. package/dashboard/dist/assets/AgentDetailPage-BmhuWbKi.js.map +1 -0
  115. package/dashboard/dist/assets/AgentsPage-C4SKQVeU.js +2 -0
  116. package/dashboard/dist/assets/AgentsPage-C4SKQVeU.js.map +1 -0
  117. package/dashboard/dist/assets/AvailableEscalationsPage-9RBEYwkt.js +2 -0
  118. package/dashboard/dist/assets/AvailableEscalationsPage-9RBEYwkt.js.map +1 -0
  119. package/dashboard/dist/assets/{BotPicker-Dse2jW4b.js → BotPicker-D-FvXJOM.js} +2 -2
  120. package/dashboard/dist/assets/{BotPicker-Dse2jW4b.js.map → BotPicker-D-FvXJOM.js.map} +1 -1
  121. package/dashboard/dist/assets/CapabilitiesPage-ByDf6WJr.js +2 -0
  122. package/dashboard/dist/assets/{CapabilitiesPage-DTfKCzBQ.js.map → CapabilitiesPage-ByDf6WJr.js.map} +1 -1
  123. package/dashboard/dist/assets/{CollapsibleSection-8vf38J6K.js → CollapsibleSection-BjGNYEvh.js} +2 -2
  124. package/dashboard/dist/assets/{CollapsibleSection-8vf38J6K.js.map → CollapsibleSection-BjGNYEvh.js.map} +1 -1
  125. package/dashboard/dist/assets/CopyableId-blg-gZvT.js +2 -0
  126. package/dashboard/dist/assets/CopyableId-blg-gZvT.js.map +1 -0
  127. package/dashboard/dist/assets/{CredentialsPage-7C4M-hrH.js → CredentialsPage-DvCA-wQN.js} +2 -2
  128. package/dashboard/dist/assets/{CredentialsPage-7C4M-hrH.js.map → CredentialsPage-DvCA-wQN.js.map} +1 -1
  129. package/dashboard/dist/assets/{CronLabel-DrGWtaSY.js → CronLabel-DBMurd_c.js} +2 -2
  130. package/dashboard/dist/assets/{CronLabel-DrGWtaSY.js.map → CronLabel-DBMurd_c.js.map} +1 -1
  131. package/dashboard/dist/assets/{CustomDurationPicker-Vcmr4LiR.js → CustomDurationPicker-DHflFoEa.js} +2 -2
  132. package/dashboard/dist/assets/{CustomDurationPicker-Vcmr4LiR.js.map → CustomDurationPicker-DHflFoEa.js.map} +1 -1
  133. package/dashboard/dist/assets/{DropZone-Dwpgbueb.js → DropZone-CUtdp99Z.js} +2 -2
  134. package/dashboard/dist/assets/{DropZone-Dwpgbueb.js.map → DropZone-CUtdp99Z.js.map} +1 -1
  135. package/dashboard/dist/assets/{ElapsedCell-BNexhR5d.js → ElapsedCell-CSjcVOpo.js} +2 -2
  136. package/dashboard/dist/assets/{ElapsedCell-BNexhR5d.js.map → ElapsedCell-CSjcVOpo.js.map} +1 -1
  137. package/dashboard/dist/assets/{EscalationsOverview-BI3DEwYP.js → EscalationsOverview-BUqRNJbK.js} +2 -2
  138. package/dashboard/dist/assets/{EscalationsOverview-BI3DEwYP.js.map → EscalationsOverview-BUqRNJbK.js.map} +1 -1
  139. package/dashboard/dist/assets/{EventTable-CwvX_L9t.js → EventTable-Chz-6XPE.js} +2 -2
  140. package/dashboard/dist/assets/{EventTable-CwvX_L9t.js.map → EventTable-Chz-6XPE.js.map} +1 -1
  141. package/dashboard/dist/assets/{GraphInvokePage-C-3b8WK0.js → GraphInvokePage-BXdgciWg.js} +2 -2
  142. package/dashboard/dist/assets/{GraphInvokePage-C-3b8WK0.js.map → GraphInvokePage-BXdgciWg.js.map} +1 -1
  143. package/dashboard/dist/assets/{HomePage-BS_-jcHr.js → HomePage-CEMxnk0r.js} +2 -2
  144. package/dashboard/dist/assets/{HomePage-BS_-jcHr.js.map → HomePage-CEMxnk0r.js.map} +1 -1
  145. package/dashboard/dist/assets/{ListToolbar-BH9rwQVE.js → ListToolbar-_73JCdbB.js} +2 -2
  146. package/dashboard/dist/assets/{ListToolbar-BH9rwQVE.js.map → ListToolbar-_73JCdbB.js.map} +1 -1
  147. package/dashboard/dist/assets/{McpOverview-C9iOdE7E.js → McpOverview-DfdqxhSz.js} +2 -2
  148. package/dashboard/dist/assets/{McpOverview-C9iOdE7E.js.map → McpOverview-DfdqxhSz.js.map} +1 -1
  149. package/dashboard/dist/assets/{McpQueryDetailPage-DMN-yqvJ.js → McpQueryDetailPage-DPAljieY.js} +2 -2
  150. package/dashboard/dist/assets/{McpQueryDetailPage-DMN-yqvJ.js.map → McpQueryDetailPage-DPAljieY.js.map} +1 -1
  151. package/dashboard/dist/assets/McpQueryPage-D5cSziYS.js +2 -0
  152. package/dashboard/dist/assets/McpQueryPage-D5cSziYS.js.map +1 -0
  153. package/dashboard/dist/assets/{McpRunDetailPage-Wb47sRvo.js → McpRunDetailPage-DwNb9wZg.js} +2 -2
  154. package/dashboard/dist/assets/{McpRunDetailPage-Wb47sRvo.js.map → McpRunDetailPage-DwNb9wZg.js.map} +1 -1
  155. package/dashboard/dist/assets/McpRunsPage-O5H6yStl.js +2 -0
  156. package/dashboard/dist/assets/McpRunsPage-O5H6yStl.js.map +1 -0
  157. package/dashboard/dist/assets/{NamespacePill-DnJl4Lre.js → NamespacePill-uW-xOedj.js} +2 -2
  158. package/dashboard/dist/assets/{NamespacePill-DnJl4Lre.js.map → NamespacePill-uW-xOedj.js.map} +1 -1
  159. package/dashboard/dist/assets/OperatorDashboard-DYw9Ekv5.js +2 -0
  160. package/dashboard/dist/assets/OperatorDashboard-DYw9Ekv5.js.map +1 -0
  161. package/dashboard/dist/assets/PageHeader-DVOZjBfL.js +2 -0
  162. package/dashboard/dist/assets/PageHeader-DVOZjBfL.js.map +1 -0
  163. package/dashboard/dist/assets/{PageHeaderWithStats-BuKc9MKt.js → PageHeaderWithStats-DtTpDHOd.js} +2 -2
  164. package/dashboard/dist/assets/{PageHeaderWithStats-BuKc9MKt.js.map → PageHeaderWithStats-DtTpDHOd.js.map} +1 -1
  165. package/dashboard/dist/assets/PriorityBadge-B4ykBH7f.js +2 -0
  166. package/dashboard/dist/assets/PriorityBadge-B4ykBH7f.js.map +1 -0
  167. package/dashboard/dist/assets/{ProcessDetailPage-CvPx-h8y.js → ProcessDetailPage-B0Dokcx9.js} +2 -2
  168. package/dashboard/dist/assets/{ProcessDetailPage-CvPx-h8y.js.map → ProcessDetailPage-B0Dokcx9.js.map} +1 -1
  169. package/dashboard/dist/assets/ProcessesListPage-Cc87WIjL.js +2 -0
  170. package/dashboard/dist/assets/ProcessesListPage-Cc87WIjL.js.map +1 -0
  171. package/dashboard/dist/assets/RolePill-BaW-30TC.js +2 -0
  172. package/dashboard/dist/assets/RolePill-BaW-30TC.js.map +1 -0
  173. package/dashboard/dist/assets/{RolesPage-W5ZjOHpg.js → RolesPage-cp6PiF08.js} +2 -2
  174. package/dashboard/dist/assets/{RolesPage-W5ZjOHpg.js.map → RolesPage-cp6PiF08.js.map} +1 -1
  175. package/dashboard/dist/assets/RowActions-BA9L9djf.js +2 -0
  176. package/dashboard/dist/assets/RowActions-BA9L9djf.js.map +1 -0
  177. package/dashboard/dist/assets/{RunAsSelector-CvxGTNGT.js → RunAsSelector-2LWkjSnO.js} +2 -2
  178. package/dashboard/dist/assets/{RunAsSelector-CvxGTNGT.js.map → RunAsSelector-2LWkjSnO.js.map} +1 -1
  179. package/dashboard/dist/assets/{StickyPagination-BWhFSr2d.js → StickyPagination-BQEm--kI.js} +2 -2
  180. package/dashboard/dist/assets/{StickyPagination-BWhFSr2d.js.map → StickyPagination-BQEm--kI.js.map} +1 -1
  181. package/dashboard/dist/assets/StreamMessageDetail-BTtw3GjX.js +2 -0
  182. package/dashboard/dist/assets/{StreamMessageDetail-BF0tM0cd.js.map → StreamMessageDetail-BTtw3GjX.js.map} +1 -1
  183. package/dashboard/dist/assets/{SwimlaneTimeline-Bv-KHY9s.js → SwimlaneTimeline-DdXxP4fO.js} +2 -2
  184. package/dashboard/dist/assets/{SwimlaneTimeline-Bv-KHY9s.js.map → SwimlaneTimeline-DdXxP4fO.js.map} +1 -1
  185. package/dashboard/dist/assets/{TagInput-B00uqhjX.js → TagInput-x9XTuqMb.js} +2 -2
  186. package/dashboard/dist/assets/{TagInput-B00uqhjX.js.map → TagInput-x9XTuqMb.js.map} +1 -1
  187. package/dashboard/dist/assets/{TaskDetailPage-Bzb_fuLy.js → TaskDetailPage-B8veYG4X.js} +2 -2
  188. package/dashboard/dist/assets/{TaskDetailPage-Bzb_fuLy.js.map → TaskDetailPage-B8veYG4X.js.map} +1 -1
  189. package/dashboard/dist/assets/{TaskQueuePill-CUsofm0X.js → TaskQueuePill-DSEQZ-HT.js} +2 -2
  190. package/dashboard/dist/assets/{TaskQueuePill-CUsofm0X.js.map → TaskQueuePill-DSEQZ-HT.js.map} +1 -1
  191. package/dashboard/dist/assets/{TasksListPage-CBezWaZL.js → TasksListPage-CsN1gZj5.js} +2 -2
  192. package/dashboard/dist/assets/{TasksListPage-CBezWaZL.js.map → TasksListPage-CsN1gZj5.js.map} +1 -1
  193. package/dashboard/dist/assets/{TimeAgo-CKHfTzat.js → TimeAgo-n182EcLx.js} +2 -2
  194. package/dashboard/dist/assets/{TimeAgo-CKHfTzat.js.map → TimeAgo-n182EcLx.js.map} +1 -1
  195. package/dashboard/dist/assets/{TimestampCell-Dsje8GH-.js → TimestampCell-2dlcQAfX.js} +2 -2
  196. package/dashboard/dist/assets/{TimestampCell-Dsje8GH-.js.map → TimestampCell-2dlcQAfX.js.map} +1 -1
  197. package/dashboard/dist/assets/{ToolPill-DjvedZSn.js → ToolPill-B_e4eT77.js} +2 -2
  198. package/dashboard/dist/assets/{ToolPill-DjvedZSn.js.map → ToolPill-B_e4eT77.js.map} +1 -1
  199. package/dashboard/dist/assets/{ToolTestPanel-3OcG18e5.js → ToolTestPanel-Bhnncc6M.js} +2 -2
  200. package/dashboard/dist/assets/{ToolTestPanel-3OcG18e5.js.map → ToolTestPanel-Bhnncc6M.js.map} +1 -1
  201. package/dashboard/dist/assets/{TopicDetailPage-DCtv91hH.js → TopicDetailPage-29lsNsqI.js} +3 -3
  202. package/dashboard/dist/assets/{TopicDetailPage-DCtv91hH.js.map → TopicDetailPage-29lsNsqI.js.map} +1 -1
  203. package/dashboard/dist/assets/{TopicsPage-DVGSNc_E.js → TopicsPage-KJ7_LAvo.js} +2 -2
  204. package/dashboard/dist/assets/{TopicsPage-DVGSNc_E.js.map → TopicsPage-KJ7_LAvo.js.map} +1 -1
  205. package/dashboard/dist/assets/{UserName-xHAgkk8M.js → UserName-CMoFi9zb.js} +2 -2
  206. package/dashboard/dist/assets/{UserName-xHAgkk8M.js.map → UserName-CMoFi9zb.js.map} +1 -1
  207. package/dashboard/dist/assets/{WorkflowExecutionPage-CWNxsS8a.js → WorkflowExecutionPage-Cymfx-Bp.js} +2 -2
  208. package/dashboard/dist/assets/{WorkflowExecutionPage-CWNxsS8a.js.map → WorkflowExecutionPage-Cymfx-Bp.js.map} +1 -1
  209. package/dashboard/dist/assets/{WorkflowPill-F1oKUzmc.js → WorkflowPill-B66_AnaY.js} +2 -2
  210. package/dashboard/dist/assets/{WorkflowPill-F1oKUzmc.js.map → WorkflowPill-B66_AnaY.js.map} +1 -1
  211. package/dashboard/dist/assets/WorkflowsDashboard-CqLN8spd.js +2 -0
  212. package/dashboard/dist/assets/WorkflowsDashboard-CqLN8spd.js.map +1 -0
  213. package/dashboard/dist/assets/{WorkflowsOverview-e7jWSj_n.js → WorkflowsOverview-0Rc2WT6q.js} +2 -2
  214. package/dashboard/dist/assets/{WorkflowsOverview-e7jWSj_n.js.map → WorkflowsOverview-0Rc2WT6q.js.map} +1 -1
  215. package/dashboard/dist/assets/{YamlWorkflowDetailPage-CdAeam76.js → YamlWorkflowDetailPage-CARQ7_LN.js} +2 -2
  216. package/dashboard/dist/assets/{YamlWorkflowDetailPage-CdAeam76.js.map → YamlWorkflowDetailPage-CARQ7_LN.js.map} +1 -1
  217. package/dashboard/dist/assets/{YamlWorkflowsPage-S_gKs2Di.js → YamlWorkflowsPage-B-7sz1nf.js} +2 -2
  218. package/dashboard/dist/assets/{YamlWorkflowsPage-S_gKs2Di.js.map → YamlWorkflowsPage-B-7sz1nf.js.map} +1 -1
  219. package/dashboard/dist/assets/{agents-JE4aL07D.js → agents-zM43d5Yf.js} +2 -2
  220. package/dashboard/dist/assets/{agents-JE4aL07D.js.map → agents-zM43d5Yf.js.map} +1 -1
  221. package/dashboard/dist/assets/api-path-u2Jf9QXS.js +2 -0
  222. package/dashboard/dist/assets/api-path-u2Jf9QXS.js.map +1 -0
  223. package/dashboard/dist/assets/{bots-cAzKkDtQ.js → bots-D5BasOGz.js} +2 -2
  224. package/dashboard/dist/assets/{bots-cAzKkDtQ.js.map → bots-D5BasOGz.js.map} +1 -1
  225. package/dashboard/dist/assets/{capabilities-RBFXLAXF.js → capabilities-BT3PW9CZ.js} +2 -2
  226. package/dashboard/dist/assets/{capabilities-RBFXLAXF.js.map → capabilities-BT3PW9CZ.js.map} +1 -1
  227. package/dashboard/dist/assets/{controlplane-DGhv3rwI.js → controlplane-NpJr49rN.js} +2 -2
  228. package/dashboard/dist/assets/{controlplane-DGhv3rwI.js.map → controlplane-NpJr49rN.js.map} +1 -1
  229. package/dashboard/dist/assets/{escalation-ne7dIaPa.js → escalation-DrzQolPG.js} +2 -2
  230. package/dashboard/dist/assets/{escalation-ne7dIaPa.js.map → escalation-DrzQolPG.js.map} +1 -1
  231. package/dashboard/dist/assets/escalation-columns-QzwmtD60.js +2 -0
  232. package/dashboard/dist/assets/escalation-columns-QzwmtD60.js.map +1 -0
  233. package/dashboard/dist/assets/index-B5w4Gjyk.js +6 -0
  234. package/dashboard/dist/assets/index-B5w4Gjyk.js.map +1 -0
  235. package/dashboard/dist/assets/{index-CByjpYlU.js → index-BCT4kqGR.js} +2 -2
  236. package/dashboard/dist/assets/{index-CByjpYlU.js.map → index-BCT4kqGR.js.map} +1 -1
  237. package/dashboard/dist/assets/{index-CgyucK0e.js → index-C69XvBfg.js} +2 -2
  238. package/dashboard/dist/assets/{index-CgyucK0e.js.map → index-C69XvBfg.js.map} +1 -1
  239. package/dashboard/dist/assets/index-CHw4Fl0t.css +1 -0
  240. package/dashboard/dist/assets/index-C_NwHTMh.js +2 -0
  241. package/dashboard/dist/assets/index-C_NwHTMh.js.map +1 -0
  242. package/dashboard/dist/assets/{index-DgzgRTNg.js → index-Cq0trGqf.js} +2 -2
  243. package/dashboard/dist/assets/{index-DgzgRTNg.js.map → index-Cq0trGqf.js.map} +1 -1
  244. package/dashboard/dist/assets/{index-DPJW96d2.js → index-DE0r9SEX.js} +26 -26
  245. package/dashboard/dist/assets/index-DE0r9SEX.js.map +1 -0
  246. package/dashboard/dist/assets/{index-BTqhAT6p.js → index-DH_CiD0W.js} +2 -2
  247. package/dashboard/dist/assets/{index-BTqhAT6p.js.map → index-DH_CiD0W.js.map} +1 -1
  248. package/dashboard/dist/assets/{index-C2l4GcZ7.js → index-K23FdS-T.js} +3 -3
  249. package/dashboard/dist/assets/{index-C2l4GcZ7.js.map → index-K23FdS-T.js.map} +1 -1
  250. package/dashboard/dist/assets/index-f6K1UNrn.js +2 -0
  251. package/dashboard/dist/assets/index-f6K1UNrn.js.map +1 -0
  252. package/dashboard/dist/assets/{index-BbJuC9kg.js → index-qr1fndqM.js} +2 -2
  253. package/dashboard/dist/assets/{index-BbJuC9kg.js.map → index-qr1fndqM.js.map} +1 -1
  254. package/dashboard/dist/assets/index-vKTvJ_li.js +2 -0
  255. package/dashboard/dist/assets/index-vKTvJ_li.js.map +1 -0
  256. package/dashboard/dist/assets/{index-CQDn-bLr.js → index-y-3ODtEE.js} +2 -2
  257. package/dashboard/dist/assets/{index-CQDn-bLr.js.map → index-y-3ODtEE.js.map} +1 -1
  258. package/dashboard/dist/assets/{index-QxAYCJ1S.js → index-y56Ds-LB.js} +2 -2
  259. package/dashboard/dist/assets/{index-QxAYCJ1S.js.map → index-y56Ds-LB.js.map} +1 -1
  260. package/dashboard/dist/assets/{knowledge-DzRpsm3D.js → knowledge-DSSATOTX.js} +2 -2
  261. package/dashboard/dist/assets/{knowledge-DzRpsm3D.js.map → knowledge-DSSATOTX.js.map} +1 -1
  262. package/dashboard/dist/assets/{mcp-B1lc6nL4.js → mcp-CfJFVo5k.js} +2 -2
  263. package/dashboard/dist/assets/{mcp-B1lc6nL4.js.map → mcp-CfJFVo5k.js.map} +1 -1
  264. package/dashboard/dist/assets/{mcp-query-CXuweaN3.js → mcp-query-DKVx2Q-X.js} +2 -2
  265. package/dashboard/dist/assets/{mcp-query-CXuweaN3.js.map → mcp-query-DKVx2Q-X.js.map} +1 -1
  266. package/dashboard/dist/assets/{pipelines-D4VLWDvu.js → pipelines-BSWzE-6M.js} +2 -2
  267. package/dashboard/dist/assets/{pipelines-D4VLWDvu.js.map → pipelines-BSWzE-6M.js.map} +1 -1
  268. package/dashboard/dist/assets/{roles-CSpHRRu8.js → roles-t9HzhI5N.js} +2 -2
  269. package/dashboard/dist/assets/{roles-CSpHRRu8.js.map → roles-t9HzhI5N.js.map} +1 -1
  270. package/dashboard/dist/assets/{tasks-CWUsKhM4.js → tasks-B7rUihoH.js} +2 -2
  271. package/dashboard/dist/assets/{tasks-CWUsKhM4.js.map → tasks-B7rUihoH.js.map} +1 -1
  272. package/dashboard/dist/assets/{topics-BXwstrzB.js → topics-PC2fEiyD.js} +2 -2
  273. package/dashboard/dist/assets/{topics-BXwstrzB.js.map → topics-PC2fEiyD.js.map} +1 -1
  274. package/dashboard/dist/assets/useDebouncedValue-BA5S7V54.js +2 -0
  275. package/dashboard/dist/assets/useDebouncedValue-BA5S7V54.js.map +1 -0
  276. package/dashboard/dist/assets/{useEventHooks-CjygrbYy.js → useEventHooks-DK9mw1cI.js} +2 -2
  277. package/dashboard/dist/assets/{useEventHooks-CjygrbYy.js.map → useEventHooks-DK9mw1cI.js.map} +1 -1
  278. package/dashboard/dist/assets/{useNamespace-CsepDyR5.js → useNamespace-3IjtUtAw.js} +2 -2
  279. package/dashboard/dist/assets/{useNamespace-CsepDyR5.js.map → useNamespace-3IjtUtAw.js.map} +1 -1
  280. package/dashboard/dist/assets/{useYamlActivityEvents-gWIG6akB.js → useYamlActivityEvents-uxukp3gO.js} +2 -2
  281. package/dashboard/dist/assets/{useYamlActivityEvents-gWIG6akB.js.map → useYamlActivityEvents-uxukp3gO.js.map} +1 -1
  282. package/dashboard/dist/assets/users-CC4B5Fm5.js +2 -0
  283. package/dashboard/dist/assets/users-CC4B5Fm5.js.map +1 -0
  284. package/dashboard/dist/assets/{vendor-icons-Dj2F0Jrb.js → vendor-icons-Dy5Jpknf.js} +114 -109
  285. package/dashboard/dist/assets/vendor-icons-Dy5Jpknf.js.map +1 -0
  286. package/dashboard/dist/assets/{workflows-C7Cam2Ok.js → workflows-S7MF1nNk.js} +2 -2
  287. package/dashboard/dist/assets/{workflows-C7Cam2Ok.js.map → workflows-S7MF1nNk.js.map} +1 -1
  288. package/dashboard/dist/assets/{yaml-workflows-ChUOE22W.js → yaml-workflows-WfdaMHNn.js} +2 -2
  289. package/dashboard/dist/assets/{yaml-workflows-ChUOE22W.js.map → yaml-workflows-WfdaMHNn.js.map} +1 -1
  290. package/dashboard/dist/index.html +3 -3
  291. package/docs/api/http/escalations.md +131 -10
  292. package/docs/api/http/roles.md +44 -9
  293. package/docs/api/http/users.md +15 -6
  294. package/docs/api/mcp/admin.md +164 -14
  295. package/docs/api/mcp/human-queue.md +34 -2
  296. package/docs/api/sdk/escalations.md +155 -2
  297. package/docs/api/sdk/roles.md +11 -0
  298. package/docs/api/sdk/users.md +26 -1
  299. package/docs/auth.md +1 -1
  300. package/docs/dashboard.md +5 -4
  301. package/docs/data.md +9 -2
  302. package/docs/faceted-routing.md +221 -0
  303. package/docs/hitl-guide.md +50 -0
  304. package/docs/iam.md +31 -0
  305. package/docs/mcp.md +8 -0
  306. package/package.json +2 -2
  307. package/dashboard/dist/assets/AdminDashboard-DZpduYdW.js +0 -2
  308. package/dashboard/dist/assets/AgentDetailPage-C-2iSaDs.js +0 -4
  309. package/dashboard/dist/assets/AgentDetailPage-C-2iSaDs.js.map +0 -1
  310. package/dashboard/dist/assets/AgentsPage-C3FztFd_.js +0 -2
  311. package/dashboard/dist/assets/AgentsPage-C3FztFd_.js.map +0 -1
  312. package/dashboard/dist/assets/AvailableEscalationsPage-DIqdBCwe.js +0 -2
  313. package/dashboard/dist/assets/AvailableEscalationsPage-DIqdBCwe.js.map +0 -1
  314. package/dashboard/dist/assets/CapabilitiesPage-DTfKCzBQ.js +0 -2
  315. package/dashboard/dist/assets/CopyableId-DaT0ZRHg.js +0 -2
  316. package/dashboard/dist/assets/CopyableId-DaT0ZRHg.js.map +0 -1
  317. package/dashboard/dist/assets/McpQueryPage-Db1LUKVs.js +0 -2
  318. package/dashboard/dist/assets/McpQueryPage-Db1LUKVs.js.map +0 -1
  319. package/dashboard/dist/assets/McpRunsPage--tgT5uo7.js +0 -2
  320. package/dashboard/dist/assets/McpRunsPage--tgT5uo7.js.map +0 -1
  321. package/dashboard/dist/assets/OperatorDashboard-BWVUbJkZ.js +0 -2
  322. package/dashboard/dist/assets/OperatorDashboard-BWVUbJkZ.js.map +0 -1
  323. package/dashboard/dist/assets/PageHeader-Bnt2iQQa.js +0 -2
  324. package/dashboard/dist/assets/PageHeader-Bnt2iQQa.js.map +0 -1
  325. package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js +0 -2
  326. package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js.map +0 -1
  327. package/dashboard/dist/assets/ProcessesListPage-CWiRM_h3.js +0 -2
  328. package/dashboard/dist/assets/ProcessesListPage-CWiRM_h3.js.map +0 -1
  329. package/dashboard/dist/assets/RolePill-DQTT1s9v.js +0 -2
  330. package/dashboard/dist/assets/RolePill-DQTT1s9v.js.map +0 -1
  331. package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js +0 -2
  332. package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js.map +0 -1
  333. package/dashboard/dist/assets/StreamMessageDetail-BF0tM0cd.js +0 -2
  334. package/dashboard/dist/assets/WorkflowsDashboard-M13lIaw7.js +0 -2
  335. package/dashboard/dist/assets/WorkflowsDashboard-M13lIaw7.js.map +0 -1
  336. package/dashboard/dist/assets/escalation-columns-DqTkKbCv.js +0 -2
  337. package/dashboard/dist/assets/escalation-columns-DqTkKbCv.js.map +0 -1
  338. package/dashboard/dist/assets/index-CEpw_Fh8.js +0 -2
  339. package/dashboard/dist/assets/index-CEpw_Fh8.js.map +0 -1
  340. package/dashboard/dist/assets/index-ClvYSNZd.css +0 -1
  341. package/dashboard/dist/assets/index-CucXk58o.js +0 -6
  342. package/dashboard/dist/assets/index-CucXk58o.js.map +0 -1
  343. package/dashboard/dist/assets/index-DPJW96d2.js.map +0 -1
  344. package/dashboard/dist/assets/index-DeZhNCf5.js +0 -2
  345. package/dashboard/dist/assets/index-DeZhNCf5.js.map +0 -1
  346. package/dashboard/dist/assets/index-Do8Xp3pa.js +0 -2
  347. package/dashboard/dist/assets/index-Do8Xp3pa.js.map +0 -1
  348. package/dashboard/dist/assets/users-DvhHbR0R.js +0 -2
  349. package/dashboard/dist/assets/users-DvhHbR0R.js.map +0 -1
  350. package/dashboard/dist/assets/vendor-icons-Dj2F0Jrb.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.listStreamMessagesSchema = exports.getStreamStatsSchema = exports.applyThrottleSchema = exports.rollCallSchema = exports.listAppsSchema = exports.revokeBotKeySchema = exports.createBotApiKeySchema = exports.deleteBotSchema = exports.updateBotSchema = exports.createBotSchema = exports.getBotSchema = exports.listBotsSchema = exports.deleteAgentSubscriptionSchema = exports.createAgentSubscriptionSchema = exports.listAgentSubscriptionsSchema = exports.deleteAgentSchema = exports.updateAgentSchema = exports.createAgentSchema = exports.getAgentSchema = exports.listAgentsSchema = exports.pruneSchema = exports.addEscalationChainSchema = exports.createRoleSchema = exports.listRolesSchema = exports.removeUserRoleSchema = exports.addUserRoleSchema = exports.createUserSchema = exports.listUsersSchema = exports.invokeYamlWorkflowSchema = exports.deployYamlWorkflowSchema = exports.createYamlWorkflowSchema = exports.getYamlWorkflowSchema = exports.listYamlWorkflowsSchema = exports.disconnectMcpServerSchema = exports.connectMcpServerSchema = exports.updateMcpServerSchema = exports.listMcpServersSchema = exports.getWorkflowStatusSchema = exports.invokeWorkflowSchema = exports.listDiscoveredWorkflowsSchema = exports.deleteWorkflowConfigSchema = exports.upsertWorkflowConfigSchema = exports.listWorkflowConfigsSchema = exports.bulkTriageSchema = exports.releaseExpiredClaimsSchema = exports.claimEscalationSchema = exports.getEscalationStatsSchema = exports.findEscalationsSchema = exports.getProcessDetailSchema = exports.findTasksSchema = void 0;
4
- exports.findOrphanedSignalsSchema = exports.findStalledJobsSchema = exports.diagnoseJobSchema = exports.getExportStatusSchema = exports.exportWorkflowExecutionSchema = exports.exportWorkflowStateSchema = exports.listExportJobsSchema = exports.getSettingsSchema = exports.updatePrioritySchema = exports.bulkEscalateSchema = exports.bulkAssignSchema = exports.bulkClaimSchema = exports.resolveByMetadataSchema = exports.claimByMetadataSchema = exports.findByMetadataSchema = exports.deleteTopicSchema = exports.updateTopicSchema = exports.createTopicSchema = exports.getTopicSchema = exports.listTopicsSchema = exports.interruptJobSchema = exports.getJobExecutionSchema = exports.listPipelineJobsSchema = exports.listPipelineEntitiesSchema = void 0;
3
+ exports.updateBotSchema = exports.createBotSchema = exports.getBotSchema = exports.listBotsSchema = exports.deleteAgentSubscriptionSchema = exports.createAgentSubscriptionSchema = exports.listAgentSubscriptionsSchema = exports.deleteAgentSchema = exports.updateAgentSchema = exports.createAgentSchema = exports.getAgentSchema = exports.listAgentsSchema = exports.pruneSchema = exports.addEscalationChainSchema = exports.createRoleSchema = exports.listRolesSchema = exports.removeUserRoleSchema = exports.addUserRoleSchema = exports.createUserSchema = exports.listUsersSchema = exports.invokeYamlWorkflowSchema = exports.deployYamlWorkflowSchema = exports.createYamlWorkflowSchema = exports.getYamlWorkflowSchema = exports.listYamlWorkflowsSchema = exports.disconnectMcpServerSchema = exports.connectMcpServerSchema = exports.updateMcpServerSchema = exports.listMcpServersSchema = exports.getWorkflowStatusSchema = exports.invokeWorkflowSchema = exports.listDiscoveredWorkflowsSchema = exports.deleteWorkflowConfigSchema = exports.upsertWorkflowConfigSchema = exports.listWorkflowConfigsSchema = exports.bulkTriageSchema = exports.releaseExpiredClaimsSchema = exports.bulkCancelSchema = exports.cancelEscalationSchema = exports.escalateEscalationSchema = exports.resolveBySignalKeySchema = exports.resolveEscalationSchema = exports.releaseEscalationSchema = exports.claimEscalationSchema = exports.getEscalationStatsSchema = exports.getEscalationsByWorkflowSchema = exports.getEscalationSchema = exports.findEscalationsSchema = exports.getProcessDetailSchema = exports.findTasksSchema = void 0;
4
+ exports.claimByFacetsSchema = exports.claimGroupsSchema = exports.searchByFacetsSchema = exports.resolveByIdsSchema = exports.facetQuerySchema = exports.findOrphanedSignalsSchema = exports.findStalledJobsSchema = exports.diagnoseJobSchema = exports.getExportStatusSchema = exports.exportWorkflowExecutionSchema = exports.exportWorkflowStateSchema = exports.listExportJobsSchema = exports.getSettingsSchema = exports.updatePrioritySchema = exports.bulkEscalateSchema = exports.bulkAssignSchema = exports.bulkClaimSchema = exports.resolveByMetadataSchema = exports.claimByMetadataSchema = exports.findByMetadataSchema = exports.deleteTopicSchema = exports.updateTopicSchema = exports.createTopicSchema = exports.getTopicSchema = exports.listTopicsSchema = exports.interruptJobSchema = exports.getJobExecutionSchema = exports.listPipelineJobsSchema = exports.listPipelineEntitiesSchema = exports.listStreamMessagesSchema = exports.getStreamStatsSchema = exports.applyThrottleSchema = exports.rollCallSchema = exports.listAppsSchema = exports.revokeBotKeySchema = exports.createBotApiKeySchema = exports.deleteBotSchema = void 0;
5
5
  /**
6
6
  * Zod schemas for the admin MCP server tools.
7
7
  *
@@ -28,12 +28,40 @@ exports.getProcessDetailSchema = zod_1.z.object({
28
28
  });
29
29
  // ── escalations (routes/escalations/) ───────────────────────────────────────
30
30
  exports.findEscalationsSchema = zod_1.z.object({
31
- status: zod_1.z.enum(['pending', 'resolved']).optional().describe('Filter by status'),
31
+ status: zod_1.z.enum(['pending', 'resolved', 'cancelled']).optional().describe('Filter by status'),
32
32
  role: zod_1.z.string().optional().describe('Filter by target role'),
33
33
  type: zod_1.z.string().optional().describe('Filter by escalation type'),
34
+ subtype: zod_1.z.string().optional().describe('Filter by escalation subtype'),
35
+ assigned_to: zod_1.z.string().optional().describe('Filter by assigned user UUID (active claim holder)'),
36
+ search: zod_1.z.string().optional().describe('Free-text search across description, type/subtype, role, workflow/origin id, and metadata values (e.g. a correlation key like an order id). Server-side over the full result set.'),
34
37
  priority: zod_1.z.number().int().min(1).max(4).optional().describe('Filter by priority (1=critical, 4=low)'),
38
+ sort_by: zod_1.z.enum(['created_at', 'priority', 'updated_at']).optional().describe('Sort column (default: priority asc, then created_at asc)'),
39
+ order: zod_1.z.enum(['asc', 'desc']).optional().describe('Sort direction for sort_by'),
35
40
  limit: zod_1.z.number().int().min(1).max(100).optional().default(5),
36
41
  offset: zod_1.z.number().int().min(0).optional().default(0),
42
+ // Faceted metadata query (role-scoped in SQL). A "facet" is a key/value INSIDE the
43
+ // row's metadata JSONB, matched by containment (metadata @>), GIN-served.
44
+ roles: zod_1.z.array(zod_1.z.string()).optional().describe('Restrict to these roles (role = ANY); narrows within scope, never widens past it'),
45
+ facets: zod_1.z.record(zod_1.z.any()).optional().describe('Required metadata facets — metadata @> facets (AND). e.g. { filament: "pla" } means metadata.filament == "pla"'),
46
+ block: zod_1.z.array(zod_1.z.record(zod_1.z.any())).optional().describe('Exclude rows whose metadata contains ANY of these facet sets: NOT (metadata @> ANY(block))'),
47
+ range: zod_1.z.array(zod_1.z.object({
48
+ facet: zod_1.z.string(),
49
+ op: zod_1.z.enum(['<', '<=', '>', '>=', '=']),
50
+ value: zod_1.z.number(),
51
+ })).optional().describe('Numeric ranges over a metadata facet, e.g. { facet: "confidence", op: "<=", value: 0.7 }'),
52
+ exists: zod_1.z.array(zod_1.z.string()).optional().describe('Metadata keys that must be present: metadata ? key'),
53
+ available: zod_1.z.boolean().optional().describe('true = only unclaimed/expired; false = only held now'),
54
+ orderBy: zod_1.z.array(zod_1.z.object({
55
+ field: zod_1.z.string(),
56
+ direction: zod_1.z.enum(['asc', 'desc']).optional(),
57
+ numeric: zod_1.z.boolean().optional(),
58
+ })).optional().describe('Sort by a column or a metadata path written "metadata.<key>" (set numeric for numeric sort)'),
59
+ });
60
+ exports.getEscalationSchema = zod_1.z.object({
61
+ id: zod_1.z.string().describe('Escalation UUID'),
62
+ });
63
+ exports.getEscalationsByWorkflowSchema = zod_1.z.object({
64
+ workflow_id: zod_1.z.string().describe('HotMesh workflow ID to list escalations for'),
37
65
  });
38
66
  exports.getEscalationStatsSchema = zod_1.z.object({
39
67
  period: zod_1.z.string().optional().describe('Time period: 1h, 24h, 7d, 30d'),
@@ -43,6 +71,27 @@ exports.claimEscalationSchema = zod_1.z.object({
43
71
  duration_minutes: zod_1.z.number().int().optional().default(30)
44
72
  .describe('Lock duration in minutes'),
45
73
  });
74
+ exports.releaseEscalationSchema = zod_1.z.object({
75
+ id: zod_1.z.string().describe('Escalation UUID to release back to the pool'),
76
+ });
77
+ exports.resolveEscalationSchema = zod_1.z.object({
78
+ id: zod_1.z.string().describe('Escalation UUID to resolve'),
79
+ resolverPayload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload (matches the escalation form/resolver schema)'),
80
+ });
81
+ exports.resolveBySignalKeySchema = zod_1.z.object({
82
+ signalKey: zod_1.z.string().describe('Deterministic signal_key of an efficient escalation'),
83
+ resolverPayload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload'),
84
+ });
85
+ exports.escalateEscalationSchema = zod_1.z.object({
86
+ id: zod_1.z.string().describe('Escalation UUID'),
87
+ targetRole: zod_1.z.string().describe('Role to route the escalation to'),
88
+ });
89
+ exports.cancelEscalationSchema = zod_1.z.object({
90
+ id: zod_1.z.string().describe('Escalation UUID to cancel'),
91
+ });
92
+ exports.bulkCancelSchema = zod_1.z.object({
93
+ ids: zod_1.z.array(zod_1.z.string()).min(1).describe('Escalation UUIDs to cancel'),
94
+ });
46
95
  exports.releaseExpiredClaimsSchema = zod_1.z.object({});
47
96
  exports.bulkTriageSchema = zod_1.z.object({
48
97
  ids: zod_1.z.array(zod_1.z.string()).min(1).describe('Escalation UUIDs to triage'),
@@ -81,6 +130,7 @@ exports.invokeWorkflowSchema = zod_1.z.object({
81
130
  });
82
131
  exports.getWorkflowStatusSchema = zod_1.z.object({
83
132
  workflow_id: zod_1.z.string().describe('HotMesh workflow ID'),
133
+ app_id: zod_1.z.string().optional().describe('HotMesh namespace for resolution (default: durable). Set this to read a child/workflow running in another app.'),
84
134
  });
85
135
  // ── mcp servers (routes/mcp.ts) ─────────────────────────────────────────────
86
136
  exports.listMcpServersSchema = zod_1.z.object({
@@ -141,6 +191,16 @@ exports.listUsersSchema = zod_1.z.object({
141
191
  limit: zod_1.z.number().int().min(1).max(100).optional().default(50),
142
192
  offset: zod_1.z.number().int().min(0).optional().default(0),
143
193
  });
194
+ // Work-surface scope for a `member` grant. read governs search breadth, write
195
+ // governs claim/ack/delete breadth; admin/superadmin ignore scope (act on all).
196
+ // The write ⊆ read constraint (write_scope='all' requires read_scope='all') is
197
+ // validated in the handler so these stay plain object shapes for the tool registry.
198
+ const scopeFields = {
199
+ read_scope: zod_1.z.enum(['self', 'all']).optional()
200
+ .describe("Member search breadth: 'self' (own items) or 'all' (whole queue). Default all"),
201
+ write_scope: zod_1.z.enum(['none', 'self', 'all']).optional()
202
+ .describe("Member claim/ack/delete breadth: 'none', 'self' (own items), or 'all'. Default all"),
203
+ };
144
204
  exports.createUserSchema = zod_1.z.object({
145
205
  external_id: zod_1.z.string().describe('Stable user identifier'),
146
206
  display_name: zod_1.z.string().optional(),
@@ -148,12 +208,14 @@ exports.createUserSchema = zod_1.z.object({
148
208
  roles: zod_1.z.array(zod_1.z.object({
149
209
  role: zod_1.z.string(),
150
210
  type: zod_1.z.enum(['superadmin', 'admin', 'member']),
151
- })).optional().default([]).describe('Roles to assign on creation'),
211
+ ...scopeFields,
212
+ })).optional().default([]).describe('Roles to assign on creation (each with optional work-surface scope)'),
152
213
  });
153
214
  exports.addUserRoleSchema = zod_1.z.object({
154
215
  user_id: zod_1.z.string().describe('User UUID'),
155
216
  role: zod_1.z.string().describe('Role name'),
156
217
  type: zod_1.z.enum(['superadmin', 'admin', 'member']).describe('Permission level'),
218
+ ...scopeFields,
157
219
  });
158
220
  exports.removeUserRoleSchema = zod_1.z.object({
159
221
  user_id: zod_1.z.string().describe('User UUID'),
@@ -419,7 +481,9 @@ exports.getExportStatusSchema = zod_1.z.object({
419
481
  exports.diagnoseJobSchema = zod_1.z.object({
420
482
  workflow_id: zod_1.z.string().describe('Workflow ID to diagnose'),
421
483
  app_id: zod_1.z.string().optional().default('durable').describe('HotMesh namespace / DB schema (default: durable)'),
422
- max_events: zod_1.z.number().int().min(1).optional().default(500).describe('Cap on execution events returned; most recent are kept (default: 500). For full per-message payloads use the stream browser (list_stream_messages filtered by jid) instead.'),
484
+ max_events: zod_1.z.number().int().min(1).optional().default(500).describe('Cap on execution events returned when events are included; most recent are kept (default: 500).'),
485
+ include: zod_1.z.array(zod_1.z.enum(['events', 'streams'])).optional().describe('Heavy sections to add to the verdict. "events" adds the execution timeline; "streams" adds raw engine+worker messages. Omit for the compact verdict (status, idle, stream counts, escalation, findings). For full raw message payloads prefer list_stream_messages filtered by jid.'),
486
+ verbosity: zod_1.z.enum(['summary', 'full']).optional().describe('Shorthand: "summary" (default) = verdict only; "full" = events + streams. Overridden by an explicit include[].'),
423
487
  });
424
488
  exports.findStalledJobsSchema = zod_1.z.object({
425
489
  app_id: zod_1.z.string().optional().default('durable').describe('HotMesh namespace / DB schema (default: durable)'),
@@ -432,3 +496,35 @@ exports.findOrphanedSignalsSchema = zod_1.z.object({
432
496
  within_hours: zod_1.z.number().int().min(1).max(720).optional().default(24).describe('Recent time window to scan, in hours (default: 24, max: 720). Bounds the scan of the partitioned worker_streams table — widen deliberately to reach older orphans.'),
433
497
  limit: zod_1.z.number().int().min(1).max(500).optional().default(100).describe('Max results (default: 100, max: 500)'),
434
498
  });
499
+ // ── Faceted routing + set resolve ───────────────────────────────────────────
500
+ /** A faceted query over a pond — filter/sort by columns and metadata facets. */
501
+ exports.facetQuerySchema = zod_1.z.object({
502
+ role: zod_1.z.string().describe('Pond role to target (the escalation role)'),
503
+ status: zod_1.z.string().optional().describe("Status filter (e.g. 'pending')"),
504
+ available: zod_1.z.boolean().optional().describe('Only rows not currently claimed'),
505
+ facets: zod_1.z.record(zod_1.z.any()).optional().describe('Metadata facet equality filters'),
506
+ orderBy: zod_1.z.array(zod_1.z.object({
507
+ column: zod_1.z.string(),
508
+ direction: zod_1.z.enum(['asc', 'desc']),
509
+ })).optional().describe('Sort order over columns'),
510
+ limit: zod_1.z.number().int().min(1).optional(),
511
+ offset: zod_1.z.number().int().min(0).optional(),
512
+ });
513
+ exports.resolveByIdsSchema = zod_1.z.object({
514
+ ids: zod_1.z.array(zod_1.z.string()).min(1).describe('Escalation ids to resolve as one set'),
515
+ resolverPayload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload applied to every row'),
516
+ metadata: zod_1.z.record(zod_1.z.any()).optional().describe('Outcome patch merged into each row'),
517
+ });
518
+ exports.searchByFacetsSchema = exports.facetQuerySchema;
519
+ exports.claimGroupsSchema = zod_1.z.object({
520
+ query: exports.facetQuerySchema,
521
+ limit: zod_1.z.number().int().min(1).optional().describe('Max groups to claim'),
522
+ durationMinutes: zod_1.z.number().int().min(1).optional().describe('Claim TTL in minutes'),
523
+ sizeFacet: zod_1.z.string().optional().describe('Metadata key holding the group size'),
524
+ });
525
+ exports.claimByFacetsSchema = zod_1.z.object({
526
+ query: exports.facetQuerySchema,
527
+ limit: zod_1.z.number().int().min(1).optional().describe('Max rows to claim'),
528
+ durationMinutes: zod_1.z.number().int().min(1).optional().describe('Claim TTL in minutes'),
529
+ allOrNone: zod_1.z.boolean().optional().describe('Commit only if the full limit was acquired'),
530
+ });
@@ -74,6 +74,18 @@ function registerUserTools(server) {
74
74
  'claim and resolve escalations for their assigned roles.',
75
75
  inputSchema: schemas_1.createUserSchema,
76
76
  }, async (args) => {
77
+ // roles carry optional read_scope/write_scope (default all/all); createUser
78
+ // normalizes admin/superadmin to all/all and stores member scope verbatim.
79
+ for (const r of args.roles) {
80
+ const read = r.read_scope ?? userService.DEFAULT_READ_SCOPE;
81
+ const write = r.write_scope ?? userService.DEFAULT_WRITE_SCOPE;
82
+ if (!userService.isValidScopePair(read, write)) {
83
+ return {
84
+ isError: true,
85
+ content: [{ type: 'text', text: `write_scope=all requires read_scope=all (role "${r.role}")` }],
86
+ };
87
+ }
88
+ }
77
89
  const user = await userService.createUser({
78
90
  external_id: args.external_id,
79
91
  display_name: args.display_name,
@@ -87,10 +99,24 @@ function registerUserTools(server) {
87
99
  // mirrors POST /api/users/:id/roles
88
100
  server.registerTool('add_user_role', {
89
101
  title: 'Add User Role',
90
- description: 'Assign a role to a user. Role type: member, admin, or superadmin.',
102
+ description: 'Assign a role to a user. Role type: member, admin, or superadmin. For a ' +
103
+ 'member, optional read_scope/write_scope set the work-surface (e.g. ' +
104
+ 'read_scope=self + write_scope=self for a one-time user who only handles ' +
105
+ 'their own pre-assigned escalation).',
91
106
  inputSchema: schemas_1.addUserRoleSchema,
92
107
  }, async (args) => {
93
- const result = await userService.addUserRole(args.user_id, args.role, args.type);
108
+ const read = args.read_scope ?? userService.DEFAULT_READ_SCOPE;
109
+ const write = args.write_scope ?? userService.DEFAULT_WRITE_SCOPE;
110
+ if (!userService.isValidScopePair(read, write)) {
111
+ return {
112
+ isError: true,
113
+ content: [{ type: 'text', text: 'write_scope=all requires read_scope=all' }],
114
+ };
115
+ }
116
+ const result = await userService.addUserRole(args.user_id, args.role, args.type, {
117
+ read_scope: args.read_scope,
118
+ write_scope: args.write_scope,
119
+ });
94
120
  return {
95
121
  content: [{ type: 'text', text: JSON.stringify(result) }],
96
122
  };
@@ -37,7 +37,7 @@ exports.registerWorkflowTools = registerWorkflowTools;
37
37
  const configService = __importStar(require("../../../services/config"));
38
38
  const registry_1 = require("../../../services/workers/registry");
39
39
  const workflow_invocation_1 = require("../../../services/workflow-invocation");
40
- const workers_1 = require("../../../workers");
40
+ const workflowApi = __importStar(require("../../../api/workflows"));
41
41
  const schemas_1 = require("./schemas");
42
42
  function registerWorkflowTools(server) {
43
43
  // mirrors GET /api/workflows/discovered
@@ -110,21 +110,23 @@ function registerWorkflowTools(server) {
110
110
  server.registerTool('get_workflow_status', {
111
111
  title: 'Get Workflow Status',
112
112
  description: 'Check the status and result of a workflow execution. Returns ' +
113
- 'status (0=complete, positive=running) and the result if complete.',
113
+ 'status (running | complete) and the result if complete. ' +
114
+ 'Resolution is namespace-aware: pass app_id to read a workflow (e.g. a ' +
115
+ 'child) running in a non-default HotMesh namespace.',
114
116
  inputSchema: schemas_1.getWorkflowStatusSchema,
115
117
  }, async (args) => {
116
- const { getTaskByWorkflowId } = await Promise.resolve().then(() => __importStar(require('../../../services/task')));
117
- const task = await getTaskByWorkflowId(args.workflow_id);
118
- if (!task) {
118
+ const statusResult = await workflowApi.getWorkflowStatus({
119
+ workflowId: args.workflow_id,
120
+ appId: args.app_id,
121
+ });
122
+ if (statusResult.error) {
119
123
  return {
120
- content: [{ type: 'text', text: JSON.stringify({ error: 'Workflow not found' }) }],
124
+ content: [{ type: 'text', text: JSON.stringify({ error: statusResult.error }) }],
121
125
  isError: true,
122
126
  };
123
127
  }
124
- const client = (0, workers_1.createClient)();
125
- const handle = await client.workflow.getHandle(task.task_queue || 'long-tail-system', task.workflow_type, args.workflow_id);
126
- const status = await handle.status();
127
- if (status !== 0) {
128
+ // HotMesh status: 0 = complete, positive = running.
129
+ if (statusResult.data?.status !== 0) {
128
130
  return {
129
131
  content: [{
130
132
  type: 'text',
@@ -132,11 +134,20 @@ function registerWorkflowTools(server) {
132
134
  }],
133
135
  };
134
136
  }
135
- const result = await handle.result();
137
+ const resultResult = await workflowApi.getWorkflowResult({
138
+ workflowId: args.workflow_id,
139
+ appId: args.app_id,
140
+ });
141
+ if (resultResult.error) {
142
+ return {
143
+ content: [{ type: 'text', text: JSON.stringify({ error: resultResult.error }) }],
144
+ isError: true,
145
+ };
146
+ }
136
147
  return {
137
148
  content: [{
138
149
  type: 'text',
139
- text: JSON.stringify({ workflow_id: args.workflow_id, status: 'complete', result }),
150
+ text: JSON.stringify({ workflow_id: args.workflow_id, status: 'complete', result: resultResult.data?.result }),
140
151
  }],
141
152
  };
142
153
  });