@hotmeshio/long-tail 0.20.0 → 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 (351) 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/index.js +60 -0
  12. package/build/lib/db/schemas/036_role_portals.sql +12 -0
  13. package/build/routes/escalations/accumulate.d.ts +7 -0
  14. package/build/routes/escalations/accumulate.js +150 -0
  15. package/build/routes/escalations/index.js +5 -0
  16. package/build/sdk/index.d.ts +25 -0
  17. package/build/sdk/index.js +8 -0
  18. package/build/services/escalation/accumulate.d.ts +81 -0
  19. package/build/services/escalation/accumulate.js +154 -0
  20. package/build/services/escalation/index.d.ts +1 -0
  21. package/build/services/escalation/index.js +1 -0
  22. package/build/services/mcp/playwright-server/schemas.d.ts +2 -2
  23. package/build/services/orchestrator/condition.d.ts +40 -3
  24. package/build/services/orchestrator/condition.js +42 -2
  25. package/build/services/role/index.js +1 -0
  26. package/build/services/role/seed.js +6 -1
  27. package/build/services/role/sql.d.ts +6 -3
  28. package/build/services/role/sql.js +7 -2
  29. package/build/services/role/types.d.ts +38 -10
  30. package/build/services/role/types.js +10 -1
  31. package/build/services/scan-code/validate.js +16 -0
  32. package/build/shared/form-validation/display-only-widgets.d.ts +16 -0
  33. package/build/shared/form-validation/display-only-widgets.js +25 -0
  34. package/build/shared/form-validation/index.d.ts +2 -0
  35. package/build/shared/form-validation/index.js +2 -0
  36. package/build/shared/form-validation/x-lt-bind.d.ts +2 -14
  37. package/build/shared/form-validation/x-lt-bind.js +12 -8
  38. package/build/shared/form-validation/x-lt-invoke.d.ts +38 -0
  39. package/build/shared/form-validation/x-lt-invoke.js +103 -0
  40. package/build/system/mcp-servers/admin/escalations.js +39 -0
  41. package/build/system/mcp-servers/admin/schemas.d.ts +192 -13
  42. package/build/system/mcp-servers/admin/schemas.js +39 -3
  43. package/build/system/mcp-servers/admin/users.js +1 -0
  44. package/build/system/mcp-servers/docs.js +4 -0
  45. package/build/system/mcp-servers/human-queue-schemas.d.ts +85 -0
  46. package/build/system/mcp-servers/human-queue-schemas.js +19 -1
  47. package/build/system/mcp-servers/human-queue.d.ts +2 -0
  48. package/build/system/mcp-servers/human-queue.js +77 -0
  49. package/build/system/seed/tool-manifests-admin.d.ts +922 -103
  50. package/build/system/seed/tool-manifests-admin.js +4 -1
  51. package/build/system/seed/tool-manifests-escalation.d.ts +174 -0
  52. package/build/system/seed/tool-manifests-escalation.js +56 -0
  53. package/build/tsconfig.tsbuildinfo +1 -1
  54. package/build/types/escalation.d.ts +52 -0
  55. package/build/types/escalation.js +29 -1
  56. package/build/types/index.d.ts +2 -2
  57. package/build/types/index.js +3 -1
  58. package/build/types/scan-code.d.ts +24 -0
  59. package/build/types/scan-code.js +9 -0
  60. package/build/types/startup.d.ts +20 -0
  61. package/dashboard/dist/assets/{AdminDashboard-DplvDBti.js → AdminDashboard-uarpHB88.js} +2 -2
  62. package/dashboard/dist/assets/{AdminDashboard-DplvDBti.js.map → AdminDashboard-uarpHB88.js.map} +1 -1
  63. package/dashboard/dist/assets/{AgentConfigPage-D8Bf6YxO.js → AgentConfigPage-BcUaDD5E.js} +6 -6
  64. package/dashboard/dist/assets/{AgentConfigPage-D8Bf6YxO.js.map → AgentConfigPage-BcUaDD5E.js.map} +1 -1
  65. package/dashboard/dist/assets/{AgentDetailPage-BN8g0Y2G.js → AgentDetailPage-BaZBhK6i.js} +3 -3
  66. package/dashboard/dist/assets/{AgentDetailPage-BN8g0Y2G.js.map → AgentDetailPage-BaZBhK6i.js.map} +1 -1
  67. package/dashboard/dist/assets/AgentsPage-CuVFSDc4.js +2 -0
  68. package/dashboard/dist/assets/{AgentsPage-7JJBHku8.js.map → AgentsPage-CuVFSDc4.js.map} +1 -1
  69. package/dashboard/dist/assets/AvailableEscalationsPage-iO5NyyIK.js +2 -0
  70. package/dashboard/dist/assets/AvailableEscalationsPage-iO5NyyIK.js.map +1 -0
  71. package/dashboard/dist/assets/{BotPicker-CGCnIz8I.js → BotPicker-CClMby6B.js} +2 -2
  72. package/dashboard/dist/assets/{BotPicker-CGCnIz8I.js.map → BotPicker-CClMby6B.js.map} +1 -1
  73. package/dashboard/dist/assets/BulkAssignModal-BL8FRgkN.js +2 -0
  74. package/dashboard/dist/assets/{BulkAssignModal-NJBcoj-f.js.map → BulkAssignModal-BL8FRgkN.js.map} +1 -1
  75. package/dashboard/dist/assets/CapabilitiesPage-D53ogPor.js +2 -0
  76. package/dashboard/dist/assets/{CapabilitiesPage-F8dpNn9B.js.map → CapabilitiesPage-D53ogPor.js.map} +1 -1
  77. package/dashboard/dist/assets/{CollapsibleSection-BZW6VpCU.js → CollapsibleSection-ow8jpbtD.js} +2 -2
  78. package/dashboard/dist/assets/{CollapsibleSection-BZW6VpCU.js.map → CollapsibleSection-ow8jpbtD.js.map} +1 -1
  79. package/dashboard/dist/assets/{ConfirmDeleteModal-64adXLdq.js → ConfirmDeleteModal-CeEDt9iJ.js} +2 -2
  80. package/dashboard/dist/assets/{ConfirmDeleteModal-64adXLdq.js.map → ConfirmDeleteModal-CeEDt9iJ.js.map} +1 -1
  81. package/dashboard/dist/assets/{CountdownTimer-BxDub9d2.js → CountdownTimer-CSqyZMCG.js} +2 -2
  82. package/dashboard/dist/assets/{CountdownTimer-BxDub9d2.js.map → CountdownTimer-CSqyZMCG.js.map} +1 -1
  83. package/dashboard/dist/assets/{CredentialsPage-CnLzopLL.js → CredentialsPage-Dx7SxA23.js} +2 -2
  84. package/dashboard/dist/assets/{CredentialsPage-CnLzopLL.js.map → CredentialsPage-Dx7SxA23.js.map} +1 -1
  85. package/dashboard/dist/assets/{CronLabel-CAD5UYDT.js → CronLabel-LYPxpvNN.js} +2 -2
  86. package/dashboard/dist/assets/{CronLabel-CAD5UYDT.js.map → CronLabel-LYPxpvNN.js.map} +1 -1
  87. package/dashboard/dist/assets/DataTable-spX1dFyb.js +2 -0
  88. package/dashboard/dist/assets/DataTable-spX1dFyb.js.map +1 -0
  89. package/dashboard/dist/assets/{DropZone-XlcY8hEH.js → DropZone-f1o-GLM8.js} +2 -2
  90. package/dashboard/dist/assets/{DropZone-XlcY8hEH.js.map → DropZone-f1o-GLM8.js.map} +1 -1
  91. package/dashboard/dist/assets/{ElapsedCell-CwO4ufd0.js → ElapsedCell-BZJTSm9N.js} +2 -2
  92. package/dashboard/dist/assets/{ElapsedCell-CwO4ufd0.js.map → ElapsedCell-BZJTSm9N.js.map} +1 -1
  93. package/dashboard/dist/assets/EntityTimelinePanel-0wIIW2en.js +2 -0
  94. package/dashboard/dist/assets/{EntityTimelinePanel-CkF-oW-m.js.map → EntityTimelinePanel-0wIIW2en.js.map} +1 -1
  95. package/dashboard/dist/assets/{EscalationListSchemaPage-h9JO_q5f.js → EscalationListSchemaPage-CoYvtMzj.js} +3 -3
  96. package/dashboard/dist/assets/{EscalationListSchemaPage-h9JO_q5f.js.map → EscalationListSchemaPage-CoYvtMzj.js.map} +1 -1
  97. package/dashboard/dist/assets/EscalationListView-DWFHPufv.js +2 -0
  98. package/dashboard/dist/assets/EscalationListView-DWFHPufv.js.map +1 -0
  99. package/dashboard/dist/assets/{EscalationSchemaPage-mJFL5_Se.js → EscalationSchemaPage-C9Xu_A25.js} +3 -3
  100. package/dashboard/dist/assets/{EscalationSchemaPage-mJFL5_Se.js.map → EscalationSchemaPage-C9Xu_A25.js.map} +1 -1
  101. package/dashboard/dist/assets/EscalationTimeline-D8W2LNNk.js +2 -0
  102. package/dashboard/dist/assets/EscalationTimeline-D8W2LNNk.js.map +1 -0
  103. package/dashboard/dist/assets/EscalationTitleSelect-DLK8NWMp.js +2 -0
  104. package/dashboard/dist/assets/EscalationTitleSelect-DLK8NWMp.js.map +1 -0
  105. package/dashboard/dist/assets/{EscalationsOverview-DlXUFqWJ.js → EscalationsOverview-CW57FaP9.js} +2 -2
  106. package/dashboard/dist/assets/{EscalationsOverview-DlXUFqWJ.js.map → EscalationsOverview-CW57FaP9.js.map} +1 -1
  107. package/dashboard/dist/assets/{EventTable-Ike2xchn.js → EventTable-D1ctWhKf.js} +2 -2
  108. package/dashboard/dist/assets/{EventTable-Ike2xchn.js.map → EventTable-D1ctWhKf.js.map} +1 -1
  109. package/dashboard/dist/assets/{FilterBar-DMOR-O1c.js → FilterBar-C-iur-Nj.js} +2 -2
  110. package/dashboard/dist/assets/{FilterBar-DMOR-O1c.js.map → FilterBar-C-iur-Nj.js.map} +1 -1
  111. package/dashboard/dist/assets/GraphInvokePage-CcA_44M4.js +2 -0
  112. package/dashboard/dist/assets/{GraphInvokePage-CKtvWowP.js.map → GraphInvokePage-CcA_44M4.js.map} +1 -1
  113. package/dashboard/dist/assets/HomePage-Dc085ghJ.js +2 -0
  114. package/dashboard/dist/assets/{HomePage-BQ3Q791Q.js.map → HomePage-Dc085ghJ.js.map} +1 -1
  115. package/dashboard/dist/assets/ListToolbar-h_ziBt4O.js +2 -0
  116. package/dashboard/dist/assets/{ListToolbar-DdJzj472.js.map → ListToolbar-h_ziBt4O.js.map} +1 -1
  117. package/dashboard/dist/assets/{McpOverview-BbtrduWn.js → McpOverview-qXXhbNWV.js} +2 -2
  118. package/dashboard/dist/assets/{McpOverview-BbtrduWn.js.map → McpOverview-qXXhbNWV.js.map} +1 -1
  119. package/dashboard/dist/assets/{McpQueryDetailPage-C1L4T-Wt.js → McpQueryDetailPage-SEzSbZrd.js} +2 -2
  120. package/dashboard/dist/assets/{McpQueryDetailPage-C1L4T-Wt.js.map → McpQueryDetailPage-SEzSbZrd.js.map} +1 -1
  121. package/dashboard/dist/assets/McpQueryPage-Cy0V0kv9.js +2 -0
  122. package/dashboard/dist/assets/{McpQueryPage-CfJy7HZ7.js.map → McpQueryPage-Cy0V0kv9.js.map} +1 -1
  123. package/dashboard/dist/assets/{McpRunDetailPage-CA9yv7he.js → McpRunDetailPage-DjJO5vSb.js} +2 -2
  124. package/dashboard/dist/assets/{McpRunDetailPage-CA9yv7he.js.map → McpRunDetailPage-DjJO5vSb.js.map} +1 -1
  125. package/dashboard/dist/assets/McpRunsPage-BfjiJ8mM.js +2 -0
  126. package/dashboard/dist/assets/{McpRunsPage-D7QXjW9z.js.map → McpRunsPage-BfjiJ8mM.js.map} +1 -1
  127. package/dashboard/dist/assets/{NamespacePill-Bb3revqD.js → NamespacePill-DADRJOUl.js} +2 -2
  128. package/dashboard/dist/assets/{NamespacePill-Bb3revqD.js.map → NamespacePill-DADRJOUl.js.map} +1 -1
  129. package/dashboard/dist/assets/OperationsPage-dJcER0T_.js +3 -0
  130. package/dashboard/dist/assets/OperationsPage-dJcER0T_.js.map +1 -0
  131. package/dashboard/dist/assets/OperatorDashboard-zCkW4eqk.js +2 -0
  132. package/dashboard/dist/assets/{OperatorDashboard-sXNDh1Ph.js.map → OperatorDashboard-zCkW4eqk.js.map} +1 -1
  133. package/dashboard/dist/assets/{PageHeader-Di5Sz3an.js → PageHeader-Csq434-v.js} +2 -2
  134. package/dashboard/dist/assets/{PageHeader-Di5Sz3an.js.map → PageHeader-Csq434-v.js.map} +1 -1
  135. package/dashboard/dist/assets/{PageHeaderWithStats-DutKJ-h2.js → PageHeaderWithStats-CSnk1p5A.js} +2 -2
  136. package/dashboard/dist/assets/{PageHeaderWithStats-DutKJ-h2.js.map → PageHeaderWithStats-CSnk1p5A.js.map} +1 -1
  137. package/dashboard/dist/assets/{PersonaDetailPage-NeHD-Gra.js → PersonaDetailPage-Cx6L3Jvu.js} +2 -2
  138. package/dashboard/dist/assets/{PersonaDetailPage-NeHD-Gra.js.map → PersonaDetailPage-Cx6L3Jvu.js.map} +1 -1
  139. package/dashboard/dist/assets/{PersonasPage-DavKXRWX.js → PersonasPage-DOgGUlJl.js} +2 -2
  140. package/dashboard/dist/assets/{PersonasPage-DavKXRWX.js.map → PersonasPage-DOgGUlJl.js.map} +1 -1
  141. package/dashboard/dist/assets/PortalPage-BKuL1BeJ.js +2 -0
  142. package/dashboard/dist/assets/PortalPage-BKuL1BeJ.js.map +1 -0
  143. package/dashboard/dist/assets/{ProcessDetailPage-DkdKJGe6.js → ProcessDetailPage-BFcFSDUv.js} +2 -2
  144. package/dashboard/dist/assets/{ProcessDetailPage-DkdKJGe6.js.map → ProcessDetailPage-BFcFSDUv.js.map} +1 -1
  145. package/dashboard/dist/assets/ProcessesListPage-BaHV2cXp.js +2 -0
  146. package/dashboard/dist/assets/{ProcessesListPage-CjwVKe32.js.map → ProcessesListPage-BaHV2cXp.js.map} +1 -1
  147. package/dashboard/dist/assets/ResolverForm-Bgc0Zrya.js +7 -0
  148. package/dashboard/dist/assets/ResolverForm-Bgc0Zrya.js.map +1 -0
  149. package/dashboard/dist/assets/RoleDetailPage-BPY6i3CU.js +8 -0
  150. package/dashboard/dist/assets/RoleDetailPage-BPY6i3CU.js.map +1 -0
  151. package/dashboard/dist/assets/{RolePill-DhnVPK4q.js → RolePill-BafrASDX.js} +2 -2
  152. package/dashboard/dist/assets/{RolePill-DhnVPK4q.js.map → RolePill-BafrASDX.js.map} +1 -1
  153. package/dashboard/dist/assets/{RolesPage-OM9KM8Pg.js → RolesPage-DSqqKPbv.js} +2 -2
  154. package/dashboard/dist/assets/{RolesPage-OM9KM8Pg.js.map → RolesPage-DSqqKPbv.js.map} +1 -1
  155. package/dashboard/dist/assets/RunAsSelector-B29iWwel.js +2 -0
  156. package/dashboard/dist/assets/{RunAsSelector-fFMt1bGe.js.map → RunAsSelector-B29iWwel.js.map} +1 -1
  157. package/dashboard/dist/assets/{ScanCodesPage-AujH-pPQ.js → ScanCodesPage-S8aAJfnC.js} +2 -2
  158. package/dashboard/dist/assets/{ScanCodesPage-AujH-pPQ.js.map → ScanCodesPage-S8aAJfnC.js.map} +1 -1
  159. package/dashboard/dist/assets/{ScanSchemeDetailPage-eKQpmsC_.js → ScanSchemeDetailPage-CUBRAtmJ.js} +2 -2
  160. package/dashboard/dist/assets/{ScanSchemeDetailPage-eKQpmsC_.js.map → ScanSchemeDetailPage-CUBRAtmJ.js.map} +1 -1
  161. package/dashboard/dist/assets/ScanStationPage-R9t1-CeQ.js +2 -0
  162. package/dashboard/dist/assets/{ScanStationPage-C1_ppDoZ.js.map → ScanStationPage-R9t1-CeQ.js.map} +1 -1
  163. package/dashboard/dist/assets/{ScopeBadge-CXUg0FHo.js → ScopeBadge-b6MIBiYD.js} +2 -2
  164. package/dashboard/dist/assets/{ScopeBadge-CXUg0FHo.js.map → ScopeBadge-b6MIBiYD.js.map} +1 -1
  165. package/dashboard/dist/assets/{StickyPagination-B91Pk9xh.js → StickyPagination-CkW_A507.js} +2 -2
  166. package/dashboard/dist/assets/{StickyPagination-B91Pk9xh.js.map → StickyPagination-CkW_A507.js.map} +1 -1
  167. package/dashboard/dist/assets/{StreamMessageDetail-C7SPqaJt.js → StreamMessageDetail-yzWX0wac.js} +2 -2
  168. package/dashboard/dist/assets/{StreamMessageDetail-C7SPqaJt.js.map → StreamMessageDetail-yzWX0wac.js.map} +1 -1
  169. package/dashboard/dist/assets/{SwimlaneTimeline-BcHR8ylf.js → SwimlaneTimeline-Cf4DXFxj.js} +2 -2
  170. package/dashboard/dist/assets/{SwimlaneTimeline-BcHR8ylf.js.map → SwimlaneTimeline-Cf4DXFxj.js.map} +1 -1
  171. package/dashboard/dist/assets/{TagInput-BZ8vb2oW.js → TagInput-ZrIIrEUP.js} +2 -2
  172. package/dashboard/dist/assets/{TagInput-BZ8vb2oW.js.map → TagInput-ZrIIrEUP.js.map} +1 -1
  173. package/dashboard/dist/assets/{TaskDetailPage-Bqj0I_I0.js → TaskDetailPage-DCDcEps9.js} +2 -2
  174. package/dashboard/dist/assets/{TaskDetailPage-Bqj0I_I0.js.map → TaskDetailPage-DCDcEps9.js.map} +1 -1
  175. package/dashboard/dist/assets/{TaskQueuePill-Bxir8WRl.js → TaskQueuePill-DkQ1uc6y.js} +2 -2
  176. package/dashboard/dist/assets/{TaskQueuePill-Bxir8WRl.js.map → TaskQueuePill-DkQ1uc6y.js.map} +1 -1
  177. package/dashboard/dist/assets/TasksListPage-BBATgpf7.js +2 -0
  178. package/dashboard/dist/assets/{TasksListPage-BB1f79lL.js.map → TasksListPage-BBATgpf7.js.map} +1 -1
  179. package/dashboard/dist/assets/{TimeAgo-BFnODmNe.js → TimeAgo-CSNVEjch.js} +2 -2
  180. package/dashboard/dist/assets/{TimeAgo-BFnODmNe.js.map → TimeAgo-CSNVEjch.js.map} +1 -1
  181. package/dashboard/dist/assets/{TimestampCell-BXgLOBsr.js → TimestampCell-Du1nBrPn.js} +2 -2
  182. package/dashboard/dist/assets/{TimestampCell-BXgLOBsr.js.map → TimestampCell-Du1nBrPn.js.map} +1 -1
  183. package/dashboard/dist/assets/{ToolPill-FkgTXIhq.js → ToolPill-Baxm02L6.js} +2 -2
  184. package/dashboard/dist/assets/{ToolPill-FkgTXIhq.js.map → ToolPill-Baxm02L6.js.map} +1 -1
  185. package/dashboard/dist/assets/ToolTestPanel-CF-h_5Rg.js +2 -0
  186. package/dashboard/dist/assets/{ToolTestPanel-Bwe3J5lj.js.map → ToolTestPanel-CF-h_5Rg.js.map} +1 -1
  187. package/dashboard/dist/assets/{TopicDetailPage-DAF07vZ9.js → TopicDetailPage-Dr1UmWcp.js} +3 -3
  188. package/dashboard/dist/assets/{TopicDetailPage-DAF07vZ9.js.map → TopicDetailPage-Dr1UmWcp.js.map} +1 -1
  189. package/dashboard/dist/assets/TopicsPage-CUUo-Ylf.js +2 -0
  190. package/dashboard/dist/assets/{TopicsPage-C1gxBUap.js.map → TopicsPage-CUUo-Ylf.js.map} +1 -1
  191. package/dashboard/dist/assets/{UserName-BzXJUE6q.js → UserName-kBh1dc39.js} +2 -2
  192. package/dashboard/dist/assets/{UserName-BzXJUE6q.js.map → UserName-kBh1dc39.js.map} +1 -1
  193. package/dashboard/dist/assets/{WorkflowExecutionPage-SkRU5cRX.js → WorkflowExecutionPage-CCRSbnDx.js} +2 -2
  194. package/dashboard/dist/assets/{WorkflowExecutionPage-SkRU5cRX.js.map → WorkflowExecutionPage-CCRSbnDx.js.map} +1 -1
  195. package/dashboard/dist/assets/{WorkflowPill--AYMW7u_.js → WorkflowPill-ZepbO_ny.js} +2 -2
  196. package/dashboard/dist/assets/{WorkflowPill--AYMW7u_.js.map → WorkflowPill-ZepbO_ny.js.map} +1 -1
  197. package/dashboard/dist/assets/WorkflowsDashboard-BNQVvyek.js +2 -0
  198. package/dashboard/dist/assets/{WorkflowsDashboard-CZAqRk1N.js.map → WorkflowsDashboard-BNQVvyek.js.map} +1 -1
  199. package/dashboard/dist/assets/{WorkflowsOverview-BoN44VTE.js → WorkflowsOverview-DswubNJN.js} +2 -2
  200. package/dashboard/dist/assets/{WorkflowsOverview-BoN44VTE.js.map → WorkflowsOverview-DswubNJN.js.map} +1 -1
  201. package/dashboard/dist/assets/{YamlWorkflowDetailPage-CqjhtdJf.js → YamlWorkflowDetailPage-Cw9Dlmup.js} +11 -11
  202. package/dashboard/dist/assets/{YamlWorkflowDetailPage-CqjhtdJf.js.map → YamlWorkflowDetailPage-Cw9Dlmup.js.map} +1 -1
  203. package/dashboard/dist/assets/{YamlWorkflowsPage-CwnJkzyb.js → YamlWorkflowsPage-DB8xnIXy.js} +2 -2
  204. package/dashboard/dist/assets/{YamlWorkflowsPage-CwnJkzyb.js.map → YamlWorkflowsPage-DB8xnIXy.js.map} +1 -1
  205. package/dashboard/dist/assets/{agents-gV0Ys-sY.js → agents-BwEnf6N9.js} +2 -2
  206. package/dashboard/dist/assets/{agents-gV0Ys-sY.js.map → agents-BwEnf6N9.js.map} +1 -1
  207. package/dashboard/dist/assets/{bots-B97itB3I.js → bots-CCmJTT2u.js} +2 -2
  208. package/dashboard/dist/assets/{bots-B97itB3I.js.map → bots-CCmJTT2u.js.map} +1 -1
  209. package/dashboard/dist/assets/{capabilities-CR9xZgGd.js → capabilities-BZHgp_nh.js} +2 -2
  210. package/dashboard/dist/assets/{capabilities-CR9xZgGd.js.map → capabilities-BZHgp_nh.js.map} +1 -1
  211. package/dashboard/dist/assets/{constants-BHkpVaqx.js → constants-CeBBTzf5.js} +2 -2
  212. package/dashboard/dist/assets/{constants-BHkpVaqx.js.map → constants-CeBBTzf5.js.map} +1 -1
  213. package/dashboard/dist/assets/{controlplane-YxvP1KCa.js → controlplane-CyfwUlFA.js} +2 -2
  214. package/dashboard/dist/assets/{controlplane-YxvP1KCa.js.map → controlplane-CyfwUlFA.js.map} +1 -1
  215. package/dashboard/dist/assets/escalation-columns-BJPTNmLW.js +2 -0
  216. package/dashboard/dist/assets/escalation-columns-BJPTNmLW.js.map +1 -0
  217. package/dashboard/dist/assets/index-3gbd5neL.js +67 -0
  218. package/dashboard/dist/assets/index-3gbd5neL.js.map +1 -0
  219. package/dashboard/dist/assets/index-BAAVTyZ-.js +2 -0
  220. package/dashboard/dist/assets/{index-BQpV-DTG.js.map → index-BAAVTyZ-.js.map} +1 -1
  221. package/dashboard/dist/assets/{index-B9BBCqLI.js → index-BC6Jenlo.js} +2 -2
  222. package/dashboard/dist/assets/{index-B9BBCqLI.js.map → index-BC6Jenlo.js.map} +1 -1
  223. package/dashboard/dist/assets/index-C7KHqOTQ.js +2 -0
  224. package/dashboard/dist/assets/{index-Bp9KBLT5.js.map → index-C7KHqOTQ.js.map} +1 -1
  225. package/dashboard/dist/assets/index-CDrqqbSR.js +3 -0
  226. package/dashboard/dist/assets/index-CDrqqbSR.js.map +1 -0
  227. package/dashboard/dist/assets/index-CVwzCZ43.js +2 -0
  228. package/dashboard/dist/assets/{index-CFbo9FU9.js.map → index-CVwzCZ43.js.map} +1 -1
  229. package/dashboard/dist/assets/index-CaGF6TCC.js +2 -0
  230. package/dashboard/dist/assets/index-CaGF6TCC.js.map +1 -0
  231. package/dashboard/dist/assets/index-ClVbfe4z.js +13 -0
  232. package/dashboard/dist/assets/{index-Cfvkl2J0.js.map → index-ClVbfe4z.js.map} +1 -1
  233. package/dashboard/dist/assets/{index-DMeaiKgf.js → index-CuVkSmj5.js} +2 -2
  234. package/dashboard/dist/assets/{index-DMeaiKgf.js.map → index-CuVkSmj5.js.map} +1 -1
  235. package/dashboard/dist/assets/{index-ipqwPavs.js → index-DAuX_PlL.js} +2 -2
  236. package/dashboard/dist/assets/{index-ipqwPavs.js.map → index-DAuX_PlL.js.map} +1 -1
  237. package/dashboard/dist/assets/{index-CIpHj4di.js → index-DBWS5QL8.js} +2 -2
  238. package/dashboard/dist/assets/{index-CIpHj4di.js.map → index-DBWS5QL8.js.map} +1 -1
  239. package/dashboard/dist/assets/index-DIWCI6HC.js +2 -0
  240. package/dashboard/dist/assets/{index-CUZ6LYye.js.map → index-DIWCI6HC.js.map} +1 -1
  241. package/dashboard/dist/assets/{index-DwOnWeu8.js → index-DZ8X_Gp4.js} +2 -2
  242. package/dashboard/dist/assets/{index-DwOnWeu8.js.map → index-DZ8X_Gp4.js.map} +1 -1
  243. package/dashboard/dist/assets/index-Dh8MJl3L.css +1 -0
  244. package/dashboard/dist/assets/{knowledge-XX6cW4Ob.js → knowledge-CqyLhUMg.js} +2 -2
  245. package/dashboard/dist/assets/{knowledge-XX6cW4Ob.js.map → knowledge-CqyLhUMg.js.map} +1 -1
  246. package/dashboard/dist/assets/{mcp-CH13hNH2.js → mcp-Cvu6bFYH.js} +2 -2
  247. package/dashboard/dist/assets/{mcp-CH13hNH2.js.map → mcp-Cvu6bFYH.js.map} +1 -1
  248. package/dashboard/dist/assets/{mcp-query-Duydd3JA.js → mcp-query-qC6A3e9l.js} +2 -2
  249. package/dashboard/dist/assets/{mcp-query-Duydd3JA.js.map → mcp-query-qC6A3e9l.js.map} +1 -1
  250. package/dashboard/dist/assets/metadata-display-COo3mMCr.js +2 -0
  251. package/dashboard/dist/assets/metadata-display-COo3mMCr.js.map +1 -0
  252. package/dashboard/dist/assets/{personas-mDk4lLQS.js → personas-BKN_lJuV.js} +2 -2
  253. package/dashboard/dist/assets/{personas-mDk4lLQS.js.map → personas-BKN_lJuV.js.map} +1 -1
  254. package/dashboard/dist/assets/{pipelines-B5GcgCeF.js → pipelines-BldIfv85.js} +2 -2
  255. package/dashboard/dist/assets/{pipelines-B5GcgCeF.js.map → pipelines-BldIfv85.js.map} +1 -1
  256. package/dashboard/dist/assets/{tasks-CItmNsRp.js → tasks-B-Uay8uL.js} +2 -2
  257. package/dashboard/dist/assets/{tasks-CItmNsRp.js.map → tasks-B-Uay8uL.js.map} +1 -1
  258. package/dashboard/dist/assets/{topics-CJYG7BX5.js → topics-438EQogt.js} +2 -2
  259. package/dashboard/dist/assets/{topics-CJYG7BX5.js.map → topics-438EQogt.js.map} +1 -1
  260. package/dashboard/dist/assets/useContainerWidth-DSLp1gEm.js +2 -0
  261. package/dashboard/dist/assets/useContainerWidth-DSLp1gEm.js.map +1 -0
  262. package/dashboard/dist/assets/{useDebouncedValue-BrwgXcp8.js → useDebouncedValue-Cw8hYZ8y.js} +2 -2
  263. package/dashboard/dist/assets/{useDebouncedValue-BrwgXcp8.js.map → useDebouncedValue-Cw8hYZ8y.js.map} +1 -1
  264. package/dashboard/dist/assets/{useNamespace-CHty0HAS.js → useNamespace-D1218GQ8.js} +2 -2
  265. package/dashboard/dist/assets/{useNamespace-CHty0HAS.js.map → useNamespace-D1218GQ8.js.map} +1 -1
  266. package/dashboard/dist/assets/{useYamlActivityEvents-CoTsia7t.js → useYamlActivityEvents-BAQf_y_U.js} +2 -2
  267. package/dashboard/dist/assets/{useYamlActivityEvents-CoTsia7t.js.map → useYamlActivityEvents-BAQf_y_U.js.map} +1 -1
  268. package/dashboard/dist/assets/{vendor-icons-DeBdvyKJ.js → vendor-icons-B7OcUM6b.js} +2 -2
  269. package/dashboard/dist/assets/{vendor-icons-DeBdvyKJ.js.map → vendor-icons-B7OcUM6b.js.map} +1 -1
  270. package/dashboard/dist/assets/{yaml-workflows-CiWwx5rM.js → yaml-workflows-CN01gEB0.js} +2 -2
  271. package/dashboard/dist/assets/{yaml-workflows-CiWwx5rM.js.map → yaml-workflows-CN01gEB0.js.map} +1 -1
  272. package/dashboard/dist/index.html +3 -3
  273. package/docs/accumulator.md +113 -0
  274. package/docs/api/http/escalations.md +89 -0
  275. package/docs/api/http/roles.md +1 -0
  276. package/docs/api/sdk/escalations.md +91 -0
  277. package/docs/api/sdk/roles.md +2 -0
  278. package/docs/architecture.md +1 -1
  279. package/docs/code-owned-configuration.md +2 -1
  280. package/docs/dashboard.md +10 -4
  281. package/docs/hitl/design.md +1 -1
  282. package/docs/hitl/escalation.md +37 -1
  283. package/docs/hitl/invoke-form.md +4 -0
  284. package/docs/hitl/pinned-views.md +4 -0
  285. package/docs/hitl/portal.md +97 -0
  286. package/docs/hitl/resolution.md +41 -0
  287. package/docs/hitl/x-lt-embed.md +1 -1
  288. package/docs/hitl/x-lt-invoke.md +95 -0
  289. package/docs/hitl/x-lt-list-schema.md +3 -1
  290. package/docs/hitl/x-lt-widget.md +1 -0
  291. package/docs/hitl-guide.md +8 -1
  292. package/docs/scan-codes.md +15 -2
  293. package/docs/sdk.md +1 -1
  294. package/docs/workflows.md +2 -2
  295. package/package.json +4 -2
  296. package/dashboard/dist/assets/AgentsPage-7JJBHku8.js +0 -2
  297. package/dashboard/dist/assets/AvailableEscalationsPage-lz5qwSjg.js +0 -2
  298. package/dashboard/dist/assets/AvailableEscalationsPage-lz5qwSjg.js.map +0 -1
  299. package/dashboard/dist/assets/BulkAssignModal-NJBcoj-f.js +0 -2
  300. package/dashboard/dist/assets/CapabilitiesPage-F8dpNn9B.js +0 -2
  301. package/dashboard/dist/assets/DataTable-7C7riavf.js +0 -2
  302. package/dashboard/dist/assets/DataTable-7C7riavf.js.map +0 -1
  303. package/dashboard/dist/assets/EntityTimelinePanel-CkF-oW-m.js +0 -2
  304. package/dashboard/dist/assets/EscalationListView-AHW2xtlr.js +0 -2
  305. package/dashboard/dist/assets/EscalationListView-AHW2xtlr.js.map +0 -1
  306. package/dashboard/dist/assets/GraphInvokePage-CKtvWowP.js +0 -2
  307. package/dashboard/dist/assets/HomePage-BQ3Q791Q.js +0 -2
  308. package/dashboard/dist/assets/ListToolbar-DdJzj472.js +0 -2
  309. package/dashboard/dist/assets/McpQueryPage-CfJy7HZ7.js +0 -2
  310. package/dashboard/dist/assets/McpRunsPage-D7QXjW9z.js +0 -2
  311. package/dashboard/dist/assets/OperationsPage-aLHHAP2X.js +0 -3
  312. package/dashboard/dist/assets/OperationsPage-aLHHAP2X.js.map +0 -1
  313. package/dashboard/dist/assets/OperatorDashboard-sXNDh1Ph.js +0 -2
  314. package/dashboard/dist/assets/ProcessesListPage-CjwVKe32.js +0 -2
  315. package/dashboard/dist/assets/ResolverForm-Bk-wDkN-.js +0 -3
  316. package/dashboard/dist/assets/ResolverForm-Bk-wDkN-.js.map +0 -1
  317. package/dashboard/dist/assets/RoleDetailPage-WQt0y5l7.js +0 -8
  318. package/dashboard/dist/assets/RoleDetailPage-WQt0y5l7.js.map +0 -1
  319. package/dashboard/dist/assets/RunAsSelector-fFMt1bGe.js +0 -2
  320. package/dashboard/dist/assets/ScanStationPage-C1_ppDoZ.js +0 -2
  321. package/dashboard/dist/assets/TasksListPage-BB1f79lL.js +0 -2
  322. package/dashboard/dist/assets/ToolTestPanel-Bwe3J5lj.js +0 -2
  323. package/dashboard/dist/assets/TopicsPage-C1gxBUap.js +0 -2
  324. package/dashboard/dist/assets/WorkflowsDashboard-CZAqRk1N.js +0 -2
  325. package/dashboard/dist/assets/escalation-columns-uq-IV2aj.js +0 -2
  326. package/dashboard/dist/assets/escalation-columns-uq-IV2aj.js.map +0 -1
  327. package/dashboard/dist/assets/index-3ezfWLkE.js +0 -6
  328. package/dashboard/dist/assets/index-3ezfWLkE.js.map +0 -1
  329. package/dashboard/dist/assets/index-BQpV-DTG.js +0 -2
  330. package/dashboard/dist/assets/index-Bp9KBLT5.js +0 -2
  331. package/dashboard/dist/assets/index-Bpvfr4OW.css +0 -1
  332. package/dashboard/dist/assets/index-CFbo9FU9.js +0 -2
  333. package/dashboard/dist/assets/index-CIwlVfvV.js +0 -67
  334. package/dashboard/dist/assets/index-CIwlVfvV.js.map +0 -1
  335. package/dashboard/dist/assets/index-CUZ6LYye.js +0 -2
  336. package/dashboard/dist/assets/index-Cfvkl2J0.js +0 -13
  337. package/dashboard/dist/assets/index-SGyrXGp8.js +0 -3
  338. package/dashboard/dist/assets/index-SGyrXGp8.js.map +0 -1
  339. package/dashboard/dist/assets/invoke-context-DrVyUEfs.js +0 -2
  340. package/dashboard/dist/assets/invoke-context-DrVyUEfs.js.map +0 -1
  341. package/dashboard/dist/assets/metadata-display--TzK0REC.js +0 -2
  342. package/dashboard/dist/assets/metadata-display--TzK0REC.js.map +0 -1
  343. package/dashboard/dist/assets/resolver-payload-m9AGKZ3a.js +0 -2
  344. package/dashboard/dist/assets/resolver-payload-m9AGKZ3a.js.map +0 -1
  345. package/docs/compilation.md +0 -152
  346. package/docs/compiler.md +0 -311
  347. package/docs/contributing.md +0 -56
  348. package/docs/design-principles.md +0 -245
  349. package/docs/schema-exchange.md +0 -173
  350. package/docs/self-test.md +0 -106
  351. package/docs/story.md +0 -184
@@ -1,16 +1,3 @@
1
- /**
2
- * x-lt-bind — maps the escalation FORM (flat field values the user edits) to and
3
- * from the PAYLOAD (the nested JSON the workflow consumes). A form_schema property
4
- * may declare `x-lt-bind: "a.b[0].c"`, the path its value occupies in the payload;
5
- * a property with no bind sits at its own name at the root (1:1). This module is
6
- * isomorphic — the dashboard renders forms with it, and the API layer inverts a
7
- * submitted payload through it to validate against the form contract. One
8
- * implementation, both sides.
9
- *
10
- * mapPayloadToForm — payload → flat form values, to PREFILL/display the form
11
- * (server-side: to validate a submitted payload)
12
- * mapFormToPayload — flat form values → payload, the shape submitted/stored
13
- */
14
1
  type PathSeg = {
15
2
  key: string;
16
3
  } | {
@@ -27,7 +14,8 @@ export declare function bindPathFor(propName: string, propDef: Record<string, an
27
14
  /**
28
15
  * Assemble the payload from the form's flat values. A field absent from
29
16
  * `formValues` is omitted (so clearing/deleting a field drops it from the
30
- * payload). Unknown keys not declared in the schema are dropped. With no schema
17
+ * payload). Unknown keys not declared in the schema are dropped, and so are
18
+ * display-only widget fields, which carry no answer. With no schema
31
19
  * properties, values pass through unchanged.
32
20
  */
33
21
  export declare function mapFormToPayload(formValues: Record<string, any>, formSchema: Record<string, any> | null | undefined): Record<string, any>;
@@ -1,4 +1,11 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parsePath = parsePath;
4
+ exports.setDeep = setDeep;
5
+ exports.getDeep = getDeep;
6
+ exports.bindPathFor = bindPathFor;
7
+ exports.mapFormToPayload = mapFormToPayload;
8
+ exports.mapPayloadToForm = mapPayloadToForm;
2
9
  /**
3
10
  * x-lt-bind — maps the escalation FORM (flat field values the user edits) to and
4
11
  * from the PAYLOAD (the nested JSON the workflow consumes). A form_schema property
@@ -12,13 +19,7 @@
12
19
  * (server-side: to validate a submitted payload)
13
20
  * mapFormToPayload — flat form values → payload, the shape submitted/stored
14
21
  */
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.parsePath = parsePath;
17
- exports.setDeep = setDeep;
18
- exports.getDeep = getDeep;
19
- exports.bindPathFor = bindPathFor;
20
- exports.mapFormToPayload = mapFormToPayload;
21
- exports.mapPayloadToForm = mapPayloadToForm;
22
+ const display_only_widgets_1 = require("./display-only-widgets");
22
23
  const BLOCKED_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
23
24
  /** Parse a bind path — dot keys with optional `[n]` indices. Rejects pollution keys. */
24
25
  function parsePath(path) {
@@ -75,7 +76,8 @@ function bindPathFor(propName, propDef) {
75
76
  /**
76
77
  * Assemble the payload from the form's flat values. A field absent from
77
78
  * `formValues` is omitted (so clearing/deleting a field drops it from the
78
- * payload). Unknown keys not declared in the schema are dropped. With no schema
79
+ * payload). Unknown keys not declared in the schema are dropped, and so are
80
+ * display-only widget fields, which carry no answer. With no schema
79
81
  * properties, values pass through unchanged.
80
82
  */
81
83
  function mapFormToPayload(formValues, formSchema) {
@@ -86,6 +88,8 @@ function mapFormToPayload(formValues, formSchema) {
86
88
  for (const [name, def] of Object.entries(props)) {
87
89
  if (!(name in formValues))
88
90
  continue;
91
+ if ((0, display_only_widgets_1.isDisplayOnlyField)(def))
92
+ continue;
89
93
  setDeep(payload, bindPathFor(name, def), formValues[name]);
90
94
  }
91
95
  return payload;
@@ -0,0 +1,38 @@
1
+ export declare const X_LT_INVOKE = "x-lt-invoke";
2
+ export declare const INVOKE_WIDGET: "invoke";
3
+ export declare const INVOKE_VARIANTS: {
4
+ readonly LINK: "link";
5
+ readonly BUTTON: "button";
6
+ };
7
+ export type InvokeVariant = (typeof INVOKE_VARIANTS)[keyof typeof INVOKE_VARIANTS];
8
+ export interface InvokeConfig {
9
+ /** The workflow_type to start. */
10
+ workflow: string;
11
+ /** Nested invoke `data` template; leaves interpolate against the context. */
12
+ data: Record<string, unknown>;
13
+ /** Extra run metadata template, merged over the workflow's declared metadata. */
14
+ metadata: Record<string, unknown>;
15
+ /** Open the workflow's input form prefilled instead of posting directly. */
16
+ modal: boolean;
17
+ /** Direct mode only: a prompt to confirm before posting; tokens interpolate. */
18
+ confirm: string | null;
19
+ variant: InvokeVariant;
20
+ /** Lead the label with the workflow's registered icon. */
21
+ icon: boolean;
22
+ }
23
+ export interface InvokePayload {
24
+ data: Record<string, unknown>;
25
+ metadata: Record<string, unknown>;
26
+ }
27
+ type Ctx = Record<string, unknown> | null | undefined;
28
+ /** The field's invoke declaration, or null when it names no workflow. */
29
+ export declare function readInvokeConfig(fieldSchema: Record<string, unknown> | null | undefined): InvokeConfig | null;
30
+ /**
31
+ * Resolve one template value against the context, keeping the type of a
32
+ * whole-token leaf. Returns undefined for a token with no value so the
33
+ * caller omits the key.
34
+ */
35
+ export declare function interpolateInvokeValue(value: unknown, ctx: Ctx): unknown;
36
+ /** The invoke payload for one context: `data` and `metadata` fully resolved. */
37
+ export declare function resolveInvokePayload(config: InvokeConfig, ctx: Ctx): InvokePayload;
38
+ export {};
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.INVOKE_VARIANTS = exports.INVOKE_WIDGET = exports.X_LT_INVOKE = void 0;
4
+ exports.readInvokeConfig = readInvokeConfig;
5
+ exports.interpolateInvokeValue = interpolateInvokeValue;
6
+ exports.resolveInvokePayload = resolveInvokePayload;
7
+ /**
8
+ * x-lt-invoke: start a workflow from inside a form. A display-only field
9
+ * declares the target workflow and how the form's context maps into the
10
+ * invoke payload:
11
+ *
12
+ * "x-lt-widget": "invoke",
13
+ * "x-lt-invoke": {
14
+ * "workflow": "printPamphlet",
15
+ * "data": { "order": { "id": "{{metadata.orderId}}" }, "copies": 1 },
16
+ * "metadata": { "escalationId": "{{escalation.id}}" },
17
+ * "modal": true,
18
+ * "confirm": "Print a pamphlet for {{metadata.orderId}}?",
19
+ * "variant": "link",
20
+ * "icon": true
21
+ * }
22
+ *
23
+ * `data` is the nested payload the invoke API receives. In direct mode it is
24
+ * posted as resolved; in modal mode it prefills the workflow's own input form
25
+ * through the x-lt-bind inversion. One declaration serves both.
26
+ *
27
+ * Interpolation keeps types: a leaf that is exactly one `{{domain.path}}`
28
+ * token becomes the raw context value (a number stays a number); a leaf that
29
+ * mixes text and tokens becomes a string; a token with no value drops its key
30
+ * so the target's own defaults apply. Objects and arrays recurse; every other
31
+ * leaf passes through unchanged.
32
+ */
33
+ const display_only_widgets_1 = require("./display-only-widgets");
34
+ const ctx_path_1 = require("./ctx-path");
35
+ exports.X_LT_INVOKE = 'x-lt-invoke';
36
+ exports.INVOKE_WIDGET = display_only_widgets_1.DISPLAY_ONLY_WIDGET_NAMES.INVOKE;
37
+ exports.INVOKE_VARIANTS = {
38
+ LINK: 'link',
39
+ BUTTON: 'button',
40
+ };
41
+ const WHOLE_TOKEN_PATTERN = /^\{\{\s*([^{}]+?)\s*\}\}$/;
42
+ function isPlainObject(value) {
43
+ return !!value && typeof value === 'object' && !Array.isArray(value);
44
+ }
45
+ function isVariant(value) {
46
+ return value === exports.INVOKE_VARIANTS.LINK || value === exports.INVOKE_VARIANTS.BUTTON;
47
+ }
48
+ /** The field's invoke declaration, or null when it names no workflow. */
49
+ function readInvokeConfig(fieldSchema) {
50
+ const raw = fieldSchema?.[exports.X_LT_INVOKE];
51
+ if (!isPlainObject(raw))
52
+ return null;
53
+ const workflow = raw.workflow;
54
+ if (typeof workflow !== 'string' || workflow.trim().length === 0)
55
+ return null;
56
+ const confirm = raw.confirm;
57
+ return {
58
+ workflow: workflow.trim(),
59
+ data: isPlainObject(raw.data) ? raw.data : {},
60
+ metadata: isPlainObject(raw.metadata) ? raw.metadata : {},
61
+ modal: raw.modal === true,
62
+ confirm: typeof confirm === 'string' && confirm.trim().length > 0 ? confirm : null,
63
+ variant: isVariant(raw.variant) ? raw.variant : exports.INVOKE_VARIANTS.LINK,
64
+ icon: raw.icon !== false,
65
+ };
66
+ }
67
+ /**
68
+ * Resolve one template value against the context, keeping the type of a
69
+ * whole-token leaf. Returns undefined for a token with no value so the
70
+ * caller omits the key.
71
+ */
72
+ function interpolateInvokeValue(value, ctx) {
73
+ if (typeof value === 'string') {
74
+ const whole = WHOLE_TOKEN_PATTERN.exec(value);
75
+ if (whole) {
76
+ const resolved = (0, ctx_path_1.resolveCtxPath)(whole[1], ctx ?? undefined);
77
+ return resolved === null ? undefined : resolved;
78
+ }
79
+ if ((0, ctx_path_1.hasInterpolation)(value))
80
+ return (0, ctx_path_1.interpolatePath)(value, ctx ?? undefined) ?? undefined;
81
+ return value;
82
+ }
83
+ if (Array.isArray(value)) {
84
+ return value.map((v) => interpolateInvokeValue(v, ctx)).filter((v) => v !== undefined);
85
+ }
86
+ if (isPlainObject(value)) {
87
+ const out = {};
88
+ for (const [key, v] of Object.entries(value)) {
89
+ const resolved = interpolateInvokeValue(v, ctx);
90
+ if (resolved !== undefined)
91
+ out[key] = resolved;
92
+ }
93
+ return out;
94
+ }
95
+ return value;
96
+ }
97
+ /** The invoke payload for one context: `data` and `metadata` fully resolved. */
98
+ function resolveInvokePayload(config, ctx) {
99
+ return {
100
+ data: interpolateInvokeValue(config.data, ctx),
101
+ metadata: interpolateInvokeValue(config.metadata, ctx),
102
+ };
103
+ }
@@ -218,6 +218,45 @@ function registerEscalationTools(server) {
218
218
  }
219
219
  return { content: [{ type: 'text', text: JSON.stringify(result.data) }] };
220
220
  });
221
+ // mirrors POST /api/escalations/:id/accumulate
222
+ server.registerTool('accumulate_item', {
223
+ title: 'Accumulate Item',
224
+ description: 'Add ONE item to an open accumulator escalation. Interim adds answer outcome "accepted" with the ' +
225
+ 'count held and remaining slots; the add that reaches max completes the row and wakes the waiting ' +
226
+ 'workflow with the ordered collection. A reciprocal row is written in the same statement, both or neither.',
227
+ inputSchema: schemas_1.accumulateItemSchema,
228
+ }, async (args) => {
229
+ const result = await escalationApi.accumulateItem({ id: args.id, itemKey: args.itemKey, payload: args.payload, metadata: args.metadata, reciprocal: args.reciprocal }, await systemAuth());
230
+ if (result.error) {
231
+ return { content: [{ type: 'text', text: JSON.stringify({ error: result.error, ...(result.data ?? {}) }) }], isError: true };
232
+ }
233
+ return { content: [{ type: 'text', text: JSON.stringify(result.data) }] };
234
+ });
235
+ // mirrors POST /api/escalations/:id/remove-item
236
+ server.registerTool('remove_item', {
237
+ title: 'Remove Item',
238
+ description: 'Remove ONE held item from a pending open accumulator escalation. The row stays pending and the ' +
239
+ 'waiting workflow is never woken.',
240
+ inputSchema: schemas_1.removeItemSchema,
241
+ }, async (args) => {
242
+ const result = await escalationApi.removeItem({ id: args.id, itemKey: args.itemKey, reciprocal: args.reciprocal }, await systemAuth());
243
+ if (result.error) {
244
+ return { content: [{ type: 'text', text: JSON.stringify({ error: result.error, ...(result.data ?? {}) }) }], isError: true };
245
+ }
246
+ return { content: [{ type: 'text', text: JSON.stringify(result.data) }] };
247
+ });
248
+ // mirrors GET /api/escalations/:id/items
249
+ server.registerTool('get_escalation_items', {
250
+ title: 'Get Escalation Items',
251
+ description: 'The held items of an accumulator or batch escalation in arrival order, with the count and max.',
252
+ inputSchema: schemas_1.getEscalationItemsSchema,
253
+ }, async (args) => {
254
+ const result = await escalationApi.getEscalationItems({ id: args.id }, await systemAuth());
255
+ if (result.error) {
256
+ return { content: [{ type: 'text', text: JSON.stringify({ error: result.error }) }], isError: true };
257
+ }
258
+ return { content: [{ type: 'text', text: JSON.stringify(result.data) }] };
259
+ });
221
260
  // mirrors POST /api/escalations/resolve-by-signal-key
222
261
  server.registerTool('resolve_by_signal_key', {
223
262
  title: 'Resolve by Signal Key',
@@ -195,6 +195,101 @@ export declare const resolveBySignalKeySchema: z.ZodObject<{
195
195
  signalKey: string;
196
196
  resolverPayload: Record<string, any>;
197
197
  }>;
198
+ export declare const accumulateItemSchema: z.ZodObject<{
199
+ id: z.ZodString;
200
+ itemKey: z.ZodString;
201
+ payload: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
202
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
203
+ reciprocal: z.ZodOptional<z.ZodObject<{
204
+ id: z.ZodOptional<z.ZodString>;
205
+ signalKey: z.ZodOptional<z.ZodString>;
206
+ key: z.ZodOptional<z.ZodString>;
207
+ value: z.ZodOptional<z.ZodString>;
208
+ payload: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
209
+ }, "strip", z.ZodTypeAny, {
210
+ key?: string | undefined;
211
+ value?: string | undefined;
212
+ id?: string | undefined;
213
+ signalKey?: string | undefined;
214
+ payload?: Record<string, any> | undefined;
215
+ }, {
216
+ key?: string | undefined;
217
+ value?: string | undefined;
218
+ id?: string | undefined;
219
+ signalKey?: string | undefined;
220
+ payload?: Record<string, any> | undefined;
221
+ }>>;
222
+ }, "strip", z.ZodTypeAny, {
223
+ id: string;
224
+ itemKey: string;
225
+ metadata?: Record<string, any> | undefined;
226
+ payload?: Record<string, any> | undefined;
227
+ reciprocal?: {
228
+ key?: string | undefined;
229
+ value?: string | undefined;
230
+ id?: string | undefined;
231
+ signalKey?: string | undefined;
232
+ payload?: Record<string, any> | undefined;
233
+ } | undefined;
234
+ }, {
235
+ id: string;
236
+ itemKey: string;
237
+ metadata?: Record<string, any> | undefined;
238
+ payload?: Record<string, any> | undefined;
239
+ reciprocal?: {
240
+ key?: string | undefined;
241
+ value?: string | undefined;
242
+ id?: string | undefined;
243
+ signalKey?: string | undefined;
244
+ payload?: Record<string, any> | undefined;
245
+ } | undefined;
246
+ }>;
247
+ export declare const removeItemSchema: z.ZodObject<{
248
+ id: z.ZodString;
249
+ itemKey: z.ZodString;
250
+ reciprocal: z.ZodOptional<z.ZodObject<Omit<{
251
+ id: z.ZodOptional<z.ZodString>;
252
+ signalKey: z.ZodOptional<z.ZodString>;
253
+ key: z.ZodOptional<z.ZodString>;
254
+ value: z.ZodOptional<z.ZodString>;
255
+ payload: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
256
+ }, "payload">, "strip", z.ZodTypeAny, {
257
+ key?: string | undefined;
258
+ value?: string | undefined;
259
+ id?: string | undefined;
260
+ signalKey?: string | undefined;
261
+ }, {
262
+ key?: string | undefined;
263
+ value?: string | undefined;
264
+ id?: string | undefined;
265
+ signalKey?: string | undefined;
266
+ }>>;
267
+ }, "strip", z.ZodTypeAny, {
268
+ id: string;
269
+ itemKey: string;
270
+ reciprocal?: {
271
+ key?: string | undefined;
272
+ value?: string | undefined;
273
+ id?: string | undefined;
274
+ signalKey?: string | undefined;
275
+ } | undefined;
276
+ }, {
277
+ id: string;
278
+ itemKey: string;
279
+ reciprocal?: {
280
+ key?: string | undefined;
281
+ value?: string | undefined;
282
+ id?: string | undefined;
283
+ signalKey?: string | undefined;
284
+ } | undefined;
285
+ }>;
286
+ export declare const getEscalationItemsSchema: z.ZodObject<{
287
+ id: z.ZodString;
288
+ }, "strip", z.ZodTypeAny, {
289
+ id: string;
290
+ }, {
291
+ id: string;
292
+ }>;
198
293
  export declare const escalateEscalationSchema: z.ZodObject<{
199
294
  id: z.ZodString;
200
295
  targetRole: z.ZodString;
@@ -509,8 +604,8 @@ export declare const invokeYamlWorkflowSchema: z.ZodObject<{
509
604
  timeout?: number | undefined;
510
605
  }, {
511
606
  id: string;
512
- data?: Record<string, any> | undefined;
513
607
  timeout?: number | undefined;
608
+ data?: Record<string, any> | undefined;
514
609
  sync?: boolean | undefined;
515
610
  }>;
516
611
  export declare const listUsersSchema: z.ZodObject<{
@@ -666,6 +761,62 @@ export declare const updateRoleSchema: z.ZodObject<{
666
761
  label: string;
667
762
  badge?: boolean | undefined;
668
763
  }>, "many">>>;
764
+ portals: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
765
+ key: z.ZodString;
766
+ label: z.ZodString;
767
+ rows: z.ZodArray<z.ZodArray<z.ZodObject<{
768
+ label: z.ZodString;
769
+ url: z.ZodString;
770
+ badge: z.ZodOptional<z.ZodBoolean>;
771
+ }, "strip", z.ZodTypeAny, {
772
+ url: string;
773
+ label: string;
774
+ badge?: boolean | undefined;
775
+ }, {
776
+ url: string;
777
+ label: string;
778
+ badge?: boolean | undefined;
779
+ }>, "many">, "many">;
780
+ counts: z.ZodOptional<z.ZodArray<z.ZodObject<{
781
+ label: z.ZodString;
782
+ url: z.ZodString;
783
+ blurb: z.ZodOptional<z.ZodString>;
784
+ }, "strip", z.ZodTypeAny, {
785
+ url: string;
786
+ label: string;
787
+ blurb?: string | undefined;
788
+ }, {
789
+ url: string;
790
+ label: string;
791
+ blurb?: string | undefined;
792
+ }>, "many">>;
793
+ }, "strip", z.ZodTypeAny, {
794
+ key: string;
795
+ rows: {
796
+ url: string;
797
+ label: string;
798
+ badge?: boolean | undefined;
799
+ }[][];
800
+ label: string;
801
+ counts?: {
802
+ url: string;
803
+ label: string;
804
+ blurb?: string | undefined;
805
+ }[] | undefined;
806
+ }, {
807
+ key: string;
808
+ rows: {
809
+ url: string;
810
+ label: string;
811
+ badge?: boolean | undefined;
812
+ }[][];
813
+ label: string;
814
+ counts?: {
815
+ url: string;
816
+ label: string;
817
+ blurb?: string | undefined;
818
+ }[] | undefined;
819
+ }>, "many">>>;
669
820
  change_summary: z.ZodOptional<z.ZodString>;
670
821
  }, "strip", z.ZodTypeAny, {
671
822
  role: string;
@@ -680,6 +831,20 @@ export declare const updateRoleSchema: z.ZodObject<{
680
831
  label: string;
681
832
  badge?: boolean | undefined;
682
833
  }[] | null | undefined;
834
+ portals?: {
835
+ key: string;
836
+ rows: {
837
+ url: string;
838
+ label: string;
839
+ badge?: boolean | undefined;
840
+ }[][];
841
+ label: string;
842
+ counts?: {
843
+ url: string;
844
+ label: string;
845
+ blurb?: string | undefined;
846
+ }[] | undefined;
847
+ }[] | null | undefined;
683
848
  ops_visible?: boolean | undefined;
684
849
  ops_home_default?: boolean | undefined;
685
850
  parent_role?: string | null | undefined;
@@ -706,6 +871,20 @@ export declare const updateRoleSchema: z.ZodObject<{
706
871
  label: string;
707
872
  badge?: boolean | undefined;
708
873
  }[] | null | undefined;
874
+ portals?: {
875
+ key: string;
876
+ rows: {
877
+ url: string;
878
+ label: string;
879
+ badge?: boolean | undefined;
880
+ }[][];
881
+ label: string;
882
+ counts?: {
883
+ url: string;
884
+ label: string;
885
+ blurb?: string | undefined;
886
+ }[] | undefined;
887
+ }[] | null | undefined;
709
888
  ops_visible?: boolean | undefined;
710
889
  ops_home_default?: boolean | undefined;
711
890
  parent_role?: string | null | undefined;
@@ -1498,13 +1677,13 @@ export declare const diagnoseJobSchema: z.ZodObject<{
1498
1677
  workflow_id: string;
1499
1678
  max_events: number;
1500
1679
  include?: ("streams" | "events")[] | undefined;
1501
- verbosity?: "summary" | "full" | undefined;
1680
+ verbosity?: "full" | "summary" | undefined;
1502
1681
  }, {
1503
1682
  workflow_id: string;
1504
1683
  app_id?: string | undefined;
1505
1684
  max_events?: number | undefined;
1506
1685
  include?: ("streams" | "events")[] | undefined;
1507
- verbosity?: "summary" | "full" | undefined;
1686
+ verbosity?: "full" | "summary" | undefined;
1508
1687
  }>;
1509
1688
  export declare const findStalledJobsSchema: z.ZodObject<{
1510
1689
  app_id: z.ZodDefault<z.ZodOptional<z.ZodString>>;
@@ -2354,7 +2533,7 @@ export declare const upsertScanRuleSchema: z.ZodObject<{
2354
2533
  code: z.ZodOptional<z.ZodString>;
2355
2534
  }, "strip", z.ZodTypeAny, {
2356
2535
  label: string;
2357
- verb: "show-detail" | "claim" | "claim-show-detail" | "release" | "resolve" | "escalate" | "cancel";
2536
+ verb: "resolve" | "show-detail" | "claim" | "claim-show-detail" | "release" | "escalate" | "cancel";
2358
2537
  code?: string | undefined;
2359
2538
  params?: {
2360
2539
  description?: string | undefined;
@@ -2371,7 +2550,7 @@ export declare const upsertScanRuleSchema: z.ZodObject<{
2371
2550
  requireActingIdentity?: boolean | undefined;
2372
2551
  }, {
2373
2552
  label: string;
2374
- verb: "show-detail" | "claim" | "claim-show-detail" | "release" | "resolve" | "escalate" | "cancel";
2553
+ verb: "resolve" | "show-detail" | "claim" | "claim-show-detail" | "release" | "escalate" | "cancel";
2375
2554
  code?: string | undefined;
2376
2555
  params?: {
2377
2556
  description?: string | undefined;
@@ -2395,10 +2574,10 @@ export declare const upsertScanRuleSchema: z.ZodObject<{
2395
2574
  facets?: Record<string, any> | undefined;
2396
2575
  availability?: "available" | "claimed" | "mine" | "any" | undefined;
2397
2576
  };
2398
- verb: "show-detail" | "show-list" | "claim" | "claim-show-detail" | "release" | "resolve" | "escalate" | "cancel" | "present";
2577
+ verb: "resolve" | "show-detail" | "show-list" | "claim" | "claim-show-detail" | "release" | "escalate" | "cancel" | "present";
2399
2578
  choices?: {
2400
2579
  label: string;
2401
- verb: "show-detail" | "claim" | "claim-show-detail" | "release" | "resolve" | "escalate" | "cancel";
2580
+ verb: "resolve" | "show-detail" | "claim" | "claim-show-detail" | "release" | "escalate" | "cancel";
2402
2581
  code?: string | undefined;
2403
2582
  params?: {
2404
2583
  description?: string | undefined;
@@ -2436,10 +2615,10 @@ export declare const upsertScanRuleSchema: z.ZodObject<{
2436
2615
  facets?: Record<string, any> | undefined;
2437
2616
  availability?: "available" | "claimed" | "mine" | "any" | undefined;
2438
2617
  };
2439
- verb: "show-detail" | "show-list" | "claim" | "claim-show-detail" | "release" | "resolve" | "escalate" | "cancel" | "present";
2618
+ verb: "resolve" | "show-detail" | "show-list" | "claim" | "claim-show-detail" | "release" | "escalate" | "cancel" | "present";
2440
2619
  choices?: {
2441
2620
  label: string;
2442
- verb: "show-detail" | "claim" | "claim-show-detail" | "release" | "resolve" | "escalate" | "cancel";
2621
+ verb: "resolve" | "show-detail" | "claim" | "claim-show-detail" | "release" | "escalate" | "cancel";
2443
2622
  code?: string | undefined;
2444
2623
  params?: {
2445
2624
  description?: string | undefined;
@@ -2503,10 +2682,10 @@ export declare const upsertScanRuleSchema: z.ZodObject<{
2503
2682
  facets?: Record<string, any> | undefined;
2504
2683
  availability?: "available" | "claimed" | "mine" | "any" | undefined;
2505
2684
  };
2506
- verb: "show-detail" | "show-list" | "claim" | "claim-show-detail" | "release" | "resolve" | "escalate" | "cancel" | "present";
2685
+ verb: "resolve" | "show-detail" | "show-list" | "claim" | "claim-show-detail" | "release" | "escalate" | "cancel" | "present";
2507
2686
  choices?: {
2508
2687
  label: string;
2509
- verb: "show-detail" | "claim" | "claim-show-detail" | "release" | "resolve" | "escalate" | "cancel";
2688
+ verb: "resolve" | "show-detail" | "claim" | "claim-show-detail" | "release" | "escalate" | "cancel";
2510
2689
  code?: string | undefined;
2511
2690
  params?: {
2512
2691
  description?: string | undefined;
@@ -2558,10 +2737,10 @@ export declare const upsertScanRuleSchema: z.ZodObject<{
2558
2737
  facets?: Record<string, any> | undefined;
2559
2738
  availability?: "available" | "claimed" | "mine" | "any" | undefined;
2560
2739
  };
2561
- verb: "show-detail" | "show-list" | "claim" | "claim-show-detail" | "release" | "resolve" | "escalate" | "cancel" | "present";
2740
+ verb: "resolve" | "show-detail" | "show-list" | "claim" | "claim-show-detail" | "release" | "escalate" | "cancel" | "present";
2562
2741
  choices?: {
2563
2742
  label: string;
2564
- verb: "show-detail" | "claim" | "claim-show-detail" | "release" | "resolve" | "escalate" | "cancel";
2743
+ verb: "resolve" | "show-detail" | "claim" | "claim-show-detail" | "release" | "escalate" | "cancel";
2565
2744
  code?: string | undefined;
2566
2745
  params?: {
2567
2746
  description?: string | undefined;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.linkPersonaRoleSchema = exports.deletePersonaSchema = exports.updatePersonaSchema = exports.createPersonaSchema = exports.getPersonaSchema = exports.listPersonasSchema = exports.listRoleSchemaVersionsSchema = exports.getRoleSchemaSchema = exports.updateRoleSchema = exports.addEscalationChainSchema = exports.createRoleSchema = exports.listRolesSchema = exports.patchUserPropertiesSchema = 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.getDomainContextSchema = exports.terminateWorkflowSchema = exports.getWorkflowStatusSchema = exports.invokeWorkflowSchema = exports.listDiscoveredWorkflowsSchema = exports.deleteWorkflowConfigSchema = exports.upsertWorkflowConfigSchema = exports.getWorkflowConfigSchema = 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.findStalledJobsSchema = exports.diagnoseJobSchema = exports.getWorkflowEnvelopesSchema = exports.getExportStatusSchema = exports.exportWorkflowExecutionSchema = exports.exportWorkflowStateSchema = exports.listExportJobsSchema = exports.getSettingsSchema = exports.updatePrioritySchema = exports.bulkEscalateSchema = exports.bulkUnassignSchema = 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 = 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.getUserPersonasSchema = exports.unassignPersonaSchema = exports.assignPersonaSchema = exports.unlinkPersonaRoleSchema = void 0;
5
- exports.deleteScanRuleSchema = exports.upsertScanRuleSchema = exports.upsertScanSchemeSchema = exports.listScanSchemesSchema = exports.executeScanChoiceSchema = exports.executeScanCodeSchema = exports.timelineByFacetSchema = exports.aggregateByFacetsSchema = exports.claimByFacetsSchema = exports.claimGroupsSchema = exports.searchByFacetsSchema = exports.resolveByIdsSchema = exports.facetQuerySchema = exports.findOrphanedSignalsSchema = void 0;
3
+ exports.createPersonaSchema = exports.getPersonaSchema = exports.listPersonasSchema = exports.listRoleSchemaVersionsSchema = exports.getRoleSchemaSchema = exports.updateRoleSchema = exports.addEscalationChainSchema = exports.createRoleSchema = exports.listRolesSchema = exports.patchUserPropertiesSchema = 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.getDomainContextSchema = exports.terminateWorkflowSchema = exports.getWorkflowStatusSchema = exports.invokeWorkflowSchema = exports.listDiscoveredWorkflowsSchema = exports.deleteWorkflowConfigSchema = exports.upsertWorkflowConfigSchema = exports.getWorkflowConfigSchema = exports.listWorkflowConfigsSchema = exports.bulkTriageSchema = exports.releaseExpiredClaimsSchema = exports.bulkCancelSchema = exports.cancelEscalationSchema = exports.escalateEscalationSchema = exports.getEscalationItemsSchema = exports.removeItemSchema = exports.accumulateItemSchema = exports.resolveBySignalKeySchema = exports.resolveEscalationSchema = exports.releaseEscalationSchema = exports.claimEscalationSchema = exports.getEscalationStatsSchema = exports.getEscalationsByWorkflowSchema = exports.getEscalationSchema = exports.findEscalationsSchema = exports.getProcessDetailSchema = exports.findTasksSchema = void 0;
4
+ exports.getExportStatusSchema = exports.exportWorkflowExecutionSchema = exports.exportWorkflowStateSchema = exports.listExportJobsSchema = exports.getSettingsSchema = exports.updatePrioritySchema = exports.bulkEscalateSchema = exports.bulkUnassignSchema = 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 = 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.getUserPersonasSchema = exports.unassignPersonaSchema = exports.assignPersonaSchema = exports.unlinkPersonaRoleSchema = exports.linkPersonaRoleSchema = exports.deletePersonaSchema = exports.updatePersonaSchema = void 0;
5
+ exports.deleteScanRuleSchema = exports.upsertScanRuleSchema = exports.upsertScanSchemeSchema = exports.listScanSchemesSchema = exports.executeScanChoiceSchema = exports.executeScanCodeSchema = exports.timelineByFacetSchema = exports.aggregateByFacetsSchema = exports.claimByFacetsSchema = exports.claimGroupsSchema = exports.searchByFacetsSchema = exports.resolveByIdsSchema = exports.facetQuerySchema = exports.findOrphanedSignalsSchema = exports.findStalledJobsSchema = exports.diagnoseJobSchema = exports.getWorkflowEnvelopesSchema = void 0;
6
6
  /**
7
7
  * Zod schemas for the admin MCP server tools.
8
8
  *
@@ -84,6 +84,28 @@ exports.resolveBySignalKeySchema = zod_1.z.object({
84
84
  signalKey: zod_1.z.string().describe('Deterministic signal_key of an efficient escalation'),
85
85
  resolverPayload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload'),
86
86
  });
87
+ const adminReciprocalSchema = zod_1.z.object({
88
+ id: zod_1.z.string().optional(),
89
+ signalKey: zod_1.z.string().optional(),
90
+ key: zod_1.z.string().optional(),
91
+ value: zod_1.z.string().optional(),
92
+ payload: zod_1.z.record(zod_1.z.any()).optional(),
93
+ }).describe('A second accumulator row written in the same statement, both or neither. Exactly one of id, signalKey, or key/value.');
94
+ exports.accumulateItemSchema = zod_1.z.object({
95
+ id: zod_1.z.string().describe('Accumulator escalation UUID (the container)'),
96
+ itemKey: zod_1.z.string().describe('The key this item is held under'),
97
+ payload: zod_1.z.record(zod_1.z.any()).optional().describe('Optional item payload, delivered inside $accumulated'),
98
+ metadata: zod_1.z.record(zod_1.z.any()).optional().describe('Merge patch for the container metadata, same statement'),
99
+ reciprocal: adminReciprocalSchema.optional(),
100
+ });
101
+ exports.removeItemSchema = zod_1.z.object({
102
+ id: zod_1.z.string().describe('Accumulator escalation UUID'),
103
+ itemKey: zod_1.z.string().describe('The held item key to remove'),
104
+ reciprocal: adminReciprocalSchema.omit({ payload: true }).optional(),
105
+ });
106
+ exports.getEscalationItemsSchema = zod_1.z.object({
107
+ id: zod_1.z.string().describe('Accumulator or batch escalation UUID'),
108
+ });
87
109
  exports.escalateEscalationSchema = zod_1.z.object({
88
110
  id: zod_1.z.string().describe('Escalation UUID'),
89
111
  targetRole: zod_1.z.string().describe('Role to route the escalation to'),
@@ -296,6 +318,20 @@ exports.updateRoleSchema = zod_1.z.object({
296
318
  url: zod_1.z.string().describe('Dashboard-relative deep link (must start with /)'),
297
319
  badge: zod_1.z.boolean().optional().describe('Render a live count beside the label (escalations-list URLs)'),
298
320
  })).nullable().optional().describe('Pinned-view seeds handed to every member of this role. Members promote, hide, or reorder them via their own preferences. Null clears.'),
321
+ portals: zod_1.z.array(zod_1.z.object({
322
+ key: zod_1.z.string().describe('Slug, unique within the role; the portal\'s address segment'),
323
+ label: zod_1.z.string().describe('Portal name shown in the global menu and the nav'),
324
+ rows: zod_1.z.array(zod_1.z.array(zod_1.z.object({
325
+ label: zod_1.z.string().describe('Panel title'),
326
+ url: zod_1.z.string().describe('Dashboard-relative escalations-list deep link (must start with /)'),
327
+ badge: zod_1.z.boolean().optional(),
328
+ })).min(1).max(6)).min(1).max(4).describe('Rows of pin cells; up to 4 rows of up to 6 cells'),
329
+ counts: zod_1.z.array(zod_1.z.object({
330
+ label: zod_1.z.string().describe('Tile title'),
331
+ url: zod_1.z.string().describe('Dashboard-relative escalations-list deep link whose total the tile shows'),
332
+ blurb: zod_1.z.string().optional().describe('One line under the number'),
333
+ })).max(8).optional().describe('Count tiles above the panels'),
334
+ })).min(1).max(12).nullable().optional().describe('The role\'s named portal views, each a matrix of pin cells rendered as one page of live list panels at /portal/:role/:key. Null clears.'),
299
335
  change_summary: zod_1.z.string().optional().describe('Recorded on the schema version snapshot when this update changes form_schema or metadata_schema'),
300
336
  });
301
337
  exports.getRoleSchemaSchema = zod_1.z.object({
@@ -248,6 +248,7 @@ function registerUserTools(server) {
248
248
  upstream_roles: args.upstream_roles,
249
249
  list_schema: args.list_schema,
250
250
  default_pins: args.default_pins,
251
+ portals: args.portals,
251
252
  change_summary: args.change_summary,
252
253
  });
253
254
  if (!updated) {
@@ -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
  }