@hotmeshio/long-tail 0.11.1 → 0.12.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 (233) hide show
  1. package/build/api/domain.d.ts +14 -0
  2. package/build/api/domain.js +76 -0
  3. package/build/api/escalations/cancel.js +16 -1
  4. package/build/api/escalations/helpers.js +5 -0
  5. package/build/lib/db/schemas/030_domain_dictionary.sql +18 -0
  6. package/build/lib/events/escalation-wire.d.ts +9 -0
  7. package/build/lib/events/escalation-wire.js +69 -0
  8. package/build/lib/events/system-events.js +13 -5
  9. package/build/lib/json-path/pick.d.ts +14 -0
  10. package/build/lib/json-path/pick.js +51 -0
  11. package/build/routes/domain.d.ts +2 -0
  12. package/build/routes/domain.js +62 -0
  13. package/build/routes/index.js +2 -0
  14. package/build/services/domain/index.d.ts +4 -0
  15. package/build/services/domain/index.js +14 -0
  16. package/build/services/domain/read.d.ts +21 -0
  17. package/build/services/domain/read.js +78 -0
  18. package/build/services/domain/seed.d.ts +11 -0
  19. package/build/services/domain/seed.js +65 -0
  20. package/build/services/domain/sql.d.ts +10 -0
  21. package/build/services/domain/sql.js +29 -0
  22. package/build/services/domain/validate.d.ts +29 -0
  23. package/build/services/domain/validate.js +50 -0
  24. package/build/services/domain/write.d.ts +23 -0
  25. package/build/services/domain/write.js +43 -0
  26. package/build/services/escalation/crud.js +16 -12
  27. package/build/services/mcp/db-server/schemas.d.ts +1 -1
  28. package/build/services/mcp/external-server.js +31 -1
  29. package/build/services/role/index.d.ts +2 -0
  30. package/build/services/role/index.js +7 -0
  31. package/build/services/role/sql.d.ts +1 -0
  32. package/build/services/role/sql.js +3 -1
  33. package/build/services/role/types.d.ts +17 -1
  34. package/build/services/role/types.js +16 -0
  35. package/build/start/workers.js +6 -0
  36. package/build/system/mcp-servers/admin/domain-context.d.ts +14 -0
  37. package/build/system/mcp-servers/admin/domain-context.js +220 -0
  38. package/build/system/mcp-servers/admin/exports.js +7 -4
  39. package/build/system/mcp-servers/admin/index.js +5 -3
  40. package/build/system/mcp-servers/admin/pipelines.js +9 -3
  41. package/build/system/mcp-servers/admin/schemas.d.ts +61 -32
  42. package/build/system/mcp-servers/admin/schemas.js +23 -5
  43. package/build/system/mcp-servers/admin/workflows.js +26 -0
  44. package/build/system/mcp-servers/db-query/schemas.d.ts +1 -1
  45. package/build/system/mcp-servers/human-queue-schemas.d.ts +1 -1
  46. package/build/system/seed/tool-manifests-admin.d.ts +286 -3
  47. package/build/system/seed/tool-manifests-admin.js +8 -5
  48. package/build/tsconfig.tsbuildinfo +1 -1
  49. package/build/types/domain-manifest.d.ts +77 -0
  50. package/build/types/domain-manifest.js +16 -0
  51. package/build/types/index.d.ts +2 -1
  52. package/build/types/index.js +2 -1
  53. package/build/types/startup.d.ts +10 -0
  54. package/dashboard/dist/assets/{AdminDashboard-D4ebrcNR.js → AdminDashboard-CahUELrr.js} +2 -2
  55. package/dashboard/dist/assets/{AdminDashboard-D4ebrcNR.js.map → AdminDashboard-CahUELrr.js.map} +1 -1
  56. package/dashboard/dist/assets/{AgentConfigPage-DP4KUuCX.js → AgentConfigPage-CkMv-cTV.js} +2 -2
  57. package/dashboard/dist/assets/{AgentConfigPage-DP4KUuCX.js.map → AgentConfigPage-CkMv-cTV.js.map} +1 -1
  58. package/dashboard/dist/assets/{AgentDetailPage-ktYiR1kq.js → AgentDetailPage-ZGea3Z4A.js} +2 -2
  59. package/dashboard/dist/assets/{AgentDetailPage-ktYiR1kq.js.map → AgentDetailPage-ZGea3Z4A.js.map} +1 -1
  60. package/dashboard/dist/assets/{AgentsPage-B4iqm4-h.js → AgentsPage-BMWSUJGi.js} +2 -2
  61. package/dashboard/dist/assets/{AgentsPage-B4iqm4-h.js.map → AgentsPage-BMWSUJGi.js.map} +1 -1
  62. package/dashboard/dist/assets/{AvailableEscalationsPage-tL3mM1RG.js → AvailableEscalationsPage-BjsbfsWW.js} +2 -2
  63. package/dashboard/dist/assets/{AvailableEscalationsPage-tL3mM1RG.js.map → AvailableEscalationsPage-BjsbfsWW.js.map} +1 -1
  64. package/dashboard/dist/assets/{BotPicker-CLrJuHnW.js → BotPicker-DN8tq7pz.js} +2 -2
  65. package/dashboard/dist/assets/{BotPicker-CLrJuHnW.js.map → BotPicker-DN8tq7pz.js.map} +1 -1
  66. package/dashboard/dist/assets/{CapabilitiesPage-DG5V0tMT.js → CapabilitiesPage-EAO3Ae0S.js} +2 -2
  67. package/dashboard/dist/assets/{CapabilitiesPage-DG5V0tMT.js.map → CapabilitiesPage-EAO3Ae0S.js.map} +1 -1
  68. package/dashboard/dist/assets/{CollapsibleSection-CvLHvVfU.js → CollapsibleSection-J-RejbjG.js} +2 -2
  69. package/dashboard/dist/assets/{CollapsibleSection-CvLHvVfU.js.map → CollapsibleSection-J-RejbjG.js.map} +1 -1
  70. package/dashboard/dist/assets/{CountdownTimer-Co57-iLY.js → CountdownTimer-Dw8N9tmQ.js} +2 -2
  71. package/dashboard/dist/assets/{CountdownTimer-Co57-iLY.js.map → CountdownTimer-Dw8N9tmQ.js.map} +1 -1
  72. package/dashboard/dist/assets/{CredentialsPage-qCJZ3rdi.js → CredentialsPage-CTurxwRn.js} +2 -2
  73. package/dashboard/dist/assets/{CredentialsPage-qCJZ3rdi.js.map → CredentialsPage-CTurxwRn.js.map} +1 -1
  74. package/dashboard/dist/assets/{CronLabel-C3iKifDN.js → CronLabel-DZ5TmIQG.js} +2 -2
  75. package/dashboard/dist/assets/{CronLabel-C3iKifDN.js.map → CronLabel-DZ5TmIQG.js.map} +1 -1
  76. package/dashboard/dist/assets/{CustomDurationPicker-C-Szl4rU.js → CustomDurationPicker-BES_FTrm.js} +2 -2
  77. package/dashboard/dist/assets/{CustomDurationPicker-C-Szl4rU.js.map → CustomDurationPicker-BES_FTrm.js.map} +1 -1
  78. package/dashboard/dist/assets/{ElapsedCell-CamZk5o1.js → ElapsedCell-CIGRporU.js} +2 -2
  79. package/dashboard/dist/assets/{ElapsedCell-CamZk5o1.js.map → ElapsedCell-CIGRporU.js.map} +1 -1
  80. package/dashboard/dist/assets/EntityTimelinePanel-CKIFsDOB.js +2 -0
  81. package/dashboard/dist/assets/EntityTimelinePanel-CKIFsDOB.js.map +1 -0
  82. package/dashboard/dist/assets/{EscalationListSchemaPage-BddDSfjl.js → EscalationListSchemaPage-DOrv-quD.js} +2 -2
  83. package/dashboard/dist/assets/{EscalationListSchemaPage-BddDSfjl.js.map → EscalationListSchemaPage-DOrv-quD.js.map} +1 -1
  84. package/dashboard/dist/assets/{EscalationSchemaPage-BRyCtw9R.js → EscalationSchemaPage-DAOVAxAM.js} +2 -2
  85. package/dashboard/dist/assets/{EscalationSchemaPage-BRyCtw9R.js.map → EscalationSchemaPage-DAOVAxAM.js.map} +1 -1
  86. package/dashboard/dist/assets/{EscalationsOverview-DUWYxJyD.js → EscalationsOverview-B27sDn5O.js} +2 -2
  87. package/dashboard/dist/assets/{EscalationsOverview-DUWYxJyD.js.map → EscalationsOverview-B27sDn5O.js.map} +1 -1
  88. package/dashboard/dist/assets/{EventTable-CtVuCgq6.js → EventTable-Co1d40Qq.js} +2 -2
  89. package/dashboard/dist/assets/{EventTable-CtVuCgq6.js.map → EventTable-Co1d40Qq.js.map} +1 -1
  90. package/dashboard/dist/assets/{FilterBar-BYsBgOiE.js → FilterBar-2ZfU21EA.js} +2 -2
  91. package/dashboard/dist/assets/{FilterBar-BYsBgOiE.js.map → FilterBar-2ZfU21EA.js.map} +1 -1
  92. package/dashboard/dist/assets/{GraphInvokePage-CA4skPN2.js → GraphInvokePage-pdvc9VSv.js} +2 -2
  93. package/dashboard/dist/assets/{GraphInvokePage-CA4skPN2.js.map → GraphInvokePage-pdvc9VSv.js.map} +1 -1
  94. package/dashboard/dist/assets/{HomePage-DwG-AnjQ.js → HomePage-CLlDsBnw.js} +2 -2
  95. package/dashboard/dist/assets/{HomePage-DwG-AnjQ.js.map → HomePage-CLlDsBnw.js.map} +1 -1
  96. package/dashboard/dist/assets/{ListToolbar-D86IN_hQ.js → ListToolbar-DMremj2e.js} +2 -2
  97. package/dashboard/dist/assets/{ListToolbar-D86IN_hQ.js.map → ListToolbar-DMremj2e.js.map} +1 -1
  98. package/dashboard/dist/assets/{McpOverview-CoEHGseD.js → McpOverview-BhztmhoL.js} +2 -2
  99. package/dashboard/dist/assets/{McpOverview-CoEHGseD.js.map → McpOverview-BhztmhoL.js.map} +1 -1
  100. package/dashboard/dist/assets/{McpQueryDetailPage-C9hMgJe1.js → McpQueryDetailPage-BseZfrhc.js} +2 -2
  101. package/dashboard/dist/assets/{McpQueryDetailPage-C9hMgJe1.js.map → McpQueryDetailPage-BseZfrhc.js.map} +1 -1
  102. package/dashboard/dist/assets/{McpQueryPage-B20Zn4QX.js → McpQueryPage-DMzkble7.js} +2 -2
  103. package/dashboard/dist/assets/{McpQueryPage-B20Zn4QX.js.map → McpQueryPage-DMzkble7.js.map} +1 -1
  104. package/dashboard/dist/assets/{McpRunDetailPage-DDKHf-3R.js → McpRunDetailPage-DqaBQAnn.js} +2 -2
  105. package/dashboard/dist/assets/{McpRunDetailPage-DDKHf-3R.js.map → McpRunDetailPage-DqaBQAnn.js.map} +1 -1
  106. package/dashboard/dist/assets/{McpRunsPage-Puyn3iJr.js → McpRunsPage-Du8GnHFv.js} +2 -2
  107. package/dashboard/dist/assets/{McpRunsPage-Puyn3iJr.js.map → McpRunsPage-Du8GnHFv.js.map} +1 -1
  108. package/dashboard/dist/assets/OperationsPage-CL2feqwS.js +3 -0
  109. package/dashboard/dist/assets/OperationsPage-CL2feqwS.js.map +1 -0
  110. package/dashboard/dist/assets/{OperatorDashboard-CXBbFLAL.js → OperatorDashboard-BHiGQZN_.js} +2 -2
  111. package/dashboard/dist/assets/{OperatorDashboard-CXBbFLAL.js.map → OperatorDashboard-BHiGQZN_.js.map} +1 -1
  112. package/dashboard/dist/assets/{PersonaDetailPage-BN5xNDDX.js → PersonaDetailPage-D6GGZgUS.js} +2 -2
  113. package/dashboard/dist/assets/{PersonaDetailPage-BN5xNDDX.js.map → PersonaDetailPage-D6GGZgUS.js.map} +1 -1
  114. package/dashboard/dist/assets/{PersonasPage-Bdtv6HPZ.js → PersonasPage-BQYCdmAs.js} +2 -2
  115. package/dashboard/dist/assets/{PersonasPage-Bdtv6HPZ.js.map → PersonasPage-BQYCdmAs.js.map} +1 -1
  116. package/dashboard/dist/assets/{ProcessDetailPage-BMg70ZAJ.js → ProcessDetailPage-P45jOLim.js} +2 -2
  117. package/dashboard/dist/assets/{ProcessDetailPage-BMg70ZAJ.js.map → ProcessDetailPage-P45jOLim.js.map} +1 -1
  118. package/dashboard/dist/assets/{ProcessesListPage-_KvdxGhL.js → ProcessesListPage-CgdzgCY6.js} +2 -2
  119. package/dashboard/dist/assets/{ProcessesListPage-_KvdxGhL.js.map → ProcessesListPage-CgdzgCY6.js.map} +1 -1
  120. package/dashboard/dist/assets/{RoleDetailPage-BM5BXc7j.js → RoleDetailPage-Dme2pa9z.js} +2 -2
  121. package/dashboard/dist/assets/{RoleDetailPage-BM5BXc7j.js.map → RoleDetailPage-Dme2pa9z.js.map} +1 -1
  122. package/dashboard/dist/assets/{RolesPage-Bv23VmUi.js → RolesPage-Ci7_PbPt.js} +2 -2
  123. package/dashboard/dist/assets/{RolesPage-Bv23VmUi.js.map → RolesPage-Ci7_PbPt.js.map} +1 -1
  124. package/dashboard/dist/assets/{RunAsSelector-D-Sjr7uB.js → RunAsSelector-CB0pV097.js} +2 -2
  125. package/dashboard/dist/assets/{RunAsSelector-D-Sjr7uB.js.map → RunAsSelector-CB0pV097.js.map} +1 -1
  126. package/dashboard/dist/assets/{ScanCodesPage-s3OEMJno.js → ScanCodesPage-DpbPhAj1.js} +2 -2
  127. package/dashboard/dist/assets/{ScanCodesPage-s3OEMJno.js.map → ScanCodesPage-DpbPhAj1.js.map} +1 -1
  128. package/dashboard/dist/assets/{ScanSchemeDetailPage-D8WQkZmw.js → ScanSchemeDetailPage-CGnMGlt0.js} +2 -2
  129. package/dashboard/dist/assets/{ScanSchemeDetailPage-D8WQkZmw.js.map → ScanSchemeDetailPage-CGnMGlt0.js.map} +1 -1
  130. package/dashboard/dist/assets/{ScanStationPage-CkRQaH5G.js → ScanStationPage-BTeV7TGy.js} +2 -2
  131. package/dashboard/dist/assets/{ScanStationPage-CkRQaH5G.js.map → ScanStationPage-BTeV7TGy.js.map} +1 -1
  132. package/dashboard/dist/assets/{StickyPagination-BpTIMOL5.js → StickyPagination-DH-0JEyx.js} +2 -2
  133. package/dashboard/dist/assets/{StickyPagination-BpTIMOL5.js.map → StickyPagination-DH-0JEyx.js.map} +1 -1
  134. package/dashboard/dist/assets/{StreamMessageDetail-ChoWrZzO.js → StreamMessageDetail-u-pDrHfS.js} +2 -2
  135. package/dashboard/dist/assets/{StreamMessageDetail-ChoWrZzO.js.map → StreamMessageDetail-u-pDrHfS.js.map} +1 -1
  136. package/dashboard/dist/assets/{SwimlaneTimeline-nmIqEuEH.js → SwimlaneTimeline-vN1N8BGy.js} +2 -2
  137. package/dashboard/dist/assets/{SwimlaneTimeline-nmIqEuEH.js.map → SwimlaneTimeline-vN1N8BGy.js.map} +1 -1
  138. package/dashboard/dist/assets/{TaskDetailPage-KajZD2Cp.js → TaskDetailPage-CAQm6avs.js} +2 -2
  139. package/dashboard/dist/assets/{TaskDetailPage-KajZD2Cp.js.map → TaskDetailPage-CAQm6avs.js.map} +1 -1
  140. package/dashboard/dist/assets/{TasksListPage-CiqSfapP.js → TasksListPage-C1bT3DT9.js} +2 -2
  141. package/dashboard/dist/assets/{TasksListPage-CiqSfapP.js.map → TasksListPage-C1bT3DT9.js.map} +1 -1
  142. package/dashboard/dist/assets/{TimeAgo-ClauexJj.js → TimeAgo-qZxkJ8Am.js} +2 -2
  143. package/dashboard/dist/assets/{TimeAgo-ClauexJj.js.map → TimeAgo-qZxkJ8Am.js.map} +1 -1
  144. package/dashboard/dist/assets/{TimestampCell-CXmbCnAJ.js → TimestampCell-CC3dz6FG.js} +2 -2
  145. package/dashboard/dist/assets/{TimestampCell-CXmbCnAJ.js.map → TimestampCell-CC3dz6FG.js.map} +1 -1
  146. package/dashboard/dist/assets/{ToolTestPanel-DFUU0zGv.js → ToolTestPanel-C3sSQUvw.js} +2 -2
  147. package/dashboard/dist/assets/{ToolTestPanel-DFUU0zGv.js.map → ToolTestPanel-C3sSQUvw.js.map} +1 -1
  148. package/dashboard/dist/assets/{TopicDetailPage-DuN5BrsI.js → TopicDetailPage-ClI0I8Mu.js} +2 -2
  149. package/dashboard/dist/assets/{TopicDetailPage-DuN5BrsI.js.map → TopicDetailPage-ClI0I8Mu.js.map} +1 -1
  150. package/dashboard/dist/assets/{TopicsPage-DZ1NQdYG.js → TopicsPage-CNf2VZud.js} +2 -2
  151. package/dashboard/dist/assets/{TopicsPage-DZ1NQdYG.js.map → TopicsPage-CNf2VZud.js.map} +1 -1
  152. package/dashboard/dist/assets/{UserName-BPHG_MQs.js → UserName-BdMHmyL3.js} +2 -2
  153. package/dashboard/dist/assets/{UserName-BPHG_MQs.js.map → UserName-BdMHmyL3.js.map} +1 -1
  154. package/dashboard/dist/assets/{WorkflowExecutionPage-D_Z-tIjR.js → WorkflowExecutionPage-Ba4mYFoW.js} +2 -2
  155. package/dashboard/dist/assets/{WorkflowExecutionPage-D_Z-tIjR.js.map → WorkflowExecutionPage-Ba4mYFoW.js.map} +1 -1
  156. package/dashboard/dist/assets/{WorkflowsDashboard-VMBW1WuR.js → WorkflowsDashboard-ImEm16tX.js} +2 -2
  157. package/dashboard/dist/assets/{WorkflowsDashboard-VMBW1WuR.js.map → WorkflowsDashboard-ImEm16tX.js.map} +1 -1
  158. package/dashboard/dist/assets/{WorkflowsOverview-CUOXXcpg.js → WorkflowsOverview-BpWyV_tj.js} +2 -2
  159. package/dashboard/dist/assets/{WorkflowsOverview-CUOXXcpg.js.map → WorkflowsOverview-BpWyV_tj.js.map} +1 -1
  160. package/dashboard/dist/assets/{YamlWorkflowDetailPage-CsfzbboC.js → YamlWorkflowDetailPage-BFBlw1YY.js} +2 -2
  161. package/dashboard/dist/assets/{YamlWorkflowDetailPage-CsfzbboC.js.map → YamlWorkflowDetailPage-BFBlw1YY.js.map} +1 -1
  162. package/dashboard/dist/assets/{YamlWorkflowsPage-BpgKLSGT.js → YamlWorkflowsPage-C9gxapRg.js} +2 -2
  163. package/dashboard/dist/assets/{YamlWorkflowsPage-BpgKLSGT.js.map → YamlWorkflowsPage-C9gxapRg.js.map} +1 -1
  164. package/dashboard/dist/assets/{agents-Cg2FVYQP.js → agents-BJQtJTiz.js} +2 -2
  165. package/dashboard/dist/assets/{agents-Cg2FVYQP.js.map → agents-BJQtJTiz.js.map} +1 -1
  166. package/dashboard/dist/assets/{bots-vtVLRKGt.js → bots-DDlU1gMy.js} +2 -2
  167. package/dashboard/dist/assets/{bots-vtVLRKGt.js.map → bots-DDlU1gMy.js.map} +1 -1
  168. package/dashboard/dist/assets/{capabilities-DLsXhwlD.js → capabilities-qYrUpdid.js} +2 -2
  169. package/dashboard/dist/assets/{capabilities-DLsXhwlD.js.map → capabilities-qYrUpdid.js.map} +1 -1
  170. package/dashboard/dist/assets/{controlplane-Js7dxpX4.js → controlplane-DnJ1VDTs.js} +2 -2
  171. package/dashboard/dist/assets/{controlplane-Js7dxpX4.js.map → controlplane-DnJ1VDTs.js.map} +1 -1
  172. package/dashboard/dist/assets/{escalation-columns-h0NLAJss.js → escalation-columns-BCnVWr_n.js} +2 -2
  173. package/dashboard/dist/assets/{escalation-columns-h0NLAJss.js.map → escalation-columns-BCnVWr_n.js.map} +1 -1
  174. package/dashboard/dist/assets/{index-DlO3bCfu.js → index-04QQsxMp.js} +2 -2
  175. package/dashboard/dist/assets/{index-DlO3bCfu.js.map → index-04QQsxMp.js.map} +1 -1
  176. package/dashboard/dist/assets/{index-Bcv5k8Dw.js → index-B5q8ksfv.js} +2 -2
  177. package/dashboard/dist/assets/{index-Bcv5k8Dw.js.map → index-B5q8ksfv.js.map} +1 -1
  178. package/dashboard/dist/assets/{index-FYQ9yPhO.js → index-BAqQSgxn.js} +2 -2
  179. package/dashboard/dist/assets/{index-FYQ9yPhO.js.map → index-BAqQSgxn.js.map} +1 -1
  180. package/dashboard/dist/assets/{index-7c7FEe5S.js → index-BHbO4F8Z.js} +2 -2
  181. package/dashboard/dist/assets/{index-7c7FEe5S.js.map → index-BHbO4F8Z.js.map} +1 -1
  182. package/dashboard/dist/assets/{index-KcaVfpWn.js → index-BUpB9ezn.js} +2 -2
  183. package/dashboard/dist/assets/{index-KcaVfpWn.js.map → index-BUpB9ezn.js.map} +1 -1
  184. package/dashboard/dist/assets/{index-CcjdA7jA.js → index-C991QfUN.js} +3 -3
  185. package/dashboard/dist/assets/{index-CcjdA7jA.js.map → index-C991QfUN.js.map} +1 -1
  186. package/dashboard/dist/assets/{index-BTzhV9ST.js → index-CFlmubaP.js} +2 -2
  187. package/dashboard/dist/assets/{index-BTzhV9ST.js.map → index-CFlmubaP.js.map} +1 -1
  188. package/dashboard/dist/assets/{index-BvVJ538E.js → index-CroJTX8g.js} +2 -2
  189. package/dashboard/dist/assets/{index-BvVJ538E.js.map → index-CroJTX8g.js.map} +1 -1
  190. package/dashboard/dist/assets/{index-BjfoWzJL.js → index-CtAPxA03.js} +2 -2
  191. package/dashboard/dist/assets/{index-BjfoWzJL.js.map → index-CtAPxA03.js.map} +1 -1
  192. package/dashboard/dist/assets/{index-DQi6CjqF.js → index-D-5F3Bw-.js} +2 -2
  193. package/dashboard/dist/assets/{index-DQi6CjqF.js.map → index-D-5F3Bw-.js.map} +1 -1
  194. package/dashboard/dist/assets/{index-DglcqBHn.js → index-DhRdWzz0.js} +2 -2
  195. package/dashboard/dist/assets/{index-DglcqBHn.js.map → index-DhRdWzz0.js.map} +1 -1
  196. package/dashboard/dist/assets/{index-vAkZ5dZe.js → index-KotwPxGB.js} +2 -2
  197. package/dashboard/dist/assets/{index-vAkZ5dZe.js.map → index-KotwPxGB.js.map} +1 -1
  198. package/dashboard/dist/assets/{index-CSpTj5DB.js → index-LiLVAQzB.js} +2 -2
  199. package/dashboard/dist/assets/{index-CSpTj5DB.js.map → index-LiLVAQzB.js.map} +1 -1
  200. package/dashboard/dist/assets/{knowledge-Bkvl3cIz.js → knowledge-CnMeg8Rw.js} +2 -2
  201. package/dashboard/dist/assets/{knowledge-Bkvl3cIz.js.map → knowledge-CnMeg8Rw.js.map} +1 -1
  202. package/dashboard/dist/assets/{mcp-DEtDLeIQ.js → mcp-CHPSFv7m.js} +2 -2
  203. package/dashboard/dist/assets/{mcp-DEtDLeIQ.js.map → mcp-CHPSFv7m.js.map} +1 -1
  204. package/dashboard/dist/assets/{mcp-query-BCRgnt0K.js → mcp-query-C19EGwdN.js} +2 -2
  205. package/dashboard/dist/assets/{mcp-query-BCRgnt0K.js.map → mcp-query-C19EGwdN.js.map} +1 -1
  206. package/dashboard/dist/assets/{personas-CABKq-0L.js → personas-Br1Vo2S3.js} +2 -2
  207. package/dashboard/dist/assets/{personas-CABKq-0L.js.map → personas-Br1Vo2S3.js.map} +1 -1
  208. package/dashboard/dist/assets/{pipelines-fuN8dVNl.js → pipelines-QMrFoJZX.js} +2 -2
  209. package/dashboard/dist/assets/{pipelines-fuN8dVNl.js.map → pipelines-QMrFoJZX.js.map} +1 -1
  210. package/dashboard/dist/assets/{tasks-u3YPNJBo.js → tasks-Doy_7cGX.js} +2 -2
  211. package/dashboard/dist/assets/{tasks-u3YPNJBo.js.map → tasks-Doy_7cGX.js.map} +1 -1
  212. package/dashboard/dist/assets/{topics-D37_RAIT.js → topics-BcJS4G09.js} +2 -2
  213. package/dashboard/dist/assets/{topics-D37_RAIT.js.map → topics-BcJS4G09.js.map} +1 -1
  214. package/dashboard/dist/assets/{useEventHooks-BbXfrFbq.js → useEventHooks-ldE5o0ok.js} +2 -2
  215. package/dashboard/dist/assets/{useEventHooks-BbXfrFbq.js.map → useEventHooks-ldE5o0ok.js.map} +1 -1
  216. package/dashboard/dist/assets/{useNamespace-DvuoFTda.js → useNamespace-CCu8fZc6.js} +2 -2
  217. package/dashboard/dist/assets/{useNamespace-DvuoFTda.js.map → useNamespace-CCu8fZc6.js.map} +1 -1
  218. package/dashboard/dist/assets/{useYamlActivityEvents-CL-Uf2cb.js → useYamlActivityEvents-DDrXwFXX.js} +2 -2
  219. package/dashboard/dist/assets/{useYamlActivityEvents-CL-Uf2cb.js.map → useYamlActivityEvents-DDrXwFXX.js.map} +1 -1
  220. package/dashboard/dist/assets/{users-CMxw_HzK.js → users-BvKhSq1i.js} +2 -2
  221. package/dashboard/dist/assets/{users-CMxw_HzK.js.map → users-BvKhSq1i.js.map} +1 -1
  222. package/dashboard/dist/assets/{workflows-Bez-o6fu.js → workflows-D09ysQF1.js} +2 -2
  223. package/dashboard/dist/assets/{workflows-Bez-o6fu.js.map → workflows-D09ysQF1.js.map} +1 -1
  224. package/dashboard/dist/assets/{yaml-workflows-NrXcLsNm.js → yaml-workflows-BFHrxEl4.js} +2 -2
  225. package/dashboard/dist/assets/{yaml-workflows-NrXcLsNm.js.map → yaml-workflows-BFHrxEl4.js.map} +1 -1
  226. package/dashboard/dist/index.html +1 -1
  227. package/docs/domain-dictionary.md +115 -0
  228. package/docs/events.md +8 -0
  229. package/package.json +1 -1
  230. package/dashboard/dist/assets/EntityTimelinePanel-CABCW2dS.js +0 -2
  231. package/dashboard/dist/assets/EntityTimelinePanel-CABCW2dS.js.map +0 -1
  232. package/dashboard/dist/assets/OperationsPage-Bsrt4XTL.js +0 -3
  233. package/dashboard/dist/assets/OperationsPage-Bsrt4XTL.js.map +0 -1
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerDomainContextTools = registerDomainContextTools;
4
+ const domain_1 = require("../../../services/domain");
5
+ const role_1 = require("../../../services/role");
6
+ const types_1 = require("../../../services/role/types");
7
+ const config_1 = require("../../../services/config");
8
+ const queries_1 = require("../../../services/escalation/queries");
9
+ const schemas_1 = require("./schemas");
10
+ const REGISTER_HINT = 'An admin can register a dictionary via startConfig.mcp.domainDictionaryPath or PUT /api/domain.';
11
+ const norm = (s) => s.trim().toLowerCase();
12
+ /** True when the term (or any alias) matches the lookup name. */
13
+ function termMatches(term, name) {
14
+ const n = norm(name);
15
+ if (norm(term.term) === n)
16
+ return true;
17
+ return (term.aliases ?? []).some((a) => norm(a) === n);
18
+ }
19
+ /** Role names a term references (for live joins). */
20
+ function rolesOf(term) {
21
+ const out = [];
22
+ if (term.maps_to?.role)
23
+ out.push(term.maps_to.role);
24
+ if (term.maps_to?.roles)
25
+ out.push(...term.maps_to.roles);
26
+ return out;
27
+ }
28
+ // ---------------------------------------------------------------------------
29
+ // Registry-derived fallback — the ontology FLOOR. The live registries already
30
+ // self-describe the structure: roles (title/description/entity_facet + verb
31
+ // semantics from properties), workflow configs, and in-use facet keys. When no
32
+ // dictionary is registered, this tool serves that derived view, so it is
33
+ // useful on every deployment from day one; a dictionary ADDS the jargon,
34
+ // guidance, and runbooks the registries cannot know.
35
+ // ---------------------------------------------------------------------------
36
+ /** Topics that only exist as authored dictionary content. */
37
+ const AUTHORED_TOPICS = new Set(['action', 'rule', 'runbook']);
38
+ async function derivedContext(topic, name) {
39
+ if (topic && AUTHORED_TOPICS.has(topic)) {
40
+ return {
41
+ derived: true,
42
+ error: `"${topic}" entries are authored in the dictionary; none is registered.`,
43
+ hint: REGISTER_HINT,
44
+ };
45
+ }
46
+ const [roles, configs, facetKeys] = await Promise.all([
47
+ (0, role_1.listRolesWithDetails)(),
48
+ (0, config_1.listWorkflowConfigs)(),
49
+ (0, queries_1.listFacetKeys)({ global: true }),
50
+ ]);
51
+ const roleEntries = roles.map((r) => {
52
+ const props = r.properties ?? {};
53
+ return {
54
+ kind: 'role',
55
+ term: r.role,
56
+ derived: true,
57
+ title: r.title ?? undefined,
58
+ description: r.description ?? undefined,
59
+ entity_facet: r.entity_facet ?? undefined,
60
+ on_cancel: typeof props[types_1.ROLE_PROPERTY_KEYS.ON_CANCEL] === 'string' ? props[types_1.ROLE_PROPERTY_KEYS.ON_CANCEL] : undefined,
61
+ on_timeout: typeof props[types_1.ROLE_PROPERTY_KEYS.ON_TIMEOUT] === 'string' ? props[types_1.ROLE_PROPERTY_KEYS.ON_TIMEOUT] : undefined,
62
+ worked_by: typeof props[types_1.ROLE_PROPERTY_KEYS.WORKED_BY] === 'string' ? props[types_1.ROLE_PROPERTY_KEYS.WORKED_BY] : undefined,
63
+ };
64
+ });
65
+ // Entities: roles sharing an entity_facet form that entity's system; the
66
+ // facet key is the best available name until a dictionary declares a noun.
67
+ const rolesByFacet = new Map();
68
+ for (const r of roles) {
69
+ if (!r.entity_facet)
70
+ continue;
71
+ const list = rolesByFacet.get(r.entity_facet) ?? [];
72
+ list.push(r.role);
73
+ rolesByFacet.set(r.entity_facet, list);
74
+ }
75
+ const entityEntries = [...rolesByFacet.entries()].map(([facet, facetRoles]) => ({
76
+ kind: 'entity',
77
+ term: facet,
78
+ derived: true,
79
+ idFacet: facet,
80
+ roles: facetRoles,
81
+ guidance: `Query escalations with facets={${facet}: value}, created_at desc.`,
82
+ }));
83
+ const workflowEntries = configs.map((c) => ({
84
+ kind: 'workflow',
85
+ term: c.workflow_type,
86
+ derived: true,
87
+ description: c.description ?? undefined,
88
+ invocable: c.invocable,
89
+ task_queue: c.task_queue ?? undefined,
90
+ stop_note: 'Stop a workflow with terminate_workflow (kills the handle AND cancels its escalations).',
91
+ }));
92
+ const facetEntries = facetKeys.map((key) => ({ kind: 'facet', term: key, derived: true }));
93
+ if (!topic) {
94
+ return {
95
+ derived: true,
96
+ note: `No dictionary is registered — this index is derived from the live registries. ${REGISTER_HINT}`,
97
+ terms: {
98
+ entity: entityEntries.map((e) => e.term),
99
+ role: roleEntries.map((r) => r.term),
100
+ workflow: workflowEntries.map((w) => w.term),
101
+ facet: facetEntries.map((f) => f.term),
102
+ },
103
+ runbooks: [],
104
+ };
105
+ }
106
+ const byTopic = {
107
+ entity: entityEntries,
108
+ role: roleEntries,
109
+ workflow: workflowEntries,
110
+ facet: facetEntries,
111
+ term: [...entityEntries, ...roleEntries, ...workflowEntries, ...facetEntries],
112
+ };
113
+ let entries = byTopic[topic] ?? [];
114
+ if (name)
115
+ entries = entries.filter((e) => norm(e.term) === norm(name));
116
+ if (!entries.length) {
117
+ return {
118
+ derived: true,
119
+ error: `No live-registry entry matches topic "${topic}"${name ? ` name "${name}"` : ''}.`,
120
+ hint: 'Call with no args for the derived index.',
121
+ };
122
+ }
123
+ return entries;
124
+ }
125
+ /**
126
+ * Enrich terms with live registry state. Dangling references are annotated so
127
+ * a stale dictionary reads as stale instead of lying or crashing.
128
+ */
129
+ async function enrichTerms(terms) {
130
+ const wantsRoles = terms.some((t) => rolesOf(t).length > 0);
131
+ const wantsWorkflows = terms.some((t) => t.maps_to?.workflow);
132
+ const [roles, configs] = await Promise.all([
133
+ wantsRoles ? (0, role_1.listRolesWithDetails)() : Promise.resolve([]),
134
+ wantsWorkflows ? (0, config_1.listWorkflowConfigs)() : Promise.resolve([]),
135
+ ]);
136
+ const roleByName = new Map(roles.map((r) => [r.role, r]));
137
+ const configByType = new Map(configs.map((c) => [c.workflow_type, c]));
138
+ return terms.map((t) => {
139
+ const out = { ...t };
140
+ const liveRoles = rolesOf(t).map((name) => {
141
+ const row = roleByName.get(name);
142
+ if (!row)
143
+ return { role: name, dangling: 'no longer a live role' };
144
+ const props = row.properties ?? {};
145
+ return {
146
+ role: row.role,
147
+ title: row.title ?? undefined,
148
+ description: row.description ?? undefined,
149
+ entity_facet: row.entity_facet ?? undefined,
150
+ on_cancel: typeof props[types_1.ROLE_PROPERTY_KEYS.ON_CANCEL] === 'string' ? props[types_1.ROLE_PROPERTY_KEYS.ON_CANCEL] : undefined,
151
+ on_timeout: typeof props[types_1.ROLE_PROPERTY_KEYS.ON_TIMEOUT] === 'string' ? props[types_1.ROLE_PROPERTY_KEYS.ON_TIMEOUT] : undefined,
152
+ worked_by: typeof props[types_1.ROLE_PROPERTY_KEYS.WORKED_BY] === 'string' ? props[types_1.ROLE_PROPERTY_KEYS.WORKED_BY] : undefined,
153
+ };
154
+ });
155
+ if (liveRoles.length)
156
+ out.live_roles = liveRoles;
157
+ if (t.kind === 'entity' && !out.idFacet) {
158
+ // Fallback derivation for docs written before the role declared its facet.
159
+ const derived = liveRoles.find((r) => 'entity_facet' in r && r.entity_facet);
160
+ if (derived)
161
+ out.idFacet = derived.entity_facet;
162
+ }
163
+ if (t.maps_to?.workflow) {
164
+ const config = configByType.get(t.maps_to.workflow);
165
+ out.live_workflow = config
166
+ ? {
167
+ workflow_type: config.workflow_type,
168
+ description: config.description ?? undefined,
169
+ invocable: config.invocable,
170
+ task_queue: config.task_queue ?? undefined,
171
+ }
172
+ : { workflow_type: t.maps_to.workflow, dangling: 'not a registered workflow' };
173
+ out.stop_note = 'Stop a workflow with terminate_workflow (kills the handle AND cancels its escalations).';
174
+ }
175
+ return out;
176
+ });
177
+ }
178
+ function registerDomainContextTools(server) {
179
+ server.registerTool('get_domain_context', {
180
+ title: 'Get Domain Context',
181
+ description: 'The deployment\'s domain dictionary merged with live platform state — how ' +
182
+ 'this operation\'s jargon maps to roles, queues, workflows, escalations, and ' +
183
+ 'metadata facets. No args → overview + index. { topic, name } → specific ' +
184
+ 'entries: entity (id facet + roles → build an escalation query on ' +
185
+ 'facets={idFacet: value}, sorted created_at desc), role (live title + ' +
186
+ 'cancel/timeout semantics), workflow (kill road + id convention), facet, ' +
187
+ 'action, rule, or runbook; topic `term` looks a word or alias up across every ' +
188
+ 'kind. Works on every deployment: with no dictionary registered it serves a ' +
189
+ 'view derived from the live registries (roles, entity facets, workflows, ' +
190
+ 'facet keys). Call this before acting on anything deployment-specific — ' +
191
+ 'verbs like cancel invert meaning by role.',
192
+ inputSchema: schemas_1.getDomainContextSchema,
193
+ }, async (args) => {
194
+ const respond = (payload) => ({
195
+ content: [{ type: 'text', text: JSON.stringify(payload) }],
196
+ });
197
+ const record = await (0, domain_1.getDomainDictionary)();
198
+ if (!record)
199
+ return respond(await derivedContext(args.topic, args.name));
200
+ const doc = record.doc;
201
+ if (!args.topic)
202
+ return respond(await (0, domain_1.getDomainIndex)());
203
+ if (args.topic === 'runbook') {
204
+ const runbooks = doc.runbooks ?? [];
205
+ return respond(args.name ? runbooks.filter((r) => norm(r.name) === norm(args.name)) : runbooks);
206
+ }
207
+ let terms = doc.terms ?? [];
208
+ if (args.topic !== 'term')
209
+ terms = terms.filter((t) => t.kind === args.topic);
210
+ if (args.name)
211
+ terms = terms.filter((t) => termMatches(t, args.name));
212
+ if (!terms.length) {
213
+ return respond({
214
+ error: `No dictionary entry matches topic "${args.topic}"${args.name ? ` name "${args.name}"` : ''}.`,
215
+ hint: 'Call with no args for the index of known terms.',
216
+ });
217
+ }
218
+ return respond(await enrichTerms(terms));
219
+ });
220
+ }
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.registerExportTools = registerExportTools;
37
37
  const api = __importStar(require("../../../api/exports"));
38
+ const pick_1 = require("../../../lib/json-path/pick");
38
39
  const schemas_1 = require("./schemas");
39
40
  function registerExportTools(server) {
40
41
  // mirrors GET /api/workflow-states/jobs
@@ -53,7 +54,8 @@ function registerExportTools(server) {
53
54
  server.registerTool('export_workflow_state', {
54
55
  title: 'Export Workflow State',
55
56
  description: 'Export the full workflow state using HotMesh durable export. ' +
56
- 'Optionally allow/block specific fields.',
57
+ 'allow/block filter which sections the engine fetches; select projects the ' +
58
+ 'returned JSON down to dot paths (token-efficient).',
57
59
  inputSchema: schemas_1.exportWorkflowStateSchema,
58
60
  }, async (args) => {
59
61
  const result = await api.exportWorkflowState({
@@ -65,13 +67,14 @@ function registerExportTools(server) {
65
67
  if (result.error) {
66
68
  return { content: [{ type: 'text', text: JSON.stringify({ error: result.error }) }], isError: true };
67
69
  }
68
- return { content: [{ type: 'text', text: JSON.stringify(result.data) }] };
70
+ return { content: [{ type: 'text', text: JSON.stringify((0, pick_1.pickPaths)(result.data, args.select)) }] };
69
71
  });
70
72
  // mirrors GET /api/workflow-states/:workflowId/execution
71
73
  server.registerTool('export_workflow_execution', {
72
74
  title: 'Export Workflow Execution',
73
75
  description: 'Export workflow state as a structured execution event history. ' +
74
- 'Useful for debugging and workflow compilation.',
76
+ 'Useful for debugging and workflow compilation. Histories run large — ' +
77
+ 'pass select (dot paths) to return only what you need.',
75
78
  inputSchema: schemas_1.exportWorkflowExecutionSchema,
76
79
  }, async (args) => {
77
80
  const result = await api.exportWorkflowExecution({
@@ -84,7 +87,7 @@ function registerExportTools(server) {
84
87
  if (result.error) {
85
88
  return { content: [{ type: 'text', text: JSON.stringify({ error: result.error }) }], isError: true };
86
89
  }
87
- return { content: [{ type: 'text', text: JSON.stringify(result.data) }] };
90
+ return { content: [{ type: 'text', text: JSON.stringify((0, pick_1.pickPaths)(result.data, args.select)) }] };
88
91
  });
89
92
  // mirrors GET /api/workflow-states/:workflowId/status
90
93
  server.registerTool('get_export_status', {
@@ -59,7 +59,8 @@ const exports_1 = require("./exports");
59
59
  const overview_1 = require("./overview");
60
60
  const diagnostics_1 = require("./diagnostics");
61
61
  const scan_codes_1 = require("./scan-codes");
62
- const TOOL_COUNT = 101;
62
+ const domain_context_1 = require("./domain-context");
63
+ const TOOL_COUNT = 103;
63
64
  let server = null;
64
65
  async function createAdminServer(options) {
65
66
  if (server && !options?.fresh)
@@ -72,7 +73,7 @@ async function createAdminServer(options) {
72
73
  (0, tasks_1.registerTaskTools)(instance); // 2 tools
73
74
  (0, escalations_1.registerEscalationTools)(instance); // 20 tools (RO + RW single + metadata + bulk)
74
75
  (0, workflow_config_1.registerWorkflowConfigTools)(instance); // 3 tools
75
- (0, workflows_1.registerWorkflowTools)(instance); // 3 tools
76
+ (0, workflows_1.registerWorkflowTools)(instance); // 4 tools (+ terminate_workflow)
76
77
  (0, mcp_servers_1.registerMcpServerTools)(instance); // 4 tools
77
78
  (0, yaml_workflows_1.registerYamlWorkflowTools)(instance); // 5 tools
78
79
  (0, users_1.registerUserTools)(instance); // 10 tools (users + roles + role schemas)
@@ -89,7 +90,8 @@ async function createAdminServer(options) {
89
90
  (0, overview_1.registerOverviewTools)(instance); // 1 tool
90
91
  (0, diagnostics_1.registerDiagnosticsTools)(instance); // 3 tools
91
92
  (0, scan_codes_1.registerScanCodeTools)(instance); // 5 tools (scan schemes + rules + execute)
92
- // Total: 101
93
+ (0, domain_context_1.registerDomainContextTools)(instance); // 1 tool (get_domain_context)
94
+ // Total: 103
93
95
  logger_1.loggerRegistry.info(`[lt-mcp:admin] ${name} ready (${TOOL_COUNT} tools registered)`);
94
96
  return instance;
95
97
  }
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.registerPipelineTools = registerPipelineTools;
37
37
  const api = __importStar(require("../../../api/pipelines"));
38
+ const pick_1 = require("../../../lib/json-path/pick");
38
39
  const schemas_1 = require("./schemas");
39
40
  function registerPipelineTools(server) {
40
41
  // mirrors GET /api/pipelines/entities
@@ -65,7 +66,8 @@ function registerPipelineTools(server) {
65
66
  // mirrors GET /api/pipelines/:jobId/execution
66
67
  server.registerTool('get_pipeline_execution', {
67
68
  title: 'Get Pipeline Execution',
68
- description: 'Export execution details for a specific pipeline job.',
69
+ description: 'Export execution details for a specific pipeline job. Histories run to ' +
70
+ 'tens of KB — pass select (dot paths) to return only what you need.',
69
71
  inputSchema: schemas_1.getJobExecutionSchema,
70
72
  }, async (args) => {
71
73
  const result = await api.getJobExecution({
@@ -75,12 +77,16 @@ function registerPipelineTools(server) {
75
77
  if (result.error) {
76
78
  return { content: [{ type: 'text', text: JSON.stringify({ error: result.error }) }], isError: true };
77
79
  }
78
- return { content: [{ type: 'text', text: JSON.stringify(result.data) }] };
80
+ return { content: [{ type: 'text', text: JSON.stringify((0, pick_1.pickPaths)(result.data, args.select)) }] };
79
81
  });
80
82
  // mirrors POST /api/pipelines/:jobId/interrupt
81
83
  server.registerTool('interrupt_pipeline_job', {
82
84
  title: 'Interrupt Pipeline Job',
83
- description: 'Interrupt a running pipeline job.',
85
+ description: 'Engine-level interrupt of a running job. WARNING: this does NOT cancel the ' +
86
+ 'workflow\'s escalations — they are stranded as pending orphans. To stop a ' +
87
+ 'workflow cleanly use terminate_workflow, which also cancels its escalations. ' +
88
+ 'Use interrupt_pipeline_job only for a raw engine interrupt when you have a ' +
89
+ 'specific reason to leave escalation rows untouched.',
84
90
  inputSchema: schemas_1.interruptJobSchema,
85
91
  }, async (args) => {
86
92
  const result = await api.interruptJob({