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