@hotmeshio/long-tail 0.23.2 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/adapters/express.d.ts +9 -1
- package/build/adapters/express.js +32 -41
- package/build/api/auth-sso.d.ts +1 -1
- package/build/api/bot-accounts.d.ts +2 -0
- package/build/api/bot-accounts.js +4 -0
- package/build/api/capabilities.d.ts +7 -2
- package/build/api/capabilities.js +13 -2
- package/build/api/escalations/analytics.js +5 -0
- package/build/api/escalations/bulk.d.ts +2 -0
- package/build/api/escalations/bulk.js +9 -4
- package/build/api/escalations/helpers.d.ts +5 -0
- package/build/api/escalations/helpers.js +7 -0
- package/build/api/escalations/metadata.js +3 -0
- package/build/api/escalations/single.d.ts +3 -2
- package/build/api/escalations/single.js +8 -3
- package/build/api/mcp/tools.d.ts +12 -0
- package/build/api/mcp/tools.js +113 -9
- package/build/api/scan-codes/choice.js +31 -7
- package/build/api/settings.js +9 -0
- package/build/api/tasks.d.ts +3 -3
- package/build/api/tasks.js +30 -7
- package/build/api/workflows/input-lookups.js +1 -1
- package/build/api/workflows/invocable.js +2 -2
- package/build/api/workflows/invocation.js +1 -1
- package/build/api/yaml-workflows/deploy.d.ts +10 -2
- package/build/api/yaml-workflows/deploy.js +42 -2
- package/build/lib/db/schemas/038_oauth_server.sql +46 -0
- package/build/lib/events/browser-view.d.ts +15 -0
- package/build/lib/events/browser-view.js +101 -0
- package/build/lib/events/nats-ws-filter.d.ts +29 -0
- package/build/lib/events/nats-ws-filter.js +94 -0
- package/build/lib/events/nats-ws-proxy.d.ts +2 -0
- package/build/lib/events/nats-ws-proxy.js +39 -5
- package/build/lib/events/nats-ws-server-filter.d.ts +16 -0
- package/build/lib/events/nats-ws-server-filter.js +56 -0
- package/build/lib/events/nats-ws-ticket.d.ts +10 -0
- package/build/lib/events/nats-ws-ticket.js +42 -0
- package/build/lib/events/socketio.d.ts +10 -1
- package/build/lib/events/socketio.js +10 -3
- package/build/lib/http/index.d.ts +27 -0
- package/build/lib/http/index.js +55 -0
- package/build/modules/auth.d.ts +15 -24
- package/build/modules/auth.js +43 -126
- package/build/modules/capabilities.d.ts +62 -0
- package/build/modules/capabilities.js +188 -0
- package/build/modules/config.d.ts +14 -0
- package/build/modules/config.js +20 -0
- package/build/modules/defaults.d.ts +10 -0
- package/build/modules/defaults.js +12 -1
- package/build/modules/mcp-auth.d.ts +11 -0
- package/build/modules/mcp-auth.js +56 -0
- package/build/modules/oauth-server.d.ts +18 -0
- package/build/modules/oauth-server.js +40 -0
- package/build/routes/agents.js +46 -14
- package/build/routes/announcements.js +2 -2
- package/build/routes/auth-sso.js +2 -2
- package/build/routes/auth.js +2 -2
- package/build/routes/bot-accounts.js +26 -3
- package/build/routes/capabilities.js +4 -4
- package/build/routes/controlplane.js +2 -2
- package/build/routes/dba.js +2 -2
- package/build/routes/delegation.js +2 -2
- package/build/routes/diagnostics.js +2 -2
- package/build/routes/docs.js +2 -2
- package/build/routes/domain.js +2 -2
- package/build/routes/escalations/accumulate.d.ts +1 -1
- package/build/routes/escalations/acting.d.ts +1 -1
- package/build/routes/escalations/analytics.d.ts +1 -1
- package/build/routes/escalations/bulk.d.ts +1 -1
- package/build/routes/escalations/facets.d.ts +1 -1
- package/build/routes/escalations/index.js +2 -2
- package/build/routes/escalations/list.d.ts +1 -1
- package/build/routes/escalations/metadata.d.ts +1 -1
- package/build/routes/escalations/related.d.ts +1 -1
- package/build/routes/escalations/resolve.d.ts +1 -1
- package/build/routes/escalations/single.d.ts +1 -1
- package/build/routes/escalations/single.js +1 -1
- package/build/routes/exports.js +14 -13
- package/build/routes/file-browser.js +9 -8
- package/build/routes/files.js +2 -2
- package/build/routes/index.js +4 -2
- package/build/routes/insight.js +5 -4
- package/build/routes/knowledge.js +2 -2
- package/build/routes/maintenance.js +2 -2
- package/build/routes/mcp-endpoint.d.ts +3 -1
- package/build/routes/mcp-endpoint.js +18 -8
- package/build/routes/mcp.js +35 -15
- package/build/routes/me.js +2 -2
- package/build/routes/namespaces.js +4 -3
- package/build/routes/nats-credentials.js +27 -3
- package/build/routes/oauth-server/authorize.d.ts +2 -0
- package/build/routes/oauth-server/authorize.js +108 -0
- package/build/routes/oauth-server/grants.d.ts +2 -0
- package/build/routes/oauth-server/grants.js +35 -0
- package/build/routes/oauth-server/index.d.ts +8 -0
- package/build/routes/oauth-server/index.js +52 -0
- package/build/routes/oauth-server/registration.d.ts +2 -0
- package/build/routes/oauth-server/registration.js +38 -0
- package/build/routes/oauth-server/token.d.ts +2 -0
- package/build/routes/oauth-server/token.js +100 -0
- package/build/routes/oauth-well-known.d.ts +8 -0
- package/build/routes/oauth-well-known.js +31 -0
- package/build/routes/oauth.js +2 -2
- package/build/routes/overview.js +2 -2
- package/build/routes/personas.js +2 -2
- package/build/routes/pipelines.js +6 -5
- package/build/routes/roles.js +2 -2
- package/build/routes/scan-codes.js +2 -2
- package/build/routes/settings.js +2 -2
- package/build/routes/tasks.js +5 -5
- package/build/routes/topics.js +21 -9
- package/build/routes/users.js +25 -22
- package/build/routes/workflow-sets.js +13 -12
- package/build/routes/workflows/config.js +15 -2
- package/build/routes/workflows/discovery.js +2 -2
- package/build/routes/workflows/index.js +2 -2
- package/build/routes/workflows/invocation.js +11 -10
- package/build/routes/yaml-workflows/cron.js +19 -6
- package/build/routes/yaml-workflows/crud.js +13 -12
- package/build/routes/yaml-workflows/deployment.js +11 -10
- package/build/routes/yaml-workflows/index.js +2 -2
- package/build/routes/yaml-workflows/versions.js +2 -2
- package/build/services/agent/authority.d.ts +14 -0
- package/build/services/agent/authority.js +53 -0
- package/build/services/auth/bot-api-key.d.ts +2 -0
- package/build/services/auth/bot-api-key.js +10 -0
- package/build/services/auth/oauth-server/access-token.d.ts +36 -0
- package/build/services/auth/oauth-server/access-token.js +80 -0
- package/build/services/auth/oauth-server/authorization.d.ts +47 -0
- package/build/services/auth/oauth-server/authorization.js +54 -0
- package/build/services/auth/oauth-server/constants.d.ts +11 -0
- package/build/services/auth/oauth-server/constants.js +16 -0
- package/build/services/auth/oauth-server/index.d.ts +3 -0
- package/build/services/auth/oauth-server/index.js +26 -0
- package/build/services/auth/oauth-server/metadata.d.ts +21 -0
- package/build/services/auth/oauth-server/metadata.js +53 -0
- package/build/services/auth/oauth-server/registration.d.ts +42 -0
- package/build/services/auth/oauth-server/registration.js +134 -0
- package/build/services/auth/oauth-server/sql.d.ts +34 -0
- package/build/services/auth/oauth-server/sql.js +123 -0
- package/build/services/auth/oauth-server/store.d.ts +74 -0
- package/build/services/auth/oauth-server/store.js +151 -0
- package/build/services/auth/sql.d.ts +1 -0
- package/build/services/auth/sql.js +3 -1
- package/build/services/escalation/queries.js +7 -2
- package/build/services/export/index.d.ts +10 -0
- package/build/services/export/index.js +27 -0
- package/build/services/invocation-access.d.ts +25 -4
- package/build/services/invocation-access.js +39 -7
- package/build/services/mcp/client/connection-dispatch.d.ts +6 -1
- package/build/services/mcp/client/connection-dispatch.js +3 -2
- package/build/services/mcp/client/connection-lifecycle.d.ts +10 -2
- package/build/services/mcp/client/connection-lifecycle.js +45 -7
- package/build/services/mcp/client/connection-test.js +2 -6
- package/build/services/mcp/client/connection.d.ts +1 -1
- package/build/services/mcp/client/connection.js +3 -1
- package/build/services/mcp/client/index.d.ts +2 -2
- package/build/services/mcp/client/index.js +4 -1
- package/build/services/mcp/client/network-transport.d.ts +12 -0
- package/build/services/mcp/client/network-transport.js +20 -0
- package/build/services/mcp/client/tools.d.ts +13 -0
- package/build/services/mcp/client/tools.js +18 -0
- package/build/services/mcp/db-server/index.js +2 -1
- package/build/services/mcp/external-server.d.ts +9 -4
- package/build/services/mcp/external-server.js +34 -11
- package/build/services/mcp/playwright-server/index.js +2 -1
- package/build/services/mcp/registered-tools.d.ts +3 -0
- package/build/services/mcp/registered-tools.js +7 -0
- package/build/services/mcp/server-lifecycle.js +2 -1
- package/build/services/workflow-invocation.d.ts +16 -3
- package/build/services/workflow-invocation.js +42 -10
- package/build/services/yaml-workflow/deployer.d.ts +10 -2
- package/build/services/yaml-workflow/deployer.js +17 -5
- package/build/services/yaml-workflow/invoke.js +27 -26
- package/build/start/config.js +7 -0
- package/build/start/index.js +4 -22
- package/build/start/server.d.ts +6 -4
- package/build/start/server.js +11 -35
- package/build/start/socket-auth.js +2 -1
- package/build/start/workers.js +1 -1
- package/build/system/mcp-servers/admin/agent-subscriptions.js +24 -1
- package/build/system/mcp-servers/admin/agents.js +25 -2
- package/build/system/mcp-servers/admin/announcements.js +3 -2
- package/build/system/mcp-servers/admin/bot-accounts.js +37 -5
- package/build/system/mcp-servers/admin/escalations.d.ts +3 -5
- package/build/system/mcp-servers/admin/escalations.js +74 -70
- package/build/system/mcp-servers/admin/exports.js +7 -1
- package/build/system/mcp-servers/admin/index.js +24 -25
- package/build/system/mcp-servers/admin/overview.d.ts +2 -2
- package/build/system/mcp-servers/admin/run-read.d.ts +2 -0
- package/build/system/mcp-servers/admin/run-read.js +5 -0
- package/build/system/mcp-servers/admin/scan-codes.d.ts +2 -2
- package/build/system/mcp-servers/admin/scan-codes.js +5 -11
- package/build/system/mcp-servers/admin/schemas.d.ts +20 -20
- package/build/system/mcp-servers/admin/tasks.js +7 -2
- package/build/system/mcp-servers/admin/users.js +31 -4
- package/build/system/mcp-servers/admin/workflow-config.js +12 -1
- package/build/system/mcp-servers/admin/workflows.js +27 -5
- package/build/system/mcp-servers/admin/yaml-workflows.js +7 -1
- package/build/system/mcp-servers/caller-auth.d.ts +18 -0
- package/build/system/mcp-servers/caller-auth.js +29 -0
- package/build/system/mcp-servers/claude-code.js +2 -1
- package/build/system/mcp-servers/db-query/index.js +2 -1
- package/build/system/mcp-servers/file-storage.js +2 -1
- package/build/system/mcp-servers/http-fetch.js +2 -1
- package/build/system/mcp-servers/human-queue.js +7 -3
- package/build/system/mcp-servers/oauth.js +31 -4
- package/build/system/mcp-servers/schema-exchange.js +2 -1
- package/build/system/mcp-servers/vision.d.ts +1 -0
- package/build/system/mcp-servers/vision.js +17 -7
- package/build/system/seed/tool-manifests-admin.d.ts +2 -17985
- package/build/system/seed/tool-manifests-admin.js +121 -121
- package/build/system/seed/tool-manifests-data.d.ts +8 -374
- package/build/system/seed/tool-manifests-data.js +22 -4
- package/build/system/seed/tool-manifests-escalation.d.ts +2 -352
- package/build/system/seed/tool-manifests-escalation.js +11 -1
- package/build/system/seed/tool-manifests-events.d.ts +2 -116
- package/build/system/seed/tool-manifests-events.js +6 -2
- package/build/system/seed/tool-manifests-knowledge.d.ts +2 -221
- package/build/system/seed/tool-manifests-knowledge.js +41 -1
- package/build/system/seed/tool-manifests-workflows.d.ts +2 -71
- package/build/system/seed/tool-manifests-workflows.js +3 -1
- package/build/system/workflows/shared/principal-tools.d.ts +20 -0
- package/build/system/workflows/shared/principal-tools.js +64 -0
- package/build/system/workflows/shared/tool-executor.js +21 -11
- package/build/system/workflows/shared/tool-loader.js +8 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/auth.d.ts +1 -1
- package/build/types/capability.d.ts +14 -0
- package/build/types/capability.js +2 -0
- package/build/types/events.d.ts +1 -1
- package/build/types/index.d.ts +3 -1
- package/build/types/mcp.d.ts +3 -1
- package/build/types/oauth-server.d.ts +52 -0
- package/build/types/oauth-server.js +2 -0
- package/build/types/startup.d.ts +15 -7
- package/build/vitest.config.js +2 -1
- package/build/vitest.fast.config.d.ts +2 -0
- package/build/vitest.fast.config.js +20 -0
- package/build/vitest.llm.config.d.ts +2 -0
- package/build/vitest.llm.config.js +16 -0
- package/dashboard/dist/assets/{AdminDashboard-BPWsgMfZ.js → AdminDashboard-B3mkMIOT.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-BPWsgMfZ.js.map → AdminDashboard-B3mkMIOT.js.map} +1 -1
- package/dashboard/dist/assets/{AgentConfigPage-De9imyo5.js → AgentConfigPage-CQj2B678.js} +2 -2
- package/dashboard/dist/assets/{AgentConfigPage-De9imyo5.js.map → AgentConfigPage-CQj2B678.js.map} +1 -1
- package/dashboard/dist/assets/{AgentDetailPage-B6o96Y5G.js → AgentDetailPage-CzrD8JJI.js} +3 -3
- package/dashboard/dist/assets/{AgentDetailPage-B6o96Y5G.js.map → AgentDetailPage-CzrD8JJI.js.map} +1 -1
- package/dashboard/dist/assets/{AgentsPage-DMEmiK_W.js → AgentsPage-jg2OFwyW.js} +2 -2
- package/dashboard/dist/assets/{AgentsPage-DMEmiK_W.js.map → AgentsPage-jg2OFwyW.js.map} +1 -1
- package/dashboard/dist/assets/{AvailableEscalationsPage-DeYMngwE.js → AvailableEscalationsPage-IS28XBRe.js} +2 -2
- package/dashboard/dist/assets/{AvailableEscalationsPage-DeYMngwE.js.map → AvailableEscalationsPage-IS28XBRe.js.map} +1 -1
- package/dashboard/dist/assets/{BotPicker-DDmpgGHZ.js → BotPicker-DvEJFpwS.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-DDmpgGHZ.js.map → BotPicker-DvEJFpwS.js.map} +1 -1
- package/dashboard/dist/assets/{BulkAssignModal-BqlklomG.js → BulkAssignModal-BoQCi-YC.js} +2 -2
- package/dashboard/dist/assets/{BulkAssignModal-BqlklomG.js.map → BulkAssignModal-BoQCi-YC.js.map} +1 -1
- package/dashboard/dist/assets/{CapabilitiesPage-DOtjDTbK.js → CapabilitiesPage-kwlrcb_t.js} +2 -2
- package/dashboard/dist/assets/{CapabilitiesPage-DOtjDTbK.js.map → CapabilitiesPage-kwlrcb_t.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-CLr8LP0V.js → CollapsibleSection-UMIV4KIj.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-CLr8LP0V.js.map → CollapsibleSection-UMIV4KIj.js.map} +1 -1
- package/dashboard/dist/assets/ConfirmDeleteModal-C5puwMg7.js +2 -0
- package/dashboard/dist/assets/ConfirmDeleteModal-C5puwMg7.js.map +1 -0
- package/dashboard/dist/assets/ConnectedAppsPage-drZa65kP.js +2 -0
- package/dashboard/dist/assets/ConnectedAppsPage-drZa65kP.js.map +1 -0
- package/dashboard/dist/assets/{CountdownTimer-DxX72PwV.js → CountdownTimer-LG03dVgR.js} +2 -2
- package/dashboard/dist/assets/{CountdownTimer-DxX72PwV.js.map → CountdownTimer-LG03dVgR.js.map} +1 -1
- package/dashboard/dist/assets/{CredentialsPage-CObc9Rs5.js → CredentialsPage-CaFQ6vLb.js} +2 -2
- package/dashboard/dist/assets/{CredentialsPage-CObc9Rs5.js.map → CredentialsPage-CaFQ6vLb.js.map} +1 -1
- package/dashboard/dist/assets/{CronLabel-Bb8GoNY5.js → CronLabel-Co5j7tzW.js} +2 -2
- package/dashboard/dist/assets/{CronLabel-Bb8GoNY5.js.map → CronLabel-Co5j7tzW.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-CmGhVlYl.js → ElapsedCell-WJyE9G0T.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-CmGhVlYl.js.map → ElapsedCell-WJyE9G0T.js.map} +1 -1
- package/dashboard/dist/assets/{EntityTimelinePanel-B4Jwy1w3.js → EntityTimelinePanel-CDFFfX9d.js} +2 -2
- package/dashboard/dist/assets/{EntityTimelinePanel-B4Jwy1w3.js.map → EntityTimelinePanel-CDFFfX9d.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationListSchemaPage-CZZbZ4Aa.js → EscalationListSchemaPage-CMrUlaKI.js} +3 -3
- package/dashboard/dist/assets/{EscalationListSchemaPage-CZZbZ4Aa.js.map → EscalationListSchemaPage-CMrUlaKI.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationSchemaPage-D0ko59_S.js → EscalationSchemaPage-Dx2Lyfrz.js} +2 -2
- package/dashboard/dist/assets/{EscalationSchemaPage-D0ko59_S.js.map → EscalationSchemaPage-Dx2Lyfrz.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationTimeline-BcnJEKFD.js → EscalationTimeline-d3nvshOk.js} +2 -2
- package/dashboard/dist/assets/{EscalationTimeline-BcnJEKFD.js.map → EscalationTimeline-d3nvshOk.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationTitleSelect-P0q5sck4.js → EscalationTitleSelect-DWQieOM9.js} +2 -2
- package/dashboard/dist/assets/{EscalationTitleSelect-P0q5sck4.js.map → EscalationTitleSelect-DWQieOM9.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-BLPmh4AF.js → EscalationsOverview-BX8Cpi0X.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-BLPmh4AF.js.map → EscalationsOverview-BX8Cpi0X.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-gBzi5tIS.js → EventTable-D1-ITVXS.js} +2 -2
- package/dashboard/dist/assets/{EventTable-gBzi5tIS.js.map → EventTable-D1-ITVXS.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-BulSsWb2.js → FilterBar-ABC9ctin.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-BulSsWb2.js.map → FilterBar-ABC9ctin.js.map} +1 -1
- package/dashboard/dist/assets/{FormattedValue-BMHRrvrL.js → FormattedValue-k27T4bG7.js} +2 -2
- package/dashboard/dist/assets/{FormattedValue-BMHRrvrL.js.map → FormattedValue-k27T4bG7.js.map} +1 -1
- package/dashboard/dist/assets/{GraphInvokePage--997yNRr.js → GraphInvokePage-DKUErxWc.js} +2 -2
- package/dashboard/dist/assets/{GraphInvokePage--997yNRr.js.map → GraphInvokePage-DKUErxWc.js.map} +1 -1
- package/dashboard/dist/assets/{HomePage-CwXFz--v.js → HomePage-C6u9dIpR.js} +2 -2
- package/dashboard/dist/assets/{HomePage-CwXFz--v.js.map → HomePage-C6u9dIpR.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-Df4qZryJ.js → ListToolbar-gA5rFzkz.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-Df4qZryJ.js.map → ListToolbar-gA5rFzkz.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-DrogIAKJ.js → McpOverview-BOPo3J_i.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-DrogIAKJ.js.map → McpOverview-BOPo3J_i.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryDetailPage-CJmvCAE6.js → McpQueryDetailPage-BRVVi0Zh.js} +2 -2
- package/dashboard/dist/assets/{McpQueryDetailPage-CJmvCAE6.js.map → McpQueryDetailPage-BRVVi0Zh.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryPage-lygo4Yq0.js → McpQueryPage-Dmbb6SAc.js} +2 -2
- package/dashboard/dist/assets/{McpQueryPage-lygo4Yq0.js.map → McpQueryPage-Dmbb6SAc.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunDetailPage-hvns2sCm.js → McpRunDetailPage-bMXNO-6V.js} +2 -2
- package/dashboard/dist/assets/{McpRunDetailPage-hvns2sCm.js.map → McpRunDetailPage-bMXNO-6V.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-C2_7spTX.js → McpRunsPage-Bi9AMWja.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-C2_7spTX.js.map → McpRunsPage-Bi9AMWja.js.map} +1 -1
- package/dashboard/dist/assets/{OperationsPage-BlK8WlsY.js → OperationsPage-CvR74ZUJ.js} +3 -3
- package/dashboard/dist/assets/{OperationsPage-BlK8WlsY.js.map → OperationsPage-CvR74ZUJ.js.map} +1 -1
- package/dashboard/dist/assets/{OperatorDashboard-BeWBiMGX.js → OperatorDashboard-DctmZw10.js} +2 -2
- package/dashboard/dist/assets/{OperatorDashboard-BeWBiMGX.js.map → OperatorDashboard-DctmZw10.js.map} +1 -1
- package/dashboard/dist/assets/{PersonaDetailPage-CNHpsX_i.js → PersonaDetailPage-Ubqm2rQH.js} +2 -2
- package/dashboard/dist/assets/{PersonaDetailPage-CNHpsX_i.js.map → PersonaDetailPage-Ubqm2rQH.js.map} +1 -1
- package/dashboard/dist/assets/{PersonasPage-ChASEZRg.js → PersonasPage-BpFL2rpo.js} +2 -2
- package/dashboard/dist/assets/{PersonasPage-ChASEZRg.js.map → PersonasPage-BpFL2rpo.js.map} +1 -1
- package/dashboard/dist/assets/{PortalPage-D5Lk-PKF.js → PortalPage-Dfc_Q02R.js} +2 -2
- package/dashboard/dist/assets/{PortalPage-D5Lk-PKF.js.map → PortalPage-Dfc_Q02R.js.map} +1 -1
- package/dashboard/dist/assets/ProcessDetailPage-liJspvQh.js +2 -0
- package/dashboard/dist/assets/{ProcessDetailPage-DNgCIwRl.js.map → ProcessDetailPage-liJspvQh.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-pRjWuWlH.js → ProcessesListPage-C3OM5ZUy.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-pRjWuWlH.js.map → ProcessesListPage-C3OM5ZUy.js.map} +1 -1
- package/dashboard/dist/assets/ResolverForm-B1_x8Blv.js +8 -0
- package/dashboard/dist/assets/ResolverForm-B1_x8Blv.js.map +1 -0
- package/dashboard/dist/assets/{RoleDetailPage-Bh_UcfYY.js → RoleDetailPage-CrlYCh-R.js} +2 -2
- package/dashboard/dist/assets/{RoleDetailPage-Bh_UcfYY.js.map → RoleDetailPage-CrlYCh-R.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-CK17N7zz.js → RolesPage-BaazL_pt.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-CK17N7zz.js.map → RolesPage-BaazL_pt.js.map} +1 -1
- package/dashboard/dist/assets/{RunAsSelector-BEKUP0p2.js → RunAsSelector-DxuV0fa1.js} +2 -2
- package/dashboard/dist/assets/{RunAsSelector-BEKUP0p2.js.map → RunAsSelector-DxuV0fa1.js.map} +1 -1
- package/dashboard/dist/assets/{ScanCodesPage-Bd0Pflqx.js → ScanCodesPage-C0mvmYTq.js} +2 -2
- package/dashboard/dist/assets/{ScanCodesPage-Bd0Pflqx.js.map → ScanCodesPage-C0mvmYTq.js.map} +1 -1
- package/dashboard/dist/assets/{ScanSchemeDetailPage-CnuhozmJ.js → ScanSchemeDetailPage-CiJgt5dZ.js} +2 -2
- package/dashboard/dist/assets/{ScanSchemeDetailPage-CnuhozmJ.js.map → ScanSchemeDetailPage-CiJgt5dZ.js.map} +1 -1
- package/dashboard/dist/assets/{ScanStationPage-CoLc-q3h.js → ScanStationPage-DzGaXc40.js} +2 -2
- package/dashboard/dist/assets/{ScanStationPage-CoLc-q3h.js.map → ScanStationPage-DzGaXc40.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-COrfvkBi.js → StickyPagination-CqbjVY6T.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-COrfvkBi.js.map → StickyPagination-CqbjVY6T.js.map} +1 -1
- package/dashboard/dist/assets/{StreamMessageDetail-Cif2egLy.js → StreamMessageDetail-wX3i0aqs.js} +2 -2
- package/dashboard/dist/assets/{StreamMessageDetail-Cif2egLy.js.map → StreamMessageDetail-wX3i0aqs.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-BnZYTrAh.js → SwimlaneTimeline-C50PsFoV.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-BnZYTrAh.js.map → SwimlaneTimeline-C50PsFoV.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-DEz_dqyR.js → TaskDetailPage-bbNSv4Ae.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-DEz_dqyR.js.map → TaskDetailPage-bbNSv4Ae.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-oEfEGj0_.js → TasksListPage-CDWnm_d9.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-oEfEGj0_.js.map → TasksListPage-CDWnm_d9.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-Dz5TgZZZ.js → TimeAgo-BLjqlfoX.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-Dz5TgZZZ.js.map → TimeAgo-BLjqlfoX.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-BUTgE244.js → TimestampCell-CnW0ENb5.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-BUTgE244.js.map → TimestampCell-CnW0ENb5.js.map} +1 -1
- package/dashboard/dist/assets/{ToolTestPanel-BS4g6vt-.js → ToolTestPanel-DkMgCB-k.js} +2 -2
- package/dashboard/dist/assets/{ToolTestPanel-BS4g6vt-.js.map → ToolTestPanel-DkMgCB-k.js.map} +1 -1
- package/dashboard/dist/assets/{TopicDetailPage-C_I6JIVD.js → TopicDetailPage-g3pljKKX.js} +2 -2
- package/dashboard/dist/assets/{TopicDetailPage-C_I6JIVD.js.map → TopicDetailPage-g3pljKKX.js.map} +1 -1
- package/dashboard/dist/assets/{TopicsPage-Cr6-wfhJ.js → TopicsPage-CVcCYdy-.js} +2 -2
- package/dashboard/dist/assets/{TopicsPage-Cr6-wfhJ.js.map → TopicsPage-CVcCYdy-.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-ZFpWMaFF.js → UserName-D6zGIK2i.js} +2 -2
- package/dashboard/dist/assets/{UserName-ZFpWMaFF.js.map → UserName-D6zGIK2i.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-ByPixDZW.js → WorkflowExecutionPage-B8g81FCJ.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-ByPixDZW.js.map → WorkflowExecutionPage-B8g81FCJ.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsDashboard-CWsJdMdR.js → WorkflowsDashboard-nxT3bv6W.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-CWsJdMdR.js.map → WorkflowsDashboard-nxT3bv6W.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-Dk9gyqZN.js → WorkflowsOverview-grI-KAI2.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-Dk9gyqZN.js.map → WorkflowsOverview-grI-KAI2.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-CHwcrsaT.js → YamlWorkflowDetailPage-BoZ-hfBE.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-CHwcrsaT.js.map → YamlWorkflowDetailPage-BoZ-hfBE.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowsPage-B5jRX2Ph.js → YamlWorkflowsPage-Bf04rwRv.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowsPage-B5jRX2Ph.js.map → YamlWorkflowsPage-Bf04rwRv.js.map} +1 -1
- package/dashboard/dist/assets/{agents-Dd7E-27d.js → agents-Dphpdi8l.js} +2 -2
- package/dashboard/dist/assets/{agents-Dd7E-27d.js.map → agents-Dphpdi8l.js.map} +1 -1
- package/dashboard/dist/assets/{bots-CpaYjZTk.js → bots-DIFE298x.js} +2 -2
- package/dashboard/dist/assets/{bots-CpaYjZTk.js.map → bots-DIFE298x.js.map} +1 -1
- package/dashboard/dist/assets/{capabilities-CNjg_qv1.js → capabilities-D7Y7LClY.js} +2 -2
- package/dashboard/dist/assets/{capabilities-CNjg_qv1.js.map → capabilities-D7Y7LClY.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-DgmvnAtU.js → controlplane-D1TGcYsS.js} +2 -2
- package/dashboard/dist/assets/{controlplane-DgmvnAtU.js.map → controlplane-D1TGcYsS.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-Uj4U9g5H.js → escalation-columns-cwZE6xyo.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-Uj4U9g5H.js.map → escalation-columns-cwZE6xyo.js.map} +1 -1
- package/dashboard/dist/assets/{index-x5z73M9N.js → index-BzYcUPdD.js} +2 -2
- package/dashboard/dist/assets/{index-x5z73M9N.js.map → index-BzYcUPdD.js.map} +1 -1
- package/dashboard/dist/assets/index-CeCtqujG.js +67 -0
- package/dashboard/dist/assets/index-CeCtqujG.js.map +1 -0
- package/dashboard/dist/assets/{index-RIFT3RlO.js → index-ChV7pBjM.js} +2 -2
- package/dashboard/dist/assets/{index-RIFT3RlO.js.map → index-ChV7pBjM.js.map} +1 -1
- package/dashboard/dist/assets/{index-OfO0173w.js → index-CniRa65p.js} +2 -2
- package/dashboard/dist/assets/{index-OfO0173w.js.map → index-CniRa65p.js.map} +1 -1
- package/dashboard/dist/assets/{index-ByBy9M3L.js → index-CxdjT1Yk.js} +2 -2
- package/dashboard/dist/assets/{index-ByBy9M3L.js.map → index-CxdjT1Yk.js.map} +1 -1
- package/dashboard/dist/assets/{index-C_K7OlzT.js → index-DAvi5_2T.js} +2 -2
- package/dashboard/dist/assets/{index-C_K7OlzT.js.map → index-DAvi5_2T.js.map} +1 -1
- package/dashboard/dist/assets/{index-BrwqtXRh.js → index-DN-kX7hL.js} +2 -2
- package/dashboard/dist/assets/{index-BrwqtXRh.js.map → index-DN-kX7hL.js.map} +1 -1
- package/dashboard/dist/assets/index-Dl_8hbYI.js +2 -0
- package/dashboard/dist/assets/index-Dl_8hbYI.js.map +1 -0
- package/dashboard/dist/assets/{index-D4Dlznn9.js → index-DpKOr311.js} +2 -2
- package/dashboard/dist/assets/{index-D4Dlznn9.js.map → index-DpKOr311.js.map} +1 -1
- package/dashboard/dist/assets/{index-CnOvJz6U.js → index-Dy1wWu2e.js} +2 -2
- package/dashboard/dist/assets/{index-CnOvJz6U.js.map → index-Dy1wWu2e.js.map} +1 -1
- package/dashboard/dist/assets/{index-BT1Ms5Q5.js → index-HLu98Sqh.js} +2 -2
- package/dashboard/dist/assets/{index-BT1Ms5Q5.js.map → index-HLu98Sqh.js.map} +1 -1
- package/dashboard/dist/assets/{index-BFASQ7_X.js → index-ag2pCAPu.js} +2 -2
- package/dashboard/dist/assets/{index-BFASQ7_X.js.map → index-ag2pCAPu.js.map} +1 -1
- package/dashboard/dist/assets/{index-BsHVgWH6.js → index-gkxPN7Vx.js} +2 -2
- package/dashboard/dist/assets/{index-BsHVgWH6.js.map → index-gkxPN7Vx.js.map} +1 -1
- package/dashboard/dist/assets/index-m9A3UYst.css +1 -0
- package/dashboard/dist/assets/{knowledge-Cci_r6Kl.js → knowledge-DnMs-SOJ.js} +2 -2
- package/dashboard/dist/assets/{knowledge-Cci_r6Kl.js.map → knowledge-DnMs-SOJ.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-NY4iL0L-.js → mcp-CwW-K3r4.js} +2 -2
- package/dashboard/dist/assets/{mcp-NY4iL0L-.js.map → mcp-CwW-K3r4.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-CbvZo_I_.js → mcp-query-BZt5e8_Q.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-CbvZo_I_.js.map → mcp-query-BZt5e8_Q.js.map} +1 -1
- package/dashboard/dist/assets/{personas-Fy-f7QQd.js → personas-UA-Xn60f.js} +2 -2
- package/dashboard/dist/assets/{personas-Fy-f7QQd.js.map → personas-UA-Xn60f.js.map} +1 -1
- package/dashboard/dist/assets/{pipelines-DKiuozxV.js → pipelines-Cu3PARum.js} +2 -2
- package/dashboard/dist/assets/{pipelines-DKiuozxV.js.map → pipelines-Cu3PARum.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-CdM1Rkk9.js → tasks-BO6h8GJE.js} +2 -2
- package/dashboard/dist/assets/{tasks-CdM1Rkk9.js.map → tasks-BO6h8GJE.js.map} +1 -1
- package/dashboard/dist/assets/{topics-XNy2mf3n.js → topics-CWjCR-17.js} +2 -2
- package/dashboard/dist/assets/{topics-XNy2mf3n.js.map → topics-CWjCR-17.js.map} +1 -1
- package/dashboard/dist/assets/{useDebouncedValue-CyGcU3_S.js → useDebouncedValue-6t0jx1RB.js} +2 -2
- package/dashboard/dist/assets/{useDebouncedValue-CyGcU3_S.js.map → useDebouncedValue-6t0jx1RB.js.map} +1 -1
- package/dashboard/dist/assets/{useNamespace-C2RIh_IN.js → useNamespace-CqpoQx6D.js} +2 -2
- package/dashboard/dist/assets/{useNamespace-C2RIh_IN.js.map → useNamespace-CqpoQx6D.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-CDiV5fjf.js → useYamlActivityEvents-hmCQQwzB.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-CDiV5fjf.js.map → useYamlActivityEvents-hmCQQwzB.js.map} +1 -1
- package/dashboard/dist/assets/{validate-DcGWN82Y.js → validate-BIRn4a6d.js} +2 -2
- package/dashboard/dist/assets/{validate-DcGWN82Y.js.map → validate-BIRn4a6d.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-CH8UrouH.js → yaml-workflows-ziUdZhKY.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-CH8UrouH.js.map → yaml-workflows-ziUdZhKY.js.map} +1 -1
- package/dashboard/dist/index.html +2 -2
- package/docs/agents.md +3 -1
- package/docs/api/http/agents.md +15 -1
- package/docs/api/http/escalations.md +3 -3
- package/docs/api/http/exports.md +3 -1
- package/docs/api/http/file-browser.md +3 -1
- package/docs/api/http/mcp-endpoint.md +5 -2
- package/docs/api/http/mcp-servers.md +34 -4
- package/docs/api/http/namespaces.md +2 -0
- package/docs/api/http/pipelines.md +2 -0
- package/docs/api/http/roles.md +11 -8
- package/docs/api/http/service-accounts.md +8 -2
- package/docs/api/http/settings.md +29 -2
- package/docs/api/http/tasks.md +3 -1
- package/docs/api/http/topics.md +7 -1
- package/docs/api/http/users.md +8 -2
- package/docs/api/http/workflows.md +25 -10
- package/docs/api/http/yaml-workflows.md +21 -0
- package/docs/api/mcp/admin.md +409 -49
- package/docs/api/mcp/file-storage.md +4 -0
- package/docs/api/mcp/http-fetch.md +6 -2
- package/docs/api/mcp/human-queue.md +53 -0
- package/docs/api/mcp/index.md +13 -10
- package/docs/api/mcp/knowledge.md +34 -0
- package/docs/api/mcp/oauth.md +1 -1
- package/docs/api/mcp/ortho.md +113 -0
- package/docs/api/mcp/vision.md +1 -1
- package/docs/api/sdk/bot-accounts.md +1 -0
- package/docs/api/sdk/escalations.md +2 -2
- package/docs/api/sdk/mcp.md +2 -2
- package/docs/api/sdk/settings.md +1 -1
- package/docs/api/sdk/tasks.md +2 -2
- package/docs/api/sdk/workflows.md +2 -2
- package/docs/api/sdk/yaml-workflows.md +1 -1
- package/docs/architecture.md +3 -1
- package/docs/auth.md +3 -2
- package/docs/cloud.md +7 -2
- package/docs/dashboard.md +16 -7
- package/docs/data.md +1 -1
- package/docs/escalation-strategies.md +9 -20
- package/docs/events.md +6 -0
- package/docs/iam.md +7 -5
- package/docs/mcp.md +159 -210
- package/docs/oauth-and-delegation.md +32 -21
- package/docs/topics.md +2 -0
- package/docs/workflows.md +14 -112
- package/package.json +5 -3
- package/dashboard/dist/assets/ConfirmDeleteModal-DW4DrPur.js +0 -2
- package/dashboard/dist/assets/ConfirmDeleteModal-DW4DrPur.js.map +0 -1
- package/dashboard/dist/assets/ProcessDetailPage-DNgCIwRl.js +0 -2
- package/dashboard/dist/assets/ResolverForm-CKIOAGtY.js +0 -8
- package/dashboard/dist/assets/ResolverForm-CKIOAGtY.js.map +0 -1
- package/dashboard/dist/assets/index-CtlBjl8o.js +0 -2
- package/dashboard/dist/assets/index-CtlBjl8o.js.map +0 -1
- package/dashboard/dist/assets/index-LRYC__mE.js +0 -67
- package/dashboard/dist/assets/index-LRYC__mE.js.map +0 -1
- package/dashboard/dist/assets/index-MYI2_Xb3.css +0 -1
|
@@ -1,147 +1,147 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// ── Admin tool manifests ─────────────────────────────────────────────────────
|
|
3
|
-
// Each entry mirrors the exact tool registered in system/mcp-servers/admin/
|
|
4
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
3
|
exports.ADMIN_TOOLS = void 0;
|
|
4
|
+
// ── Admin tool manifests ─────────────────────────────────────────────────────
|
|
5
|
+
// Each entry mirrors the exact tool registered in system/mcp-servers/admin/
|
|
6
6
|
exports.ADMIN_TOOLS = [
|
|
7
7
|
// ── tasks.ts ────────────────────────────────────────────────────────────
|
|
8
|
-
{ name: 'find_tasks', description: 'Search tasks with optional filters. Returns task records with workflow_id, status, workflow_type, and timestamps.', read_safe: true, inputSchema: { type: 'object', properties: { status: { type: 'string' }, workflow_type: { type: 'string' }, workflow_id: { type: 'string' }, origin_id: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' } } } },
|
|
9
|
-
{ name: 'get_process_detail', description: 'Get all tasks and escalations for a process (origin_id).', read_safe: true, inputSchema: { type: 'object', properties: { origin_id: { type: 'string' } }, required: ['origin_id'] } },
|
|
8
|
+
{ name: 'find_tasks', gate: 'caller', description: 'Search tasks with optional filters. Returns task records with workflow_id, status, workflow_type, and timestamps.', read_safe: true, inputSchema: { type: 'object', properties: { status: { type: 'string' }, workflow_type: { type: 'string' }, workflow_id: { type: 'string' }, origin_id: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' } } } },
|
|
9
|
+
{ name: 'get_process_detail', gate: 'caller', description: 'Get all tasks and escalations for a process (origin_id).', read_safe: true, inputSchema: { type: 'object', properties: { origin_id: { type: 'string' } }, required: ['origin_id'] } },
|
|
10
10
|
// ── escalations.ts ──────────────────────────────────────────────────────
|
|
11
|
-
{ name: 'find_escalations', description: 'Search escalations with optional filters (status, role, type, subtype, assigned_to, priority), free-text search (description + metadata values, e.g. a correlation key), and sorting. Returns full records including metadata.', read_safe: true, inputSchema: { type: 'object', properties: { status: { type: 'string', enum: ['pending', 'resolved', 'cancelled', 'expired'] }, role: { type: 'string' }, type: { type: 'string' }, subtype: { type: 'string' }, assigned_to: { type: 'string' }, search: { type: 'string' }, priority: { type: 'integer' }, sort_by: { type: 'string', enum: ['created_at', 'priority', 'updated_at'] }, order: { type: 'string', enum: ['asc', 'desc'] }, limit: { type: 'integer' }, offset: { type: 'integer' } } } },
|
|
12
|
-
{ name: 'get_escalation', description: 'Get a single escalation by ID — the full record including metadata, payloads, signal_key, and assignment state.', read_safe: true, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
13
|
-
{ name: 'get_escalations_by_workflow', description: 'List all escalations linked to a workflow ID, newest first. Returns full records including metadata.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' } }, required: ['workflow_id'] } },
|
|
14
|
-
{ name: 'get_escalation_stats', description: 'Aggregated escalation statistics: pending, claimed, created, resolved counts with breakdown by role.', read_safe: true, inputSchema: { type: 'object', properties: { period: { type: 'string' } } } },
|
|
15
|
-
{ name: 'claim_escalation', description: 'Claim an escalation for a time-boxed lock.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, duration_minutes: { type: 'integer' } }, required: ['id'] } },
|
|
16
|
-
{ name: 'release_escalation', description: 'Release a claimed escalation back to the available pool.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
17
|
-
{ name: 'resolve_escalation', description: 'Resolve a pending escalation with a human-provided payload. Efficient escalations resume the waiting workflow in place; legacy paths signal or re-run.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, resolverPayload: { type: 'object' } }, required: ['id', 'resolverPayload'] } },
|
|
18
|
-
{ name: 'resolve_by_signal_key', description: 'Resolve an efficient (atomic) escalation directly by its signal_key and resume the waiting workflow in place.', read_safe: false, inputSchema: { type: 'object', properties: { signalKey: { type: 'string' }, resolverPayload: { type: 'object' } }, required: ['signalKey', 'resolverPayload'] } },
|
|
19
|
-
{ name: 'accumulate_item', description: 'Add ONE item to an open accumulator escalation; the add that reaches max completes the row and wakes the waiting workflow with the ordered collection. A reciprocal row is written in the same statement, both or neither. initiatedBy credits the person the add is for.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, itemKey: { type: 'string' }, payload: { type: 'object' }, metadata: { type: 'object' }, reciprocal: { type: 'object', properties: { id: { type: 'string' }, signalKey: { type: 'string' }, key: { type: 'string' }, value: { type: 'string' }, payload: { type: 'object' } } }, initiatedBy: { type: 'string' } }, required: ['id', 'itemKey'] } },
|
|
20
|
-
{ name: 'remove_item', description: 'Remove ONE held item from a pending open accumulator escalation without waking the workflow. initiatedBy credits the person the removal is for.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, itemKey: { type: 'string' }, reciprocal: { type: 'object', properties: { id: { type: 'string' }, signalKey: { type: 'string' }, key: { type: 'string' }, value: { type: 'string' } } }, initiatedBy: { type: 'string' } }, required: ['id', 'itemKey'] } },
|
|
21
|
-
{ name: 'get_escalation_items', description: 'The held items of an accumulator or batch escalation in arrival order, with the count and max. Select by id or by signalKey.', read_safe: true, inputSchema: { type: 'object', properties: { id: { type: 'string' }, signalKey: { type: 'string' } } } },
|
|
22
|
-
{ name: 'escalate_escalation', description: 'Route a pending escalation to a different role per the escalation chain.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, targetRole: { type: 'string' } }, required: ['id', 'targetRole'] } },
|
|
23
|
-
{ name: 'cancel_escalation', description: 'Permanently cancel a pending escalation (e.g. its workflow has terminated). Preserved for audit.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
24
|
-
{ name: 'bulk_cancel', description: 'Cancel multiple pending escalations in a single operation.', read_safe: false, inputSchema: { type: 'object', properties: { ids: { type: 'array', items: { type: 'string' } } }, required: ['ids'] } },
|
|
25
|
-
{ name: 'release_expired_claims', description: 'Release all escalation claims that exceeded their lock duration.', read_safe: false, inputSchema: { type: 'object', properties: {} } },
|
|
26
|
-
{ name: 'bulk_triage', description: 'Resolve escalations for triage and start mcpTriage workflows.', read_safe: false, inputSchema: { type: 'object', properties: { ids: { type: 'array', items: { type: 'string' } }, hint: { type: 'string' } }, required: ['ids'] } },
|
|
27
|
-
{ name: 'resolve_by_ids', description: 'Resolve a set of escalations by id in one guarded statement, RBAC-scoped to the caller\'s roles.', read_safe: false, inputSchema: { type: 'object', properties: { ids: { type: 'array', items: { type: 'string' } }, resolverPayload: { type: 'object' }, metadata: { type: 'object' } }, required: ['ids', 'resolverPayload'] } },
|
|
28
|
-
{ name: 'search_by_facets', description: 'Faceted search over a pond, scoped to the caller\'s role: status, availability, metadata facets, sorting, and paging.', read_safe: true, inputSchema: { type: 'object', properties: { role: { type: 'string' }, status: { type: 'string' }, available: { type: 'boolean' }, facets: { type: 'object' }, orderBy: { type: 'array' }, limit: { type: 'integer' }, offset: { type: 'integer' } }, required: ['role'] } },
|
|
29
|
-
{ name: 'claim_groups', description: 'Batch-claim complete origin groups (orders) in priority order over a pond, assigned to the calling principal.', read_safe: false, inputSchema: { type: 'object', properties: { query: { type: 'object' }, limit: { type: 'integer' }, durationMinutes: { type: 'integer' }, sizeFacet: { type: 'string' } }, required: ['query'] } },
|
|
30
|
-
{ name: 'claim_by_facets', description: 'Batch-claim individual rows matching a facet query, assigned to the calling principal. With allOrNone, commits only the full set.', read_safe: false, inputSchema: { type: 'object', properties: { query: { type: 'object' }, limit: { type: 'integer' }, durationMinutes: { type: 'integer' }, allOrNone: { type: 'boolean' } }, required: ['query'] } },
|
|
31
|
-
{ name: 'aggregate_by_facets', description: 'Grouped analytics over the escalation intervals: membership (rows or distinct entities open at an instant, incl. past instants) or dwell (open-seconds per group within a window), grouped by role/subtype/status columns, metadata facet keys, or the derived entity STATE (query.entity + groupBy.state answers "how do the entities spend their time").', read_safe: true, inputSchema: { type: 'object', properties: { query: { type: 'object' }, groupBy: { type: 'object' }, measure: { type: 'object' }, distinctBy: { type: 'string' }, states: { type: 'array' }, liveStatuses: { type: 'array', items: { type: 'string' } }, orderBy: { type: 'array' }, limit: { type: 'integer' }, offset: { type: 'integer' } }, required: ['query', 'groupBy', 'measure'] } },
|
|
32
|
-
{ name: 'timeline_by_facet', description: 'One entity\'s ordered escalation-interval timeline: [startedAt, endedAt) spans with durations in created_at order; open intervals report endedAt null; gaps are untracked time and are preserved.', read_safe: true, inputSchema: { type: 'object', properties: { facet: { type: 'object', properties: { key: { type: 'string' }, value: { type: 'string' } }, required: ['key', 'value'] }, query: { type: 'object' }, window: { type: 'object' }, select: { type: 'object' }, liveStatuses: { type: 'array', items: { type: 'string' } }, limit: { type: 'integer' } }, required: ['facet'] } },
|
|
33
|
-
{ name: 'find_by_metadata', description: 'Find escalations by a metadata key-value pair.', read_safe: true, inputSchema: { type: 'object', properties: { key: { type: 'string' }, value: { type: 'string' }, status: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' } }, required: ['key', 'value'] } },
|
|
34
|
-
{ name: 'claim_by_metadata', description: 'Find and claim an escalation by metadata key-value pair. Supports provisionIfAbsent for JIT user+role provisioning (superadmin only).', read_safe: false, inputSchema: { type: 'object', properties: { key: { type: 'string' }, value: { type: 'string' }, durationMinutes: { type: 'integer' }, assignee: { type: 'string' }, metadata: { type: 'object' }, provisionIfAbsent: { type: 'object', description: 'JIT-provision assignee if absent: { displayName?, email?, roles?: [{ role, type? }] }' } }, required: ['key', 'value'] } },
|
|
35
|
-
{ name: 'resolve_by_metadata', description: 'Find and resolve an escalation by metadata key-value pair. Signal-backed escalations (metadata.signal_id) are signaled to the workflow instead of resolved directly.', read_safe: false, inputSchema: { type: 'object', properties: { key: { type: 'string' }, value: { type: 'string' }, resolverPayload: { type: 'object' }, assignee: { type: 'string' }, metadata: { type: 'object' } }, required: ['key', 'value', 'resolverPayload'] } },
|
|
36
|
-
{ name: 'bulk_claim', description: 'Claim multiple escalations in a single operation.', read_safe: false, inputSchema: { type: 'object', properties: { ids: { type: 'array', items: { type: 'string' } }, durationMinutes: { type: 'integer' } }, required: ['ids'] } },
|
|
37
|
-
{ name: 'bulk_assign', description: 'Assign multiple escalations to a specific user. Rows under a live claim are skipped (counted in skipped) unless reassign=true — the admin takeover, which hands live-claimed rows to the target atomically.', read_safe: false, inputSchema: { type: 'object', properties: { ids: { type: 'array', items: { type: 'string' } }, targetUserId: { type: 'string' }, durationMinutes: { type: 'integer' }, reassign: { type: 'boolean' } }, required: ['ids', 'targetUserId'] } },
|
|
38
|
-
{ name: 'bulk_unassign', description: 'Return claimed escalations to the available pool — the admin override of a live claim (self-return stays the release verb). Unclaimed and terminal rows are skipped.', read_safe: false, inputSchema: { type: 'object', properties: { ids: { type: 'array', items: { type: 'string' } } }, required: ['ids'] } },
|
|
39
|
-
{ name: 'bulk_escalate', description: 'Escalate multiple escalations to a different role.', read_safe: false, inputSchema: { type: 'object', properties: { ids: { type: 'array', items: { type: 'string' } }, targetRole: { type: 'string' } }, required: ['ids', 'targetRole'] } },
|
|
40
|
-
{ name: 'update_priority', description: 'Update the priority of multiple escalations.', read_safe: false, inputSchema: { type: 'object', properties: { ids: { type: 'array', items: { type: 'string' } }, priority: { type: 'integer' } }, required: ['ids', 'priority'] } },
|
|
11
|
+
{ name: 'find_escalations', gate: 'caller', description: 'Search escalations with optional filters (status, role, type, subtype, assigned_to, priority), free-text search (description + metadata values, e.g. a correlation key), and sorting. Returns full records including metadata.', read_safe: true, inputSchema: { type: 'object', properties: { status: { type: 'string', enum: ['pending', 'resolved', 'cancelled', 'expired'] }, role: { type: 'string' }, type: { type: 'string' }, subtype: { type: 'string' }, assigned_to: { type: 'string' }, search: { type: 'string' }, priority: { type: 'integer' }, sort_by: { type: 'string', enum: ['created_at', 'priority', 'updated_at'] }, order: { type: 'string', enum: ['asc', 'desc'] }, limit: { type: 'integer' }, offset: { type: 'integer' } } } },
|
|
12
|
+
{ name: 'get_escalation', gate: 'caller', description: 'Get a single escalation by ID — the full record including metadata, payloads, signal_key, and assignment state.', read_safe: true, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
13
|
+
{ name: 'get_escalations_by_workflow', gate: 'caller', description: 'List all escalations linked to a workflow ID, newest first. Returns full records including metadata.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' } }, required: ['workflow_id'] } },
|
|
14
|
+
{ name: 'get_escalation_stats', gate: 'caller', description: 'Aggregated escalation statistics: pending, claimed, created, resolved counts with breakdown by role.', read_safe: true, inputSchema: { type: 'object', properties: { period: { type: 'string' } } } },
|
|
15
|
+
{ name: 'claim_escalation', gate: 'caller', description: 'Claim an escalation for a time-boxed lock.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, duration_minutes: { type: 'integer' } }, required: ['id'] } },
|
|
16
|
+
{ name: 'release_escalation', gate: 'caller', description: 'Release a claimed escalation back to the available pool.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
17
|
+
{ name: 'resolve_escalation', gate: 'caller', description: 'Resolve a pending escalation with a human-provided payload. Efficient escalations resume the waiting workflow in place; legacy paths signal or re-run.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, resolverPayload: { type: 'object' } }, required: ['id', 'resolverPayload'] } },
|
|
18
|
+
{ name: 'resolve_by_signal_key', gate: 'caller', description: 'Resolve an efficient (atomic) escalation directly by its signal_key and resume the waiting workflow in place.', read_safe: false, inputSchema: { type: 'object', properties: { signalKey: { type: 'string' }, resolverPayload: { type: 'object' } }, required: ['signalKey', 'resolverPayload'] } },
|
|
19
|
+
{ name: 'accumulate_item', gate: 'caller', description: 'Add ONE item to an open accumulator escalation; the add that reaches max completes the row and wakes the waiting workflow with the ordered collection. A reciprocal row is written in the same statement, both or neither. initiatedBy credits the person the add is for.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, itemKey: { type: 'string' }, payload: { type: 'object' }, metadata: { type: 'object' }, reciprocal: { type: 'object', properties: { id: { type: 'string' }, signalKey: { type: 'string' }, key: { type: 'string' }, value: { type: 'string' }, payload: { type: 'object' } } }, initiatedBy: { type: 'string' } }, required: ['id', 'itemKey'] } },
|
|
20
|
+
{ name: 'remove_item', gate: 'caller', description: 'Remove ONE held item from a pending open accumulator escalation without waking the workflow. initiatedBy credits the person the removal is for.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, itemKey: { type: 'string' }, reciprocal: { type: 'object', properties: { id: { type: 'string' }, signalKey: { type: 'string' }, key: { type: 'string' }, value: { type: 'string' } } }, initiatedBy: { type: 'string' } }, required: ['id', 'itemKey'] } },
|
|
21
|
+
{ name: 'get_escalation_items', gate: 'caller', description: 'The held items of an accumulator or batch escalation in arrival order, with the count and max. Select by id or by signalKey.', read_safe: true, inputSchema: { type: 'object', properties: { id: { type: 'string' }, signalKey: { type: 'string' } } } },
|
|
22
|
+
{ name: 'escalate_escalation', gate: 'caller', description: 'Route a pending escalation to a different role per the escalation chain.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, targetRole: { type: 'string' } }, required: ['id', 'targetRole'] } },
|
|
23
|
+
{ name: 'cancel_escalation', gate: 'caller', description: 'Permanently cancel a pending escalation (e.g. its workflow has terminated). Preserved for audit.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
24
|
+
{ name: 'bulk_cancel', gate: 'caller', description: 'Cancel multiple pending escalations in a single operation.', read_safe: false, inputSchema: { type: 'object', properties: { ids: { type: 'array', items: { type: 'string' } } }, required: ['ids'] } },
|
|
25
|
+
{ name: 'release_expired_claims', gate: 'caller', description: 'Release all escalation claims that exceeded their lock duration.', read_safe: false, inputSchema: { type: 'object', properties: {} } },
|
|
26
|
+
{ name: 'bulk_triage', gate: 'caller', description: 'Resolve escalations for triage and start mcpTriage workflows.', read_safe: false, inputSchema: { type: 'object', properties: { ids: { type: 'array', items: { type: 'string' } }, hint: { type: 'string' } }, required: ['ids'] } },
|
|
27
|
+
{ name: 'resolve_by_ids', gate: 'caller', description: 'Resolve a set of escalations by id in one guarded statement, RBAC-scoped to the caller\'s roles.', read_safe: false, inputSchema: { type: 'object', properties: { ids: { type: 'array', items: { type: 'string' } }, resolverPayload: { type: 'object' }, metadata: { type: 'object' } }, required: ['ids', 'resolverPayload'] } },
|
|
28
|
+
{ name: 'search_by_facets', gate: 'caller', description: 'Faceted search over a pond, scoped to the caller\'s role: status, availability, metadata facets, sorting, and paging.', read_safe: true, inputSchema: { type: 'object', properties: { role: { type: 'string' }, status: { type: 'string' }, available: { type: 'boolean' }, facets: { type: 'object' }, orderBy: { type: 'array' }, limit: { type: 'integer' }, offset: { type: 'integer' } }, required: ['role'] } },
|
|
29
|
+
{ name: 'claim_groups', gate: 'caller', description: 'Batch-claim complete origin groups (orders) in priority order over a pond, assigned to the calling principal.', read_safe: false, inputSchema: { type: 'object', properties: { query: { type: 'object' }, limit: { type: 'integer' }, durationMinutes: { type: 'integer' }, sizeFacet: { type: 'string' } }, required: ['query'] } },
|
|
30
|
+
{ name: 'claim_by_facets', gate: 'caller', description: 'Batch-claim individual rows matching a facet query, assigned to the calling principal. With allOrNone, commits only the full set.', read_safe: false, inputSchema: { type: 'object', properties: { query: { type: 'object' }, limit: { type: 'integer' }, durationMinutes: { type: 'integer' }, allOrNone: { type: 'boolean' } }, required: ['query'] } },
|
|
31
|
+
{ name: 'aggregate_by_facets', gate: 'caller', description: 'Grouped analytics over the escalation intervals: membership (rows or distinct entities open at an instant, incl. past instants) or dwell (open-seconds per group within a window), grouped by role/subtype/status columns, metadata facet keys, or the derived entity STATE (query.entity + groupBy.state answers "how do the entities spend their time").', read_safe: true, inputSchema: { type: 'object', properties: { query: { type: 'object' }, groupBy: { type: 'object' }, measure: { type: 'object' }, distinctBy: { type: 'string' }, states: { type: 'array' }, liveStatuses: { type: 'array', items: { type: 'string' } }, orderBy: { type: 'array' }, limit: { type: 'integer' }, offset: { type: 'integer' } }, required: ['query', 'groupBy', 'measure'] } },
|
|
32
|
+
{ name: 'timeline_by_facet', gate: 'caller', description: 'One entity\'s ordered escalation-interval timeline: [startedAt, endedAt) spans with durations in created_at order; open intervals report endedAt null; gaps are untracked time and are preserved.', read_safe: true, inputSchema: { type: 'object', properties: { facet: { type: 'object', properties: { key: { type: 'string' }, value: { type: 'string' } }, required: ['key', 'value'] }, query: { type: 'object' }, window: { type: 'object' }, select: { type: 'object' }, liveStatuses: { type: 'array', items: { type: 'string' } }, limit: { type: 'integer' } }, required: ['facet'] } },
|
|
33
|
+
{ name: 'find_by_metadata', gate: 'caller', description: 'Find escalations by a metadata key-value pair.', read_safe: true, inputSchema: { type: 'object', properties: { key: { type: 'string' }, value: { type: 'string' }, status: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' } }, required: ['key', 'value'] } },
|
|
34
|
+
{ name: 'claim_by_metadata', gate: 'caller', description: 'Find and claim an escalation by metadata key-value pair. Supports provisionIfAbsent for JIT user+role provisioning (superadmin only).', read_safe: false, inputSchema: { type: 'object', properties: { key: { type: 'string' }, value: { type: 'string' }, durationMinutes: { type: 'integer' }, assignee: { type: 'string' }, metadata: { type: 'object' }, provisionIfAbsent: { type: 'object', description: 'JIT-provision assignee if absent: { displayName?, email?, roles?: [{ role, type? }] }' } }, required: ['key', 'value'] } },
|
|
35
|
+
{ name: 'resolve_by_metadata', gate: 'caller', description: 'Find and resolve an escalation by metadata key-value pair. Signal-backed escalations (metadata.signal_id) are signaled to the workflow instead of resolved directly.', read_safe: false, inputSchema: { type: 'object', properties: { key: { type: 'string' }, value: { type: 'string' }, resolverPayload: { type: 'object' }, assignee: { type: 'string' }, metadata: { type: 'object' } }, required: ['key', 'value', 'resolverPayload'] } },
|
|
36
|
+
{ name: 'bulk_claim', gate: 'caller', description: 'Claim multiple escalations in a single operation.', read_safe: false, inputSchema: { type: 'object', properties: { ids: { type: 'array', items: { type: 'string' } }, durationMinutes: { type: 'integer' } }, required: ['ids'] } },
|
|
37
|
+
{ name: 'bulk_assign', gate: 'caller', description: 'Assign multiple escalations to a specific user. Rows under a live claim are skipped (counted in skipped) unless reassign=true — the admin takeover, which hands live-claimed rows to the target atomically.', read_safe: false, inputSchema: { type: 'object', properties: { ids: { type: 'array', items: { type: 'string' } }, targetUserId: { type: 'string' }, durationMinutes: { type: 'integer' }, reassign: { type: 'boolean' } }, required: ['ids', 'targetUserId'] } },
|
|
38
|
+
{ name: 'bulk_unassign', gate: 'caller', description: 'Return claimed escalations to the available pool — the admin override of a live claim (self-return stays the release verb). Unclaimed and terminal rows are skipped.', read_safe: false, inputSchema: { type: 'object', properties: { ids: { type: 'array', items: { type: 'string' } } }, required: ['ids'] } },
|
|
39
|
+
{ name: 'bulk_escalate', gate: 'caller', description: 'Escalate multiple escalations to a different role.', read_safe: false, inputSchema: { type: 'object', properties: { ids: { type: 'array', items: { type: 'string' } }, targetRole: { type: 'string' } }, required: ['ids', 'targetRole'] } },
|
|
40
|
+
{ name: 'update_priority', gate: 'caller', description: 'Update the priority of multiple escalations.', read_safe: false, inputSchema: { type: 'object', properties: { ids: { type: 'array', items: { type: 'string' } }, priority: { type: 'integer' } }, required: ['ids', 'priority'] } },
|
|
41
41
|
// ── workflow-config.ts ──────────────────────────────────────────────────
|
|
42
|
-
{ name: 'list_workflow_configs', description: 'List all certified workflow configurations with roles and settings.', read_safe: true, inputSchema: { type: 'object', properties: {} } },
|
|
43
|
-
{ name: 'get_workflow_config', description: 'The full configuration row for one workflow: input_schema (the form an invoke payload must satisfy), envelope_schema, input_lookups with resolved input_lookup_data, roles, and tier.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_type: { type: 'string' } }, required: ['workflow_type'] } },
|
|
44
|
-
{ name: 'upsert_workflow_config', description: 'Create or replace a workflow configuration (certify). Activates the interceptor for task tracking and escalation chains. Full replace: omitted fields clear, matching PUT.', read_safe: false, inputSchema: { type: 'object', properties: { workflow_type: { type: 'string' }, invocable: { type: 'boolean' }, task_queue: { type: 'string' }, default_role: { type: 'string' }, description: { type: 'string' }, execute_as: { type: 'string' }, roles: { type: 'array', items: { type: 'string' } }, invocation_roles: { type: 'array', items: { type: 'string' } }, consumes: { type: 'array', items: { type: 'string' } }, tool_tags: { type: 'array', items: { type: 'string' } }, cron_schedule: { type: 'string' }, envelope_schema: { type: 'object' }, input_schema: { type: 'object' }, input_lookups: { type: 'array', items: { type: 'object', properties: { domain: { type: 'string' }, key: { type: 'string' }, version: { oneOf: [{ type: 'integer', minimum: 1 }, { const: 'current' }] }, as: { type: 'string' } }, required: ['domain', 'key'] } }, icon: { type: 'string' }, read_safe: { type: 'boolean' } }, required: ['workflow_type'] } },
|
|
45
|
-
{ name: 'delete_workflow_config', description: 'De-certify a workflow by removing its config entry.', read_safe: false, inputSchema: { type: 'object', properties: { workflow_type: { type: 'string' } }, required: ['workflow_type'] } },
|
|
42
|
+
{ name: 'list_workflow_configs', gate: 'caller', description: 'List all certified workflow configurations with roles and settings.', read_safe: true, inputSchema: { type: 'object', properties: {} } },
|
|
43
|
+
{ name: 'get_workflow_config', gate: 'caller', description: 'The full configuration row for one workflow: input_schema (the form an invoke payload must satisfy), envelope_schema, input_lookups with resolved input_lookup_data, roles, and tier.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_type: { type: 'string' } }, required: ['workflow_type'] } },
|
|
44
|
+
{ name: 'upsert_workflow_config', gate: 'admin', description: 'Create or replace a workflow configuration (certify). Activates the interceptor for task tracking and escalation chains. Full replace: omitted fields clear, matching PUT.', read_safe: false, inputSchema: { type: 'object', properties: { workflow_type: { type: 'string' }, invocable: { type: 'boolean' }, task_queue: { type: 'string' }, default_role: { type: 'string' }, description: { type: 'string' }, execute_as: { type: 'string' }, roles: { type: 'array', items: { type: 'string' } }, invocation_roles: { type: 'array', items: { type: 'string' } }, consumes: { type: 'array', items: { type: 'string' } }, tool_tags: { type: 'array', items: { type: 'string' } }, cron_schedule: { type: 'string' }, envelope_schema: { type: 'object' }, input_schema: { type: 'object' }, input_lookups: { type: 'array', items: { type: 'object', properties: { domain: { type: 'string' }, key: { type: 'string' }, version: { oneOf: [{ type: 'integer', minimum: 1 }, { const: 'current' }] }, as: { type: 'string' } }, required: ['domain', 'key'] } }, icon: { type: 'string' }, read_safe: { type: 'boolean' } }, required: ['workflow_type'] } },
|
|
45
|
+
{ name: 'delete_workflow_config', gate: 'admin', description: 'De-certify a workflow by removing its config entry.', read_safe: false, inputSchema: { type: 'object', properties: { workflow_type: { type: 'string' } }, required: ['workflow_type'] } },
|
|
46
46
|
// ── workflows.ts ────────────────────────────────────────────────────────
|
|
47
|
-
{ name: 'list_discovered_workflows', description: 'Unified list of all known workflows: active workers, historical entities, and registered configs.', read_safe: true, inputSchema: { type: 'object', properties: { include_system: { type: 'boolean' } } } },
|
|
48
|
-
{ name: 'invoke_workflow', description: 'Start a certified workflow by type. Returns workflow ID immediately. Call get_workflow_config for the input_schema the payload must satisfy; a violating payload returns the 422-shaped body. options passes HotMesh WorkflowOptions through (workflowId for deterministic ids per the deployment\'s id convention; entity/expire/search are safe; taskQueue/namespace reroute execution — set only deliberately).', read_safe: false, inputSchema: { type: 'object', properties: { workflow_type: { type: 'string' }, data: { type: 'object' }, metadata: { type: 'object' }, execute_as: { type: 'string' }, options: { type: 'object' } }, required: ['workflow_type', 'data'] } },
|
|
49
|
-
{ name: 'invoke_workflow_read_safe', description: 'Start a workflow registered read-safe (side-effect-free). Same contract as invoke_workflow, including the input_schema gate (see get_workflow_config), gated to configs carrying read_safe=true — any workflow may be attempted; one lacking the flag fails with a clear error. The invocation surface for read-scoped callers.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_type: { type: 'string' }, data: { type: 'object' }, metadata: { type: 'object' }, execute_as: { type: 'string' }, options: { type: 'object' } }, required: ['workflow_type', 'data'] } },
|
|
50
|
-
{ name: 'get_workflow_status', description: 'Check workflow status and result. Returns status (running | complete | failed) and result if complete; a failed run carries terminated and error. Namespace-aware — pass app_id to read a workflow running in a non-default HotMesh namespace.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' }, app_id: { type: 'string' } }, required: ['workflow_id'] } },
|
|
51
|
-
{ name: 'terminate_workflow', description: 'Completely terminate a workflow: kills the durable handle AND cancels its pending escalations. The correct way to stop a workflow — prefer over interrupt_pipeline_job, which strands escalations as orphans.', read_safe: false, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' } }, required: ['workflow_id'] } },
|
|
47
|
+
{ name: 'list_discovered_workflows', gate: 'caller', description: 'Unified list of all known workflows: active workers, historical entities, and registered configs.', read_safe: true, inputSchema: { type: 'object', properties: { include_system: { type: 'boolean' } } } },
|
|
48
|
+
{ name: 'invoke_workflow', gate: 'caller', description: 'Start a certified workflow by type. Returns workflow ID immediately. Call get_workflow_config for the input_schema the payload must satisfy; a violating payload returns the 422-shaped body. options passes HotMesh WorkflowOptions through (workflowId for deterministic ids per the deployment\'s id convention; entity/expire/search are safe; taskQueue/namespace reroute execution — set only deliberately).', read_safe: false, inputSchema: { type: 'object', properties: { workflow_type: { type: 'string' }, data: { type: 'object' }, metadata: { type: 'object' }, execute_as: { type: 'string' }, options: { type: 'object' } }, required: ['workflow_type', 'data'] } },
|
|
49
|
+
{ name: 'invoke_workflow_read_safe', gate: 'caller', description: 'Start a workflow registered read-safe (side-effect-free). Same contract as invoke_workflow, including the input_schema gate (see get_workflow_config), gated to configs carrying read_safe=true — any workflow may be attempted; one lacking the flag fails with a clear error. The invocation surface for read-scoped callers.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_type: { type: 'string' }, data: { type: 'object' }, metadata: { type: 'object' }, execute_as: { type: 'string' }, options: { type: 'object' } }, required: ['workflow_type', 'data'] } },
|
|
50
|
+
{ name: 'get_workflow_status', gate: 'caller', description: 'Check workflow status and result. Returns status (running | complete | failed) and result if complete; a failed run carries terminated and error. Namespace-aware — pass app_id to read a workflow running in a non-default HotMesh namespace.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' }, app_id: { type: 'string' } }, required: ['workflow_id'] } },
|
|
51
|
+
{ name: 'terminate_workflow', gate: 'builder', description: 'Completely terminate a workflow: kills the durable handle AND cancels its pending escalations. The correct way to stop a workflow — prefer over interrupt_pipeline_job, which strands escalations as orphans.', read_safe: false, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' } }, required: ['workflow_id'] } },
|
|
52
52
|
// ── mcp-servers.ts ──────────────────────────────────────────────────────
|
|
53
|
-
{ name: 'list_mcp_servers', description: 'List registered MCP servers with optional filters by status, tags, or search.', read_safe: true, inputSchema: { type: 'object', properties: { status: { type: 'string' }, tags: { type: 'string' }, search: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' } } } },
|
|
54
|
-
{ name: 'update_mcp_server', description: 'Update an MCP server registration (tags, description, auto_connect).', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, name: { type: 'string' }, description: { type: 'string' }, tags: { type: 'array', items: { type: 'string' } }, auto_connect: { type: 'boolean' } }, required: ['id'] } },
|
|
55
|
-
{ name: 'connect_mcp_server', description: 'Connect to a registered MCP server.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
56
|
-
{ name: 'disconnect_mcp_server', description: 'Disconnect from an MCP server.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
53
|
+
{ name: 'list_mcp_servers', gate: 'caller', description: 'List registered MCP servers with optional filters by status, tags, or search.', read_safe: true, inputSchema: { type: 'object', properties: { status: { type: 'string' }, tags: { type: 'string' }, search: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' } } } },
|
|
54
|
+
{ name: 'update_mcp_server', gate: 'builder', description: 'Update an MCP server registration (tags, description, auto_connect).', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, name: { type: 'string' }, description: { type: 'string' }, tags: { type: 'array', items: { type: 'string' } }, auto_connect: { type: 'boolean' } }, required: ['id'] } },
|
|
55
|
+
{ name: 'connect_mcp_server', gate: 'builder', description: 'Connect to a registered MCP server.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
56
|
+
{ name: 'disconnect_mcp_server', gate: 'builder', description: 'Disconnect from an MCP server.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
57
57
|
// ── yaml-workflows.ts ───────────────────────────────────────────────────
|
|
58
|
-
{ name: 'list_yaml_workflows', description: 'List compiled YAML workflows with optional status, namespace, or search filter.', read_safe: true, inputSchema: { type: 'object', properties: { status: { type: 'string' }, app_id: { type: 'string' }, search: { type: 'string' }, source_workflow_id: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' } } } },
|
|
59
|
-
{ name: 'get_yaml_workflow', description: 'Inspect a compiled workflow by ID. Returns activity manifest, schemas, and YAML content.', read_safe: true, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
60
|
-
{ name: 'create_yaml_workflow', description: 'Compile a completed execution into a deterministic YAML workflow. Stored as a draft.', read_safe: false, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' }, task_queue: { type: 'string' }, workflow_name: { type: 'string' }, name: { type: 'string' }, description: { type: 'string' }, app_id: { type: 'string' }, tags: { type: 'array', items: { type: 'string' } }, compilation_feedback: { type: 'string' } }, required: ['workflow_id', 'task_queue', 'workflow_name', 'name'] } },
|
|
61
|
-
{ name: 'deploy_yaml_workflow', description: 'Deploy a compiled YAML workflow, activate it, and register workers.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
62
|
-
{ name: 'invoke_yaml_workflow', description: 'Run a compiled YAML workflow. Deterministic — no LLM. Set sync=true to wait.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, data: { type: 'object' }, sync: { type: 'boolean' }, timeout: { type: 'integer' } }, required: ['id'] } },
|
|
58
|
+
{ name: 'list_yaml_workflows', gate: 'caller', description: 'List compiled YAML workflows with optional status, namespace, or search filter.', read_safe: true, inputSchema: { type: 'object', properties: { status: { type: 'string' }, app_id: { type: 'string' }, search: { type: 'string' }, source_workflow_id: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' } } } },
|
|
59
|
+
{ name: 'get_yaml_workflow', gate: 'caller', description: 'Inspect a compiled workflow by ID. Returns activity manifest, schemas, and YAML content.', read_safe: true, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
60
|
+
{ name: 'create_yaml_workflow', gate: 'builder', description: 'Compile a completed execution into a deterministic YAML workflow. Stored as a draft.', read_safe: false, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' }, task_queue: { type: 'string' }, workflow_name: { type: 'string' }, name: { type: 'string' }, description: { type: 'string' }, app_id: { type: 'string' }, tags: { type: 'array', items: { type: 'string' } }, compilation_feedback: { type: 'string' } }, required: ['workflow_id', 'task_queue', 'workflow_name', 'name'] } },
|
|
61
|
+
{ name: 'deploy_yaml_workflow', gate: 'builder', description: 'Deploy a compiled YAML workflow, activate it, and register workers.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
62
|
+
{ name: 'invoke_yaml_workflow', gate: 'caller', description: 'Run a compiled YAML workflow. Deterministic — no LLM. Set sync=true to wait.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, data: { type: 'object' }, sync: { type: 'boolean' }, timeout: { type: 'integer' } }, required: ['id'] } },
|
|
63
63
|
// ── users.ts (users + roles) ────────────────────────────────────────────
|
|
64
|
-
{ name: 'list_users', description: 'List user accounts with optional role and status filters.', read_safe: true, inputSchema: { type: 'object', properties: { role: { type: 'string' }, status: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' } } } },
|
|
65
|
-
{ name: 'create_user', description: 'Create a new user account with optional roles.', read_safe: false, inputSchema: { type: 'object', properties: { external_id: { type: 'string' }, display_name: { type: 'string' }, email: { type: 'string' }, roles: { type: 'array', items: { type: 'object', properties: { role: { type: 'string' }, type: { type: 'string', enum: ['superadmin', 'admin', 'member'] } }, required: ['role', 'type'] } } }, required: ['external_id'] } },
|
|
66
|
-
{ name: 'add_user_role', description: 'Assign a role to a user.', read_safe: false, inputSchema: { type: 'object', properties: { user_id: { type: 'string' }, role: { type: 'string' }, type: { type: 'string', enum: ['superadmin', 'admin', 'member'] } }, required: ['user_id', 'role', 'type'] } },
|
|
67
|
-
{ name: 'remove_user_role', description: 'Remove a role from a user.', read_safe: false, inputSchema: { type: 'object', properties: { user_id: { type: 'string' }, role: { type: 'string' } }, required: ['user_id', 'role'] } },
|
|
68
|
-
{ name: 'patch_user_properties', description: 'Atomically patch a user\'s properties dictionary — set/remove/rename keys in one statement, never read-merge-write; identity-binding keys assert uniqueness among active users.', read_safe: false, inputSchema: { type: 'object', properties: { user_id: { type: 'string' }, set: { type: 'object' }, remove: { type: 'array', items: { type: 'string' } }, rename: { type: 'object' } }, required: ['user_id'] } },
|
|
69
|
-
{ name: 'list_roles', description: 'List all distinct roles known to the system.', read_safe: true, inputSchema: { type: 'object', properties: {} } },
|
|
70
|
-
{ name: 'create_role', description: 'Create a new role. Lowercase alphanumeric with hyphens/underscores.', read_safe: false, inputSchema: { type: 'object', properties: { role: { type: 'string' } }, required: ['role'] } },
|
|
71
|
-
{ name: 'add_escalation_chain', description: 'Define an escalation path from one role to another.', read_safe: false, inputSchema: { type: 'object', properties: { source_role: { type: 'string' }, target_role: { type: 'string' } }, required: ['source_role', 'target_role'] } },
|
|
72
|
-
{ name: 'update_role', description: 'Update role metadata with PATCH semantics (omitted fields keep their values): display name, description, form/metadata/list schemas, properties bag, ops_visible flag, parent role, default_pins (member pinned-view seeds), portals (named matrices of pin cells, each rendered as a portal page), and the typed operational targets. A schema change snapshots the pair into the version history.', read_safe: false, inputSchema: { type: 'object', properties: { role: { type: 'string' }, title: { type: 'string' }, description: { type: 'string' }, form_schema: { type: 'object' }, metadata_schema: { type: 'object' }, properties: { type: 'object' }, ops_visible: { type: 'boolean' }, ops_home_default: { type: 'boolean' }, parent_role: { type: 'string' }, sla_minutes: { type: 'number' }, target_per_hour: { type: 'number' }, worker_count: { type: 'integer' }, priority_threshold_minutes: { type: 'number' }, priority_facet: { type: 'string' }, entity_facet: { type: 'string' }, entity_state_source: { type: 'string', enum: ['role', 'subtype'] }, upstream_roles: { type: 'array', items: { type: 'string' } }, list_schema: { type: 'object' }, default_pins: { type: 'array', items: { type: 'object', properties: { label: { type: 'string' }, url: { type: 'string' }, badge: { type: 'boolean' } }, required: ['label', 'url'] } }, portals: { type: 'array', items: { type: 'object', properties: { key: { type: 'string' }, label: { type: 'string' }, rows: { type: 'array', items: { type: 'array', items: { type: 'object', properties: { label: { type: 'string' }, url: { type: 'string' }, badge: { type: 'boolean' } }, required: ['label', 'url'] } } }, counts: { type: 'array', items: { type: 'object', properties: { label: { type: 'string' }, url: { type: 'string' }, blurb: { type: 'string' } }, required: ['label', 'url'] } } }, required: ['key', 'label', 'rows'] } }, change_summary: { type: 'string' } }, required: ['role'] } },
|
|
73
|
-
{ name: 'get_role_schema', description: 'Fetch a role\'s form_schema + metadata_schema pair — the live (latest) schema, or an immutable snapshot when a version is given (the version escalations pin via metadata.schema_version).', read_safe: true, inputSchema: { type: 'object', properties: { role: { type: 'string' }, version: { type: 'integer' } }, required: ['role'] } },
|
|
74
|
-
{ name: 'list_role_schema_versions', description: 'List a role\'s schema version history, newest first. Each schema edit creates a new version; fetch a full snapshot with get_role_schema.', read_safe: true, inputSchema: { type: 'object', properties: { role: { type: 'string' } }, required: ['role'] } },
|
|
64
|
+
{ name: 'list_users', gate: 'caller', description: 'List user accounts with optional role and status filters.', read_safe: true, inputSchema: { type: 'object', properties: { role: { type: 'string' }, status: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' } } } },
|
|
65
|
+
{ name: 'create_user', gate: 'builder', description: 'Create a new user account with optional roles.', read_safe: false, inputSchema: { type: 'object', properties: { external_id: { type: 'string' }, display_name: { type: 'string' }, email: { type: 'string' }, roles: { type: 'array', items: { type: 'object', properties: { role: { type: 'string' }, type: { type: 'string', enum: ['superadmin', 'admin', 'member'] } }, required: ['role', 'type'] } } }, required: ['external_id'] } },
|
|
66
|
+
{ name: 'add_user_role', gate: 'admin', description: 'Assign a role to a user.', read_safe: false, inputSchema: { type: 'object', properties: { user_id: { type: 'string' }, role: { type: 'string' }, type: { type: 'string', enum: ['superadmin', 'admin', 'member'] } }, required: ['user_id', 'role', 'type'] } },
|
|
67
|
+
{ name: 'remove_user_role', gate: 'admin', description: 'Remove a role from a user.', read_safe: false, inputSchema: { type: 'object', properties: { user_id: { type: 'string' }, role: { type: 'string' } }, required: ['user_id', 'role'] } },
|
|
68
|
+
{ name: 'patch_user_properties', gate: 'builder', description: 'Atomically patch a user\'s properties dictionary — set/remove/rename keys in one statement, never read-merge-write; identity-binding keys assert uniqueness among active users.', read_safe: false, inputSchema: { type: 'object', properties: { user_id: { type: 'string' }, set: { type: 'object' }, remove: { type: 'array', items: { type: 'string' } }, rename: { type: 'object' } }, required: ['user_id'] } },
|
|
69
|
+
{ name: 'list_roles', gate: 'caller', description: 'List all distinct roles known to the system.', read_safe: true, inputSchema: { type: 'object', properties: {} } },
|
|
70
|
+
{ name: 'create_role', gate: 'roleManager', description: 'Create a new role. Lowercase alphanumeric with hyphens/underscores.', read_safe: false, inputSchema: { type: 'object', properties: { role: { type: 'string' } }, required: ['role'] } },
|
|
71
|
+
{ name: 'add_escalation_chain', gate: 'roleManager', description: 'Define an escalation path from one role to another.', read_safe: false, inputSchema: { type: 'object', properties: { source_role: { type: 'string' }, target_role: { type: 'string' } }, required: ['source_role', 'target_role'] } },
|
|
72
|
+
{ name: 'update_role', gate: 'roleManager', description: 'Update role metadata with PATCH semantics (omitted fields keep their values): display name, description, form/metadata/list schemas, properties bag, ops_visible flag, parent role, default_pins (member pinned-view seeds), portals (named matrices of pin cells, each rendered as a portal page), and the typed operational targets. A schema change snapshots the pair into the version history.', read_safe: false, inputSchema: { type: 'object', properties: { role: { type: 'string' }, title: { type: 'string' }, description: { type: 'string' }, form_schema: { type: 'object' }, metadata_schema: { type: 'object' }, properties: { type: 'object' }, ops_visible: { type: 'boolean' }, ops_home_default: { type: 'boolean' }, parent_role: { type: 'string' }, sla_minutes: { type: 'number' }, target_per_hour: { type: 'number' }, worker_count: { type: 'integer' }, priority_threshold_minutes: { type: 'number' }, priority_facet: { type: 'string' }, entity_facet: { type: 'string' }, entity_state_source: { type: 'string', enum: ['role', 'subtype'] }, upstream_roles: { type: 'array', items: { type: 'string' } }, list_schema: { type: 'object' }, default_pins: { type: 'array', items: { type: 'object', properties: { label: { type: 'string' }, url: { type: 'string' }, badge: { type: 'boolean' } }, required: ['label', 'url'] } }, portals: { type: 'array', items: { type: 'object', properties: { key: { type: 'string' }, label: { type: 'string' }, rows: { type: 'array', items: { type: 'array', items: { type: 'object', properties: { label: { type: 'string' }, url: { type: 'string' }, badge: { type: 'boolean' } }, required: ['label', 'url'] } } }, counts: { type: 'array', items: { type: 'object', properties: { label: { type: 'string' }, url: { type: 'string' }, blurb: { type: 'string' } }, required: ['label', 'url'] } } }, required: ['key', 'label', 'rows'] } }, change_summary: { type: 'string' } }, required: ['role'] } },
|
|
73
|
+
{ name: 'get_role_schema', gate: 'caller', description: 'Fetch a role\'s form_schema + metadata_schema pair — the live (latest) schema, or an immutable snapshot when a version is given (the version escalations pin via metadata.schema_version).', read_safe: true, inputSchema: { type: 'object', properties: { role: { type: 'string' }, version: { type: 'integer' } }, required: ['role'] } },
|
|
74
|
+
{ name: 'list_role_schema_versions', gate: 'caller', description: 'List a role\'s schema version history, newest first. Each schema edit creates a new version; fetch a full snapshot with get_role_schema.', read_safe: true, inputSchema: { type: 'object', properties: { role: { type: 'string' } }, required: ['role'] } },
|
|
75
75
|
// ── personas.ts ─────────────────────────────────────────────────────────
|
|
76
|
-
{ name: 'list_personas', description: 'List all personas — named role bundles with per-role relationship scope — with role links and holder counts.', read_safe: true, inputSchema: { type: 'object', properties: {} } },
|
|
77
|
-
{ name: 'get_persona', description: 'Fetch one persona with its role links and current assignees.', read_safe: true, inputSchema: { type: 'object', properties: { key: { type: 'string' } }, required: ['key'] } },
|
|
78
|
-
{ name: 'create_persona', description: 'Create a persona (a named role bundle). Link roles with link_persona_role, then assign users with assign_persona.', read_safe: false, inputSchema: { type: 'object', properties: { key: { type: 'string' }, title: { type: 'string' }, description: { type: 'string' } }, required: ['key'] } },
|
|
79
|
-
{ name: 'update_persona', description: 'Update a persona\'s title/description with PATCH semantics (null clears).', read_safe: false, inputSchema: { type: 'object', properties: { key: { type: 'string' }, title: { type: 'string' }, description: { type: 'string' } }, required: ['key'] } },
|
|
80
|
-
{ name: 'delete_persona', description: 'Delete a persona. Memberships it sustains are removed or re-homed to a sibling persona; direct grants are never touched.', read_safe: false, inputSchema: { type: 'object', properties: { key: { type: 'string' } }, required: ['key'] } },
|
|
81
|
-
{ name: 'link_persona_role', description: 'Link a role to a persona at a relationship scope (write-all = full worker, write-self = own assignments only, read-all = observer), or change an existing link. Reconciles every holder\'s memberships.', read_safe: false, inputSchema: { type: 'object', properties: { key: { type: 'string' }, role: { type: 'string' }, relationship: { type: 'string', enum: ['write-all', 'write-self', 'read-all', 'write-none'] } }, required: ['key', 'role', 'relationship'] } },
|
|
82
|
-
{ name: 'unlink_persona_role', description: 'Remove a role link from a persona and reconcile every holder\'s memberships.', read_safe: false, inputSchema: { type: 'object', properties: { key: { type: 'string' }, role: { type: 'string' } }, required: ['key', 'role'] } },
|
|
83
|
-
{ name: 'assign_persona', description: 'Assign a persona to a user — shorthand for adding the user to each linked role at the linked scope. Idempotent: re-assigning overlays fresh. Highest allowance wins across bundles; direct grants only ever raised.', read_safe: false, inputSchema: { type: 'object', properties: { user_id: { type: 'string' }, key: { type: 'string' } }, required: ['user_id', 'key'] } },
|
|
84
|
-
{ name: 'unassign_persona', description: 'Unassign a persona from a user, removing only the memberships it sustains (rows a sibling persona still grants are re-homed; direct grants untouched).', read_safe: false, inputSchema: { type: 'object', properties: { user_id: { type: 'string' }, key: { type: 'string' } }, required: ['user_id', 'key'] } },
|
|
85
|
-
{ name: 'get_user_personas', description: 'The personas a user holds plus the composed role/scope map their memberships form (each row names its sustaining persona, or null for a direct grant).', read_safe: true, inputSchema: { type: 'object', properties: { user_id: { type: 'string' } }, required: ['user_id'] } },
|
|
86
|
-
{ name: 'diagnose_job', description: 'Read-only diagnosis for a single workflow job: status, idle time, stream summary, escalation row, and structured findings with evidence.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' }, app_id: { type: 'string' }, max_events: { type: 'integer' }, include: { type: 'array', items: { type: 'string', enum: ['events', 'streams'] } }, verbosity: { type: 'string', enum: ['summary', 'full'] } }, required: ['workflow_id'] } },
|
|
87
|
-
{ name: 'find_stalled_jobs', description: 'List workflow jobs idle beyond a threshold, each classified as healthy-wait or likely-fault.', read_safe: true, inputSchema: { type: 'object', properties: { app_id: { type: 'string' }, idle_minutes: { type: 'integer' }, workflow_type: { type: 'string' }, limit: { type: 'integer' } } } },
|
|
88
|
-
{ name: 'find_orphaned_signals', description: 'Scan recent worker streams for signals whose waiting workflow is gone.', read_safe: true, inputSchema: { type: 'object', properties: { app_id: { type: 'string' }, within_hours: { type: 'integer' }, limit: { type: 'integer' } } } },
|
|
76
|
+
{ name: 'list_personas', gate: 'roleManager', description: 'List all personas — named role bundles with per-role relationship scope — with role links and holder counts.', read_safe: true, inputSchema: { type: 'object', properties: {} } },
|
|
77
|
+
{ name: 'get_persona', gate: 'roleManager', description: 'Fetch one persona with its role links and current assignees.', read_safe: true, inputSchema: { type: 'object', properties: { key: { type: 'string' } }, required: ['key'] } },
|
|
78
|
+
{ name: 'create_persona', gate: 'roleManager', description: 'Create a persona (a named role bundle). Link roles with link_persona_role, then assign users with assign_persona.', read_safe: false, inputSchema: { type: 'object', properties: { key: { type: 'string' }, title: { type: 'string' }, description: { type: 'string' } }, required: ['key'] } },
|
|
79
|
+
{ name: 'update_persona', gate: 'roleManager', description: 'Update a persona\'s title/description with PATCH semantics (null clears).', read_safe: false, inputSchema: { type: 'object', properties: { key: { type: 'string' }, title: { type: 'string' }, description: { type: 'string' } }, required: ['key'] } },
|
|
80
|
+
{ name: 'delete_persona', gate: 'roleManager', description: 'Delete a persona. Memberships it sustains are removed or re-homed to a sibling persona; direct grants are never touched.', read_safe: false, inputSchema: { type: 'object', properties: { key: { type: 'string' } }, required: ['key'] } },
|
|
81
|
+
{ name: 'link_persona_role', gate: 'roleManager', description: 'Link a role to a persona at a relationship scope (write-all = full worker, write-self = own assignments only, read-all = observer), or change an existing link. Reconciles every holder\'s memberships.', read_safe: false, inputSchema: { type: 'object', properties: { key: { type: 'string' }, role: { type: 'string' }, relationship: { type: 'string', enum: ['write-all', 'write-self', 'read-all', 'write-none'] } }, required: ['key', 'role', 'relationship'] } },
|
|
82
|
+
{ name: 'unlink_persona_role', gate: 'roleManager', description: 'Remove a role link from a persona and reconcile every holder\'s memberships.', read_safe: false, inputSchema: { type: 'object', properties: { key: { type: 'string' }, role: { type: 'string' } }, required: ['key', 'role'] } },
|
|
83
|
+
{ name: 'assign_persona', gate: 'roleManager', description: 'Assign a persona to a user — shorthand for adding the user to each linked role at the linked scope. Idempotent: re-assigning overlays fresh. Highest allowance wins across bundles; direct grants only ever raised.', read_safe: false, inputSchema: { type: 'object', properties: { user_id: { type: 'string' }, key: { type: 'string' } }, required: ['user_id', 'key'] } },
|
|
84
|
+
{ name: 'unassign_persona', gate: 'roleManager', description: 'Unassign a persona from a user, removing only the memberships it sustains (rows a sibling persona still grants are re-homed; direct grants untouched).', read_safe: false, inputSchema: { type: 'object', properties: { user_id: { type: 'string' }, key: { type: 'string' } }, required: ['user_id', 'key'] } },
|
|
85
|
+
{ name: 'get_user_personas', gate: 'caller', description: 'The personas a user holds plus the composed role/scope map their memberships form (each row names its sustaining persona, or null for a direct grant).', read_safe: true, inputSchema: { type: 'object', properties: { user_id: { type: 'string' } }, required: ['user_id'] } },
|
|
86
|
+
{ name: 'diagnose_job', gate: 'admin', description: 'Read-only diagnosis for a single workflow job: status, idle time, stream summary, escalation row, and structured findings with evidence.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' }, app_id: { type: 'string' }, max_events: { type: 'integer' }, include: { type: 'array', items: { type: 'string', enum: ['events', 'streams'] } }, verbosity: { type: 'string', enum: ['summary', 'full'] } }, required: ['workflow_id'] } },
|
|
87
|
+
{ name: 'find_stalled_jobs', gate: 'admin', description: 'List workflow jobs idle beyond a threshold, each classified as healthy-wait or likely-fault.', read_safe: true, inputSchema: { type: 'object', properties: { app_id: { type: 'string' }, idle_minutes: { type: 'integer' }, workflow_type: { type: 'string' }, limit: { type: 'integer' } } } },
|
|
88
|
+
{ name: 'find_orphaned_signals', gate: 'admin', description: 'Scan recent worker streams for signals whose waiting workflow is gone.', read_safe: true, inputSchema: { type: 'object', properties: { app_id: { type: 'string' }, within_hours: { type: 'integer' }, limit: { type: 'integer' } } } },
|
|
89
89
|
// ── maintenance.ts ──────────────────────────────────────────────────────
|
|
90
|
-
{ name: 'prune', description: 'Prune expired jobs, streams, and execution artifacts from the database.', read_safe: false, inputSchema: { type: 'object', properties: { expire: { type: 'string' }, jobs: { type: 'boolean' }, streams: { type: 'boolean' }, entities: { type: 'array', items: { type: 'string' } }, prune_transient: { type: 'boolean' } } } },
|
|
90
|
+
{ name: 'prune', gate: 'admin', description: 'Prune expired jobs, streams, and execution artifacts from the database.', read_safe: false, inputSchema: { type: 'object', properties: { expire: { type: 'string' }, jobs: { type: 'boolean' }, streams: { type: 'boolean' }, entities: { type: 'array', items: { type: 'string' } }, prune_transient: { type: 'boolean' } } } },
|
|
91
91
|
// ── agents.ts ───────────────────────────────────────────────────────────
|
|
92
|
-
{ name: 'list_agents', description: 'List agent automations with optional status and knowledge domain filters.', read_safe: true, inputSchema: { type: 'object', properties: { status: { type: 'string' }, knowledge_domain: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' } } } },
|
|
93
|
-
{ name: 'get_agent', description: 'Get a single agent automation by ID with aggregated stats.', read_safe: true, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
94
|
-
{ name: 'create_agent', description: 'Create a new agent automation with identity, goals, rules, and subscriptions.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, description: { type: 'string' }, goals: { type: 'array', items: { type: 'string' } }, rules: { type: 'array', items: { type: 'string' } }, status: { type: 'string' }, knowledge_domain: { type: 'string' }, schedules: { type: 'array' }, subscriptions: { type: 'array' } }, required: ['id'] } },
|
|
95
|
-
{ name: 'update_agent', description: 'Update an existing agent automation.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, description: { type: 'string' }, goals: { type: 'array', items: { type: 'string' } }, rules: { type: 'array', items: { type: 'string' } }, status: { type: 'string' }, knowledge_domain: { type: 'string' } }, required: ['id'] } },
|
|
96
|
-
{ name: 'delete_agent', description: 'Delete an agent automation and all its subscriptions.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
92
|
+
{ name: 'list_agents', gate: 'caller', description: 'List agent automations with optional status and knowledge domain filters.', read_safe: true, inputSchema: { type: 'object', properties: { status: { type: 'string' }, knowledge_domain: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' } } } },
|
|
93
|
+
{ name: 'get_agent', gate: 'caller', description: 'Get a single agent automation by ID with aggregated stats.', read_safe: true, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
94
|
+
{ name: 'create_agent', gate: 'builder', description: 'Create a new agent automation with identity, goals, rules, and subscriptions.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, description: { type: 'string' }, goals: { type: 'array', items: { type: 'string' } }, rules: { type: 'array', items: { type: 'string' } }, status: { type: 'string' }, knowledge_domain: { type: 'string' }, schedules: { type: 'array' }, subscriptions: { type: 'array' } }, required: ['id'] } },
|
|
95
|
+
{ name: 'update_agent', gate: 'builder', description: 'Update an existing agent automation.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, description: { type: 'string' }, goals: { type: 'array', items: { type: 'string' } }, rules: { type: 'array', items: { type: 'string' } }, status: { type: 'string' }, knowledge_domain: { type: 'string' } }, required: ['id'] } },
|
|
96
|
+
{ name: 'delete_agent', gate: 'builder', description: 'Delete an agent automation and all its subscriptions.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
97
97
|
// ── agent-subscriptions.ts ──────────────────────────────────────────────
|
|
98
|
-
{ name: 'list_agent_subscriptions', description: 'List all event subscriptions for an agent.', read_safe: true, inputSchema: { type: 'object', properties: { agent_id: { type: 'string' } }, required: ['agent_id'] } },
|
|
99
|
-
{ name: 'create_agent_subscription', description: 'Create an event subscription for an agent.', read_safe: false, inputSchema: { type: 'object', properties: { agent_id: { type: 'string' }, topic: { type: 'string' }, reaction_type: { type: 'string' }, workflow_type: { type: 'string' }, pipeline_id: { type: 'string' }, mcp_prompt: { type: 'string' }, input_mapping: { type: 'object' }, filter: { type: 'object' }, execute_as: { type: 'string' } }, required: ['agent_id', 'topic', 'reaction_type'] } },
|
|
100
|
-
{ name: 'delete_agent_subscription', description: 'Delete an event subscription by ID.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
98
|
+
{ name: 'list_agent_subscriptions', gate: 'caller', description: 'List all event subscriptions for an agent.', read_safe: true, inputSchema: { type: 'object', properties: { agent_id: { type: 'string' } }, required: ['agent_id'] } },
|
|
99
|
+
{ name: 'create_agent_subscription', gate: 'builder', description: 'Create an event subscription for an agent.', read_safe: false, inputSchema: { type: 'object', properties: { agent_id: { type: 'string' }, topic: { type: 'string' }, reaction_type: { type: 'string' }, workflow_type: { type: 'string' }, pipeline_id: { type: 'string' }, mcp_prompt: { type: 'string' }, input_mapping: { type: 'object' }, filter: { type: 'object' }, execute_as: { type: 'string' } }, required: ['agent_id', 'topic', 'reaction_type'] } },
|
|
100
|
+
{ name: 'delete_agent_subscription', gate: 'builder', description: 'Delete an event subscription by ID.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
101
101
|
// ── bot-accounts.ts ─────────────────────────────────────────────────────
|
|
102
|
-
{ name: 'list_bot_accounts', description: 'List all bot (service) accounts with pagination.', read_safe: true, inputSchema: { type: 'object', properties: { limit: { type: 'integer' }, offset: { type: 'integer' } } } },
|
|
103
|
-
{ name: 'get_bot_account', description: 'Get a single bot account by ID.', read_safe: true, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
104
|
-
{ name: 'create_bot_account', description: 'Create a new bot (service) account with optional roles.', read_safe: false, inputSchema: { type: 'object', properties: { name: { type: 'string' }, description: { type: 'string' }, display_name: { type: 'string' }, roles: { type: 'array', items: { type: 'object', properties: { role: { type: 'string' }, type: { type: 'string' } } } } }, required: ['name'] } },
|
|
105
|
-
{ name: 'update_bot_account', description: 'Update a bot account (display name, description, status).', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, display_name: { type: 'string' }, description: { type: 'string' }, status: { type: 'string' } }, required: ['id'] } },
|
|
106
|
-
{ name: 'delete_bot_account', description: 'Delete a bot account and all its API keys.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
107
|
-
{ name: 'create_bot_api_key', description: 'Generate a new API key for a bot account. Returns the raw key ONCE.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, name: { type: 'string' }, scopes: { type: 'array', items: { type: 'string' } }, expires_at: { type: 'string' } }, required: ['id', 'name'] } },
|
|
108
|
-
{ name: 'revoke_bot_api_key', description: 'Revoke (delete) an API key for a bot account.', read_safe: false, inputSchema: { type: 'object', properties: { key_id: { type: 'string' } }, required: ['key_id'] } },
|
|
102
|
+
{ name: 'list_bot_accounts', gate: 'builder', description: 'List all bot (service) accounts with pagination.', read_safe: true, inputSchema: { type: 'object', properties: { limit: { type: 'integer' }, offset: { type: 'integer' } } } },
|
|
103
|
+
{ name: 'get_bot_account', gate: 'builder', description: 'Get a single bot account by ID.', read_safe: true, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
104
|
+
{ name: 'create_bot_account', gate: 'builder', description: 'Create a new bot (service) account with optional roles.', read_safe: false, inputSchema: { type: 'object', properties: { name: { type: 'string' }, description: { type: 'string' }, display_name: { type: 'string' }, roles: { type: 'array', items: { type: 'object', properties: { role: { type: 'string' }, type: { type: 'string' } } } } }, required: ['name'] } },
|
|
105
|
+
{ name: 'update_bot_account', gate: 'builder', description: 'Update a bot account (display name, description, status).', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, display_name: { type: 'string' }, description: { type: 'string' }, status: { type: 'string' } }, required: ['id'] } },
|
|
106
|
+
{ name: 'delete_bot_account', gate: 'builder', description: 'Delete a bot account and all its API keys.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] } },
|
|
107
|
+
{ name: 'create_bot_api_key', gate: 'builder', description: 'Generate a new API key for a bot account. Returns the raw key ONCE.', read_safe: false, inputSchema: { type: 'object', properties: { id: { type: 'string' }, name: { type: 'string' }, scopes: { type: 'array', items: { type: 'string' } }, expires_at: { type: 'string' } }, required: ['id', 'name'] } },
|
|
108
|
+
{ name: 'revoke_bot_api_key', gate: 'builder', description: 'Revoke (delete) an API key for a bot account.', read_safe: false, inputSchema: { type: 'object', properties: { key_id: { type: 'string' } }, required: ['key_id'] } },
|
|
109
109
|
// ── controlplane.ts ─────────────────────────────────────────────────────
|
|
110
|
-
{ name: 'list_apps', description: 'List available HotMesh application namespaces.', read_safe: true, inputSchema: { type: 'object', properties: {} } },
|
|
111
|
-
{ name: 'rollcall', description: 'Execute a roll call — discovers all engines and workers in the mesh.', read_safe: true, inputSchema: { type: 'object', properties: { app_id: { type: 'string' }, delay: { type: 'integer' } } } },
|
|
112
|
-
{ name: 'apply_throttle', description: 'Apply a throttle to the mesh (-1=pause, 0=resume, >0=delay ms per message).', read_safe: false, inputSchema: { type: 'object', properties: { appId: { type: 'string' }, throttle: { type: 'integer' }, topic: { type: 'string' }, guid: { type: 'string' }, scope: { type: 'string' } }, required: ['throttle'] } },
|
|
113
|
-
{ name: 'get_stream_stats', description: 'Stream processing statistics — pending count and processed volume by time range.', read_safe: true, inputSchema: { type: 'object', properties: { app_id: { type: 'string' }, duration: { type: 'string' }, stream: { type: 'string' } } } },
|
|
114
|
-
{ name: 'list_stream_messages', description: 'Browse stream messages with pagination, filtering, and sorting.', read_safe: true, inputSchema: { type: 'object', properties: { namespace: { type: 'string' }, source: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' }, sort_by: { type: 'string' }, order: { type: 'string', enum: ['asc', 'desc'] }, status: { type: 'string' }, stream_name: { type: 'string' }, msg_type: { type: 'string' }, topic: { type: 'string' }, workflow_name: { type: 'string' }, jid: { type: 'string' }, aid: { type: 'string' } }, required: ['namespace', 'source'] } },
|
|
110
|
+
{ name: 'list_apps', gate: 'builder', description: 'List available HotMesh application namespaces.', read_safe: true, inputSchema: { type: 'object', properties: {} } },
|
|
111
|
+
{ name: 'rollcall', gate: 'builder', description: 'Execute a roll call — discovers all engines and workers in the mesh.', read_safe: true, inputSchema: { type: 'object', properties: { app_id: { type: 'string' }, delay: { type: 'integer' } } } },
|
|
112
|
+
{ name: 'apply_throttle', gate: 'builder', description: 'Apply a throttle to the mesh (-1=pause, 0=resume, >0=delay ms per message).', read_safe: false, inputSchema: { type: 'object', properties: { appId: { type: 'string' }, throttle: { type: 'integer' }, topic: { type: 'string' }, guid: { type: 'string' }, scope: { type: 'string' } }, required: ['throttle'] } },
|
|
113
|
+
{ name: 'get_stream_stats', gate: 'builder', description: 'Stream processing statistics — pending count and processed volume by time range.', read_safe: true, inputSchema: { type: 'object', properties: { app_id: { type: 'string' }, duration: { type: 'string' }, stream: { type: 'string' } } } },
|
|
114
|
+
{ name: 'list_stream_messages', gate: 'builder', description: 'Browse stream messages with pagination, filtering, and sorting.', read_safe: true, inputSchema: { type: 'object', properties: { namespace: { type: 'string' }, source: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' }, sort_by: { type: 'string' }, order: { type: 'string', enum: ['asc', 'desc'] }, status: { type: 'string' }, stream_name: { type: 'string' }, msg_type: { type: 'string' }, topic: { type: 'string' }, workflow_name: { type: 'string' }, jid: { type: 'string' }, aid: { type: 'string' } }, required: ['namespace', 'source'] } },
|
|
115
115
|
// ── pipelines.ts ────────────────────────────────────────────────────────
|
|
116
|
-
{ name: 'list_pipeline_entities', description: 'List distinct entity (tool) names from pipeline jobs.', read_safe: true, inputSchema: { type: 'object', properties: { app_id: { type: 'string' } } } },
|
|
117
|
-
{ name: 'list_pipeline_jobs', description: 'List pipeline jobs with optional entity, search, and status filters.', read_safe: true, inputSchema: { type: 'object', properties: { app_id: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' }, entity: { type: 'string' }, search: { type: 'string' }, status: { type: 'string' }, sort_by: { type: 'string' }, order: { type: 'string', enum: ['asc', 'desc'] } } } },
|
|
118
|
-
{ name: 'get_pipeline_execution', description: 'Export execution details for a specific pipeline job. Histories run large — pass select (dot paths) to return only what you need.', read_safe: true, inputSchema: { type: 'object', properties: { job_id: { type: 'string' }, app_id: { type: 'string' }, select: { type: 'array', items: { type: 'string' } } }, required: ['job_id'] } },
|
|
119
|
-
{ name: 'interrupt_pipeline_job', description: 'Engine-level interrupt of a running job. WARNING: does NOT cancel the workflow\'s escalations — they are stranded as pending orphans. Prefer terminate_workflow to stop a workflow cleanly; use this only for a raw engine interrupt.', read_safe: false, inputSchema: { type: 'object', properties: { job_id: { type: 'string' }, topic: { type: 'string' }, app_id: { type: 'string' } }, required: ['job_id', 'topic'] } },
|
|
116
|
+
{ name: 'list_pipeline_entities', gate: 'caller', description: 'List distinct entity (tool) names from pipeline jobs.', read_safe: true, inputSchema: { type: 'object', properties: { app_id: { type: 'string' } } } },
|
|
117
|
+
{ name: 'list_pipeline_jobs', gate: 'caller', description: 'List pipeline jobs with optional entity, search, and status filters.', read_safe: true, inputSchema: { type: 'object', properties: { app_id: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' }, entity: { type: 'string' }, search: { type: 'string' }, status: { type: 'string' }, sort_by: { type: 'string' }, order: { type: 'string', enum: ['asc', 'desc'] } } } },
|
|
118
|
+
{ name: 'get_pipeline_execution', gate: 'caller', description: 'Export execution details for a specific pipeline job. Histories run large — pass select (dot paths) to return only what you need.', read_safe: true, inputSchema: { type: 'object', properties: { job_id: { type: 'string' }, app_id: { type: 'string' }, select: { type: 'array', items: { type: 'string' } } }, required: ['job_id'] } },
|
|
119
|
+
{ name: 'interrupt_pipeline_job', gate: 'builder', description: 'Engine-level interrupt of a running job. WARNING: does NOT cancel the workflow\'s escalations — they are stranded as pending orphans. Prefer terminate_workflow to stop a workflow cleanly; use this only for a raw engine interrupt.', read_safe: false, inputSchema: { type: 'object', properties: { job_id: { type: 'string' }, topic: { type: 'string' }, app_id: { type: 'string' } }, required: ['job_id', 'topic'] } },
|
|
120
120
|
// ── topics.ts ───────────────────────────────────────────────────────────
|
|
121
|
-
{ name: 'list_topics', description: 'List topics in the event catalog with optional category and search filters.', read_safe: true, inputSchema: { type: 'object', properties: { category: { type: 'string' }, search: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' } } } },
|
|
122
|
-
{ name: 'get_topic', description: 'Get a single topic by name, including schema and example payload.', read_safe: true, inputSchema: { type: 'object', properties: { topic: { type: 'string' } }, required: ['topic'] } },
|
|
123
|
-
{ name: 'create_topic', description: 'Register a new topic in the event catalog.', read_safe: false, inputSchema: { type: 'object', properties: { topic: { type: 'string' }, category: { type: 'string' }, description: { type: 'string' }, payload_schema: { type: 'object' }, example_payload: { type: 'object' }, tags: { type: 'array', items: { type: 'string' } } }, required: ['topic', 'category'] } },
|
|
124
|
-
{ name: 'update_topic', description: 'Update a topic in the event catalog.', read_safe: false, inputSchema: { type: 'object', properties: { topic: { type: 'string' }, description: { type: 'string' }, category: { type: 'string' }, payload_schema: { type: 'object' }, example_payload: { type: 'object' }, tags: { type: 'array', items: { type: 'string' } } }, required: ['topic'] } },
|
|
125
|
-
{ name: 'delete_topic', description: 'Delete a topic from the catalog (system topics are protected).', read_safe: false, inputSchema: { type: 'object', properties: { topic: { type: 'string' } }, required: ['topic'] } },
|
|
121
|
+
{ name: 'list_topics', gate: 'caller', description: 'List topics in the event catalog with optional category and search filters.', read_safe: true, inputSchema: { type: 'object', properties: { category: { type: 'string' }, search: { type: 'string' }, limit: { type: 'integer' }, offset: { type: 'integer' } } } },
|
|
122
|
+
{ name: 'get_topic', gate: 'caller', description: 'Get a single topic by name, including schema and example payload.', read_safe: true, inputSchema: { type: 'object', properties: { topic: { type: 'string' } }, required: ['topic'] } },
|
|
123
|
+
{ name: 'create_topic', gate: 'builder', description: 'Register a new topic in the event catalog.', read_safe: false, inputSchema: { type: 'object', properties: { topic: { type: 'string' }, category: { type: 'string' }, description: { type: 'string' }, payload_schema: { type: 'object' }, example_payload: { type: 'object' }, tags: { type: 'array', items: { type: 'string' } } }, required: ['topic', 'category'] } },
|
|
124
|
+
{ name: 'update_topic', gate: 'builder', description: 'Update a topic in the event catalog.', read_safe: false, inputSchema: { type: 'object', properties: { topic: { type: 'string' }, description: { type: 'string' }, category: { type: 'string' }, payload_schema: { type: 'object' }, example_payload: { type: 'object' }, tags: { type: 'array', items: { type: 'string' } } }, required: ['topic'] } },
|
|
125
|
+
{ name: 'delete_topic', gate: 'builder', description: 'Delete a topic from the catalog (system topics are protected).', read_safe: false, inputSchema: { type: 'object', properties: { topic: { type: 'string' } }, required: ['topic'] } },
|
|
126
126
|
// ── settings.ts ─────────────────────────────────────────────────────────
|
|
127
|
-
{ name: 'get_settings', description: 'Get frontend-relevant configuration (no secrets). Returns feature flags, enabled capabilities, and system metadata.', read_safe: true, inputSchema: { type: 'object', properties: {} } },
|
|
127
|
+
{ name: 'get_settings', gate: 'caller', description: 'Get frontend-relevant configuration (no secrets). Returns feature flags, enabled capabilities, and system metadata.', read_safe: true, inputSchema: { type: 'object', properties: {} } },
|
|
128
128
|
// ── exports.ts ──────────────────────────────────────────────────────────
|
|
129
|
-
{ name: 'list_export_jobs', description: 'List workflow jobs with optional filtering and pagination.', read_safe: true, inputSchema: { type: 'object', properties: { limit: { type: 'integer' }, offset: { type: 'integer' }, entity: { type: 'string' }, search: { type: 'string' }, status: { type: 'string' }, sort_by: { type: 'string' }, order: { type: 'string', enum: ['asc', 'desc'] } } } },
|
|
130
|
-
{ name: 'export_workflow_state', description: 'Export the full workflow state using HotMesh durable export. allow/block filter which sections the engine fetches; select (dot paths) projects the returned JSON.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' }, allow: { type: 'array', items: { type: 'string' } }, block: { type: 'array', items: { type: 'string' } }, values: { type: 'object' }, select: { type: 'array', items: { type: 'string' } } }, required: ['workflow_id'] } },
|
|
131
|
-
{ name: 'export_workflow_execution', description: 'Export workflow state as a structured execution event history. Histories run large — pass select (dot paths) to return only what you need.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' }, excludeSystem: { type: 'boolean' }, omitResults: { type: 'boolean' }, mode: { type: 'string' }, maxDepth: { type: 'integer' }, select: { type: 'array', items: { type: 'string' } } }, required: ['workflow_id'] } },
|
|
132
|
-
{ name: 'get_workflow_envelopes', description: 'The workflow\'s input and output envelopes — two narrow lookups, no event stream. Output is null with status running until the workflow completes; a failed run carries its error message.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' } }, required: ['workflow_id'] } },
|
|
133
|
-
{ name: 'get_export_status', description: 'Return the numeric status semaphore for a workflow.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' } }, required: ['workflow_id'] } },
|
|
129
|
+
{ name: 'list_export_jobs', gate: 'builder', description: 'List workflow jobs with optional filtering and pagination.', read_safe: true, inputSchema: { type: 'object', properties: { limit: { type: 'integer' }, offset: { type: 'integer' }, entity: { type: 'string' }, search: { type: 'string' }, status: { type: 'string' }, sort_by: { type: 'string' }, order: { type: 'string', enum: ['asc', 'desc'] } } } },
|
|
130
|
+
{ name: 'export_workflow_state', gate: 'builder', description: 'Export the full workflow state using HotMesh durable export. allow/block filter which sections the engine fetches; select (dot paths) projects the returned JSON.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' }, allow: { type: 'array', items: { type: 'string' } }, block: { type: 'array', items: { type: 'string' } }, values: { type: 'object' }, select: { type: 'array', items: { type: 'string' } } }, required: ['workflow_id'] } },
|
|
131
|
+
{ name: 'export_workflow_execution', gate: 'caller', description: 'Export workflow state as a structured execution event history. Histories run large — pass select (dot paths) to return only what you need.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' }, excludeSystem: { type: 'boolean' }, omitResults: { type: 'boolean' }, mode: { type: 'string' }, maxDepth: { type: 'integer' }, select: { type: 'array', items: { type: 'string' } } }, required: ['workflow_id'] } },
|
|
132
|
+
{ name: 'get_workflow_envelopes', gate: 'builder', description: 'The workflow\'s input and output envelopes — two narrow lookups, no event stream. Output is null with status running until the workflow completes; a failed run carries its error message.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' } }, required: ['workflow_id'] } },
|
|
133
|
+
{ name: 'get_export_status', gate: 'builder', description: 'Return the numeric status semaphore for a workflow.', read_safe: true, inputSchema: { type: 'object', properties: { workflow_id: { type: 'string' } }, required: ['workflow_id'] } },
|
|
134
134
|
// ── overview.ts ─────────────────────────────────────────────────────────
|
|
135
|
-
{ name: 'get_system_overview', description: 'Triage-ready system dashboard: escalation queue pressure, task throughput, hourly trends, infrastructure status, and process summary. One call for complete system state.', read_safe: true, inputSchema: { type: 'object', properties: { period: { type: 'string', enum: ['1h', '24h', '7d'], description: 'Time window (default: 24h)' } } } },
|
|
135
|
+
{ name: 'get_system_overview', gate: 'caller', description: 'Triage-ready system dashboard: escalation queue pressure, task throughput, hourly trends, infrastructure status, and process summary. One call for complete system state.', read_safe: true, inputSchema: { type: 'object', properties: { period: { type: 'string', enum: ['1h', '24h', '7d'], description: 'Time window (default: 24h)' } } } },
|
|
136
136
|
// ── domain-context.ts ─────────────────────────────────────────────────────
|
|
137
|
-
{ name: 'get_domain_context', description: 'The deployment\'s domain dictionary merged with live platform state — how this operation\'s jargon maps to roles, workflows, escalations, and metadata facets. No args returns the overview + index; { topic, name } returns specific entries (entity id facet + roles for building escalation queries, role cancel/timeout semantics, workflow kill road); topic `term` looks a word or alias up across every kind. Works on every deployment — with no dictionary registered it serves a view derived from the live registries. Call before acting on deployment-specific semantics.', read_safe: true, inputSchema: { type: 'object', properties: { topic: { type: 'string', enum: ['term', 'entity', 'role', 'workflow', 'facet', 'action', 'rule', 'runbook'] }, name: { type: 'string' } } } },
|
|
137
|
+
{ name: 'get_domain_context', gate: 'caller', description: 'The deployment\'s domain dictionary merged with live platform state — how this operation\'s jargon maps to roles, workflows, escalations, and metadata facets. No args returns the overview + index; { topic, name } returns specific entries (entity id facet + roles for building escalation queries, role cancel/timeout semantics, workflow kill road); topic `term` looks a word or alias up across every kind. Works on every deployment — with no dictionary registered it serves a view derived from the live registries. Call before acting on deployment-specific semantics.', read_safe: true, inputSchema: { type: 'object', properties: { topic: { type: 'string', enum: ['term', 'entity', 'role', 'workflow', 'facet', 'action', 'rule', 'runbook'] }, name: { type: 'string' } } } },
|
|
138
138
|
// ── scan-codes.ts ────────────────────────────────────────────────────────
|
|
139
|
-
{ name: 'execute_scan_code', description: 'Execute a raw scan code (version:category:target): parse against the configured schemes, walk the rule\'s condition/action steps, and return a structured outcome. Identity-kind schemes mint an acting-identity grant; with actingToken, mutating verbs attribute to the badged person.', read_safe: false, inputSchema: { type: 'object', properties: { code: { type: 'string' }, actingToken: { type: 'string' }, previousActingToken: { type: 'string' }, subject: { type: 'object', properties: { code: { type: 'string' }, escalationId: { type: 'string' } }, required: ['code', 'escalationId'] }, stationRole: { type: 'string' } }, required: ['code'] } },
|
|
140
|
-
{ name: 'execute_scan_choice', description: 'Execute one choice presented by a PRESENT step (the info-choice screen). The pointer is re-validated against live config, row state, the acting-identity gate, and RBAC before the verb runs.', read_safe: false, inputSchema: { type: 'object', properties: { schemeVersion: { type: 'integer' }, category: { type: 'string' }, stepIndex: { type: 'integer' }, choiceIndex: { type: 'integer' }, escalationId: { type: 'string' }, actingToken: { type: 'string' } }, required: ['schemeVersion', 'category', 'stepIndex', 'choiceIndex', 'escalationId'] } },
|
|
141
|
-
{ name: 'list_scan_schemes', description: 'List all scan-code schemes: version digit, name, target metadata facet, and encoding (fixed digits or delimited text).', read_safe: true, inputSchema: { type: 'object', properties: {} } },
|
|
142
|
-
{ name: 'upsert_scan_scheme', description: 'Create or replace a scan scheme: which metadata facet the scanned target resolves against and how the code string parses. kind=identity turns the scheme into a badge layer minting acting-identity grants.', read_safe: false, inputSchema: { type: 'object', properties: { version: { type: 'integer' }, name: { type: 'string' }, target_facet: { type: 'string' }, encoding: { type: 'string', enum: ['fixed', 'delimited'] }, delimiter: { type: 'string' }, target_length: { type: 'integer' }, kind: { type: 'string', enum: ['action', 'identity'] }, grant_ttl_seconds: { type: 'integer' }, grant_max_uses: { type: 'integer' }, enabled: { type: 'boolean' } }, required: ['version', 'name', 'target_facet'] } },
|
|
143
|
-
{ name: 'upsert_scan_rule', description: 'Create or replace a scan rule for a scheme category: friendly name, ordered condition/action steps (first matching query wins), a no-match fallback screen, and a not-primed screen for identity-required steps. present-verb steps carry a labeled choice set.', read_safe: false, inputSchema: { type: 'object', properties: { scheme_version: { type: 'integer' }, category: { type: 'string' }, name: { type: 'string' }, steps: { type: 'array', items: { type: 'object' } }, fallback: { type: 'object' }, notPrimed: { type: 'object' }, enabled: { type: 'boolean' } }, required: ['scheme_version', 'category', 'name', 'steps'] } },
|
|
144
|
-
{ name: 'delete_scan_rule', description: 'Delete one scan rule (scheme version + single-digit category).', read_safe: false, inputSchema: { type: 'object', properties: { scheme_version: { type: 'integer' }, category: { type: 'string' } }, required: ['scheme_version', 'category'] } },
|
|
139
|
+
{ name: 'execute_scan_code', gate: 'caller', description: 'Execute a raw scan code (version:category:target): parse against the configured schemes, walk the rule\'s condition/action steps, and return a structured outcome. Identity-kind schemes mint an acting-identity grant; with actingToken, mutating verbs attribute to the badged person.', read_safe: false, inputSchema: { type: 'object', properties: { code: { type: 'string' }, actingToken: { type: 'string' }, previousActingToken: { type: 'string' }, subject: { type: 'object', properties: { code: { type: 'string' }, escalationId: { type: 'string' } }, required: ['code', 'escalationId'] }, stationRole: { type: 'string' } }, required: ['code'] } },
|
|
140
|
+
{ name: 'execute_scan_choice', gate: 'caller', description: 'Execute one choice presented by a PRESENT step (the info-choice screen). The pointer is re-validated against live config, row state, the acting-identity gate, and RBAC before the verb runs.', read_safe: false, inputSchema: { type: 'object', properties: { schemeVersion: { type: 'integer' }, category: { type: 'string' }, stepIndex: { type: 'integer' }, choiceIndex: { type: 'integer' }, escalationId: { type: 'string' }, actingToken: { type: 'string' } }, required: ['schemeVersion', 'category', 'stepIndex', 'choiceIndex', 'escalationId'] } },
|
|
141
|
+
{ name: 'list_scan_schemes', gate: 'caller', description: 'List all scan-code schemes: version digit, name, target metadata facet, and encoding (fixed digits or delimited text).', read_safe: true, inputSchema: { type: 'object', properties: {} } },
|
|
142
|
+
{ name: 'upsert_scan_scheme', gate: 'roleManager', description: 'Create or replace a scan scheme: which metadata facet the scanned target resolves against and how the code string parses. kind=identity turns the scheme into a badge layer minting acting-identity grants.', read_safe: false, inputSchema: { type: 'object', properties: { version: { type: 'integer' }, name: { type: 'string' }, target_facet: { type: 'string' }, encoding: { type: 'string', enum: ['fixed', 'delimited'] }, delimiter: { type: 'string' }, target_length: { type: 'integer' }, kind: { type: 'string', enum: ['action', 'identity'] }, grant_ttl_seconds: { type: 'integer' }, grant_max_uses: { type: 'integer' }, enabled: { type: 'boolean' } }, required: ['version', 'name', 'target_facet'] } },
|
|
143
|
+
{ name: 'upsert_scan_rule', gate: 'roleManager', description: 'Create or replace a scan rule for a scheme category: friendly name, ordered condition/action steps (first matching query wins), a no-match fallback screen, and a not-primed screen for identity-required steps. present-verb steps carry a labeled choice set.', read_safe: false, inputSchema: { type: 'object', properties: { scheme_version: { type: 'integer' }, category: { type: 'string' }, name: { type: 'string' }, steps: { type: 'array', items: { type: 'object' } }, fallback: { type: 'object' }, notPrimed: { type: 'object' }, enabled: { type: 'boolean' } }, required: ['scheme_version', 'category', 'name', 'steps'] } },
|
|
144
|
+
{ name: 'delete_scan_rule', gate: 'roleManager', description: 'Delete one scan rule (scheme version + single-digit category).', read_safe: false, inputSchema: { type: 'object', properties: { scheme_version: { type: 'integer' }, category: { type: 'string' } }, required: ['scheme_version', 'category'] } },
|
|
145
145
|
// ── announcements.ts ────────────────────────────────────────────────────
|
|
146
|
-
{ name: 'publish_announcement', description: 'Publish a dashboard announcement — a banner every targeted user sees live and on their next load until it expires (default 24h) or they dismiss it. Only body (markdown) is required; title, layout, roles targeting, and expires_at are optional. Bodies broadcast to all authenticated subscribers — never include secrets.', read_safe: false, inputSchema: { type: 'object', properties: { body: { type: 'string' }, title: { type: 'string' }, layout: { type: 'string' }, roles: { type: 'array', items: { type: 'string' } }, expires_at: { type: 'string' } }, required: ['body'] } },
|
|
146
|
+
{ name: 'publish_announcement', gate: 'roleManager', description: 'Publish a dashboard announcement — a banner every targeted user sees live and on their next load until it expires (default 24h) or they dismiss it. Only body (markdown) is required; title, layout, roles targeting, and expires_at are optional. Bodies broadcast to all authenticated subscribers — never include secrets.', read_safe: false, inputSchema: { type: 'object', properties: { body: { type: 'string' }, title: { type: 'string' }, layout: { type: 'string' }, roles: { type: 'array', items: { type: 'string' } }, expires_at: { type: 'string' } }, required: ['body'] } },
|
|
147
147
|
];
|