@hotmeshio/long-tail 0.19.1 → 0.21.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 (393) hide show
  1. package/README.md +4 -4
  2. package/build/api/escalations/accumulate.d.ts +96 -0
  3. package/build/api/escalations/accumulate.js +516 -0
  4. package/build/api/escalations/index.d.ts +1 -0
  5. package/build/api/escalations/index.js +10 -1
  6. package/build/api/roles.d.ts +4 -5
  7. package/build/api/roles.js +53 -4
  8. package/build/api/scan-codes/execute.js +2 -0
  9. package/build/api/scan-codes/verbs.d.ts +15 -0
  10. package/build/api/scan-codes/verbs.js +65 -0
  11. package/build/api/workflows/config.d.ts +3 -0
  12. package/build/api/workflows/config.js +15 -0
  13. package/build/api/workflows/index.d.ts +1 -0
  14. package/build/api/workflows/index.js +3 -1
  15. package/build/api/workflows/input-lookups.d.ts +16 -0
  16. package/build/api/workflows/input-lookups.js +69 -0
  17. package/build/api/workflows/input-validation.d.ts +4 -3
  18. package/build/api/workflows/input-validation.js +7 -4
  19. package/build/api/workflows/invocable.js +1 -0
  20. package/build/api/workflows/invocation.js +1 -1
  21. package/build/index.js +60 -0
  22. package/build/lib/db/schemas/035_workflow_input_lookups.sql +9 -0
  23. package/build/lib/db/schemas/036_role_portals.sql +12 -0
  24. package/build/routes/escalations/accumulate.d.ts +7 -0
  25. package/build/routes/escalations/accumulate.js +150 -0
  26. package/build/routes/escalations/index.js +5 -0
  27. package/build/routes/workflows/config.js +10 -0
  28. package/build/sdk/index.d.ts +25 -0
  29. package/build/sdk/index.js +8 -0
  30. package/build/services/config/cache.js +1 -0
  31. package/build/services/config/read.js +2 -0
  32. package/build/services/config/sql.d.ts +2 -2
  33. package/build/services/config/sql.js +6 -5
  34. package/build/services/config/write.js +10 -1
  35. package/build/services/escalation/accumulate.d.ts +81 -0
  36. package/build/services/escalation/accumulate.js +154 -0
  37. package/build/services/escalation/index.d.ts +1 -0
  38. package/build/services/escalation/index.js +1 -0
  39. package/build/services/knowledge/index.d.ts +1 -0
  40. package/build/services/knowledge/index.js +1 -0
  41. package/build/services/knowledge/lookup-refs.d.ts +7 -0
  42. package/build/services/knowledge/lookup-refs.js +26 -0
  43. package/build/services/mcp/db-server/schemas.d.ts +2 -2
  44. package/build/services/mcp/playwright-server/schemas.d.ts +2 -2
  45. package/build/services/orchestrator/condition.d.ts +40 -3
  46. package/build/services/orchestrator/condition.js +42 -2
  47. package/build/services/role/index.js +1 -0
  48. package/build/services/role/seed.js +6 -1
  49. package/build/services/role/sql.d.ts +6 -3
  50. package/build/services/role/sql.js +7 -2
  51. package/build/services/role/types.d.ts +38 -10
  52. package/build/services/role/types.js +10 -1
  53. package/build/services/scan-code/validate.js +16 -0
  54. package/build/shared/form-validation/display-only-widgets.d.ts +16 -0
  55. package/build/shared/form-validation/display-only-widgets.js +25 -0
  56. package/build/shared/form-validation/field-validator.d.ts +1 -0
  57. package/build/shared/form-validation/field-validator.js +94 -6
  58. package/build/shared/form-validation/index.d.ts +2 -0
  59. package/build/shared/form-validation/index.js +2 -0
  60. package/build/shared/form-validation/invoke-context.d.ts +4 -3
  61. package/build/shared/form-validation/invoke-context.js +5 -4
  62. package/build/shared/form-validation/x-lt-bind.d.ts +2 -14
  63. package/build/shared/form-validation/x-lt-bind.js +12 -8
  64. package/build/shared/form-validation/x-lt-invoke.d.ts +38 -0
  65. package/build/shared/form-validation/x-lt-invoke.js +103 -0
  66. package/build/shared/form-validation/x-lt-options.d.ts +3 -3
  67. package/build/shared/form-validation/x-lt-options.js +19 -5
  68. package/build/shared/form-validation/x-lt-show-if.d.ts +5 -0
  69. package/build/shared/form-validation/x-lt-show-if.js +10 -0
  70. package/build/start/workers.js +10 -0
  71. package/build/system/mcp-servers/admin/escalations.js +39 -0
  72. package/build/system/mcp-servers/admin/schemas.d.ts +256 -33
  73. package/build/system/mcp-servers/admin/schemas.js +55 -3
  74. package/build/system/mcp-servers/admin/users.js +1 -0
  75. package/build/system/mcp-servers/admin/workflow-config.js +54 -9
  76. package/build/system/mcp-servers/admin/workflows.js +9 -7
  77. package/build/system/mcp-servers/db-query/schemas.d.ts +2 -2
  78. package/build/system/mcp-servers/docs.js +4 -0
  79. package/build/system/mcp-servers/human-queue-schemas.d.ts +85 -0
  80. package/build/system/mcp-servers/human-queue-schemas.js +19 -1
  81. package/build/system/mcp-servers/human-queue.d.ts +2 -0
  82. package/build/system/mcp-servers/human-queue.js +77 -0
  83. package/build/system/seed/tool-manifests-admin.d.ts +1509 -227
  84. package/build/system/seed/tool-manifests-admin.js +8 -4
  85. package/build/system/seed/tool-manifests-escalation.d.ts +174 -0
  86. package/build/system/seed/tool-manifests-escalation.js +56 -0
  87. package/build/tsconfig.tsbuildinfo +1 -1
  88. package/build/types/config.d.ts +4 -0
  89. package/build/types/escalation.d.ts +52 -0
  90. package/build/types/escalation.js +29 -1
  91. package/build/types/index.d.ts +2 -2
  92. package/build/types/index.js +3 -1
  93. package/build/types/scan-code.d.ts +24 -0
  94. package/build/types/scan-code.js +9 -0
  95. package/build/types/startup.d.ts +26 -0
  96. package/dashboard/dist/assets/{AdminDashboard-Drs-9TRM.js → AdminDashboard-uarpHB88.js} +2 -2
  97. package/dashboard/dist/assets/{AdminDashboard-Drs-9TRM.js.map → AdminDashboard-uarpHB88.js.map} +1 -1
  98. package/dashboard/dist/assets/{AgentConfigPage-BDPDZ7-v.js → AgentConfigPage-BcUaDD5E.js} +6 -6
  99. package/dashboard/dist/assets/{AgentConfigPage-BDPDZ7-v.js.map → AgentConfigPage-BcUaDD5E.js.map} +1 -1
  100. package/dashboard/dist/assets/{AgentDetailPage-CGBulM4_.js → AgentDetailPage-BaZBhK6i.js} +3 -3
  101. package/dashboard/dist/assets/{AgentDetailPage-CGBulM4_.js.map → AgentDetailPage-BaZBhK6i.js.map} +1 -1
  102. package/dashboard/dist/assets/AgentsPage-CuVFSDc4.js +2 -0
  103. package/dashboard/dist/assets/{AgentsPage-D77JeViQ.js.map → AgentsPage-CuVFSDc4.js.map} +1 -1
  104. package/dashboard/dist/assets/AvailableEscalationsPage-iO5NyyIK.js +2 -0
  105. package/dashboard/dist/assets/AvailableEscalationsPage-iO5NyyIK.js.map +1 -0
  106. package/dashboard/dist/assets/{BotPicker-CC5vI_Sv.js → BotPicker-CClMby6B.js} +2 -2
  107. package/dashboard/dist/assets/{BotPicker-CC5vI_Sv.js.map → BotPicker-CClMby6B.js.map} +1 -1
  108. package/dashboard/dist/assets/BulkAssignModal-BL8FRgkN.js +2 -0
  109. package/dashboard/dist/assets/{BulkAssignModal-BXiJnlqt.js.map → BulkAssignModal-BL8FRgkN.js.map} +1 -1
  110. package/dashboard/dist/assets/CapabilitiesPage-D53ogPor.js +2 -0
  111. package/dashboard/dist/assets/{CapabilitiesPage-D9TC2iKy.js.map → CapabilitiesPage-D53ogPor.js.map} +1 -1
  112. package/dashboard/dist/assets/{CollapsibleSection-D10lGw_u.js → CollapsibleSection-ow8jpbtD.js} +2 -2
  113. package/dashboard/dist/assets/{CollapsibleSection-D10lGw_u.js.map → CollapsibleSection-ow8jpbtD.js.map} +1 -1
  114. package/dashboard/dist/assets/{ConfirmDeleteModal-BJdLN6No.js → ConfirmDeleteModal-CeEDt9iJ.js} +2 -2
  115. package/dashboard/dist/assets/{ConfirmDeleteModal-BJdLN6No.js.map → ConfirmDeleteModal-CeEDt9iJ.js.map} +1 -1
  116. package/dashboard/dist/assets/{CountdownTimer-D9B-BjQ7.js → CountdownTimer-CSqyZMCG.js} +2 -2
  117. package/dashboard/dist/assets/{CountdownTimer-D9B-BjQ7.js.map → CountdownTimer-CSqyZMCG.js.map} +1 -1
  118. package/dashboard/dist/assets/{CredentialsPage-hniUAFBK.js → CredentialsPage-Dx7SxA23.js} +2 -2
  119. package/dashboard/dist/assets/{CredentialsPage-hniUAFBK.js.map → CredentialsPage-Dx7SxA23.js.map} +1 -1
  120. package/dashboard/dist/assets/{CronLabel-v9DCD2FX.js → CronLabel-LYPxpvNN.js} +2 -2
  121. package/dashboard/dist/assets/{CronLabel-v9DCD2FX.js.map → CronLabel-LYPxpvNN.js.map} +1 -1
  122. package/dashboard/dist/assets/DataTable-spX1dFyb.js +2 -0
  123. package/dashboard/dist/assets/DataTable-spX1dFyb.js.map +1 -0
  124. package/dashboard/dist/assets/{DropZone-XlcY8hEH.js → DropZone-f1o-GLM8.js} +2 -2
  125. package/dashboard/dist/assets/{DropZone-XlcY8hEH.js.map → DropZone-f1o-GLM8.js.map} +1 -1
  126. package/dashboard/dist/assets/{ElapsedCell-_xvVTK8N.js → ElapsedCell-BZJTSm9N.js} +2 -2
  127. package/dashboard/dist/assets/{ElapsedCell-_xvVTK8N.js.map → ElapsedCell-BZJTSm9N.js.map} +1 -1
  128. package/dashboard/dist/assets/EntityTimelinePanel-0wIIW2en.js +2 -0
  129. package/dashboard/dist/assets/{EntityTimelinePanel-1lT3jkCM.js.map → EntityTimelinePanel-0wIIW2en.js.map} +1 -1
  130. package/dashboard/dist/assets/{EscalationListSchemaPage-BeQUTUEO.js → EscalationListSchemaPage-CoYvtMzj.js} +3 -3
  131. package/dashboard/dist/assets/{EscalationListSchemaPage-BeQUTUEO.js.map → EscalationListSchemaPage-CoYvtMzj.js.map} +1 -1
  132. package/dashboard/dist/assets/EscalationListView-DWFHPufv.js +2 -0
  133. package/dashboard/dist/assets/EscalationListView-DWFHPufv.js.map +1 -0
  134. package/dashboard/dist/assets/{EscalationSchemaPage-D4VlEwyS.js → EscalationSchemaPage-C9Xu_A25.js} +3 -3
  135. package/dashboard/dist/assets/{EscalationSchemaPage-D4VlEwyS.js.map → EscalationSchemaPage-C9Xu_A25.js.map} +1 -1
  136. package/dashboard/dist/assets/EscalationTimeline-D8W2LNNk.js +2 -0
  137. package/dashboard/dist/assets/EscalationTimeline-D8W2LNNk.js.map +1 -0
  138. package/dashboard/dist/assets/EscalationTitleSelect-DLK8NWMp.js +2 -0
  139. package/dashboard/dist/assets/EscalationTitleSelect-DLK8NWMp.js.map +1 -0
  140. package/dashboard/dist/assets/{EscalationsOverview-Bx6Zrzm-.js → EscalationsOverview-CW57FaP9.js} +2 -2
  141. package/dashboard/dist/assets/{EscalationsOverview-Bx6Zrzm-.js.map → EscalationsOverview-CW57FaP9.js.map} +1 -1
  142. package/dashboard/dist/assets/{EventTable-KEC3YWBf.js → EventTable-D1ctWhKf.js} +2 -2
  143. package/dashboard/dist/assets/{EventTable-KEC3YWBf.js.map → EventTable-D1ctWhKf.js.map} +1 -1
  144. package/dashboard/dist/assets/{FilterBar-xwN_b5fj.js → FilterBar-C-iur-Nj.js} +2 -2
  145. package/dashboard/dist/assets/{FilterBar-xwN_b5fj.js.map → FilterBar-C-iur-Nj.js.map} +1 -1
  146. package/dashboard/dist/assets/GraphInvokePage-CcA_44M4.js +2 -0
  147. package/dashboard/dist/assets/{GraphInvokePage-DV7Y0fe2.js.map → GraphInvokePage-CcA_44M4.js.map} +1 -1
  148. package/dashboard/dist/assets/HomePage-Dc085ghJ.js +2 -0
  149. package/dashboard/dist/assets/{HomePage-G785SWcW.js.map → HomePage-Dc085ghJ.js.map} +1 -1
  150. package/dashboard/dist/assets/ListToolbar-h_ziBt4O.js +2 -0
  151. package/dashboard/dist/assets/{ListToolbar-zPVYPg3W.js.map → ListToolbar-h_ziBt4O.js.map} +1 -1
  152. package/dashboard/dist/assets/{McpOverview-CMGUq8hx.js → McpOverview-qXXhbNWV.js} +2 -2
  153. package/dashboard/dist/assets/{McpOverview-CMGUq8hx.js.map → McpOverview-qXXhbNWV.js.map} +1 -1
  154. package/dashboard/dist/assets/{McpQueryDetailPage-CdhLhaKn.js → McpQueryDetailPage-SEzSbZrd.js} +2 -2
  155. package/dashboard/dist/assets/{McpQueryDetailPage-CdhLhaKn.js.map → McpQueryDetailPage-SEzSbZrd.js.map} +1 -1
  156. package/dashboard/dist/assets/McpQueryPage-Cy0V0kv9.js +2 -0
  157. package/dashboard/dist/assets/{McpQueryPage-CNSNMagY.js.map → McpQueryPage-Cy0V0kv9.js.map} +1 -1
  158. package/dashboard/dist/assets/{McpRunDetailPage-DBm8hUaW.js → McpRunDetailPage-DjJO5vSb.js} +2 -2
  159. package/dashboard/dist/assets/{McpRunDetailPage-DBm8hUaW.js.map → McpRunDetailPage-DjJO5vSb.js.map} +1 -1
  160. package/dashboard/dist/assets/McpRunsPage-BfjiJ8mM.js +2 -0
  161. package/dashboard/dist/assets/{McpRunsPage-B6rb5QBf.js.map → McpRunsPage-BfjiJ8mM.js.map} +1 -1
  162. package/dashboard/dist/assets/{NamespacePill-Bb3revqD.js → NamespacePill-DADRJOUl.js} +2 -2
  163. package/dashboard/dist/assets/{NamespacePill-Bb3revqD.js.map → NamespacePill-DADRJOUl.js.map} +1 -1
  164. package/dashboard/dist/assets/OperationsPage-dJcER0T_.js +3 -0
  165. package/dashboard/dist/assets/OperationsPage-dJcER0T_.js.map +1 -0
  166. package/dashboard/dist/assets/OperatorDashboard-zCkW4eqk.js +2 -0
  167. package/dashboard/dist/assets/{OperatorDashboard-DBOscDnf.js.map → OperatorDashboard-zCkW4eqk.js.map} +1 -1
  168. package/dashboard/dist/assets/{PageHeader-Di5Sz3an.js → PageHeader-Csq434-v.js} +2 -2
  169. package/dashboard/dist/assets/{PageHeader-Di5Sz3an.js.map → PageHeader-Csq434-v.js.map} +1 -1
  170. package/dashboard/dist/assets/{PageHeaderWithStats-DutKJ-h2.js → PageHeaderWithStats-CSnk1p5A.js} +2 -2
  171. package/dashboard/dist/assets/{PageHeaderWithStats-DutKJ-h2.js.map → PageHeaderWithStats-CSnk1p5A.js.map} +1 -1
  172. package/dashboard/dist/assets/{PersonaDetailPage-BGRdGpeR.js → PersonaDetailPage-Cx6L3Jvu.js} +2 -2
  173. package/dashboard/dist/assets/{PersonaDetailPage-BGRdGpeR.js.map → PersonaDetailPage-Cx6L3Jvu.js.map} +1 -1
  174. package/dashboard/dist/assets/{PersonasPage-DRzOZcVa.js → PersonasPage-DOgGUlJl.js} +2 -2
  175. package/dashboard/dist/assets/{PersonasPage-DRzOZcVa.js.map → PersonasPage-DOgGUlJl.js.map} +1 -1
  176. package/dashboard/dist/assets/PortalPage-BKuL1BeJ.js +2 -0
  177. package/dashboard/dist/assets/PortalPage-BKuL1BeJ.js.map +1 -0
  178. package/dashboard/dist/assets/{ProcessDetailPage-BLGjZXpM.js → ProcessDetailPage-BFcFSDUv.js} +2 -2
  179. package/dashboard/dist/assets/{ProcessDetailPage-BLGjZXpM.js.map → ProcessDetailPage-BFcFSDUv.js.map} +1 -1
  180. package/dashboard/dist/assets/ProcessesListPage-BaHV2cXp.js +2 -0
  181. package/dashboard/dist/assets/{ProcessesListPage-5NnysKFC.js.map → ProcessesListPage-BaHV2cXp.js.map} +1 -1
  182. package/dashboard/dist/assets/ResolverForm-Bgc0Zrya.js +7 -0
  183. package/dashboard/dist/assets/ResolverForm-Bgc0Zrya.js.map +1 -0
  184. package/dashboard/dist/assets/RoleDetailPage-BPY6i3CU.js +8 -0
  185. package/dashboard/dist/assets/RoleDetailPage-BPY6i3CU.js.map +1 -0
  186. package/dashboard/dist/assets/{RolePill-DhnVPK4q.js → RolePill-BafrASDX.js} +2 -2
  187. package/dashboard/dist/assets/{RolePill-DhnVPK4q.js.map → RolePill-BafrASDX.js.map} +1 -1
  188. package/dashboard/dist/assets/{RolesPage-BmW1LzkU.js → RolesPage-DSqqKPbv.js} +2 -2
  189. package/dashboard/dist/assets/{RolesPage-BmW1LzkU.js.map → RolesPage-DSqqKPbv.js.map} +1 -1
  190. package/dashboard/dist/assets/RunAsSelector-B29iWwel.js +2 -0
  191. package/dashboard/dist/assets/{RunAsSelector-BwZTJ4Yj.js.map → RunAsSelector-B29iWwel.js.map} +1 -1
  192. package/dashboard/dist/assets/ScanCodesPage-S8aAJfnC.js +2 -0
  193. package/dashboard/dist/assets/{ScanCodesPage-FiYIYB-m.js.map → ScanCodesPage-S8aAJfnC.js.map} +1 -1
  194. package/dashboard/dist/assets/{ScanSchemeDetailPage-BiAqtD-a.js → ScanSchemeDetailPage-CUBRAtmJ.js} +2 -2
  195. package/dashboard/dist/assets/{ScanSchemeDetailPage-BiAqtD-a.js.map → ScanSchemeDetailPage-CUBRAtmJ.js.map} +1 -1
  196. package/dashboard/dist/assets/ScanStationPage-R9t1-CeQ.js +2 -0
  197. package/dashboard/dist/assets/{ScanStationPage-8CdOtbCD.js.map → ScanStationPage-R9t1-CeQ.js.map} +1 -1
  198. package/dashboard/dist/assets/{ScopeBadge-CXUg0FHo.js → ScopeBadge-b6MIBiYD.js} +2 -2
  199. package/dashboard/dist/assets/{ScopeBadge-CXUg0FHo.js.map → ScopeBadge-b6MIBiYD.js.map} +1 -1
  200. package/dashboard/dist/assets/{StickyPagination-DRuqKhZt.js → StickyPagination-CkW_A507.js} +2 -2
  201. package/dashboard/dist/assets/{StickyPagination-DRuqKhZt.js.map → StickyPagination-CkW_A507.js.map} +1 -1
  202. package/dashboard/dist/assets/{StreamMessageDetail-JwlbRiMn.js → StreamMessageDetail-yzWX0wac.js} +2 -2
  203. package/dashboard/dist/assets/{StreamMessageDetail-JwlbRiMn.js.map → StreamMessageDetail-yzWX0wac.js.map} +1 -1
  204. package/dashboard/dist/assets/{SwimlaneTimeline-hu3c4bCJ.js → SwimlaneTimeline-Cf4DXFxj.js} +2 -2
  205. package/dashboard/dist/assets/{SwimlaneTimeline-hu3c4bCJ.js.map → SwimlaneTimeline-Cf4DXFxj.js.map} +1 -1
  206. package/dashboard/dist/assets/{TagInput-BZ8vb2oW.js → TagInput-ZrIIrEUP.js} +2 -2
  207. package/dashboard/dist/assets/{TagInput-BZ8vb2oW.js.map → TagInput-ZrIIrEUP.js.map} +1 -1
  208. package/dashboard/dist/assets/{TaskDetailPage-NqVZF3jW.js → TaskDetailPage-DCDcEps9.js} +2 -2
  209. package/dashboard/dist/assets/{TaskDetailPage-NqVZF3jW.js.map → TaskDetailPage-DCDcEps9.js.map} +1 -1
  210. package/dashboard/dist/assets/{TaskQueuePill-Bxir8WRl.js → TaskQueuePill-DkQ1uc6y.js} +2 -2
  211. package/dashboard/dist/assets/{TaskQueuePill-Bxir8WRl.js.map → TaskQueuePill-DkQ1uc6y.js.map} +1 -1
  212. package/dashboard/dist/assets/TasksListPage-BBATgpf7.js +2 -0
  213. package/dashboard/dist/assets/{TasksListPage-BQNaSzCn.js.map → TasksListPage-BBATgpf7.js.map} +1 -1
  214. package/dashboard/dist/assets/{TimeAgo-Cv35DOiI.js → TimeAgo-CSNVEjch.js} +2 -2
  215. package/dashboard/dist/assets/{TimeAgo-Cv35DOiI.js.map → TimeAgo-CSNVEjch.js.map} +1 -1
  216. package/dashboard/dist/assets/{TimestampCell-DHUXey9s.js → TimestampCell-Du1nBrPn.js} +2 -2
  217. package/dashboard/dist/assets/{TimestampCell-DHUXey9s.js.map → TimestampCell-Du1nBrPn.js.map} +1 -1
  218. package/dashboard/dist/assets/{ToolPill-FkgTXIhq.js → ToolPill-Baxm02L6.js} +2 -2
  219. package/dashboard/dist/assets/{ToolPill-FkgTXIhq.js.map → ToolPill-Baxm02L6.js.map} +1 -1
  220. package/dashboard/dist/assets/ToolTestPanel-CF-h_5Rg.js +2 -0
  221. package/dashboard/dist/assets/{ToolTestPanel-DvuLFWqQ.js.map → ToolTestPanel-CF-h_5Rg.js.map} +1 -1
  222. package/dashboard/dist/assets/{TopicDetailPage-TXX3QNSo.js → TopicDetailPage-Dr1UmWcp.js} +3 -3
  223. package/dashboard/dist/assets/{TopicDetailPage-TXX3QNSo.js.map → TopicDetailPage-Dr1UmWcp.js.map} +1 -1
  224. package/dashboard/dist/assets/TopicsPage-CUUo-Ylf.js +2 -0
  225. package/dashboard/dist/assets/{TopicsPage-h-oyTeEJ.js.map → TopicsPage-CUUo-Ylf.js.map} +1 -1
  226. package/dashboard/dist/assets/{UserName-BceRCeDF.js → UserName-kBh1dc39.js} +2 -2
  227. package/dashboard/dist/assets/{UserName-BceRCeDF.js.map → UserName-kBh1dc39.js.map} +1 -1
  228. package/dashboard/dist/assets/{WorkflowExecutionPage-CmHGcaN9.js → WorkflowExecutionPage-CCRSbnDx.js} +2 -2
  229. package/dashboard/dist/assets/{WorkflowExecutionPage-CmHGcaN9.js.map → WorkflowExecutionPage-CCRSbnDx.js.map} +1 -1
  230. package/dashboard/dist/assets/{WorkflowPill--AYMW7u_.js → WorkflowPill-ZepbO_ny.js} +2 -2
  231. package/dashboard/dist/assets/{WorkflowPill--AYMW7u_.js.map → WorkflowPill-ZepbO_ny.js.map} +1 -1
  232. package/dashboard/dist/assets/WorkflowsDashboard-BNQVvyek.js +2 -0
  233. package/dashboard/dist/assets/{WorkflowsDashboard-B0r2lQXk.js.map → WorkflowsDashboard-BNQVvyek.js.map} +1 -1
  234. package/dashboard/dist/assets/{WorkflowsOverview-BTMc2PJ_.js → WorkflowsOverview-DswubNJN.js} +2 -2
  235. package/dashboard/dist/assets/{WorkflowsOverview-BTMc2PJ_.js.map → WorkflowsOverview-DswubNJN.js.map} +1 -1
  236. package/dashboard/dist/assets/{YamlWorkflowDetailPage-DUiCVnZp.js → YamlWorkflowDetailPage-Cw9Dlmup.js} +11 -11
  237. package/dashboard/dist/assets/{YamlWorkflowDetailPage-DUiCVnZp.js.map → YamlWorkflowDetailPage-Cw9Dlmup.js.map} +1 -1
  238. package/dashboard/dist/assets/{YamlWorkflowsPage-BAuXfwi0.js → YamlWorkflowsPage-DB8xnIXy.js} +2 -2
  239. package/dashboard/dist/assets/{YamlWorkflowsPage-BAuXfwi0.js.map → YamlWorkflowsPage-DB8xnIXy.js.map} +1 -1
  240. package/dashboard/dist/assets/{agents-BvmLCk4h.js → agents-BwEnf6N9.js} +2 -2
  241. package/dashboard/dist/assets/{agents-BvmLCk4h.js.map → agents-BwEnf6N9.js.map} +1 -1
  242. package/dashboard/dist/assets/{bots-f_tyhl4I.js → bots-CCmJTT2u.js} +2 -2
  243. package/dashboard/dist/assets/{bots-f_tyhl4I.js.map → bots-CCmJTT2u.js.map} +1 -1
  244. package/dashboard/dist/assets/{capabilities-DNo5bqLx.js → capabilities-BZHgp_nh.js} +2 -2
  245. package/dashboard/dist/assets/{capabilities-DNo5bqLx.js.map → capabilities-BZHgp_nh.js.map} +1 -1
  246. package/dashboard/dist/assets/{constants-BHkpVaqx.js → constants-CeBBTzf5.js} +2 -2
  247. package/dashboard/dist/assets/{constants-BHkpVaqx.js.map → constants-CeBBTzf5.js.map} +1 -1
  248. package/dashboard/dist/assets/{controlplane-Dyyj2Irb.js → controlplane-CyfwUlFA.js} +2 -2
  249. package/dashboard/dist/assets/{controlplane-Dyyj2Irb.js.map → controlplane-CyfwUlFA.js.map} +1 -1
  250. package/dashboard/dist/assets/escalation-columns-BJPTNmLW.js +2 -0
  251. package/dashboard/dist/assets/escalation-columns-BJPTNmLW.js.map +1 -0
  252. package/dashboard/dist/assets/index-3gbd5neL.js +67 -0
  253. package/dashboard/dist/assets/index-3gbd5neL.js.map +1 -0
  254. package/dashboard/dist/assets/index-BAAVTyZ-.js +2 -0
  255. package/dashboard/dist/assets/{index-DL83W7Gu.js.map → index-BAAVTyZ-.js.map} +1 -1
  256. package/dashboard/dist/assets/{index-CsKiRyhy.js → index-BC6Jenlo.js} +2 -2
  257. package/dashboard/dist/assets/{index-CsKiRyhy.js.map → index-BC6Jenlo.js.map} +1 -1
  258. package/dashboard/dist/assets/index-C7KHqOTQ.js +2 -0
  259. package/dashboard/dist/assets/{index-D7ESqn22.js.map → index-C7KHqOTQ.js.map} +1 -1
  260. package/dashboard/dist/assets/index-CDrqqbSR.js +3 -0
  261. package/dashboard/dist/assets/index-CDrqqbSR.js.map +1 -0
  262. package/dashboard/dist/assets/index-CVwzCZ43.js +2 -0
  263. package/dashboard/dist/assets/{index-DvxxrFBo.js.map → index-CVwzCZ43.js.map} +1 -1
  264. package/dashboard/dist/assets/index-CaGF6TCC.js +2 -0
  265. package/dashboard/dist/assets/index-CaGF6TCC.js.map +1 -0
  266. package/dashboard/dist/assets/index-ClVbfe4z.js +13 -0
  267. package/dashboard/dist/assets/index-ClVbfe4z.js.map +1 -0
  268. package/dashboard/dist/assets/{index-DWse7ERF.js → index-CuVkSmj5.js} +2 -2
  269. package/dashboard/dist/assets/{index-DWse7ERF.js.map → index-CuVkSmj5.js.map} +1 -1
  270. package/dashboard/dist/assets/{index-PcyGjmBm.js → index-DAuX_PlL.js} +2 -2
  271. package/dashboard/dist/assets/{index-PcyGjmBm.js.map → index-DAuX_PlL.js.map} +1 -1
  272. package/dashboard/dist/assets/{index-e2X-s0EQ.js → index-DBWS5QL8.js} +2 -2
  273. package/dashboard/dist/assets/{index-e2X-s0EQ.js.map → index-DBWS5QL8.js.map} +1 -1
  274. package/dashboard/dist/assets/index-DIWCI6HC.js +2 -0
  275. package/dashboard/dist/assets/{index-BNZknxFY.js.map → index-DIWCI6HC.js.map} +1 -1
  276. package/dashboard/dist/assets/{index-C-Xr2V3F.js → index-DZ8X_Gp4.js} +2 -2
  277. package/dashboard/dist/assets/{index-C-Xr2V3F.js.map → index-DZ8X_Gp4.js.map} +1 -1
  278. package/dashboard/dist/assets/index-Dh8MJl3L.css +1 -0
  279. package/dashboard/dist/assets/{knowledge-Coo6CKzo.js → knowledge-CqyLhUMg.js} +2 -2
  280. package/dashboard/dist/assets/{knowledge-Coo6CKzo.js.map → knowledge-CqyLhUMg.js.map} +1 -1
  281. package/dashboard/dist/assets/{mcp-Cz5eFnP_.js → mcp-Cvu6bFYH.js} +2 -2
  282. package/dashboard/dist/assets/{mcp-Cz5eFnP_.js.map → mcp-Cvu6bFYH.js.map} +1 -1
  283. package/dashboard/dist/assets/{mcp-query-BtnuO4LF.js → mcp-query-qC6A3e9l.js} +2 -2
  284. package/dashboard/dist/assets/{mcp-query-BtnuO4LF.js.map → mcp-query-qC6A3e9l.js.map} +1 -1
  285. package/dashboard/dist/assets/metadata-display-COo3mMCr.js +2 -0
  286. package/dashboard/dist/assets/metadata-display-COo3mMCr.js.map +1 -0
  287. package/dashboard/dist/assets/{personas-C2-LgpHQ.js → personas-BKN_lJuV.js} +2 -2
  288. package/dashboard/dist/assets/{personas-C2-LgpHQ.js.map → personas-BKN_lJuV.js.map} +1 -1
  289. package/dashboard/dist/assets/{pipelines-TuXQvUA-.js → pipelines-BldIfv85.js} +2 -2
  290. package/dashboard/dist/assets/{pipelines-TuXQvUA-.js.map → pipelines-BldIfv85.js.map} +1 -1
  291. package/dashboard/dist/assets/{tasks-OUzpu__z.js → tasks-B-Uay8uL.js} +2 -2
  292. package/dashboard/dist/assets/{tasks-OUzpu__z.js.map → tasks-B-Uay8uL.js.map} +1 -1
  293. package/dashboard/dist/assets/{topics-B8bdrBaW.js → topics-438EQogt.js} +2 -2
  294. package/dashboard/dist/assets/{topics-B8bdrBaW.js.map → topics-438EQogt.js.map} +1 -1
  295. package/dashboard/dist/assets/useContainerWidth-DSLp1gEm.js +2 -0
  296. package/dashboard/dist/assets/useContainerWidth-DSLp1gEm.js.map +1 -0
  297. package/dashboard/dist/assets/{useDebouncedValue-Cp5ZOtVE.js → useDebouncedValue-Cw8hYZ8y.js} +2 -2
  298. package/dashboard/dist/assets/{useDebouncedValue-Cp5ZOtVE.js.map → useDebouncedValue-Cw8hYZ8y.js.map} +1 -1
  299. package/dashboard/dist/assets/{useNamespace-DtQe3wZ5.js → useNamespace-D1218GQ8.js} +2 -2
  300. package/dashboard/dist/assets/{useNamespace-DtQe3wZ5.js.map → useNamespace-D1218GQ8.js.map} +1 -1
  301. package/dashboard/dist/assets/{useYamlActivityEvents-CS22c15X.js → useYamlActivityEvents-BAQf_y_U.js} +2 -2
  302. package/dashboard/dist/assets/{useYamlActivityEvents-CS22c15X.js.map → useYamlActivityEvents-BAQf_y_U.js.map} +1 -1
  303. package/dashboard/dist/assets/{vendor-icons-DeBdvyKJ.js → vendor-icons-B7OcUM6b.js} +2 -2
  304. package/dashboard/dist/assets/{vendor-icons-DeBdvyKJ.js.map → vendor-icons-B7OcUM6b.js.map} +1 -1
  305. package/dashboard/dist/assets/{yaml-workflows-HQIki3hI.js → yaml-workflows-CN01gEB0.js} +2 -2
  306. package/dashboard/dist/assets/{yaml-workflows-HQIki3hI.js.map → yaml-workflows-CN01gEB0.js.map} +1 -1
  307. package/dashboard/dist/index.html +3 -3
  308. package/docs/accumulator.md +113 -0
  309. package/docs/api/http/escalations.md +89 -0
  310. package/docs/api/http/roles.md +1 -0
  311. package/docs/api/http/workflows.md +28 -1
  312. package/docs/api/mcp/admin.md +40 -4
  313. package/docs/api/sdk/escalations.md +91 -0
  314. package/docs/api/sdk/roles.md +2 -0
  315. package/docs/architecture.md +1 -1
  316. package/docs/code-owned-configuration.md +3 -2
  317. package/docs/dashboard.md +11 -5
  318. package/docs/hitl/design.md +1 -1
  319. package/docs/hitl/escalation.md +37 -1
  320. package/docs/hitl/form.md +12 -7
  321. package/docs/hitl/invoke-form.md +10 -3
  322. package/docs/hitl/lookups.md +21 -0
  323. package/docs/hitl/pinned-views.md +4 -0
  324. package/docs/hitl/portal.md +97 -0
  325. package/docs/hitl/resolution.md +41 -0
  326. package/docs/hitl/x-lt-embed.md +1 -1
  327. package/docs/hitl/x-lt-invoke.md +95 -0
  328. package/docs/hitl/x-lt-list-schema.md +3 -1
  329. package/docs/hitl/x-lt-validation.md +50 -3
  330. package/docs/hitl/x-lt-widget.md +22 -0
  331. package/docs/hitl-guide.md +12 -2
  332. package/docs/scan-codes.md +15 -2
  333. package/docs/sdk.md +1 -1
  334. package/docs/workflows.md +2 -2
  335. package/package.json +4 -2
  336. package/dashboard/dist/assets/AgentsPage-D77JeViQ.js +0 -2
  337. package/dashboard/dist/assets/AvailableEscalationsPage-CqM_MOMy.js +0 -2
  338. package/dashboard/dist/assets/AvailableEscalationsPage-CqM_MOMy.js.map +0 -1
  339. package/dashboard/dist/assets/BulkAssignModal-BXiJnlqt.js +0 -2
  340. package/dashboard/dist/assets/CapabilitiesPage-D9TC2iKy.js +0 -2
  341. package/dashboard/dist/assets/DataTable-7C7riavf.js +0 -2
  342. package/dashboard/dist/assets/DataTable-7C7riavf.js.map +0 -1
  343. package/dashboard/dist/assets/EntityTimelinePanel-1lT3jkCM.js +0 -2
  344. package/dashboard/dist/assets/EscalationListView-uuZRMSLB.js +0 -2
  345. package/dashboard/dist/assets/EscalationListView-uuZRMSLB.js.map +0 -1
  346. package/dashboard/dist/assets/GraphInvokePage-DV7Y0fe2.js +0 -2
  347. package/dashboard/dist/assets/HomePage-G785SWcW.js +0 -2
  348. package/dashboard/dist/assets/ListToolbar-zPVYPg3W.js +0 -2
  349. package/dashboard/dist/assets/McpQueryPage-CNSNMagY.js +0 -2
  350. package/dashboard/dist/assets/McpRunsPage-B6rb5QBf.js +0 -2
  351. package/dashboard/dist/assets/OperationsPage-Dxk1fAMg.js +0 -3
  352. package/dashboard/dist/assets/OperationsPage-Dxk1fAMg.js.map +0 -1
  353. package/dashboard/dist/assets/OperatorDashboard-DBOscDnf.js +0 -2
  354. package/dashboard/dist/assets/ProcessesListPage-5NnysKFC.js +0 -2
  355. package/dashboard/dist/assets/ResolverForm-Dy0yirtP.js +0 -2
  356. package/dashboard/dist/assets/ResolverForm-Dy0yirtP.js.map +0 -1
  357. package/dashboard/dist/assets/RoleDetailPage-C_LIoe1j.js +0 -8
  358. package/dashboard/dist/assets/RoleDetailPage-C_LIoe1j.js.map +0 -1
  359. package/dashboard/dist/assets/RunAsSelector-BwZTJ4Yj.js +0 -2
  360. package/dashboard/dist/assets/ScanCodesPage-FiYIYB-m.js +0 -2
  361. package/dashboard/dist/assets/ScanStationPage-8CdOtbCD.js +0 -2
  362. package/dashboard/dist/assets/TasksListPage-BQNaSzCn.js +0 -2
  363. package/dashboard/dist/assets/ToolTestPanel-DvuLFWqQ.js +0 -2
  364. package/dashboard/dist/assets/TopicsPage-h-oyTeEJ.js +0 -2
  365. package/dashboard/dist/assets/WorkflowsDashboard-B0r2lQXk.js +0 -2
  366. package/dashboard/dist/assets/escalation-columns-DIigeTOK.js +0 -2
  367. package/dashboard/dist/assets/escalation-columns-DIigeTOK.js.map +0 -1
  368. package/dashboard/dist/assets/index-BMlQYOE1.js +0 -67
  369. package/dashboard/dist/assets/index-BMlQYOE1.js.map +0 -1
  370. package/dashboard/dist/assets/index-BNZknxFY.js +0 -2
  371. package/dashboard/dist/assets/index-Bpvfr4OW.css +0 -1
  372. package/dashboard/dist/assets/index-CegPUKpc.js +0 -3
  373. package/dashboard/dist/assets/index-CegPUKpc.js.map +0 -1
  374. package/dashboard/dist/assets/index-D7ESqn22.js +0 -2
  375. package/dashboard/dist/assets/index-DL83W7Gu.js +0 -2
  376. package/dashboard/dist/assets/index-DPLssnMW.js +0 -6
  377. package/dashboard/dist/assets/index-DPLssnMW.js.map +0 -1
  378. package/dashboard/dist/assets/index-DoETPlJP.js +0 -11
  379. package/dashboard/dist/assets/index-DoETPlJP.js.map +0 -1
  380. package/dashboard/dist/assets/index-DvxxrFBo.js +0 -2
  381. package/dashboard/dist/assets/metadata-display--TzK0REC.js +0 -2
  382. package/dashboard/dist/assets/metadata-display--TzK0REC.js.map +0 -1
  383. package/dashboard/dist/assets/resolver-payload-C1dXB3n6.js +0 -2
  384. package/dashboard/dist/assets/resolver-payload-C1dXB3n6.js.map +0 -1
  385. package/dashboard/dist/assets/seed-form-json-DvPsISxD.js +0 -2
  386. package/dashboard/dist/assets/seed-form-json-DvPsISxD.js.map +0 -1
  387. package/docs/compilation.md +0 -152
  388. package/docs/compiler.md +0 -311
  389. package/docs/contributing.md +0 -56
  390. package/docs/design-principles.md +0 -244
  391. package/docs/schema-exchange.md +0 -173
  392. package/docs/self-test.md +0 -106
  393. package/docs/story.md +0 -184
@@ -35,15 +35,25 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.registerWorkflowConfigTools = registerWorkflowConfigTools;
37
37
  const configService = __importStar(require("../../../services/config"));
38
+ const lookup_cache_1 = require("../../../services/knowledge/lookup-cache");
39
+ const lookup_refs_1 = require("../../../services/knowledge/lookup-refs");
38
40
  const ltconfig_1 = require("../../../modules/ltconfig");
39
41
  const cron_1 = require("../../../services/cron");
42
+ const invocable_1 = require("../../../api/workflows/invocable");
43
+ const workflow_icons_1 = require("../../../types/workflow-icons");
44
+ const escalation_1 = require("../../../types/escalation");
40
45
  const schemas_1 = require("./schemas");
46
+ const errorResult = (error) => ({
47
+ content: [{ type: 'text', text: JSON.stringify({ error }) }],
48
+ isError: true,
49
+ });
41
50
  function registerWorkflowConfigTools(server) {
42
51
  // mirrors GET /api/workflows/config
43
52
  server.registerTool('list_workflow_configs', {
44
53
  title: 'List Workflow Configs',
45
54
  description: 'List all certified workflow configurations. Shows workflow type, ' +
46
- 'task queue, roles, invocable flag, and description.',
55
+ 'task queue, roles, invocable flag, and description. Call ' +
56
+ 'get_workflow_config for the full row including input_schema.',
47
57
  inputSchema: schemas_1.listWorkflowConfigsSchema,
48
58
  }, async (_args) => {
49
59
  const configs = await configService.listWorkflowConfigs();
@@ -64,15 +74,49 @@ function registerWorkflowConfigTools(server) {
64
74
  }],
65
75
  };
66
76
  });
77
+ // mirrors GET /api/workflows/:type/config, plus the resolved lookup data the form reads
78
+ server.registerTool('get_workflow_config', {
79
+ title: 'Get Workflow Config',
80
+ description: 'The full configuration row for one workflow: input_schema (the x-lt-* form ' +
81
+ 'an invoke payload must satisfy), envelope_schema (its metadata is the base ' +
82
+ 'of every run), input_lookups, roles, and tier. input_lookup_data carries the ' +
83
+ 'resolved knowledge editions keyed as the form reads them (lookup.<as ?? key>).',
84
+ inputSchema: schemas_1.getWorkflowConfigSchema,
85
+ }, async (args) => {
86
+ const config = await configService.getWorkflowConfig(args.workflow_type);
87
+ if (!config)
88
+ return errorResult('Workflow config not found');
89
+ const tier = config.certified ? invocable_1.WORKFLOW_TIERS.CERTIFIED : invocable_1.WORKFLOW_TIERS.REGISTERED;
90
+ const input_lookup_data = await (0, lookup_cache_1.resolveLookupContext)(config.input_lookups);
91
+ return {
92
+ content: [{ type: 'text', text: JSON.stringify({ ...config, tier, input_lookup_data }) }],
93
+ };
94
+ });
67
95
  // mirrors PUT /api/workflows/:type/config
68
96
  server.registerTool('upsert_workflow_config', {
69
97
  title: 'Upsert Workflow Config',
70
98
  description: 'Create or replace a workflow configuration (certify). Activates the ' +
71
99
  'interceptor for task tracking, escalation chains, and invocation controls. ' +
100
+ 'Full replace, matching PUT /api/workflows/:type/config: omitted fields clear ' +
101
+ 'to their defaults, so send the whole profile (start from get_workflow_config). ' +
72
102
  'Invalidates the config cache and restarts cron if schedule changes.',
73
103
  inputSchema: schemas_1.upsertWorkflowConfigSchema,
74
104
  }, async (args) => {
75
- const config = await configService.upsertWorkflowConfig({
105
+ if (args.icon && !(0, workflow_icons_1.isWorkflowIcon)(args.icon)) {
106
+ return errorResult(`Unknown workflow icon "${args.icon}"; choose one of WORKFLOW_ICONS`);
107
+ }
108
+ if (args.input_lookups != null) {
109
+ try {
110
+ (0, escalation_1.assertLookupRefs)(args.input_lookups);
111
+ }
112
+ catch (err) {
113
+ return errorResult(err.message);
114
+ }
115
+ const missing = await (0, lookup_refs_1.describeMissingLookupRefs)(args.input_lookups);
116
+ if (missing.length)
117
+ return errorResult(missing.join('; '));
118
+ }
119
+ const declaration = {
76
120
  workflow_type: args.workflow_type,
77
121
  invocable: args.invocable,
78
122
  certified: args.certified,
@@ -85,9 +129,14 @@ function registerWorkflowConfigTools(server) {
85
129
  consumes: args.consumes,
86
130
  tool_tags: args.tool_tags,
87
131
  envelope_schema: args.envelope_schema,
132
+ input_schema: args.input_schema,
133
+ input_lookups: args.input_lookups,
134
+ icon: args.icon,
135
+ read_safe: args.read_safe,
88
136
  resolver_schema: args.resolver_schema,
89
137
  cron_schedule: args.cron_schedule,
90
- });
138
+ };
139
+ const config = await configService.upsertWorkflowConfig(declaration);
91
140
  ltconfig_1.ltConfig.invalidate();
92
141
  await cron_1.cronRegistry.restartCron(config);
93
142
  return {
@@ -102,12 +151,8 @@ function registerWorkflowConfigTools(server) {
102
151
  inputSchema: schemas_1.deleteWorkflowConfigSchema,
103
152
  }, async (args) => {
104
153
  const deleted = await configService.deleteWorkflowConfig(args.workflow_type);
105
- if (!deleted) {
106
- return {
107
- content: [{ type: 'text', text: JSON.stringify({ error: 'Workflow config not found' }) }],
108
- isError: true,
109
- };
110
- }
154
+ if (!deleted)
155
+ return errorResult('Workflow config not found');
111
156
  ltconfig_1.ltConfig.invalidate();
112
157
  return {
113
158
  content: [{
@@ -85,9 +85,8 @@ function registerWorkflowTools(server) {
85
85
  };
86
86
  });
87
87
  // The invoke input gate: data is validated against input_schema when declared.
88
- const inputSchemaRejection = async (args) => {
89
- const config = await configService.getWorkflowConfig(args.workflow_type);
90
- const body = workflowApi.checkInvokeInput(config, args.data ?? {}, args.metadata);
88
+ const inputSchemaRejection = async (config, args) => {
89
+ const body = await workflowApi.checkInvokeInput(config, args.data ?? {}, args.metadata);
91
90
  return body ? { content: [{ type: 'text', text: JSON.stringify(body) }], isError: true } : null;
92
91
  };
93
92
  // mirrors POST /api/workflows/:type/invoke
@@ -95,11 +94,13 @@ function registerWorkflowTools(server) {
95
94
  title: 'Invoke Workflow',
96
95
  description: 'Start a certified workflow by type. The workflow must have invocable=true ' +
97
96
  'in its config. Data is validated against the config input_schema when one ' +
98
- 'is declared (422-shaped error). Returns the workflow ID immediately; the ' +
97
+ 'is declared (422-shaped error). Call get_workflow_config for the input_schema ' +
98
+ 'the payload must satisfy. Returns the workflow ID immediately; the ' +
99
99
  'workflow runs durably in the background.',
100
100
  inputSchema: schemas_1.invokeWorkflowSchema,
101
101
  }, async (args) => {
102
- const rejected = await inputSchemaRejection(args);
102
+ const config = await configService.getWorkflowConfig(args.workflow_type);
103
+ const rejected = await inputSchemaRejection(config, args);
103
104
  if (rejected)
104
105
  return rejected;
105
106
  const result = await (0, workflow_invocation_1.invokeWorkflow)({
@@ -127,7 +128,8 @@ function registerWorkflowTools(server) {
127
128
  description: 'Start a workflow registered read-safe (side-effect-free). Same contract ' +
128
129
  'as invoke_workflow, gated to configs carrying read_safe=true — the ' +
129
130
  'variant exposed to read-scoped MCP callers. A workflow without the ' +
130
- 'flag fails with a clear error.',
131
+ 'flag fails with a clear error. Call get_workflow_config for the ' +
132
+ 'input_schema the payload must satisfy.',
131
133
  inputSchema: schemas_1.invokeWorkflowSchema,
132
134
  }, async (args) => {
133
135
  const config = await configService.getWorkflowConfig(args.workflow_type);
@@ -149,7 +151,7 @@ function registerWorkflowTools(server) {
149
151
  isError: true,
150
152
  };
151
153
  }
152
- const rejected = await inputSchemaRejection(args);
154
+ const rejected = await inputSchemaRejection(config, args);
153
155
  if (rejected)
154
156
  return rejected;
155
157
  const result = await (0, workflow_invocation_1.invokeWorkflow)({
@@ -7,12 +7,12 @@ export declare const findTasksSchema: z.ZodObject<{
7
7
  limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
8
8
  }, "strip", z.ZodTypeAny, {
9
9
  limit: number;
10
- status?: "pending" | "in_progress" | "completed" | "needs_intervention" | "failed" | undefined;
10
+ status?: "completed" | "pending" | "in_progress" | "needs_intervention" | "failed" | undefined;
11
11
  workflow_type?: string | undefined;
12
12
  workflow_id?: string | undefined;
13
13
  origin_id?: string | undefined;
14
14
  }, {
15
- status?: "pending" | "in_progress" | "completed" | "needs_intervention" | "failed" | undefined;
15
+ status?: "completed" | "pending" | "in_progress" | "needs_intervention" | "failed" | undefined;
16
16
  workflow_type?: string | undefined;
17
17
  workflow_id?: string | undefined;
18
18
  origin_id?: string | undefined;
@@ -52,12 +52,16 @@ function docsDir() {
52
52
  }
53
53
  return candidates[0];
54
54
  }
55
+ /** Folders kept out of the published package; the served set matches it. */
56
+ const UNPUBLISHED_DOC_DIRS = new Set(['donotcommit', 'donotpublish', 'img']);
55
57
  function listMarkdownFiles(dir, prefix = '') {
56
58
  if (!fs.existsSync(dir))
57
59
  return [];
58
60
  const results = [];
59
61
  for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
60
62
  const rel = prefix ? `${prefix}/${entry.name}` : entry.name;
63
+ if (entry.isDirectory() && !prefix && UNPUBLISHED_DOC_DIRS.has(entry.name))
64
+ continue;
61
65
  if (entry.isDirectory()) {
62
66
  results.push(...listMarkdownFiles(path.join(dir, entry.name), rel));
63
67
  }
@@ -77,6 +77,91 @@ export declare const resolveBatchItemSchema: z.ZodObject<{
77
77
  payload: Record<string, any>;
78
78
  escalation_id: string;
79
79
  }>;
80
+ export declare const accumulateItemSchema: z.ZodObject<{
81
+ escalation_id: z.ZodString;
82
+ item_key: z.ZodString;
83
+ payload: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
84
+ reciprocal: z.ZodOptional<z.ZodObject<{
85
+ id: z.ZodOptional<z.ZodString>;
86
+ signalKey: z.ZodOptional<z.ZodString>;
87
+ key: z.ZodOptional<z.ZodString>;
88
+ value: z.ZodOptional<z.ZodString>;
89
+ payload: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
90
+ }, "strip", z.ZodTypeAny, {
91
+ key?: string | undefined;
92
+ value?: string | undefined;
93
+ id?: string | undefined;
94
+ signalKey?: string | undefined;
95
+ payload?: Record<string, any> | undefined;
96
+ }, {
97
+ key?: string | undefined;
98
+ value?: string | undefined;
99
+ id?: string | undefined;
100
+ signalKey?: string | undefined;
101
+ payload?: Record<string, any> | undefined;
102
+ }>>;
103
+ }, "strip", z.ZodTypeAny, {
104
+ item_key: string;
105
+ escalation_id: string;
106
+ payload?: Record<string, any> | undefined;
107
+ reciprocal?: {
108
+ key?: string | undefined;
109
+ value?: string | undefined;
110
+ id?: string | undefined;
111
+ signalKey?: string | undefined;
112
+ payload?: Record<string, any> | undefined;
113
+ } | undefined;
114
+ }, {
115
+ item_key: string;
116
+ escalation_id: string;
117
+ payload?: Record<string, any> | undefined;
118
+ reciprocal?: {
119
+ key?: string | undefined;
120
+ value?: string | undefined;
121
+ id?: string | undefined;
122
+ signalKey?: string | undefined;
123
+ payload?: Record<string, any> | undefined;
124
+ } | undefined;
125
+ }>;
126
+ export declare const removeItemSchema: z.ZodObject<{
127
+ escalation_id: z.ZodString;
128
+ item_key: z.ZodString;
129
+ reciprocal: z.ZodOptional<z.ZodObject<Omit<{
130
+ id: z.ZodOptional<z.ZodString>;
131
+ signalKey: z.ZodOptional<z.ZodString>;
132
+ key: z.ZodOptional<z.ZodString>;
133
+ value: z.ZodOptional<z.ZodString>;
134
+ payload: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
135
+ }, "payload">, "strip", z.ZodTypeAny, {
136
+ key?: string | undefined;
137
+ value?: string | undefined;
138
+ id?: string | undefined;
139
+ signalKey?: string | undefined;
140
+ }, {
141
+ key?: string | undefined;
142
+ value?: string | undefined;
143
+ id?: string | undefined;
144
+ signalKey?: string | undefined;
145
+ }>>;
146
+ }, "strip", z.ZodTypeAny, {
147
+ item_key: string;
148
+ escalation_id: string;
149
+ reciprocal?: {
150
+ key?: string | undefined;
151
+ value?: string | undefined;
152
+ id?: string | undefined;
153
+ signalKey?: string | undefined;
154
+ } | undefined;
155
+ }, {
156
+ item_key: string;
157
+ escalation_id: string;
158
+ reciprocal?: {
159
+ key?: string | undefined;
160
+ value?: string | undefined;
161
+ id?: string | undefined;
162
+ signalKey?: string | undefined;
163
+ } | undefined;
164
+ }>;
80
165
  export declare const escalateAndWaitSchema: z.ZodObject<{
81
166
  role: z.ZodString;
82
167
  message: z.ZodString;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.escalateAndWaitSchema = exports.resolveBatchItemSchema = exports.resolveEscalationSchema = exports.claimAndResolveSchema = exports.getAvailableWorkSchema = exports.checkResolutionSchema = exports.escalateSchema = void 0;
3
+ exports.escalateAndWaitSchema = exports.removeItemSchema = exports.accumulateItemSchema = exports.resolveBatchItemSchema = exports.resolveEscalationSchema = exports.claimAndResolveSchema = exports.getAvailableWorkSchema = exports.checkResolutionSchema = exports.escalateSchema = void 0;
4
4
  const zod_1 = require("zod");
5
5
  // ── Schemas (extracted to break TS2589 deep-instantiation in registerTool generics) ──
6
6
  exports.escalateSchema = zod_1.z.object({
@@ -42,6 +42,24 @@ exports.resolveBatchItemSchema = zod_1.z.object({
42
42
  item_key: zod_1.z.string().describe('The declared batch item key this submission fills'),
43
43
  payload: zod_1.z.record(zod_1.z.any()).describe(RESOLVER_PAYLOAD_DESC),
44
44
  });
45
+ const reciprocalSchema = zod_1.z.object({
46
+ id: zod_1.z.string().optional().describe('Reciprocal escalation UUID'),
47
+ signalKey: zod_1.z.string().optional().describe('Reciprocal escalation signal_key'),
48
+ key: zod_1.z.string().optional().describe('Facet key selecting the reciprocal row'),
49
+ value: zod_1.z.string().optional().describe('Facet value selecting the reciprocal row'),
50
+ payload: zod_1.z.record(zod_1.z.any()).optional().describe('Stored as the reciprocal entry payload'),
51
+ }).describe('A second accumulator row written in the same statement, both or neither. Exactly one of id, signalKey, or key/value.');
52
+ exports.accumulateItemSchema = zod_1.z.object({
53
+ escalation_id: zod_1.z.string().describe('The accumulator escalation ID (the container)'),
54
+ item_key: zod_1.z.string().describe('The key this item is held under (an order id, a bag id)'),
55
+ payload: zod_1.z.record(zod_1.z.any()).optional().describe('Optional item payload, delivered inside $accumulated'),
56
+ reciprocal: reciprocalSchema.optional(),
57
+ });
58
+ exports.removeItemSchema = zod_1.z.object({
59
+ escalation_id: zod_1.z.string().describe('The accumulator escalation ID'),
60
+ item_key: zod_1.z.string().describe('The held item key to remove'),
61
+ reciprocal: reciprocalSchema.omit({ payload: true }).optional(),
62
+ });
45
63
  exports.escalateAndWaitSchema = zod_1.z.object({
46
64
  role: zod_1.z.string().describe('Target role for the escalation (e.g., "reviewer")'),
47
65
  message: zod_1.z.string().describe('Description of what input is needed from the human'),
@@ -9,6 +9,8 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
9
9
  * - claim_and_resolve — claim + resolve in one step
10
10
  * - resolve_escalation — resolve an already-claimed escalation
11
11
  * - resolve_batch_item — submit one declared item of a batch escalation
12
+ * - accumulate_item — add one item to an open accumulator escalation
13
+ * - remove_item — remove one held item from an open accumulator escalation
12
14
  * - escalate_and_wait — create escalation and return signal for durable wait
13
15
  *
14
16
  * The server is created with tools registered but no transport
@@ -80,6 +80,8 @@ async function checkResolveToolPayload(escalationId, payload) {
80
80
  * - claim_and_resolve — claim + resolve in one step
81
81
  * - resolve_escalation — resolve an already-claimed escalation
82
82
  * - resolve_batch_item — submit one declared item of a batch escalation
83
+ * - accumulate_item — add one item to an open accumulator escalation
84
+ * - remove_item — remove one held item from an open accumulator escalation
83
85
  * - escalate_and_wait — create escalation and return signal for durable wait
84
86
  *
85
87
  * The server is created with tools registered but no transport
@@ -299,6 +301,81 @@ async function createHumanQueueServer(options) {
299
301
  }],
300
302
  };
301
303
  });
304
+ // ── accumulate_item ────────────────────────────────────────────────
305
+ server.registerTool('accumulate_item', {
306
+ title: 'Accumulate Item',
307
+ description: 'Add ONE item to an open accumulator escalation (a wait declared with accumulate). '
308
+ + 'Interim adds return outcome "accepted" with the count held and the remaining slots; the add that '
309
+ + 'reaches max completes the escalation and wakes the waiting workflow with the ordered collection. '
310
+ + 'A key already held is rejected. Name a reciprocal to write a second accumulator row (for example '
311
+ + 'the item\'s own escalation) in the same statement, both or neither.',
312
+ inputSchema: human_queue_schemas_1.accumulateItemSchema,
313
+ }, async (args) => {
314
+ if (args.payload) {
315
+ const rejected = await checkResolveToolPayload(args.escalation_id, args.payload);
316
+ if (rejected)
317
+ return rejected;
318
+ }
319
+ const result = await escalationService.accumulateItem(args.escalation_id, {
320
+ itemKey: args.item_key,
321
+ payload: args.payload,
322
+ metadata: { source: 'mcp_server' },
323
+ actor: 'mcp_server',
324
+ reciprocal: args.reciprocal,
325
+ });
326
+ if (result.outcome !== 'accepted' && result.outcome !== 'completed') {
327
+ return {
328
+ content: [{
329
+ type: 'text',
330
+ text: JSON.stringify({ error: `Item not accepted: ${result.outcome}`, outcome: result.outcome }),
331
+ }],
332
+ isError: true,
333
+ };
334
+ }
335
+ return {
336
+ content: [{
337
+ type: 'text',
338
+ text: JSON.stringify({
339
+ escalation_id: args.escalation_id,
340
+ outcome: result.outcome,
341
+ count: result.count,
342
+ remaining: result.remaining,
343
+ status: result.escalation?.status,
344
+ ...(result.reciprocal
345
+ ? { reciprocal: { escalation_id: result.reciprocal.escalation.id, outcome: result.reciprocal.outcome, count: result.reciprocal.count } }
346
+ : {}),
347
+ }),
348
+ }],
349
+ };
350
+ });
351
+ // ── remove_item ────────────────────────────────────────────────────
352
+ server.registerTool('remove_item', {
353
+ title: 'Remove Item',
354
+ description: 'Remove ONE held item from a pending open accumulator escalation. The row stays pending and the '
355
+ + 'waiting workflow is never woken. Name a reciprocal to remove the container from that row in the same statement.',
356
+ inputSchema: human_queue_schemas_1.removeItemSchema,
357
+ }, async (args) => {
358
+ const result = await escalationService.removeAccumulatedItem(args.escalation_id, {
359
+ itemKey: args.item_key,
360
+ actor: 'mcp_server',
361
+ reciprocal: args.reciprocal,
362
+ });
363
+ if (result.outcome !== 'removed') {
364
+ return {
365
+ content: [{
366
+ type: 'text',
367
+ text: JSON.stringify({ error: `Item not removed: ${result.outcome}`, outcome: result.outcome }),
368
+ }],
369
+ isError: true,
370
+ };
371
+ }
372
+ return {
373
+ content: [{
374
+ type: 'text',
375
+ text: JSON.stringify({ escalation_id: args.escalation_id, outcome: 'removed', count: result.count }),
376
+ }],
377
+ };
378
+ });
302
379
  // ── escalate_and_wait ──────────────────────────────────────────────
303
380
  server.registerTool('escalate_and_wait', {
304
381
  title: 'Escalate and Wait',