@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.
- package/build/api/domain.d.ts +14 -0
- package/build/api/domain.js +76 -0
- package/build/api/escalations/cancel.js +16 -1
- package/build/api/escalations/helpers.js +5 -0
- package/build/lib/db/schemas/030_domain_dictionary.sql +18 -0
- package/build/lib/events/escalation-wire.d.ts +9 -0
- package/build/lib/events/escalation-wire.js +69 -0
- package/build/lib/events/system-events.js +13 -5
- package/build/lib/json-path/pick.d.ts +14 -0
- package/build/lib/json-path/pick.js +51 -0
- package/build/routes/domain.d.ts +2 -0
- package/build/routes/domain.js +62 -0
- package/build/routes/index.js +2 -0
- package/build/services/domain/index.d.ts +4 -0
- package/build/services/domain/index.js +14 -0
- package/build/services/domain/read.d.ts +21 -0
- package/build/services/domain/read.js +78 -0
- package/build/services/domain/seed.d.ts +11 -0
- package/build/services/domain/seed.js +65 -0
- package/build/services/domain/sql.d.ts +10 -0
- package/build/services/domain/sql.js +29 -0
- package/build/services/domain/validate.d.ts +29 -0
- package/build/services/domain/validate.js +50 -0
- package/build/services/domain/write.d.ts +23 -0
- package/build/services/domain/write.js +43 -0
- package/build/services/escalation/crud.js +16 -12
- package/build/services/mcp/db-server/schemas.d.ts +1 -1
- package/build/services/mcp/external-server.js +31 -1
- package/build/services/role/index.d.ts +2 -0
- package/build/services/role/index.js +7 -0
- package/build/services/role/sql.d.ts +1 -0
- package/build/services/role/sql.js +3 -1
- package/build/services/role/types.d.ts +17 -1
- package/build/services/role/types.js +16 -0
- package/build/start/workers.js +6 -0
- package/build/system/mcp-servers/admin/domain-context.d.ts +14 -0
- package/build/system/mcp-servers/admin/domain-context.js +220 -0
- package/build/system/mcp-servers/admin/exports.js +7 -4
- package/build/system/mcp-servers/admin/index.js +5 -3
- package/build/system/mcp-servers/admin/pipelines.js +9 -3
- package/build/system/mcp-servers/admin/schemas.d.ts +61 -32
- package/build/system/mcp-servers/admin/schemas.js +23 -5
- package/build/system/mcp-servers/admin/workflows.js +26 -0
- package/build/system/mcp-servers/db-query/schemas.d.ts +1 -1
- package/build/system/mcp-servers/human-queue-schemas.d.ts +1 -1
- package/build/system/seed/tool-manifests-admin.d.ts +286 -3
- package/build/system/seed/tool-manifests-admin.js +8 -5
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/domain-manifest.d.ts +77 -0
- package/build/types/domain-manifest.js +16 -0
- package/build/types/index.d.ts +2 -1
- package/build/types/index.js +2 -1
- package/build/types/startup.d.ts +10 -0
- package/dashboard/dist/assets/{AdminDashboard-D4ebrcNR.js → AdminDashboard-CahUELrr.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-D4ebrcNR.js.map → AdminDashboard-CahUELrr.js.map} +1 -1
- package/dashboard/dist/assets/{AgentConfigPage-DP4KUuCX.js → AgentConfigPage-CkMv-cTV.js} +2 -2
- package/dashboard/dist/assets/{AgentConfigPage-DP4KUuCX.js.map → AgentConfigPage-CkMv-cTV.js.map} +1 -1
- package/dashboard/dist/assets/{AgentDetailPage-ktYiR1kq.js → AgentDetailPage-ZGea3Z4A.js} +2 -2
- package/dashboard/dist/assets/{AgentDetailPage-ktYiR1kq.js.map → AgentDetailPage-ZGea3Z4A.js.map} +1 -1
- package/dashboard/dist/assets/{AgentsPage-B4iqm4-h.js → AgentsPage-BMWSUJGi.js} +2 -2
- package/dashboard/dist/assets/{AgentsPage-B4iqm4-h.js.map → AgentsPage-BMWSUJGi.js.map} +1 -1
- package/dashboard/dist/assets/{AvailableEscalationsPage-tL3mM1RG.js → AvailableEscalationsPage-BjsbfsWW.js} +2 -2
- package/dashboard/dist/assets/{AvailableEscalationsPage-tL3mM1RG.js.map → AvailableEscalationsPage-BjsbfsWW.js.map} +1 -1
- package/dashboard/dist/assets/{BotPicker-CLrJuHnW.js → BotPicker-DN8tq7pz.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-CLrJuHnW.js.map → BotPicker-DN8tq7pz.js.map} +1 -1
- package/dashboard/dist/assets/{CapabilitiesPage-DG5V0tMT.js → CapabilitiesPage-EAO3Ae0S.js} +2 -2
- package/dashboard/dist/assets/{CapabilitiesPage-DG5V0tMT.js.map → CapabilitiesPage-EAO3Ae0S.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-CvLHvVfU.js → CollapsibleSection-J-RejbjG.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-CvLHvVfU.js.map → CollapsibleSection-J-RejbjG.js.map} +1 -1
- package/dashboard/dist/assets/{CountdownTimer-Co57-iLY.js → CountdownTimer-Dw8N9tmQ.js} +2 -2
- package/dashboard/dist/assets/{CountdownTimer-Co57-iLY.js.map → CountdownTimer-Dw8N9tmQ.js.map} +1 -1
- package/dashboard/dist/assets/{CredentialsPage-qCJZ3rdi.js → CredentialsPage-CTurxwRn.js} +2 -2
- package/dashboard/dist/assets/{CredentialsPage-qCJZ3rdi.js.map → CredentialsPage-CTurxwRn.js.map} +1 -1
- package/dashboard/dist/assets/{CronLabel-C3iKifDN.js → CronLabel-DZ5TmIQG.js} +2 -2
- package/dashboard/dist/assets/{CronLabel-C3iKifDN.js.map → CronLabel-DZ5TmIQG.js.map} +1 -1
- package/dashboard/dist/assets/{CustomDurationPicker-C-Szl4rU.js → CustomDurationPicker-BES_FTrm.js} +2 -2
- package/dashboard/dist/assets/{CustomDurationPicker-C-Szl4rU.js.map → CustomDurationPicker-BES_FTrm.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-CamZk5o1.js → ElapsedCell-CIGRporU.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-CamZk5o1.js.map → ElapsedCell-CIGRporU.js.map} +1 -1
- package/dashboard/dist/assets/EntityTimelinePanel-CKIFsDOB.js +2 -0
- package/dashboard/dist/assets/EntityTimelinePanel-CKIFsDOB.js.map +1 -0
- package/dashboard/dist/assets/{EscalationListSchemaPage-BddDSfjl.js → EscalationListSchemaPage-DOrv-quD.js} +2 -2
- package/dashboard/dist/assets/{EscalationListSchemaPage-BddDSfjl.js.map → EscalationListSchemaPage-DOrv-quD.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationSchemaPage-BRyCtw9R.js → EscalationSchemaPage-DAOVAxAM.js} +2 -2
- package/dashboard/dist/assets/{EscalationSchemaPage-BRyCtw9R.js.map → EscalationSchemaPage-DAOVAxAM.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-DUWYxJyD.js → EscalationsOverview-B27sDn5O.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-DUWYxJyD.js.map → EscalationsOverview-B27sDn5O.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-CtVuCgq6.js → EventTable-Co1d40Qq.js} +2 -2
- package/dashboard/dist/assets/{EventTable-CtVuCgq6.js.map → EventTable-Co1d40Qq.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-BYsBgOiE.js → FilterBar-2ZfU21EA.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-BYsBgOiE.js.map → FilterBar-2ZfU21EA.js.map} +1 -1
- package/dashboard/dist/assets/{GraphInvokePage-CA4skPN2.js → GraphInvokePage-pdvc9VSv.js} +2 -2
- package/dashboard/dist/assets/{GraphInvokePage-CA4skPN2.js.map → GraphInvokePage-pdvc9VSv.js.map} +1 -1
- package/dashboard/dist/assets/{HomePage-DwG-AnjQ.js → HomePage-CLlDsBnw.js} +2 -2
- package/dashboard/dist/assets/{HomePage-DwG-AnjQ.js.map → HomePage-CLlDsBnw.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-D86IN_hQ.js → ListToolbar-DMremj2e.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-D86IN_hQ.js.map → ListToolbar-DMremj2e.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-CoEHGseD.js → McpOverview-BhztmhoL.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-CoEHGseD.js.map → McpOverview-BhztmhoL.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryDetailPage-C9hMgJe1.js → McpQueryDetailPage-BseZfrhc.js} +2 -2
- package/dashboard/dist/assets/{McpQueryDetailPage-C9hMgJe1.js.map → McpQueryDetailPage-BseZfrhc.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryPage-B20Zn4QX.js → McpQueryPage-DMzkble7.js} +2 -2
- package/dashboard/dist/assets/{McpQueryPage-B20Zn4QX.js.map → McpQueryPage-DMzkble7.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunDetailPage-DDKHf-3R.js → McpRunDetailPage-DqaBQAnn.js} +2 -2
- package/dashboard/dist/assets/{McpRunDetailPage-DDKHf-3R.js.map → McpRunDetailPage-DqaBQAnn.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-Puyn3iJr.js → McpRunsPage-Du8GnHFv.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-Puyn3iJr.js.map → McpRunsPage-Du8GnHFv.js.map} +1 -1
- package/dashboard/dist/assets/OperationsPage-CL2feqwS.js +3 -0
- package/dashboard/dist/assets/OperationsPage-CL2feqwS.js.map +1 -0
- package/dashboard/dist/assets/{OperatorDashboard-CXBbFLAL.js → OperatorDashboard-BHiGQZN_.js} +2 -2
- package/dashboard/dist/assets/{OperatorDashboard-CXBbFLAL.js.map → OperatorDashboard-BHiGQZN_.js.map} +1 -1
- package/dashboard/dist/assets/{PersonaDetailPage-BN5xNDDX.js → PersonaDetailPage-D6GGZgUS.js} +2 -2
- package/dashboard/dist/assets/{PersonaDetailPage-BN5xNDDX.js.map → PersonaDetailPage-D6GGZgUS.js.map} +1 -1
- package/dashboard/dist/assets/{PersonasPage-Bdtv6HPZ.js → PersonasPage-BQYCdmAs.js} +2 -2
- package/dashboard/dist/assets/{PersonasPage-Bdtv6HPZ.js.map → PersonasPage-BQYCdmAs.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessDetailPage-BMg70ZAJ.js → ProcessDetailPage-P45jOLim.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-BMg70ZAJ.js.map → ProcessDetailPage-P45jOLim.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-_KvdxGhL.js → ProcessesListPage-CgdzgCY6.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-_KvdxGhL.js.map → ProcessesListPage-CgdzgCY6.js.map} +1 -1
- package/dashboard/dist/assets/{RoleDetailPage-BM5BXc7j.js → RoleDetailPage-Dme2pa9z.js} +2 -2
- package/dashboard/dist/assets/{RoleDetailPage-BM5BXc7j.js.map → RoleDetailPage-Dme2pa9z.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-Bv23VmUi.js → RolesPage-Ci7_PbPt.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-Bv23VmUi.js.map → RolesPage-Ci7_PbPt.js.map} +1 -1
- package/dashboard/dist/assets/{RunAsSelector-D-Sjr7uB.js → RunAsSelector-CB0pV097.js} +2 -2
- package/dashboard/dist/assets/{RunAsSelector-D-Sjr7uB.js.map → RunAsSelector-CB0pV097.js.map} +1 -1
- package/dashboard/dist/assets/{ScanCodesPage-s3OEMJno.js → ScanCodesPage-DpbPhAj1.js} +2 -2
- package/dashboard/dist/assets/{ScanCodesPage-s3OEMJno.js.map → ScanCodesPage-DpbPhAj1.js.map} +1 -1
- package/dashboard/dist/assets/{ScanSchemeDetailPage-D8WQkZmw.js → ScanSchemeDetailPage-CGnMGlt0.js} +2 -2
- package/dashboard/dist/assets/{ScanSchemeDetailPage-D8WQkZmw.js.map → ScanSchemeDetailPage-CGnMGlt0.js.map} +1 -1
- package/dashboard/dist/assets/{ScanStationPage-CkRQaH5G.js → ScanStationPage-BTeV7TGy.js} +2 -2
- package/dashboard/dist/assets/{ScanStationPage-CkRQaH5G.js.map → ScanStationPage-BTeV7TGy.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-BpTIMOL5.js → StickyPagination-DH-0JEyx.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-BpTIMOL5.js.map → StickyPagination-DH-0JEyx.js.map} +1 -1
- package/dashboard/dist/assets/{StreamMessageDetail-ChoWrZzO.js → StreamMessageDetail-u-pDrHfS.js} +2 -2
- package/dashboard/dist/assets/{StreamMessageDetail-ChoWrZzO.js.map → StreamMessageDetail-u-pDrHfS.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-nmIqEuEH.js → SwimlaneTimeline-vN1N8BGy.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-nmIqEuEH.js.map → SwimlaneTimeline-vN1N8BGy.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-KajZD2Cp.js → TaskDetailPage-CAQm6avs.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-KajZD2Cp.js.map → TaskDetailPage-CAQm6avs.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-CiqSfapP.js → TasksListPage-C1bT3DT9.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-CiqSfapP.js.map → TasksListPage-C1bT3DT9.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-ClauexJj.js → TimeAgo-qZxkJ8Am.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-ClauexJj.js.map → TimeAgo-qZxkJ8Am.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-CXmbCnAJ.js → TimestampCell-CC3dz6FG.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-CXmbCnAJ.js.map → TimestampCell-CC3dz6FG.js.map} +1 -1
- package/dashboard/dist/assets/{ToolTestPanel-DFUU0zGv.js → ToolTestPanel-C3sSQUvw.js} +2 -2
- package/dashboard/dist/assets/{ToolTestPanel-DFUU0zGv.js.map → ToolTestPanel-C3sSQUvw.js.map} +1 -1
- package/dashboard/dist/assets/{TopicDetailPage-DuN5BrsI.js → TopicDetailPage-ClI0I8Mu.js} +2 -2
- package/dashboard/dist/assets/{TopicDetailPage-DuN5BrsI.js.map → TopicDetailPage-ClI0I8Mu.js.map} +1 -1
- package/dashboard/dist/assets/{TopicsPage-DZ1NQdYG.js → TopicsPage-CNf2VZud.js} +2 -2
- package/dashboard/dist/assets/{TopicsPage-DZ1NQdYG.js.map → TopicsPage-CNf2VZud.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-BPHG_MQs.js → UserName-BdMHmyL3.js} +2 -2
- package/dashboard/dist/assets/{UserName-BPHG_MQs.js.map → UserName-BdMHmyL3.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-D_Z-tIjR.js → WorkflowExecutionPage-Ba4mYFoW.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-D_Z-tIjR.js.map → WorkflowExecutionPage-Ba4mYFoW.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsDashboard-VMBW1WuR.js → WorkflowsDashboard-ImEm16tX.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-VMBW1WuR.js.map → WorkflowsDashboard-ImEm16tX.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-CUOXXcpg.js → WorkflowsOverview-BpWyV_tj.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-CUOXXcpg.js.map → WorkflowsOverview-BpWyV_tj.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-CsfzbboC.js → YamlWorkflowDetailPage-BFBlw1YY.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-CsfzbboC.js.map → YamlWorkflowDetailPage-BFBlw1YY.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowsPage-BpgKLSGT.js → YamlWorkflowsPage-C9gxapRg.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowsPage-BpgKLSGT.js.map → YamlWorkflowsPage-C9gxapRg.js.map} +1 -1
- package/dashboard/dist/assets/{agents-Cg2FVYQP.js → agents-BJQtJTiz.js} +2 -2
- package/dashboard/dist/assets/{agents-Cg2FVYQP.js.map → agents-BJQtJTiz.js.map} +1 -1
- package/dashboard/dist/assets/{bots-vtVLRKGt.js → bots-DDlU1gMy.js} +2 -2
- package/dashboard/dist/assets/{bots-vtVLRKGt.js.map → bots-DDlU1gMy.js.map} +1 -1
- package/dashboard/dist/assets/{capabilities-DLsXhwlD.js → capabilities-qYrUpdid.js} +2 -2
- package/dashboard/dist/assets/{capabilities-DLsXhwlD.js.map → capabilities-qYrUpdid.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-Js7dxpX4.js → controlplane-DnJ1VDTs.js} +2 -2
- package/dashboard/dist/assets/{controlplane-Js7dxpX4.js.map → controlplane-DnJ1VDTs.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-h0NLAJss.js → escalation-columns-BCnVWr_n.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-h0NLAJss.js.map → escalation-columns-BCnVWr_n.js.map} +1 -1
- package/dashboard/dist/assets/{index-DlO3bCfu.js → index-04QQsxMp.js} +2 -2
- package/dashboard/dist/assets/{index-DlO3bCfu.js.map → index-04QQsxMp.js.map} +1 -1
- package/dashboard/dist/assets/{index-Bcv5k8Dw.js → index-B5q8ksfv.js} +2 -2
- package/dashboard/dist/assets/{index-Bcv5k8Dw.js.map → index-B5q8ksfv.js.map} +1 -1
- package/dashboard/dist/assets/{index-FYQ9yPhO.js → index-BAqQSgxn.js} +2 -2
- package/dashboard/dist/assets/{index-FYQ9yPhO.js.map → index-BAqQSgxn.js.map} +1 -1
- package/dashboard/dist/assets/{index-7c7FEe5S.js → index-BHbO4F8Z.js} +2 -2
- package/dashboard/dist/assets/{index-7c7FEe5S.js.map → index-BHbO4F8Z.js.map} +1 -1
- package/dashboard/dist/assets/{index-KcaVfpWn.js → index-BUpB9ezn.js} +2 -2
- package/dashboard/dist/assets/{index-KcaVfpWn.js.map → index-BUpB9ezn.js.map} +1 -1
- package/dashboard/dist/assets/{index-CcjdA7jA.js → index-C991QfUN.js} +3 -3
- package/dashboard/dist/assets/{index-CcjdA7jA.js.map → index-C991QfUN.js.map} +1 -1
- package/dashboard/dist/assets/{index-BTzhV9ST.js → index-CFlmubaP.js} +2 -2
- package/dashboard/dist/assets/{index-BTzhV9ST.js.map → index-CFlmubaP.js.map} +1 -1
- package/dashboard/dist/assets/{index-BvVJ538E.js → index-CroJTX8g.js} +2 -2
- package/dashboard/dist/assets/{index-BvVJ538E.js.map → index-CroJTX8g.js.map} +1 -1
- package/dashboard/dist/assets/{index-BjfoWzJL.js → index-CtAPxA03.js} +2 -2
- package/dashboard/dist/assets/{index-BjfoWzJL.js.map → index-CtAPxA03.js.map} +1 -1
- package/dashboard/dist/assets/{index-DQi6CjqF.js → index-D-5F3Bw-.js} +2 -2
- package/dashboard/dist/assets/{index-DQi6CjqF.js.map → index-D-5F3Bw-.js.map} +1 -1
- package/dashboard/dist/assets/{index-DglcqBHn.js → index-DhRdWzz0.js} +2 -2
- package/dashboard/dist/assets/{index-DglcqBHn.js.map → index-DhRdWzz0.js.map} +1 -1
- package/dashboard/dist/assets/{index-vAkZ5dZe.js → index-KotwPxGB.js} +2 -2
- package/dashboard/dist/assets/{index-vAkZ5dZe.js.map → index-KotwPxGB.js.map} +1 -1
- package/dashboard/dist/assets/{index-CSpTj5DB.js → index-LiLVAQzB.js} +2 -2
- package/dashboard/dist/assets/{index-CSpTj5DB.js.map → index-LiLVAQzB.js.map} +1 -1
- package/dashboard/dist/assets/{knowledge-Bkvl3cIz.js → knowledge-CnMeg8Rw.js} +2 -2
- package/dashboard/dist/assets/{knowledge-Bkvl3cIz.js.map → knowledge-CnMeg8Rw.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-DEtDLeIQ.js → mcp-CHPSFv7m.js} +2 -2
- package/dashboard/dist/assets/{mcp-DEtDLeIQ.js.map → mcp-CHPSFv7m.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-BCRgnt0K.js → mcp-query-C19EGwdN.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-BCRgnt0K.js.map → mcp-query-C19EGwdN.js.map} +1 -1
- package/dashboard/dist/assets/{personas-CABKq-0L.js → personas-Br1Vo2S3.js} +2 -2
- package/dashboard/dist/assets/{personas-CABKq-0L.js.map → personas-Br1Vo2S3.js.map} +1 -1
- package/dashboard/dist/assets/{pipelines-fuN8dVNl.js → pipelines-QMrFoJZX.js} +2 -2
- package/dashboard/dist/assets/{pipelines-fuN8dVNl.js.map → pipelines-QMrFoJZX.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-u3YPNJBo.js → tasks-Doy_7cGX.js} +2 -2
- package/dashboard/dist/assets/{tasks-u3YPNJBo.js.map → tasks-Doy_7cGX.js.map} +1 -1
- package/dashboard/dist/assets/{topics-D37_RAIT.js → topics-BcJS4G09.js} +2 -2
- package/dashboard/dist/assets/{topics-D37_RAIT.js.map → topics-BcJS4G09.js.map} +1 -1
- package/dashboard/dist/assets/{useEventHooks-BbXfrFbq.js → useEventHooks-ldE5o0ok.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-BbXfrFbq.js.map → useEventHooks-ldE5o0ok.js.map} +1 -1
- package/dashboard/dist/assets/{useNamespace-DvuoFTda.js → useNamespace-CCu8fZc6.js} +2 -2
- package/dashboard/dist/assets/{useNamespace-DvuoFTda.js.map → useNamespace-CCu8fZc6.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-CL-Uf2cb.js → useYamlActivityEvents-DDrXwFXX.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-CL-Uf2cb.js.map → useYamlActivityEvents-DDrXwFXX.js.map} +1 -1
- package/dashboard/dist/assets/{users-CMxw_HzK.js → users-BvKhSq1i.js} +2 -2
- package/dashboard/dist/assets/{users-CMxw_HzK.js.map → users-BvKhSq1i.js.map} +1 -1
- package/dashboard/dist/assets/{workflows-Bez-o6fu.js → workflows-D09ysQF1.js} +2 -2
- package/dashboard/dist/assets/{workflows-Bez-o6fu.js.map → workflows-D09ysQF1.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-NrXcLsNm.js → yaml-workflows-BFHrxEl4.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-NrXcLsNm.js.map → yaml-workflows-BFHrxEl4.js.map} +1 -1
- package/dashboard/dist/index.html +1 -1
- package/docs/domain-dictionary.md +115 -0
- package/docs/events.md +8 -0
- package/package.json +1 -1
- package/dashboard/dist/assets/EntityTimelinePanel-CABCW2dS.js +0 -2
- package/dashboard/dist/assets/EntityTimelinePanel-CABCW2dS.js.map +0 -1
- package/dashboard/dist/assets/OperationsPage-Bsrt4XTL.js +0 -3
- 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
|
-
'
|
|
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
|
|
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); //
|
|
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
|
-
//
|
|
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: '
|
|
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({
|