@hotmeshio/long-tail 0.5.11 → 0.6.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 +1 -0
- package/build/api/diagnostics.d.ts +5 -0
- package/build/api/diagnostics.js +5 -1
- package/build/api/escalations/bulk.js +9 -1
- package/build/api/escalations/cancel.js +5 -7
- package/build/api/escalations/claim.js +18 -15
- package/build/api/escalations/create.d.ts +6 -0
- package/build/api/escalations/create.js +11 -8
- package/build/api/escalations/facets.d.ts +18 -0
- package/build/api/escalations/facets.js +115 -0
- package/build/api/escalations/helpers.d.ts +70 -1
- package/build/api/escalations/helpers.js +101 -7
- package/build/api/escalations/index.d.ts +3 -2
- package/build/api/escalations/index.js +7 -1
- package/build/api/escalations/list.d.ts +23 -2
- package/build/api/escalations/list.js +111 -10
- package/build/api/escalations/metadata.js +22 -27
- package/build/api/escalations/resolve.d.ts +19 -1
- package/build/api/escalations/resolve.js +111 -26
- package/build/api/escalations/single.js +8 -8
- package/build/api/settings.d.ts +1 -1
- package/build/api/settings.js +3 -1
- package/build/api/users.d.ts +6 -0
- package/build/api/users.js +29 -1
- package/build/api/workflows/invocation.d.ts +6 -0
- package/build/api/workflows/invocation.js +6 -2
- package/build/bin/ltc.js +40 -0
- package/build/lib/cli/commands/escalations.d.ts +36 -0
- package/build/lib/cli/commands/escalations.js +98 -0
- package/build/lib/db/schemas/001_schema.sql +10 -5
- package/build/lib/db/schemas/012_lt_tasks_workflow_id_unique.sql +20 -0
- package/build/lib/db/schemas/013_role_scope.sql +37 -0
- package/build/modules/features.d.ts +19 -0
- package/build/modules/features.js +16 -0
- package/build/modules/version.d.ts +10 -5
- package/build/modules/version.js +27 -11
- package/build/routes/diagnostics.js +15 -2
- package/build/routes/escalations/facets.d.ts +7 -0
- package/build/routes/escalations/facets.js +81 -0
- package/build/routes/escalations/index.js +3 -0
- package/build/routes/escalations/list.js +48 -0
- package/build/routes/escalations/resolve.js +22 -4
- package/build/routes/users.js +9 -5
- package/build/routes/workflows/invocation.js +12 -4
- package/build/sdk/index.d.ts +35 -2
- package/build/sdk/index.js +7 -0
- package/build/services/diagnostics/index.d.ts +40 -6
- package/build/services/diagnostics/index.js +54 -5
- package/build/services/escalation/crud.d.ts +56 -6
- package/build/services/escalation/crud.js +102 -31
- package/build/services/escalation/facet-sql.d.ts +18 -0
- package/build/services/escalation/facet-sql.js +118 -0
- package/build/services/escalation/facets.d.ts +45 -0
- package/build/services/escalation/facets.js +218 -0
- package/build/services/escalation/index.d.ts +1 -0
- package/build/services/escalation/index.js +8 -1
- package/build/services/escalation/queries.d.ts +47 -0
- package/build/services/escalation/queries.js +185 -2
- package/build/services/escalation/sql.d.ts +15 -2
- package/build/services/escalation/sql.js +80 -3
- package/build/services/interceptor/activities/escalation.d.ts +2 -0
- package/build/services/interceptor/activities/escalation.js +1 -1
- package/build/services/interceptor/lifecycle.js +4 -0
- package/build/services/mcp/server-tools.js +10 -4
- package/build/services/orchestrator/condition.js +6 -2
- package/build/services/role/index.js +2 -3
- package/build/services/role/sql.d.ts +8 -0
- package/build/services/role/sql.js +17 -1
- package/build/services/task/crud.js +22 -14
- package/build/services/task/process.js +3 -21
- package/build/services/task/resolve.d.ts +5 -3
- package/build/services/task/resolve.js +9 -6
- package/build/services/task/sql.d.ts +30 -2
- package/build/services/task/sql.js +72 -2
- package/build/services/user/crud.d.ts +1 -0
- package/build/services/user/crud.js +29 -11
- package/build/services/user/index.d.ts +2 -1
- package/build/services/user/index.js +12 -1
- package/build/services/user/rbac.d.ts +18 -0
- package/build/services/user/rbac.js +27 -0
- package/build/services/user/roles.d.ts +7 -2
- package/build/services/user/roles.js +21 -5
- package/build/services/user/scope.d.ts +22 -0
- package/build/services/user/scope.js +50 -0
- package/build/services/user/seed-admin.js +34 -17
- package/build/services/user/sql.d.ts +18 -7
- package/build/services/user/sql.js +38 -13
- package/build/services/user/sso-provision.js +41 -24
- package/build/services/user/types.d.ts +9 -5
- package/build/start/adapters.js +3 -0
- package/build/system/mcp-servers/admin/diagnostics.d.ts +5 -4
- package/build/system/mcp-servers/admin/diagnostics.js +12 -10
- package/build/system/mcp-servers/admin/escalations.d.ts +6 -0
- package/build/system/mcp-servers/admin/escalations.js +247 -54
- package/build/system/mcp-servers/admin/index.js +3 -3
- package/build/system/mcp-servers/admin/schemas.d.ts +417 -3
- package/build/system/mcp-servers/admin/schemas.js +101 -5
- package/build/system/mcp-servers/admin/users.js +28 -2
- package/build/system/mcp-servers/admin/workflows.js +23 -12
- package/build/system/seed/tool-manifests-admin.d.ts +1324 -562
- package/build/system/seed/tool-manifests-admin.js +10 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/envelope.d.ts +7 -0
- package/build/types/facets.d.ts +60 -0
- package/build/types/facets.js +10 -0
- package/build/types/index.d.ts +2 -1
- package/build/types/startup.d.ts +9 -0
- package/build/types/user.d.ts +11 -0
- package/dashboard/dist/assets/AdminDashboard-2CZ8py9X.js +2 -0
- package/dashboard/dist/assets/{AdminDashboard-DZpduYdW.js.map → AdminDashboard-2CZ8py9X.js.map} +1 -1
- package/dashboard/dist/assets/{AgentConfigPage-SFnHMIP6.js → AgentConfigPage-D68sodgo.js} +7 -7
- package/dashboard/dist/assets/{AgentConfigPage-SFnHMIP6.js.map → AgentConfigPage-D68sodgo.js.map} +1 -1
- package/dashboard/dist/assets/AgentDetailPage-BmhuWbKi.js +4 -0
- package/dashboard/dist/assets/AgentDetailPage-BmhuWbKi.js.map +1 -0
- package/dashboard/dist/assets/AgentsPage-C4SKQVeU.js +2 -0
- package/dashboard/dist/assets/AgentsPage-C4SKQVeU.js.map +1 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-9RBEYwkt.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-9RBEYwkt.js.map +1 -0
- package/dashboard/dist/assets/{BotPicker-Dse2jW4b.js → BotPicker-D-FvXJOM.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-Dse2jW4b.js.map → BotPicker-D-FvXJOM.js.map} +1 -1
- package/dashboard/dist/assets/CapabilitiesPage-ByDf6WJr.js +2 -0
- package/dashboard/dist/assets/{CapabilitiesPage-DTfKCzBQ.js.map → CapabilitiesPage-ByDf6WJr.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-8vf38J6K.js → CollapsibleSection-BjGNYEvh.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-8vf38J6K.js.map → CollapsibleSection-BjGNYEvh.js.map} +1 -1
- package/dashboard/dist/assets/CopyableId-blg-gZvT.js +2 -0
- package/dashboard/dist/assets/CopyableId-blg-gZvT.js.map +1 -0
- package/dashboard/dist/assets/{CredentialsPage-7C4M-hrH.js → CredentialsPage-DvCA-wQN.js} +2 -2
- package/dashboard/dist/assets/{CredentialsPage-7C4M-hrH.js.map → CredentialsPage-DvCA-wQN.js.map} +1 -1
- package/dashboard/dist/assets/{CronLabel-DrGWtaSY.js → CronLabel-DBMurd_c.js} +2 -2
- package/dashboard/dist/assets/{CronLabel-DrGWtaSY.js.map → CronLabel-DBMurd_c.js.map} +1 -1
- package/dashboard/dist/assets/{CustomDurationPicker-Vcmr4LiR.js → CustomDurationPicker-DHflFoEa.js} +2 -2
- package/dashboard/dist/assets/{CustomDurationPicker-Vcmr4LiR.js.map → CustomDurationPicker-DHflFoEa.js.map} +1 -1
- package/dashboard/dist/assets/{DropZone-Dwpgbueb.js → DropZone-CUtdp99Z.js} +2 -2
- package/dashboard/dist/assets/{DropZone-Dwpgbueb.js.map → DropZone-CUtdp99Z.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-BNexhR5d.js → ElapsedCell-CSjcVOpo.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-BNexhR5d.js.map → ElapsedCell-CSjcVOpo.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-BI3DEwYP.js → EscalationsOverview-BUqRNJbK.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-BI3DEwYP.js.map → EscalationsOverview-BUqRNJbK.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-CwvX_L9t.js → EventTable-Chz-6XPE.js} +2 -2
- package/dashboard/dist/assets/{EventTable-CwvX_L9t.js.map → EventTable-Chz-6XPE.js.map} +1 -1
- package/dashboard/dist/assets/{GraphInvokePage-C-3b8WK0.js → GraphInvokePage-BXdgciWg.js} +2 -2
- package/dashboard/dist/assets/{GraphInvokePage-C-3b8WK0.js.map → GraphInvokePage-BXdgciWg.js.map} +1 -1
- package/dashboard/dist/assets/{HomePage-BS_-jcHr.js → HomePage-CEMxnk0r.js} +2 -2
- package/dashboard/dist/assets/{HomePage-BS_-jcHr.js.map → HomePage-CEMxnk0r.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-BH9rwQVE.js → ListToolbar-_73JCdbB.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-BH9rwQVE.js.map → ListToolbar-_73JCdbB.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-C9iOdE7E.js → McpOverview-DfdqxhSz.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-C9iOdE7E.js.map → McpOverview-DfdqxhSz.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryDetailPage-DMN-yqvJ.js → McpQueryDetailPage-DPAljieY.js} +2 -2
- package/dashboard/dist/assets/{McpQueryDetailPage-DMN-yqvJ.js.map → McpQueryDetailPage-DPAljieY.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryPage-D5cSziYS.js +2 -0
- package/dashboard/dist/assets/McpQueryPage-D5cSziYS.js.map +1 -0
- package/dashboard/dist/assets/{McpRunDetailPage-Wb47sRvo.js → McpRunDetailPage-DwNb9wZg.js} +2 -2
- package/dashboard/dist/assets/{McpRunDetailPage-Wb47sRvo.js.map → McpRunDetailPage-DwNb9wZg.js.map} +1 -1
- package/dashboard/dist/assets/McpRunsPage-O5H6yStl.js +2 -0
- package/dashboard/dist/assets/McpRunsPage-O5H6yStl.js.map +1 -0
- package/dashboard/dist/assets/{NamespacePill-DnJl4Lre.js → NamespacePill-uW-xOedj.js} +2 -2
- package/dashboard/dist/assets/{NamespacePill-DnJl4Lre.js.map → NamespacePill-uW-xOedj.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-DYw9Ekv5.js +2 -0
- package/dashboard/dist/assets/OperatorDashboard-DYw9Ekv5.js.map +1 -0
- package/dashboard/dist/assets/PageHeader-DVOZjBfL.js +2 -0
- package/dashboard/dist/assets/PageHeader-DVOZjBfL.js.map +1 -0
- package/dashboard/dist/assets/{PageHeaderWithStats-BuKc9MKt.js → PageHeaderWithStats-DtTpDHOd.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-BuKc9MKt.js.map → PageHeaderWithStats-DtTpDHOd.js.map} +1 -1
- package/dashboard/dist/assets/PriorityBadge-B4ykBH7f.js +2 -0
- package/dashboard/dist/assets/PriorityBadge-B4ykBH7f.js.map +1 -0
- package/dashboard/dist/assets/{ProcessDetailPage-CvPx-h8y.js → ProcessDetailPage-B0Dokcx9.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-CvPx-h8y.js.map → ProcessDetailPage-B0Dokcx9.js.map} +1 -1
- package/dashboard/dist/assets/ProcessesListPage-Cc87WIjL.js +2 -0
- package/dashboard/dist/assets/ProcessesListPage-Cc87WIjL.js.map +1 -0
- package/dashboard/dist/assets/RolePill-BaW-30TC.js +2 -0
- package/dashboard/dist/assets/RolePill-BaW-30TC.js.map +1 -0
- package/dashboard/dist/assets/{RolesPage-W5ZjOHpg.js → RolesPage-cp6PiF08.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-W5ZjOHpg.js.map → RolesPage-cp6PiF08.js.map} +1 -1
- package/dashboard/dist/assets/RowActions-BA9L9djf.js +2 -0
- package/dashboard/dist/assets/RowActions-BA9L9djf.js.map +1 -0
- package/dashboard/dist/assets/{RunAsSelector-CvxGTNGT.js → RunAsSelector-2LWkjSnO.js} +2 -2
- package/dashboard/dist/assets/{RunAsSelector-CvxGTNGT.js.map → RunAsSelector-2LWkjSnO.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-BWhFSr2d.js → StickyPagination-BQEm--kI.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-BWhFSr2d.js.map → StickyPagination-BQEm--kI.js.map} +1 -1
- package/dashboard/dist/assets/StreamMessageDetail-BTtw3GjX.js +2 -0
- package/dashboard/dist/assets/{StreamMessageDetail-BF0tM0cd.js.map → StreamMessageDetail-BTtw3GjX.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-Bv-KHY9s.js → SwimlaneTimeline-DdXxP4fO.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-Bv-KHY9s.js.map → SwimlaneTimeline-DdXxP4fO.js.map} +1 -1
- package/dashboard/dist/assets/{TagInput-B00uqhjX.js → TagInput-x9XTuqMb.js} +2 -2
- package/dashboard/dist/assets/{TagInput-B00uqhjX.js.map → TagInput-x9XTuqMb.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-Bzb_fuLy.js → TaskDetailPage-B8veYG4X.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-Bzb_fuLy.js.map → TaskDetailPage-B8veYG4X.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-CUsofm0X.js → TaskQueuePill-DSEQZ-HT.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-CUsofm0X.js.map → TaskQueuePill-DSEQZ-HT.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-CBezWaZL.js → TasksListPage-CsN1gZj5.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-CBezWaZL.js.map → TasksListPage-CsN1gZj5.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-CKHfTzat.js → TimeAgo-n182EcLx.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-CKHfTzat.js.map → TimeAgo-n182EcLx.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-Dsje8GH-.js → TimestampCell-2dlcQAfX.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-Dsje8GH-.js.map → TimestampCell-2dlcQAfX.js.map} +1 -1
- package/dashboard/dist/assets/{ToolPill-DjvedZSn.js → ToolPill-B_e4eT77.js} +2 -2
- package/dashboard/dist/assets/{ToolPill-DjvedZSn.js.map → ToolPill-B_e4eT77.js.map} +1 -1
- package/dashboard/dist/assets/{ToolTestPanel-3OcG18e5.js → ToolTestPanel-Bhnncc6M.js} +2 -2
- package/dashboard/dist/assets/{ToolTestPanel-3OcG18e5.js.map → ToolTestPanel-Bhnncc6M.js.map} +1 -1
- package/dashboard/dist/assets/{TopicDetailPage-DCtv91hH.js → TopicDetailPage-29lsNsqI.js} +3 -3
- package/dashboard/dist/assets/{TopicDetailPage-DCtv91hH.js.map → TopicDetailPage-29lsNsqI.js.map} +1 -1
- package/dashboard/dist/assets/{TopicsPage-DVGSNc_E.js → TopicsPage-KJ7_LAvo.js} +2 -2
- package/dashboard/dist/assets/{TopicsPage-DVGSNc_E.js.map → TopicsPage-KJ7_LAvo.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-xHAgkk8M.js → UserName-CMoFi9zb.js} +2 -2
- package/dashboard/dist/assets/{UserName-xHAgkk8M.js.map → UserName-CMoFi9zb.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-CWNxsS8a.js → WorkflowExecutionPage-Cymfx-Bp.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-CWNxsS8a.js.map → WorkflowExecutionPage-Cymfx-Bp.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowPill-F1oKUzmc.js → WorkflowPill-B66_AnaY.js} +2 -2
- package/dashboard/dist/assets/{WorkflowPill-F1oKUzmc.js.map → WorkflowPill-B66_AnaY.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowsDashboard-CqLN8spd.js +2 -0
- package/dashboard/dist/assets/WorkflowsDashboard-CqLN8spd.js.map +1 -0
- package/dashboard/dist/assets/{WorkflowsOverview-e7jWSj_n.js → WorkflowsOverview-0Rc2WT6q.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-e7jWSj_n.js.map → WorkflowsOverview-0Rc2WT6q.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-CdAeam76.js → YamlWorkflowDetailPage-CARQ7_LN.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-CdAeam76.js.map → YamlWorkflowDetailPage-CARQ7_LN.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowsPage-S_gKs2Di.js → YamlWorkflowsPage-B-7sz1nf.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowsPage-S_gKs2Di.js.map → YamlWorkflowsPage-B-7sz1nf.js.map} +1 -1
- package/dashboard/dist/assets/{agents-JE4aL07D.js → agents-zM43d5Yf.js} +2 -2
- package/dashboard/dist/assets/{agents-JE4aL07D.js.map → agents-zM43d5Yf.js.map} +1 -1
- package/dashboard/dist/assets/api-path-u2Jf9QXS.js +2 -0
- package/dashboard/dist/assets/api-path-u2Jf9QXS.js.map +1 -0
- package/dashboard/dist/assets/{bots-cAzKkDtQ.js → bots-D5BasOGz.js} +2 -2
- package/dashboard/dist/assets/{bots-cAzKkDtQ.js.map → bots-D5BasOGz.js.map} +1 -1
- package/dashboard/dist/assets/{capabilities-RBFXLAXF.js → capabilities-BT3PW9CZ.js} +2 -2
- package/dashboard/dist/assets/{capabilities-RBFXLAXF.js.map → capabilities-BT3PW9CZ.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-DGhv3rwI.js → controlplane-NpJr49rN.js} +2 -2
- package/dashboard/dist/assets/{controlplane-DGhv3rwI.js.map → controlplane-NpJr49rN.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-ne7dIaPa.js → escalation-DrzQolPG.js} +2 -2
- package/dashboard/dist/assets/{escalation-ne7dIaPa.js.map → escalation-DrzQolPG.js.map} +1 -1
- package/dashboard/dist/assets/escalation-columns-QzwmtD60.js +2 -0
- package/dashboard/dist/assets/escalation-columns-QzwmtD60.js.map +1 -0
- package/dashboard/dist/assets/index-B5w4Gjyk.js +6 -0
- package/dashboard/dist/assets/index-B5w4Gjyk.js.map +1 -0
- package/dashboard/dist/assets/{index-CByjpYlU.js → index-BCT4kqGR.js} +2 -2
- package/dashboard/dist/assets/{index-CByjpYlU.js.map → index-BCT4kqGR.js.map} +1 -1
- package/dashboard/dist/assets/{index-CgyucK0e.js → index-C69XvBfg.js} +2 -2
- package/dashboard/dist/assets/{index-CgyucK0e.js.map → index-C69XvBfg.js.map} +1 -1
- package/dashboard/dist/assets/index-CHw4Fl0t.css +1 -0
- package/dashboard/dist/assets/index-C_NwHTMh.js +2 -0
- package/dashboard/dist/assets/index-C_NwHTMh.js.map +1 -0
- package/dashboard/dist/assets/{index-DgzgRTNg.js → index-Cq0trGqf.js} +2 -2
- package/dashboard/dist/assets/{index-DgzgRTNg.js.map → index-Cq0trGqf.js.map} +1 -1
- package/dashboard/dist/assets/{index-DPJW96d2.js → index-DE0r9SEX.js} +26 -26
- package/dashboard/dist/assets/index-DE0r9SEX.js.map +1 -0
- package/dashboard/dist/assets/{index-BTqhAT6p.js → index-DH_CiD0W.js} +2 -2
- package/dashboard/dist/assets/{index-BTqhAT6p.js.map → index-DH_CiD0W.js.map} +1 -1
- package/dashboard/dist/assets/{index-C2l4GcZ7.js → index-K23FdS-T.js} +3 -3
- package/dashboard/dist/assets/{index-C2l4GcZ7.js.map → index-K23FdS-T.js.map} +1 -1
- package/dashboard/dist/assets/index-f6K1UNrn.js +2 -0
- package/dashboard/dist/assets/index-f6K1UNrn.js.map +1 -0
- package/dashboard/dist/assets/{index-BbJuC9kg.js → index-qr1fndqM.js} +2 -2
- package/dashboard/dist/assets/{index-BbJuC9kg.js.map → index-qr1fndqM.js.map} +1 -1
- package/dashboard/dist/assets/index-vKTvJ_li.js +2 -0
- package/dashboard/dist/assets/index-vKTvJ_li.js.map +1 -0
- package/dashboard/dist/assets/{index-CQDn-bLr.js → index-y-3ODtEE.js} +2 -2
- package/dashboard/dist/assets/{index-CQDn-bLr.js.map → index-y-3ODtEE.js.map} +1 -1
- package/dashboard/dist/assets/{index-QxAYCJ1S.js → index-y56Ds-LB.js} +2 -2
- package/dashboard/dist/assets/{index-QxAYCJ1S.js.map → index-y56Ds-LB.js.map} +1 -1
- package/dashboard/dist/assets/{knowledge-DzRpsm3D.js → knowledge-DSSATOTX.js} +2 -2
- package/dashboard/dist/assets/{knowledge-DzRpsm3D.js.map → knowledge-DSSATOTX.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-B1lc6nL4.js → mcp-CfJFVo5k.js} +2 -2
- package/dashboard/dist/assets/{mcp-B1lc6nL4.js.map → mcp-CfJFVo5k.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-CXuweaN3.js → mcp-query-DKVx2Q-X.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-CXuweaN3.js.map → mcp-query-DKVx2Q-X.js.map} +1 -1
- package/dashboard/dist/assets/{pipelines-D4VLWDvu.js → pipelines-BSWzE-6M.js} +2 -2
- package/dashboard/dist/assets/{pipelines-D4VLWDvu.js.map → pipelines-BSWzE-6M.js.map} +1 -1
- package/dashboard/dist/assets/{roles-CSpHRRu8.js → roles-t9HzhI5N.js} +2 -2
- package/dashboard/dist/assets/{roles-CSpHRRu8.js.map → roles-t9HzhI5N.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-CWUsKhM4.js → tasks-B7rUihoH.js} +2 -2
- package/dashboard/dist/assets/{tasks-CWUsKhM4.js.map → tasks-B7rUihoH.js.map} +1 -1
- package/dashboard/dist/assets/{topics-BXwstrzB.js → topics-PC2fEiyD.js} +2 -2
- package/dashboard/dist/assets/{topics-BXwstrzB.js.map → topics-PC2fEiyD.js.map} +1 -1
- package/dashboard/dist/assets/useDebouncedValue-BA5S7V54.js +2 -0
- package/dashboard/dist/assets/useDebouncedValue-BA5S7V54.js.map +1 -0
- package/dashboard/dist/assets/{useEventHooks-CjygrbYy.js → useEventHooks-DK9mw1cI.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-CjygrbYy.js.map → useEventHooks-DK9mw1cI.js.map} +1 -1
- package/dashboard/dist/assets/{useNamespace-CsepDyR5.js → useNamespace-3IjtUtAw.js} +2 -2
- package/dashboard/dist/assets/{useNamespace-CsepDyR5.js.map → useNamespace-3IjtUtAw.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-gWIG6akB.js → useYamlActivityEvents-uxukp3gO.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-gWIG6akB.js.map → useYamlActivityEvents-uxukp3gO.js.map} +1 -1
- package/dashboard/dist/assets/users-CC4B5Fm5.js +2 -0
- package/dashboard/dist/assets/users-CC4B5Fm5.js.map +1 -0
- package/dashboard/dist/assets/{vendor-icons-Dj2F0Jrb.js → vendor-icons-Dy5Jpknf.js} +114 -109
- package/dashboard/dist/assets/vendor-icons-Dy5Jpknf.js.map +1 -0
- package/dashboard/dist/assets/{workflows-C7Cam2Ok.js → workflows-S7MF1nNk.js} +2 -2
- package/dashboard/dist/assets/{workflows-C7Cam2Ok.js.map → workflows-S7MF1nNk.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-ChUOE22W.js → yaml-workflows-WfdaMHNn.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-ChUOE22W.js.map → yaml-workflows-WfdaMHNn.js.map} +1 -1
- package/dashboard/dist/index.html +3 -3
- package/docs/api/http/escalations.md +131 -10
- package/docs/api/http/roles.md +44 -9
- package/docs/api/http/users.md +15 -6
- package/docs/api/mcp/admin.md +164 -14
- package/docs/api/mcp/human-queue.md +34 -2
- package/docs/api/sdk/escalations.md +155 -2
- package/docs/api/sdk/roles.md +11 -0
- package/docs/api/sdk/users.md +26 -1
- package/docs/auth.md +1 -1
- package/docs/dashboard.md +5 -4
- package/docs/data.md +9 -2
- package/docs/faceted-routing.md +221 -0
- package/docs/hitl-guide.md +50 -0
- package/docs/iam.md +31 -0
- package/docs/mcp.md +8 -0
- package/package.json +2 -2
- package/dashboard/dist/assets/AdminDashboard-DZpduYdW.js +0 -2
- package/dashboard/dist/assets/AgentDetailPage-C-2iSaDs.js +0 -4
- package/dashboard/dist/assets/AgentDetailPage-C-2iSaDs.js.map +0 -1
- package/dashboard/dist/assets/AgentsPage-C3FztFd_.js +0 -2
- package/dashboard/dist/assets/AgentsPage-C3FztFd_.js.map +0 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-DIqdBCwe.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-DIqdBCwe.js.map +0 -1
- package/dashboard/dist/assets/CapabilitiesPage-DTfKCzBQ.js +0 -2
- package/dashboard/dist/assets/CopyableId-DaT0ZRHg.js +0 -2
- package/dashboard/dist/assets/CopyableId-DaT0ZRHg.js.map +0 -1
- package/dashboard/dist/assets/McpQueryPage-Db1LUKVs.js +0 -2
- package/dashboard/dist/assets/McpQueryPage-Db1LUKVs.js.map +0 -1
- package/dashboard/dist/assets/McpRunsPage--tgT5uo7.js +0 -2
- package/dashboard/dist/assets/McpRunsPage--tgT5uo7.js.map +0 -1
- package/dashboard/dist/assets/OperatorDashboard-BWVUbJkZ.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-BWVUbJkZ.js.map +0 -1
- package/dashboard/dist/assets/PageHeader-Bnt2iQQa.js +0 -2
- package/dashboard/dist/assets/PageHeader-Bnt2iQQa.js.map +0 -1
- package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js +0 -2
- package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js.map +0 -1
- package/dashboard/dist/assets/ProcessesListPage-CWiRM_h3.js +0 -2
- package/dashboard/dist/assets/ProcessesListPage-CWiRM_h3.js.map +0 -1
- package/dashboard/dist/assets/RolePill-DQTT1s9v.js +0 -2
- package/dashboard/dist/assets/RolePill-DQTT1s9v.js.map +0 -1
- package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js +0 -2
- package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js.map +0 -1
- package/dashboard/dist/assets/StreamMessageDetail-BF0tM0cd.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-M13lIaw7.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-M13lIaw7.js.map +0 -1
- package/dashboard/dist/assets/escalation-columns-DqTkKbCv.js +0 -2
- package/dashboard/dist/assets/escalation-columns-DqTkKbCv.js.map +0 -1
- package/dashboard/dist/assets/index-CEpw_Fh8.js +0 -2
- package/dashboard/dist/assets/index-CEpw_Fh8.js.map +0 -1
- package/dashboard/dist/assets/index-ClvYSNZd.css +0 -1
- package/dashboard/dist/assets/index-CucXk58o.js +0 -6
- package/dashboard/dist/assets/index-CucXk58o.js.map +0 -1
- package/dashboard/dist/assets/index-DPJW96d2.js.map +0 -1
- package/dashboard/dist/assets/index-DeZhNCf5.js +0 -2
- package/dashboard/dist/assets/index-DeZhNCf5.js.map +0 -1
- package/dashboard/dist/assets/index-Do8Xp3pa.js +0 -2
- package/dashboard/dist/assets/index-Do8Xp3pa.js.map +0 -1
- package/dashboard/dist/assets/users-DvhHbR0R.js +0 -2
- package/dashboard/dist/assets/users-DvhHbR0R.js.map +0 -1
- package/dashboard/dist/assets/vendor-icons-Dj2F0Jrb.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.findOrphanedSignalsSchema = exports.findStalledJobsSchema = exports.diagnoseJobSchema = exports.getExportStatusSchema = exports.exportWorkflowExecutionSchema = exports.exportWorkflowStateSchema = exports.listExportJobsSchema = exports.getSettingsSchema = exports.updatePrioritySchema = exports.bulkEscalateSchema = exports.bulkAssignSchema = exports.bulkClaimSchema = exports.resolveByMetadataSchema = exports.claimByMetadataSchema = exports.findByMetadataSchema = exports.deleteTopicSchema = exports.updateTopicSchema = exports.createTopicSchema = exports.getTopicSchema = exports.listTopicsSchema = exports.interruptJobSchema = exports.getJobExecutionSchema = exports.listPipelineJobsSchema = exports.listPipelineEntitiesSchema = void 0;
|
|
3
|
+
exports.updateBotSchema = exports.createBotSchema = exports.getBotSchema = exports.listBotsSchema = exports.deleteAgentSubscriptionSchema = exports.createAgentSubscriptionSchema = exports.listAgentSubscriptionsSchema = exports.deleteAgentSchema = exports.updateAgentSchema = exports.createAgentSchema = exports.getAgentSchema = exports.listAgentsSchema = exports.pruneSchema = exports.addEscalationChainSchema = exports.createRoleSchema = exports.listRolesSchema = exports.removeUserRoleSchema = exports.addUserRoleSchema = exports.createUserSchema = exports.listUsersSchema = exports.invokeYamlWorkflowSchema = exports.deployYamlWorkflowSchema = exports.createYamlWorkflowSchema = exports.getYamlWorkflowSchema = exports.listYamlWorkflowsSchema = exports.disconnectMcpServerSchema = exports.connectMcpServerSchema = exports.updateMcpServerSchema = exports.listMcpServersSchema = exports.getWorkflowStatusSchema = exports.invokeWorkflowSchema = exports.listDiscoveredWorkflowsSchema = exports.deleteWorkflowConfigSchema = exports.upsertWorkflowConfigSchema = exports.listWorkflowConfigsSchema = exports.bulkTriageSchema = exports.releaseExpiredClaimsSchema = exports.bulkCancelSchema = exports.cancelEscalationSchema = exports.escalateEscalationSchema = exports.resolveBySignalKeySchema = exports.resolveEscalationSchema = exports.releaseEscalationSchema = exports.claimEscalationSchema = exports.getEscalationStatsSchema = exports.getEscalationsByWorkflowSchema = exports.getEscalationSchema = exports.findEscalationsSchema = exports.getProcessDetailSchema = exports.findTasksSchema = void 0;
|
|
4
|
+
exports.claimByFacetsSchema = exports.claimGroupsSchema = exports.searchByFacetsSchema = exports.resolveByIdsSchema = exports.facetQuerySchema = exports.findOrphanedSignalsSchema = exports.findStalledJobsSchema = exports.diagnoseJobSchema = exports.getExportStatusSchema = exports.exportWorkflowExecutionSchema = exports.exportWorkflowStateSchema = exports.listExportJobsSchema = exports.getSettingsSchema = exports.updatePrioritySchema = exports.bulkEscalateSchema = exports.bulkAssignSchema = exports.bulkClaimSchema = exports.resolveByMetadataSchema = exports.claimByMetadataSchema = exports.findByMetadataSchema = exports.deleteTopicSchema = exports.updateTopicSchema = exports.createTopicSchema = exports.getTopicSchema = exports.listTopicsSchema = exports.interruptJobSchema = exports.getJobExecutionSchema = exports.listPipelineJobsSchema = exports.listPipelineEntitiesSchema = exports.listStreamMessagesSchema = exports.getStreamStatsSchema = exports.applyThrottleSchema = exports.rollCallSchema = exports.listAppsSchema = exports.revokeBotKeySchema = exports.createBotApiKeySchema = exports.deleteBotSchema = void 0;
|
|
5
5
|
/**
|
|
6
6
|
* Zod schemas for the admin MCP server tools.
|
|
7
7
|
*
|
|
@@ -28,12 +28,40 @@ exports.getProcessDetailSchema = zod_1.z.object({
|
|
|
28
28
|
});
|
|
29
29
|
// ── escalations (routes/escalations/) ───────────────────────────────────────
|
|
30
30
|
exports.findEscalationsSchema = zod_1.z.object({
|
|
31
|
-
status: zod_1.z.enum(['pending', 'resolved']).optional().describe('Filter by status'),
|
|
31
|
+
status: zod_1.z.enum(['pending', 'resolved', 'cancelled']).optional().describe('Filter by status'),
|
|
32
32
|
role: zod_1.z.string().optional().describe('Filter by target role'),
|
|
33
33
|
type: zod_1.z.string().optional().describe('Filter by escalation type'),
|
|
34
|
+
subtype: zod_1.z.string().optional().describe('Filter by escalation subtype'),
|
|
35
|
+
assigned_to: zod_1.z.string().optional().describe('Filter by assigned user UUID (active claim holder)'),
|
|
36
|
+
search: zod_1.z.string().optional().describe('Free-text search across description, type/subtype, role, workflow/origin id, and metadata values (e.g. a correlation key like an order id). Server-side over the full result set.'),
|
|
34
37
|
priority: zod_1.z.number().int().min(1).max(4).optional().describe('Filter by priority (1=critical, 4=low)'),
|
|
38
|
+
sort_by: zod_1.z.enum(['created_at', 'priority', 'updated_at']).optional().describe('Sort column (default: priority asc, then created_at asc)'),
|
|
39
|
+
order: zod_1.z.enum(['asc', 'desc']).optional().describe('Sort direction for sort_by'),
|
|
35
40
|
limit: zod_1.z.number().int().min(1).max(100).optional().default(5),
|
|
36
41
|
offset: zod_1.z.number().int().min(0).optional().default(0),
|
|
42
|
+
// Faceted metadata query (role-scoped in SQL). A "facet" is a key/value INSIDE the
|
|
43
|
+
// row's metadata JSONB, matched by containment (metadata @>), GIN-served.
|
|
44
|
+
roles: zod_1.z.array(zod_1.z.string()).optional().describe('Restrict to these roles (role = ANY); narrows within scope, never widens past it'),
|
|
45
|
+
facets: zod_1.z.record(zod_1.z.any()).optional().describe('Required metadata facets — metadata @> facets (AND). e.g. { filament: "pla" } means metadata.filament == "pla"'),
|
|
46
|
+
block: zod_1.z.array(zod_1.z.record(zod_1.z.any())).optional().describe('Exclude rows whose metadata contains ANY of these facet sets: NOT (metadata @> ANY(block))'),
|
|
47
|
+
range: zod_1.z.array(zod_1.z.object({
|
|
48
|
+
facet: zod_1.z.string(),
|
|
49
|
+
op: zod_1.z.enum(['<', '<=', '>', '>=', '=']),
|
|
50
|
+
value: zod_1.z.number(),
|
|
51
|
+
})).optional().describe('Numeric ranges over a metadata facet, e.g. { facet: "confidence", op: "<=", value: 0.7 }'),
|
|
52
|
+
exists: zod_1.z.array(zod_1.z.string()).optional().describe('Metadata keys that must be present: metadata ? key'),
|
|
53
|
+
available: zod_1.z.boolean().optional().describe('true = only unclaimed/expired; false = only held now'),
|
|
54
|
+
orderBy: zod_1.z.array(zod_1.z.object({
|
|
55
|
+
field: zod_1.z.string(),
|
|
56
|
+
direction: zod_1.z.enum(['asc', 'desc']).optional(),
|
|
57
|
+
numeric: zod_1.z.boolean().optional(),
|
|
58
|
+
})).optional().describe('Sort by a column or a metadata path written "metadata.<key>" (set numeric for numeric sort)'),
|
|
59
|
+
});
|
|
60
|
+
exports.getEscalationSchema = zod_1.z.object({
|
|
61
|
+
id: zod_1.z.string().describe('Escalation UUID'),
|
|
62
|
+
});
|
|
63
|
+
exports.getEscalationsByWorkflowSchema = zod_1.z.object({
|
|
64
|
+
workflow_id: zod_1.z.string().describe('HotMesh workflow ID to list escalations for'),
|
|
37
65
|
});
|
|
38
66
|
exports.getEscalationStatsSchema = zod_1.z.object({
|
|
39
67
|
period: zod_1.z.string().optional().describe('Time period: 1h, 24h, 7d, 30d'),
|
|
@@ -43,6 +71,27 @@ exports.claimEscalationSchema = zod_1.z.object({
|
|
|
43
71
|
duration_minutes: zod_1.z.number().int().optional().default(30)
|
|
44
72
|
.describe('Lock duration in minutes'),
|
|
45
73
|
});
|
|
74
|
+
exports.releaseEscalationSchema = zod_1.z.object({
|
|
75
|
+
id: zod_1.z.string().describe('Escalation UUID to release back to the pool'),
|
|
76
|
+
});
|
|
77
|
+
exports.resolveEscalationSchema = zod_1.z.object({
|
|
78
|
+
id: zod_1.z.string().describe('Escalation UUID to resolve'),
|
|
79
|
+
resolverPayload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload (matches the escalation form/resolver schema)'),
|
|
80
|
+
});
|
|
81
|
+
exports.resolveBySignalKeySchema = zod_1.z.object({
|
|
82
|
+
signalKey: zod_1.z.string().describe('Deterministic signal_key of an efficient escalation'),
|
|
83
|
+
resolverPayload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload'),
|
|
84
|
+
});
|
|
85
|
+
exports.escalateEscalationSchema = zod_1.z.object({
|
|
86
|
+
id: zod_1.z.string().describe('Escalation UUID'),
|
|
87
|
+
targetRole: zod_1.z.string().describe('Role to route the escalation to'),
|
|
88
|
+
});
|
|
89
|
+
exports.cancelEscalationSchema = zod_1.z.object({
|
|
90
|
+
id: zod_1.z.string().describe('Escalation UUID to cancel'),
|
|
91
|
+
});
|
|
92
|
+
exports.bulkCancelSchema = zod_1.z.object({
|
|
93
|
+
ids: zod_1.z.array(zod_1.z.string()).min(1).describe('Escalation UUIDs to cancel'),
|
|
94
|
+
});
|
|
46
95
|
exports.releaseExpiredClaimsSchema = zod_1.z.object({});
|
|
47
96
|
exports.bulkTriageSchema = zod_1.z.object({
|
|
48
97
|
ids: zod_1.z.array(zod_1.z.string()).min(1).describe('Escalation UUIDs to triage'),
|
|
@@ -81,6 +130,7 @@ exports.invokeWorkflowSchema = zod_1.z.object({
|
|
|
81
130
|
});
|
|
82
131
|
exports.getWorkflowStatusSchema = zod_1.z.object({
|
|
83
132
|
workflow_id: zod_1.z.string().describe('HotMesh workflow ID'),
|
|
133
|
+
app_id: zod_1.z.string().optional().describe('HotMesh namespace for resolution (default: durable). Set this to read a child/workflow running in another app.'),
|
|
84
134
|
});
|
|
85
135
|
// ── mcp servers (routes/mcp.ts) ─────────────────────────────────────────────
|
|
86
136
|
exports.listMcpServersSchema = zod_1.z.object({
|
|
@@ -141,6 +191,16 @@ exports.listUsersSchema = zod_1.z.object({
|
|
|
141
191
|
limit: zod_1.z.number().int().min(1).max(100).optional().default(50),
|
|
142
192
|
offset: zod_1.z.number().int().min(0).optional().default(0),
|
|
143
193
|
});
|
|
194
|
+
// Work-surface scope for a `member` grant. read governs search breadth, write
|
|
195
|
+
// governs claim/ack/delete breadth; admin/superadmin ignore scope (act on all).
|
|
196
|
+
// The write ⊆ read constraint (write_scope='all' requires read_scope='all') is
|
|
197
|
+
// validated in the handler so these stay plain object shapes for the tool registry.
|
|
198
|
+
const scopeFields = {
|
|
199
|
+
read_scope: zod_1.z.enum(['self', 'all']).optional()
|
|
200
|
+
.describe("Member search breadth: 'self' (own items) or 'all' (whole queue). Default all"),
|
|
201
|
+
write_scope: zod_1.z.enum(['none', 'self', 'all']).optional()
|
|
202
|
+
.describe("Member claim/ack/delete breadth: 'none', 'self' (own items), or 'all'. Default all"),
|
|
203
|
+
};
|
|
144
204
|
exports.createUserSchema = zod_1.z.object({
|
|
145
205
|
external_id: zod_1.z.string().describe('Stable user identifier'),
|
|
146
206
|
display_name: zod_1.z.string().optional(),
|
|
@@ -148,12 +208,14 @@ exports.createUserSchema = zod_1.z.object({
|
|
|
148
208
|
roles: zod_1.z.array(zod_1.z.object({
|
|
149
209
|
role: zod_1.z.string(),
|
|
150
210
|
type: zod_1.z.enum(['superadmin', 'admin', 'member']),
|
|
151
|
-
|
|
211
|
+
...scopeFields,
|
|
212
|
+
})).optional().default([]).describe('Roles to assign on creation (each with optional work-surface scope)'),
|
|
152
213
|
});
|
|
153
214
|
exports.addUserRoleSchema = zod_1.z.object({
|
|
154
215
|
user_id: zod_1.z.string().describe('User UUID'),
|
|
155
216
|
role: zod_1.z.string().describe('Role name'),
|
|
156
217
|
type: zod_1.z.enum(['superadmin', 'admin', 'member']).describe('Permission level'),
|
|
218
|
+
...scopeFields,
|
|
157
219
|
});
|
|
158
220
|
exports.removeUserRoleSchema = zod_1.z.object({
|
|
159
221
|
user_id: zod_1.z.string().describe('User UUID'),
|
|
@@ -419,7 +481,9 @@ exports.getExportStatusSchema = zod_1.z.object({
|
|
|
419
481
|
exports.diagnoseJobSchema = zod_1.z.object({
|
|
420
482
|
workflow_id: zod_1.z.string().describe('Workflow ID to diagnose'),
|
|
421
483
|
app_id: zod_1.z.string().optional().default('durable').describe('HotMesh namespace / DB schema (default: durable)'),
|
|
422
|
-
max_events: zod_1.z.number().int().min(1).optional().default(500).describe('Cap on execution events returned; most recent are kept (default: 500).
|
|
484
|
+
max_events: zod_1.z.number().int().min(1).optional().default(500).describe('Cap on execution events returned when events are included; most recent are kept (default: 500).'),
|
|
485
|
+
include: zod_1.z.array(zod_1.z.enum(['events', 'streams'])).optional().describe('Heavy sections to add to the verdict. "events" adds the execution timeline; "streams" adds raw engine+worker messages. Omit for the compact verdict (status, idle, stream counts, escalation, findings). For full raw message payloads prefer list_stream_messages filtered by jid.'),
|
|
486
|
+
verbosity: zod_1.z.enum(['summary', 'full']).optional().describe('Shorthand: "summary" (default) = verdict only; "full" = events + streams. Overridden by an explicit include[].'),
|
|
423
487
|
});
|
|
424
488
|
exports.findStalledJobsSchema = zod_1.z.object({
|
|
425
489
|
app_id: zod_1.z.string().optional().default('durable').describe('HotMesh namespace / DB schema (default: durable)'),
|
|
@@ -432,3 +496,35 @@ exports.findOrphanedSignalsSchema = zod_1.z.object({
|
|
|
432
496
|
within_hours: zod_1.z.number().int().min(1).max(720).optional().default(24).describe('Recent time window to scan, in hours (default: 24, max: 720). Bounds the scan of the partitioned worker_streams table — widen deliberately to reach older orphans.'),
|
|
433
497
|
limit: zod_1.z.number().int().min(1).max(500).optional().default(100).describe('Max results (default: 100, max: 500)'),
|
|
434
498
|
});
|
|
499
|
+
// ── Faceted routing + set resolve ───────────────────────────────────────────
|
|
500
|
+
/** A faceted query over a pond — filter/sort by columns and metadata facets. */
|
|
501
|
+
exports.facetQuerySchema = zod_1.z.object({
|
|
502
|
+
role: zod_1.z.string().describe('Pond role to target (the escalation role)'),
|
|
503
|
+
status: zod_1.z.string().optional().describe("Status filter (e.g. 'pending')"),
|
|
504
|
+
available: zod_1.z.boolean().optional().describe('Only rows not currently claimed'),
|
|
505
|
+
facets: zod_1.z.record(zod_1.z.any()).optional().describe('Metadata facet equality filters'),
|
|
506
|
+
orderBy: zod_1.z.array(zod_1.z.object({
|
|
507
|
+
column: zod_1.z.string(),
|
|
508
|
+
direction: zod_1.z.enum(['asc', 'desc']),
|
|
509
|
+
})).optional().describe('Sort order over columns'),
|
|
510
|
+
limit: zod_1.z.number().int().min(1).optional(),
|
|
511
|
+
offset: zod_1.z.number().int().min(0).optional(),
|
|
512
|
+
});
|
|
513
|
+
exports.resolveByIdsSchema = zod_1.z.object({
|
|
514
|
+
ids: zod_1.z.array(zod_1.z.string()).min(1).describe('Escalation ids to resolve as one set'),
|
|
515
|
+
resolverPayload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload applied to every row'),
|
|
516
|
+
metadata: zod_1.z.record(zod_1.z.any()).optional().describe('Outcome patch merged into each row'),
|
|
517
|
+
});
|
|
518
|
+
exports.searchByFacetsSchema = exports.facetQuerySchema;
|
|
519
|
+
exports.claimGroupsSchema = zod_1.z.object({
|
|
520
|
+
query: exports.facetQuerySchema,
|
|
521
|
+
limit: zod_1.z.number().int().min(1).optional().describe('Max groups to claim'),
|
|
522
|
+
durationMinutes: zod_1.z.number().int().min(1).optional().describe('Claim TTL in minutes'),
|
|
523
|
+
sizeFacet: zod_1.z.string().optional().describe('Metadata key holding the group size'),
|
|
524
|
+
});
|
|
525
|
+
exports.claimByFacetsSchema = zod_1.z.object({
|
|
526
|
+
query: exports.facetQuerySchema,
|
|
527
|
+
limit: zod_1.z.number().int().min(1).optional().describe('Max rows to claim'),
|
|
528
|
+
durationMinutes: zod_1.z.number().int().min(1).optional().describe('Claim TTL in minutes'),
|
|
529
|
+
allOrNone: zod_1.z.boolean().optional().describe('Commit only if the full limit was acquired'),
|
|
530
|
+
});
|
|
@@ -74,6 +74,18 @@ function registerUserTools(server) {
|
|
|
74
74
|
'claim and resolve escalations for their assigned roles.',
|
|
75
75
|
inputSchema: schemas_1.createUserSchema,
|
|
76
76
|
}, async (args) => {
|
|
77
|
+
// roles carry optional read_scope/write_scope (default all/all); createUser
|
|
78
|
+
// normalizes admin/superadmin to all/all and stores member scope verbatim.
|
|
79
|
+
for (const r of args.roles) {
|
|
80
|
+
const read = r.read_scope ?? userService.DEFAULT_READ_SCOPE;
|
|
81
|
+
const write = r.write_scope ?? userService.DEFAULT_WRITE_SCOPE;
|
|
82
|
+
if (!userService.isValidScopePair(read, write)) {
|
|
83
|
+
return {
|
|
84
|
+
isError: true,
|
|
85
|
+
content: [{ type: 'text', text: `write_scope=all requires read_scope=all (role "${r.role}")` }],
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
77
89
|
const user = await userService.createUser({
|
|
78
90
|
external_id: args.external_id,
|
|
79
91
|
display_name: args.display_name,
|
|
@@ -87,10 +99,24 @@ function registerUserTools(server) {
|
|
|
87
99
|
// mirrors POST /api/users/:id/roles
|
|
88
100
|
server.registerTool('add_user_role', {
|
|
89
101
|
title: 'Add User Role',
|
|
90
|
-
description: 'Assign a role to a user. Role type: member, admin, or superadmin.'
|
|
102
|
+
description: 'Assign a role to a user. Role type: member, admin, or superadmin. For a ' +
|
|
103
|
+
'member, optional read_scope/write_scope set the work-surface (e.g. ' +
|
|
104
|
+
'read_scope=self + write_scope=self for a one-time user who only handles ' +
|
|
105
|
+
'their own pre-assigned escalation).',
|
|
91
106
|
inputSchema: schemas_1.addUserRoleSchema,
|
|
92
107
|
}, async (args) => {
|
|
93
|
-
const
|
|
108
|
+
const read = args.read_scope ?? userService.DEFAULT_READ_SCOPE;
|
|
109
|
+
const write = args.write_scope ?? userService.DEFAULT_WRITE_SCOPE;
|
|
110
|
+
if (!userService.isValidScopePair(read, write)) {
|
|
111
|
+
return {
|
|
112
|
+
isError: true,
|
|
113
|
+
content: [{ type: 'text', text: 'write_scope=all requires read_scope=all' }],
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
const result = await userService.addUserRole(args.user_id, args.role, args.type, {
|
|
117
|
+
read_scope: args.read_scope,
|
|
118
|
+
write_scope: args.write_scope,
|
|
119
|
+
});
|
|
94
120
|
return {
|
|
95
121
|
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
96
122
|
};
|
|
@@ -37,7 +37,7 @@ exports.registerWorkflowTools = registerWorkflowTools;
|
|
|
37
37
|
const configService = __importStar(require("../../../services/config"));
|
|
38
38
|
const registry_1 = require("../../../services/workers/registry");
|
|
39
39
|
const workflow_invocation_1 = require("../../../services/workflow-invocation");
|
|
40
|
-
const
|
|
40
|
+
const workflowApi = __importStar(require("../../../api/workflows"));
|
|
41
41
|
const schemas_1 = require("./schemas");
|
|
42
42
|
function registerWorkflowTools(server) {
|
|
43
43
|
// mirrors GET /api/workflows/discovered
|
|
@@ -110,21 +110,23 @@ function registerWorkflowTools(server) {
|
|
|
110
110
|
server.registerTool('get_workflow_status', {
|
|
111
111
|
title: 'Get Workflow Status',
|
|
112
112
|
description: 'Check the status and result of a workflow execution. Returns ' +
|
|
113
|
-
'status (
|
|
113
|
+
'status (running | complete) and the result if complete. ' +
|
|
114
|
+
'Resolution is namespace-aware: pass app_id to read a workflow (e.g. a ' +
|
|
115
|
+
'child) running in a non-default HotMesh namespace.',
|
|
114
116
|
inputSchema: schemas_1.getWorkflowStatusSchema,
|
|
115
117
|
}, async (args) => {
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
|
|
118
|
+
const statusResult = await workflowApi.getWorkflowStatus({
|
|
119
|
+
workflowId: args.workflow_id,
|
|
120
|
+
appId: args.app_id,
|
|
121
|
+
});
|
|
122
|
+
if (statusResult.error) {
|
|
119
123
|
return {
|
|
120
|
-
content: [{ type: 'text', text: JSON.stringify({ error:
|
|
124
|
+
content: [{ type: 'text', text: JSON.stringify({ error: statusResult.error }) }],
|
|
121
125
|
isError: true,
|
|
122
126
|
};
|
|
123
127
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const status = await handle.status();
|
|
127
|
-
if (status !== 0) {
|
|
128
|
+
// HotMesh status: 0 = complete, positive = running.
|
|
129
|
+
if (statusResult.data?.status !== 0) {
|
|
128
130
|
return {
|
|
129
131
|
content: [{
|
|
130
132
|
type: 'text',
|
|
@@ -132,11 +134,20 @@ function registerWorkflowTools(server) {
|
|
|
132
134
|
}],
|
|
133
135
|
};
|
|
134
136
|
}
|
|
135
|
-
const
|
|
137
|
+
const resultResult = await workflowApi.getWorkflowResult({
|
|
138
|
+
workflowId: args.workflow_id,
|
|
139
|
+
appId: args.app_id,
|
|
140
|
+
});
|
|
141
|
+
if (resultResult.error) {
|
|
142
|
+
return {
|
|
143
|
+
content: [{ type: 'text', text: JSON.stringify({ error: resultResult.error }) }],
|
|
144
|
+
isError: true,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
136
147
|
return {
|
|
137
148
|
content: [{
|
|
138
149
|
type: 'text',
|
|
139
|
-
text: JSON.stringify({ workflow_id: args.workflow_id, status: 'complete', result }),
|
|
150
|
+
text: JSON.stringify({ workflow_id: args.workflow_id, status: 'complete', result: resultResult.data?.result }),
|
|
140
151
|
}],
|
|
141
152
|
};
|
|
142
153
|
});
|