@hotmeshio/long-tail 0.23.1 → 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/index.d.ts +1 -0
- package/build/api/escalations/index.js +4 -1
- package/build/api/escalations/list.d.ts +5 -0
- package/build/api/escalations/list.js +19 -5
- package/build/api/escalations/metadata.js +3 -0
- package/build/api/escalations/related.d.ts +18 -0
- package/build/api/escalations/related.js +205 -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/roles.js +4 -0
- package/build/api/scan-codes/choice.js +31 -7
- package/build/api/scan-codes/present.js +5 -1
- package/build/api/settings.d.ts +1 -1
- package/build/api/settings.js +12 -1
- 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/display.d.ts +15 -0
- package/build/modules/display.js +27 -0
- 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 +5 -2
- package/build/routes/escalations/list.d.ts +1 -1
- package/build/routes/escalations/list.js +2 -0
- package/build/routes/escalations/metadata.d.ts +1 -1
- package/build/routes/escalations/related.d.ts +7 -0
- package/build/routes/escalations/related.js +60 -0
- 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/scripts/consolidation-sim.d.ts +25 -0
- package/build/scripts/consolidation-sim.js +141 -0
- package/build/sdk/index.d.ts +12 -0
- package/build/sdk/index.js +2 -0
- 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/grouped-list.d.ts +19 -0
- package/build/services/escalation/grouped-list.js +54 -0
- package/build/services/escalation/index.d.ts +4 -0
- package/build/services/escalation/index.js +9 -1
- package/build/services/escalation/queries.d.ts +17 -13
- package/build/services/escalation/queries.js +38 -42
- package/build/services/escalation/read-scope-sql.d.ts +13 -0
- package/build/services/escalation/read-scope-sql.js +19 -0
- package/build/services/escalation/related.d.ts +58 -0
- package/build/services/escalation/related.js +196 -0
- 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/role/index.js +6 -0
- package/build/services/role/seed.js +4 -0
- package/build/services/scan-code/validate-facts.d.ts +1 -1
- package/build/services/scan-code/validate-facts.js +12 -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/shared/form-validation/x-lt-scan.d.ts +8 -0
- package/build/shared/form-validation/x-lt-scan.js +20 -1
- package/build/shared/list-schema/index.d.ts +3 -0
- package/build/shared/list-schema/index.js +27 -0
- package/build/shared/list-schema/template.d.ts +14 -0
- package/build/shared/list-schema/template.js +85 -0
- package/build/shared/list-schema/types.d.ts +154 -0
- package/build/shared/list-schema/types.js +55 -0
- package/build/shared/list-schema/validate.d.ts +12 -0
- package/build/shared/list-schema/validate.js +204 -0
- package/build/shared/roles/segment.d.ts +22 -0
- package/build/shared/roles/segment.js +42 -0
- package/build/start/adapters.js +2 -0
- 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 +39 -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 +5 -3
- package/build/types/index.js +2 -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/scan-code/constants.d.ts +7 -0
- package/build/types/scan-code/constants.js +7 -1
- package/build/types/scan-code/response.d.ts +3 -2
- package/build/types/scan-code/rule.d.ts +6 -1
- package/build/types/startup.d.ts +23 -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-DKrqLGjn.js → AdminDashboard-B3mkMIOT.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-DKrqLGjn.js.map → AdminDashboard-B3mkMIOT.js.map} +1 -1
- package/dashboard/dist/assets/{AgentConfigPage-BoQhRW6U.js → AgentConfigPage-CQj2B678.js} +2 -2
- package/dashboard/dist/assets/{AgentConfigPage-BoQhRW6U.js.map → AgentConfigPage-CQj2B678.js.map} +1 -1
- package/dashboard/dist/assets/{AgentDetailPage-DZhzuZmO.js → AgentDetailPage-CzrD8JJI.js} +3 -3
- package/dashboard/dist/assets/{AgentDetailPage-DZhzuZmO.js.map → AgentDetailPage-CzrD8JJI.js.map} +1 -1
- package/dashboard/dist/assets/{AgentsPage-5MynmbWX.js → AgentsPage-jg2OFwyW.js} +2 -2
- package/dashboard/dist/assets/{AgentsPage-5MynmbWX.js.map → AgentsPage-jg2OFwyW.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-IS28XBRe.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-IS28XBRe.js.map +1 -0
- package/dashboard/dist/assets/{BotPicker-C3LR6Sqy.js → BotPicker-DvEJFpwS.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-C3LR6Sqy.js.map → BotPicker-DvEJFpwS.js.map} +1 -1
- package/dashboard/dist/assets/{BulkAssignModal-COjoOIIH.js → BulkAssignModal-BoQCi-YC.js} +2 -2
- package/dashboard/dist/assets/{BulkAssignModal-COjoOIIH.js.map → BulkAssignModal-BoQCi-YC.js.map} +1 -1
- package/dashboard/dist/assets/CapabilitiesPage-kwlrcb_t.js +2 -0
- package/dashboard/dist/assets/{CapabilitiesPage-DKxLvOfB.js.map → CapabilitiesPage-kwlrcb_t.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-Cz5sRx-r.js → CollapsibleSection-UMIV4KIj.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-Cz5sRx-r.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-LG03dVgR.js +2 -0
- package/dashboard/dist/assets/CountdownTimer-LG03dVgR.js.map +1 -0
- package/dashboard/dist/assets/{CredentialsPage-DhiHiPsG.js → CredentialsPage-CaFQ6vLb.js} +2 -2
- package/dashboard/dist/assets/{CredentialsPage-DhiHiPsG.js.map → CredentialsPage-CaFQ6vLb.js.map} +1 -1
- package/dashboard/dist/assets/{CronLabel-C9SkawB-.js → CronLabel-Co5j7tzW.js} +2 -2
- package/dashboard/dist/assets/{CronLabel-C9SkawB-.js.map → CronLabel-Co5j7tzW.js.map} +1 -1
- package/dashboard/dist/assets/DataTable-FjFhx0SE.js +2 -0
- package/dashboard/dist/assets/DataTable-FjFhx0SE.js.map +1 -0
- package/dashboard/dist/assets/{ElapsedCell-BeK1SUDK.js → ElapsedCell-WJyE9G0T.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-BeK1SUDK.js.map → ElapsedCell-WJyE9G0T.js.map} +1 -1
- package/dashboard/dist/assets/{EntityTimelinePanel-BThdefKj.js → EntityTimelinePanel-CDFFfX9d.js} +2 -2
- package/dashboard/dist/assets/{EntityTimelinePanel-BThdefKj.js.map → EntityTimelinePanel-CDFFfX9d.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationListSchemaPage-DlDIYb-p.js → EscalationListSchemaPage-CMrUlaKI.js} +3 -3
- package/dashboard/dist/assets/{EscalationListSchemaPage-DlDIYb-p.js.map → EscalationListSchemaPage-CMrUlaKI.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationSchemaPage-CQt-Embr.js → EscalationSchemaPage-Dx2Lyfrz.js} +3 -3
- package/dashboard/dist/assets/{EscalationSchemaPage-CQt-Embr.js.map → EscalationSchemaPage-Dx2Lyfrz.js.map} +1 -1
- package/dashboard/dist/assets/EscalationTimeline-d3nvshOk.js +2 -0
- package/dashboard/dist/assets/EscalationTimeline-d3nvshOk.js.map +1 -0
- package/dashboard/dist/assets/{EscalationTitleSelect-Dewrv8wX.js → EscalationTitleSelect-DWQieOM9.js} +2 -2
- package/dashboard/dist/assets/{EscalationTitleSelect-Dewrv8wX.js.map → EscalationTitleSelect-DWQieOM9.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-BzH-Y-5x.js → EscalationsOverview-BX8Cpi0X.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-BzH-Y-5x.js.map → EscalationsOverview-BX8Cpi0X.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-C97m6IZv.js → EventTable-D1-ITVXS.js} +2 -2
- package/dashboard/dist/assets/{EventTable-C97m6IZv.js.map → EventTable-D1-ITVXS.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-D-6xVHIw.js → FilterBar-ABC9ctin.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-D-6xVHIw.js.map → FilterBar-ABC9ctin.js.map} +1 -1
- package/dashboard/dist/assets/FormattedValue-k27T4bG7.js +2 -0
- package/dashboard/dist/assets/FormattedValue-k27T4bG7.js.map +1 -0
- package/dashboard/dist/assets/{GraphInvokePage-Bwi8EF9Y.js → GraphInvokePage-DKUErxWc.js} +2 -2
- package/dashboard/dist/assets/{GraphInvokePage-Bwi8EF9Y.js.map → GraphInvokePage-DKUErxWc.js.map} +1 -1
- package/dashboard/dist/assets/{HomePage-Z_Q03C0z.js → HomePage-C6u9dIpR.js} +2 -2
- package/dashboard/dist/assets/{HomePage-Z_Q03C0z.js.map → HomePage-C6u9dIpR.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-_jWTw5no.js → ListToolbar-gA5rFzkz.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-_jWTw5no.js.map → ListToolbar-gA5rFzkz.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-CjqTuP0N.js → McpOverview-BOPo3J_i.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-CjqTuP0N.js.map → McpOverview-BOPo3J_i.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryDetailPage-leCsje1U.js → McpQueryDetailPage-BRVVi0Zh.js} +2 -2
- package/dashboard/dist/assets/{McpQueryDetailPage-leCsje1U.js.map → McpQueryDetailPage-BRVVi0Zh.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryPage-C-PyXYX4.js → McpQueryPage-Dmbb6SAc.js} +2 -2
- package/dashboard/dist/assets/{McpQueryPage-C-PyXYX4.js.map → McpQueryPage-Dmbb6SAc.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunDetailPage-JDrr3uUQ.js → McpRunDetailPage-bMXNO-6V.js} +2 -2
- package/dashboard/dist/assets/{McpRunDetailPage-JDrr3uUQ.js.map → McpRunDetailPage-bMXNO-6V.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-DERXQLgZ.js → McpRunsPage-Bi9AMWja.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-DERXQLgZ.js.map → McpRunsPage-Bi9AMWja.js.map} +1 -1
- package/dashboard/dist/assets/{OperationsPage-B2DA7n9m.js → OperationsPage-CvR74ZUJ.js} +3 -3
- package/dashboard/dist/assets/OperationsPage-CvR74ZUJ.js.map +1 -0
- package/dashboard/dist/assets/OperatorDashboard-DctmZw10.js +2 -0
- package/dashboard/dist/assets/OperatorDashboard-DctmZw10.js.map +1 -0
- package/dashboard/dist/assets/{PersonaDetailPage-ChXwJ6u5.js → PersonaDetailPage-Ubqm2rQH.js} +2 -2
- package/dashboard/dist/assets/{PersonaDetailPage-ChXwJ6u5.js.map → PersonaDetailPage-Ubqm2rQH.js.map} +1 -1
- package/dashboard/dist/assets/{PersonasPage-BFFxncSE.js → PersonasPage-BpFL2rpo.js} +2 -2
- package/dashboard/dist/assets/{PersonasPage-BFFxncSE.js.map → PersonasPage-BpFL2rpo.js.map} +1 -1
- package/dashboard/dist/assets/PortalPage-Dfc_Q02R.js +2 -0
- package/dashboard/dist/assets/PortalPage-Dfc_Q02R.js.map +1 -0
- package/dashboard/dist/assets/ProcessDetailPage-liJspvQh.js +2 -0
- package/dashboard/dist/assets/{ProcessDetailPage-D7EYwW-j.js.map → ProcessDetailPage-liJspvQh.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-CakYRtnE.js → ProcessesListPage-C3OM5ZUy.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-CakYRtnE.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-CKbGwezP.js → RoleDetailPage-CrlYCh-R.js} +2 -2
- package/dashboard/dist/assets/{RoleDetailPage-CKbGwezP.js.map → RoleDetailPage-CrlYCh-R.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-Czu7Zku4.js → RolesPage-BaazL_pt.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-Czu7Zku4.js.map → RolesPage-BaazL_pt.js.map} +1 -1
- package/dashboard/dist/assets/{RunAsSelector-6BLScYTX.js → RunAsSelector-DxuV0fa1.js} +2 -2
- package/dashboard/dist/assets/{RunAsSelector-6BLScYTX.js.map → RunAsSelector-DxuV0fa1.js.map} +1 -1
- package/dashboard/dist/assets/{ScanCodesPage-Cv9q8Bvt.js → ScanCodesPage-C0mvmYTq.js} +2 -2
- package/dashboard/dist/assets/{ScanCodesPage-Cv9q8Bvt.js.map → ScanCodesPage-C0mvmYTq.js.map} +1 -1
- package/dashboard/dist/assets/{ScanSchemeDetailPage-BxazXYIc.js → ScanSchemeDetailPage-CiJgt5dZ.js} +2 -2
- package/dashboard/dist/assets/{ScanSchemeDetailPage-BxazXYIc.js.map → ScanSchemeDetailPage-CiJgt5dZ.js.map} +1 -1
- package/dashboard/dist/assets/ScanStationPage-DzGaXc40.js +2 -0
- package/dashboard/dist/assets/ScanStationPage-DzGaXc40.js.map +1 -0
- package/dashboard/dist/assets/{StickyPagination-DsdtYoXR.js → StickyPagination-CqbjVY6T.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-DsdtYoXR.js.map → StickyPagination-CqbjVY6T.js.map} +1 -1
- package/dashboard/dist/assets/{StreamMessageDetail-CT3FQoT3.js → StreamMessageDetail-wX3i0aqs.js} +2 -2
- package/dashboard/dist/assets/{StreamMessageDetail-CT3FQoT3.js.map → StreamMessageDetail-wX3i0aqs.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-C8TjkJ10.js → SwimlaneTimeline-C50PsFoV.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-C8TjkJ10.js.map → SwimlaneTimeline-C50PsFoV.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-DGUzdBFN.js → TaskDetailPage-bbNSv4Ae.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-DGUzdBFN.js.map → TaskDetailPage-bbNSv4Ae.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-BVIP6-EZ.js → TasksListPage-CDWnm_d9.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-BVIP6-EZ.js.map → TasksListPage-CDWnm_d9.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-C-rd9F9g.js → TimeAgo-BLjqlfoX.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-C-rd9F9g.js.map → TimeAgo-BLjqlfoX.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-DPbchDOI.js → TimestampCell-CnW0ENb5.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-DPbchDOI.js.map → TimestampCell-CnW0ENb5.js.map} +1 -1
- package/dashboard/dist/assets/{ToolTestPanel-DAUC8DHK.js → ToolTestPanel-DkMgCB-k.js} +2 -2
- package/dashboard/dist/assets/{ToolTestPanel-DAUC8DHK.js.map → ToolTestPanel-DkMgCB-k.js.map} +1 -1
- package/dashboard/dist/assets/{TopicDetailPage-70mMKBzG.js → TopicDetailPage-g3pljKKX.js} +2 -2
- package/dashboard/dist/assets/{TopicDetailPage-70mMKBzG.js.map → TopicDetailPage-g3pljKKX.js.map} +1 -1
- package/dashboard/dist/assets/{TopicsPage-CE3hBthn.js → TopicsPage-CVcCYdy-.js} +2 -2
- package/dashboard/dist/assets/{TopicsPage-CE3hBthn.js.map → TopicsPage-CVcCYdy-.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-BDBDA-LR.js → UserName-D6zGIK2i.js} +2 -2
- package/dashboard/dist/assets/{UserName-BDBDA-LR.js.map → UserName-D6zGIK2i.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-BbkLZ1co.js → WorkflowExecutionPage-B8g81FCJ.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-BbkLZ1co.js.map → WorkflowExecutionPage-B8g81FCJ.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsDashboard-Bp1L7Ggz.js → WorkflowsDashboard-nxT3bv6W.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-Bp1L7Ggz.js.map → WorkflowsDashboard-nxT3bv6W.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-IeTKHAi4.js → WorkflowsOverview-grI-KAI2.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-IeTKHAi4.js.map → WorkflowsOverview-grI-KAI2.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-DtKCXnKt.js → YamlWorkflowDetailPage-BoZ-hfBE.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-DtKCXnKt.js.map → YamlWorkflowDetailPage-BoZ-hfBE.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowsPage-CEcZBV_3.js → YamlWorkflowsPage-Bf04rwRv.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowsPage-CEcZBV_3.js.map → YamlWorkflowsPage-Bf04rwRv.js.map} +1 -1
- package/dashboard/dist/assets/{agents-BT-sEk81.js → agents-Dphpdi8l.js} +2 -2
- package/dashboard/dist/assets/{agents-BT-sEk81.js.map → agents-Dphpdi8l.js.map} +1 -1
- package/dashboard/dist/assets/{bots-DRoAdLek.js → bots-DIFE298x.js} +2 -2
- package/dashboard/dist/assets/{bots-DRoAdLek.js.map → bots-DIFE298x.js.map} +1 -1
- package/dashboard/dist/assets/{capabilities-Bc-nJk6y.js → capabilities-D7Y7LClY.js} +2 -2
- package/dashboard/dist/assets/{capabilities-Bc-nJk6y.js.map → capabilities-D7Y7LClY.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-aXceSIRf.js → controlplane-D1TGcYsS.js} +2 -2
- package/dashboard/dist/assets/{controlplane-aXceSIRf.js.map → controlplane-D1TGcYsS.js.map} +1 -1
- package/dashboard/dist/assets/escalation-columns-cwZE6xyo.js +2 -0
- package/dashboard/dist/assets/escalation-columns-cwZE6xyo.js.map +1 -0
- package/dashboard/dist/assets/{index-CuBGGwXf.js → index-BzYcUPdD.js} +2 -2
- package/dashboard/dist/assets/{index-CuBGGwXf.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-h2gX31B2.js → index-ChV7pBjM.js} +2 -2
- package/dashboard/dist/assets/{index-h2gX31B2.js.map → index-ChV7pBjM.js.map} +1 -1
- package/dashboard/dist/assets/index-CniRa65p.js +3 -0
- package/dashboard/dist/assets/index-CniRa65p.js.map +1 -0
- package/dashboard/dist/assets/index-CxdjT1Yk.js +2 -0
- package/dashboard/dist/assets/{index-BCFEQEMC.js.map → index-CxdjT1Yk.js.map} +1 -1
- package/dashboard/dist/assets/{index-CZyO9hRb.js → index-DAvi5_2T.js} +2 -2
- package/dashboard/dist/assets/{index-CZyO9hRb.js.map → index-DAvi5_2T.js.map} +1 -1
- package/dashboard/dist/assets/{index-Djsoi8DI.js → index-DN-kX7hL.js} +2 -2
- package/dashboard/dist/assets/{index-Djsoi8DI.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-DBxpyIw5.js → index-DpKOr311.js} +2 -2
- package/dashboard/dist/assets/{index-DBxpyIw5.js.map → index-DpKOr311.js.map} +1 -1
- package/dashboard/dist/assets/{index-Ba-s5Yb5.js → index-Dy1wWu2e.js} +2 -2
- package/dashboard/dist/assets/{index-Ba-s5Yb5.js.map → index-Dy1wWu2e.js.map} +1 -1
- package/dashboard/dist/assets/{index-DH03y-UT.js → index-HLu98Sqh.js} +2 -2
- package/dashboard/dist/assets/{index-DH03y-UT.js.map → index-HLu98Sqh.js.map} +1 -1
- package/dashboard/dist/assets/{index-C3VTJcrp.js → index-ag2pCAPu.js} +2 -2
- package/dashboard/dist/assets/{index-C3VTJcrp.js.map → index-ag2pCAPu.js.map} +1 -1
- package/dashboard/dist/assets/index-gkxPN7Vx.js +13 -0
- package/dashboard/dist/assets/{index-BEPKAjna.js.map → index-gkxPN7Vx.js.map} +1 -1
- package/dashboard/dist/assets/index-m9A3UYst.css +1 -0
- package/dashboard/dist/assets/{knowledge-BhW8V-Hq.js → knowledge-DnMs-SOJ.js} +2 -2
- package/dashboard/dist/assets/{knowledge-BhW8V-Hq.js.map → knowledge-DnMs-SOJ.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-BYfSMQzh.js → mcp-CwW-K3r4.js} +2 -2
- package/dashboard/dist/assets/{mcp-BYfSMQzh.js.map → mcp-CwW-K3r4.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-DUJoOk_q.js → mcp-query-BZt5e8_Q.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-DUJoOk_q.js.map → mcp-query-BZt5e8_Q.js.map} +1 -1
- package/dashboard/dist/assets/{personas-jT1O_SB4.js → personas-UA-Xn60f.js} +2 -2
- package/dashboard/dist/assets/{personas-jT1O_SB4.js.map → personas-UA-Xn60f.js.map} +1 -1
- package/dashboard/dist/assets/{pipelines-Bp-wIaz2.js → pipelines-Cu3PARum.js} +2 -2
- package/dashboard/dist/assets/{pipelines-Bp-wIaz2.js.map → pipelines-Cu3PARum.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-CCrvnXbz.js → tasks-BO6h8GJE.js} +2 -2
- package/dashboard/dist/assets/{tasks-CCrvnXbz.js.map → tasks-BO6h8GJE.js.map} +1 -1
- package/dashboard/dist/assets/{topics-Blft0I1L.js → topics-CWjCR-17.js} +2 -2
- package/dashboard/dist/assets/{topics-Blft0I1L.js.map → topics-CWjCR-17.js.map} +1 -1
- package/dashboard/dist/assets/{useDebouncedValue-BYqbcism.js → useDebouncedValue-6t0jx1RB.js} +2 -2
- package/dashboard/dist/assets/{useDebouncedValue-BYqbcism.js.map → useDebouncedValue-6t0jx1RB.js.map} +1 -1
- package/dashboard/dist/assets/{useNamespace-BfxJAUgG.js → useNamespace-CqpoQx6D.js} +2 -2
- package/dashboard/dist/assets/{useNamespace-BfxJAUgG.js.map → useNamespace-CqpoQx6D.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-BukJuWpb.js → useYamlActivityEvents-hmCQQwzB.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-BukJuWpb.js.map → useYamlActivityEvents-hmCQQwzB.js.map} +1 -1
- package/dashboard/dist/assets/validate-BIRn4a6d.js +2 -0
- package/dashboard/dist/assets/validate-BIRn4a6d.js.map +1 -0
- package/dashboard/dist/assets/{yaml-workflows-DeRWqMGk.js → yaml-workflows-ziUdZhKY.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-DeRWqMGk.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 +49 -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 +18 -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/code-owned-configuration.md +12 -0
- 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/hitl/portal.md +2 -0
- package/docs/hitl/x-lt-list-schema.md +88 -1
- package/docs/hitl/x-lt-scan.md +4 -1
- package/docs/iam.md +7 -5
- package/docs/mcp.md +159 -210
- package/docs/oauth-and-delegation.md +32 -21
- package/docs/scan-codes.md +7 -1
- package/docs/topics.md +2 -0
- package/docs/workflows.md +14 -112
- package/package.json +6 -3
- package/dashboard/dist/assets/AvailableEscalationsPage-CWMyy3IL.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-CWMyy3IL.js.map +0 -1
- package/dashboard/dist/assets/CapabilitiesPage-DKxLvOfB.js +0 -2
- package/dashboard/dist/assets/ConfirmDeleteModal-Beq1vQtY.js +0 -2
- package/dashboard/dist/assets/ConfirmDeleteModal-Beq1vQtY.js.map +0 -1
- package/dashboard/dist/assets/CountdownTimer-BUBl_4mP.js +0 -2
- package/dashboard/dist/assets/CountdownTimer-BUBl_4mP.js.map +0 -1
- package/dashboard/dist/assets/DataTable-spX1dFyb.js +0 -2
- package/dashboard/dist/assets/DataTable-spX1dFyb.js.map +0 -1
- package/dashboard/dist/assets/EscalationListView-DTIVuym4.js +0 -2
- package/dashboard/dist/assets/EscalationListView-DTIVuym4.js.map +0 -1
- package/dashboard/dist/assets/EscalationTimeline-DNKNp6pL.js +0 -2
- package/dashboard/dist/assets/EscalationTimeline-DNKNp6pL.js.map +0 -1
- package/dashboard/dist/assets/OperationsPage-B2DA7n9m.js.map +0 -1
- package/dashboard/dist/assets/OperatorDashboard-C8RtPv8P.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-C8RtPv8P.js.map +0 -1
- package/dashboard/dist/assets/PortalPage-Xk1zVneM.js +0 -2
- package/dashboard/dist/assets/PortalPage-Xk1zVneM.js.map +0 -1
- package/dashboard/dist/assets/ProcessDetailPage-D7EYwW-j.js +0 -2
- package/dashboard/dist/assets/ResolverForm-BwVOJUpJ.js +0 -8
- package/dashboard/dist/assets/ResolverForm-BwVOJUpJ.js.map +0 -1
- package/dashboard/dist/assets/ScanStationPage-Cg8LCFR7.js +0 -2
- package/dashboard/dist/assets/ScanStationPage-Cg8LCFR7.js.map +0 -1
- package/dashboard/dist/assets/escalation-columns-Bf09Q89t.js +0 -2
- package/dashboard/dist/assets/escalation-columns-Bf09Q89t.js.map +0 -1
- package/dashboard/dist/assets/index-BCFEQEMC.js +0 -2
- package/dashboard/dist/assets/index-BEPKAjna.js +0 -13
- package/dashboard/dist/assets/index-BUYokcrl.js +0 -67
- package/dashboard/dist/assets/index-BUYokcrl.js.map +0 -1
- package/dashboard/dist/assets/index-CcgmR-7-.js +0 -2
- package/dashboard/dist/assets/index-CcgmR-7-.js.map +0 -1
- package/dashboard/dist/assets/index-D1mKf_qz.js +0 -3
- package/dashboard/dist/assets/index-D1mKf_qz.js.map +0 -1
- package/dashboard/dist/assets/index-DcppjzP5.css +0 -1
|
@@ -645,20 +645,20 @@ export declare const createUserSchema: z.ZodObject<{
|
|
|
645
645
|
}, "strip", z.ZodTypeAny, {
|
|
646
646
|
role: string;
|
|
647
647
|
type: "admin" | "member" | "superadmin";
|
|
648
|
-
read_scope?: "
|
|
649
|
-
write_scope?: "
|
|
648
|
+
read_scope?: "all" | "self" | undefined;
|
|
649
|
+
write_scope?: "all" | "self" | "none" | undefined;
|
|
650
650
|
}, {
|
|
651
651
|
role: string;
|
|
652
652
|
type: "admin" | "member" | "superadmin";
|
|
653
|
-
read_scope?: "
|
|
654
|
-
write_scope?: "
|
|
653
|
+
read_scope?: "all" | "self" | undefined;
|
|
654
|
+
write_scope?: "all" | "self" | "none" | undefined;
|
|
655
655
|
}>, "many">>>;
|
|
656
656
|
}, "strip", z.ZodTypeAny, {
|
|
657
657
|
roles: {
|
|
658
658
|
role: string;
|
|
659
659
|
type: "admin" | "member" | "superadmin";
|
|
660
|
-
read_scope?: "
|
|
661
|
-
write_scope?: "
|
|
660
|
+
read_scope?: "all" | "self" | undefined;
|
|
661
|
+
write_scope?: "all" | "self" | "none" | undefined;
|
|
662
662
|
}[];
|
|
663
663
|
external_id: string;
|
|
664
664
|
email?: string | undefined;
|
|
@@ -668,8 +668,8 @@ export declare const createUserSchema: z.ZodObject<{
|
|
|
668
668
|
roles?: {
|
|
669
669
|
role: string;
|
|
670
670
|
type: "admin" | "member" | "superadmin";
|
|
671
|
-
read_scope?: "
|
|
672
|
-
write_scope?: "
|
|
671
|
+
read_scope?: "all" | "self" | undefined;
|
|
672
|
+
write_scope?: "all" | "self" | "none" | undefined;
|
|
673
673
|
}[] | undefined;
|
|
674
674
|
email?: string | undefined;
|
|
675
675
|
display_name?: string | undefined;
|
|
@@ -684,14 +684,14 @@ export declare const addUserRoleSchema: z.ZodObject<{
|
|
|
684
684
|
role: string;
|
|
685
685
|
type: "admin" | "member" | "superadmin";
|
|
686
686
|
user_id: string;
|
|
687
|
-
read_scope?: "
|
|
688
|
-
write_scope?: "
|
|
687
|
+
read_scope?: "all" | "self" | undefined;
|
|
688
|
+
write_scope?: "all" | "self" | "none" | undefined;
|
|
689
689
|
}, {
|
|
690
690
|
role: string;
|
|
691
691
|
type: "admin" | "member" | "superadmin";
|
|
692
692
|
user_id: string;
|
|
693
|
-
read_scope?: "
|
|
694
|
-
write_scope?: "
|
|
693
|
+
read_scope?: "all" | "self" | undefined;
|
|
694
|
+
write_scope?: "all" | "self" | "none" | undefined;
|
|
695
695
|
}>;
|
|
696
696
|
export declare const removeUserRoleSchema: z.ZodObject<{
|
|
697
697
|
user_id: z.ZodString;
|
|
@@ -3420,21 +3420,21 @@ export declare const upsertScanRuleSchema: z.ZodObject<{
|
|
|
3420
3420
|
markdown: z.ZodOptional<z.ZodString>;
|
|
3421
3421
|
route: z.ZodOptional<z.ZodString>;
|
|
3422
3422
|
}, "strip", z.ZodTypeAny, {
|
|
3423
|
-
markdown?: string | undefined;
|
|
3424
3423
|
route?: string | undefined;
|
|
3425
|
-
}, {
|
|
3426
3424
|
markdown?: string | undefined;
|
|
3425
|
+
}, {
|
|
3427
3426
|
route?: string | undefined;
|
|
3427
|
+
markdown?: string | undefined;
|
|
3428
3428
|
}>>;
|
|
3429
3429
|
notPrimed: z.ZodOptional<z.ZodObject<{
|
|
3430
3430
|
markdown: z.ZodOptional<z.ZodString>;
|
|
3431
3431
|
route: z.ZodOptional<z.ZodString>;
|
|
3432
3432
|
}, "strip", z.ZodTypeAny, {
|
|
3433
|
-
markdown?: string | undefined;
|
|
3434
3433
|
route?: string | undefined;
|
|
3435
|
-
}, {
|
|
3436
3434
|
markdown?: string | undefined;
|
|
3435
|
+
}, {
|
|
3437
3436
|
route?: string | undefined;
|
|
3437
|
+
markdown?: string | undefined;
|
|
3438
3438
|
}>>;
|
|
3439
3439
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
3440
3440
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -3578,12 +3578,12 @@ export declare const upsertScanRuleSchema: z.ZodObject<{
|
|
|
3578
3578
|
}[];
|
|
3579
3579
|
enabled?: boolean | undefined;
|
|
3580
3580
|
fallback?: {
|
|
3581
|
-
markdown?: string | undefined;
|
|
3582
3581
|
route?: string | undefined;
|
|
3582
|
+
markdown?: string | undefined;
|
|
3583
3583
|
} | undefined;
|
|
3584
3584
|
notPrimed?: {
|
|
3585
|
-
markdown?: string | undefined;
|
|
3586
3585
|
route?: string | undefined;
|
|
3586
|
+
markdown?: string | undefined;
|
|
3587
3587
|
} | undefined;
|
|
3588
3588
|
}, {
|
|
3589
3589
|
name: string;
|
|
@@ -3726,12 +3726,12 @@ export declare const upsertScanRuleSchema: z.ZodObject<{
|
|
|
3726
3726
|
}[];
|
|
3727
3727
|
enabled?: boolean | undefined;
|
|
3728
3728
|
fallback?: {
|
|
3729
|
-
markdown?: string | undefined;
|
|
3730
3729
|
route?: string | undefined;
|
|
3730
|
+
markdown?: string | undefined;
|
|
3731
3731
|
} | undefined;
|
|
3732
3732
|
notPrimed?: {
|
|
3733
|
-
markdown?: string | undefined;
|
|
3734
3733
|
route?: string | undefined;
|
|
3734
|
+
markdown?: string | undefined;
|
|
3735
3735
|
} | undefined;
|
|
3736
3736
|
}>;
|
|
3737
3737
|
export declare const deleteScanRuleSchema: z.ZodObject<{
|
|
@@ -34,6 +34,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.registerTaskTools = registerTaskTools;
|
|
37
|
+
const caller_auth_1 = require("../caller-auth");
|
|
38
|
+
const helpers_1 = require("../../../api/escalations/helpers");
|
|
37
39
|
const taskService = __importStar(require("../../../services/task"));
|
|
38
40
|
const escalationService = __importStar(require("../../../services/escalation"));
|
|
39
41
|
const schemas_1 = require("./schemas");
|
|
@@ -78,11 +80,14 @@ function registerTaskTools(server) {
|
|
|
78
80
|
description: 'Get all tasks and escalations for a process (origin_id). ' +
|
|
79
81
|
'Returns the full history of a multi-step workflow execution.',
|
|
80
82
|
inputSchema: schemas_1.getProcessDetailSchema,
|
|
81
|
-
}, async (args) => {
|
|
82
|
-
const
|
|
83
|
+
}, async (args, extra) => {
|
|
84
|
+
const caller = (0, caller_auth_1.externalCaller)(extra);
|
|
85
|
+
const [tasks, all] = await Promise.all([
|
|
83
86
|
taskService.getProcessTasks(args.origin_id),
|
|
84
87
|
escalationService.getEscalationsByOriginId(args.origin_id),
|
|
85
88
|
]);
|
|
89
|
+
const scope = caller ? await (0, helpers_1.getEscalationReadScope)(caller.userId) : null;
|
|
90
|
+
const escalations = scope ? all.filter((e) => (0, helpers_1.scopeAdmits)(scope, caller.userId, e)) : all;
|
|
86
91
|
return {
|
|
87
92
|
content: [{
|
|
88
93
|
type: 'text',
|
|
@@ -36,8 +36,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.registerUserTools = registerUserTools;
|
|
37
37
|
const userService = __importStar(require("../../../services/user"));
|
|
38
38
|
const roleService = __importStar(require("../../../services/role"));
|
|
39
|
+
const list_schema_1 = require("../../../shared/list-schema");
|
|
39
40
|
const users_1 = require("../../../api/users");
|
|
41
|
+
const capabilities_1 = require("../../../modules/capabilities");
|
|
42
|
+
const caller_auth_1 = require("../caller-auth");
|
|
40
43
|
const schemas_1 = require("./schemas");
|
|
44
|
+
/** An MCP error for a refused decision; null when the call may go on. */
|
|
45
|
+
function refusal(decision) {
|
|
46
|
+
if (decision.allowed)
|
|
47
|
+
return null;
|
|
48
|
+
return { isError: true, content: [{ type: 'text', text: JSON.stringify({ error: decision.error }) }] };
|
|
49
|
+
}
|
|
41
50
|
function registerUserTools(server) {
|
|
42
51
|
// mirrors GET /api/users
|
|
43
52
|
server.registerTool('list_users', {
|
|
@@ -74,7 +83,11 @@ function registerUserTools(server) {
|
|
|
74
83
|
description: 'Create a new user account with optional roles. The user can then ' +
|
|
75
84
|
'claim and resolve escalations for their assigned roles.',
|
|
76
85
|
inputSchema: schemas_1.createUserSchema,
|
|
77
|
-
}, async (args) => {
|
|
86
|
+
}, async (args, extra) => {
|
|
87
|
+
const caller = (0, caller_auth_1.externalCaller)(extra);
|
|
88
|
+
const refused = caller ? refusal(await (0, capabilities_1.mayGrantRoles)(caller.userId, args.roles)) : null;
|
|
89
|
+
if (refused)
|
|
90
|
+
return refused;
|
|
78
91
|
// roles carry optional read_scope/write_scope (default all/all); createUser
|
|
79
92
|
// normalizes admin/superadmin to all/all and stores member scope verbatim.
|
|
80
93
|
for (const r of args.roles) {
|
|
@@ -105,7 +118,14 @@ function registerUserTools(server) {
|
|
|
105
118
|
'read_scope=self + write_scope=self for a one-time user who only handles ' +
|
|
106
119
|
'their own pre-assigned escalation).',
|
|
107
120
|
inputSchema: schemas_1.addUserRoleSchema,
|
|
108
|
-
}, async (args) => {
|
|
121
|
+
}, async (args, extra) => {
|
|
122
|
+
const caller = (0, caller_auth_1.externalCaller)(extra);
|
|
123
|
+
if (caller) {
|
|
124
|
+
const decision = await (0, capabilities_1.mayGrantRole)(caller.userId, { role: args.role, type: args.type });
|
|
125
|
+
if (!decision.allowed) {
|
|
126
|
+
return { isError: true, content: [{ type: 'text', text: JSON.stringify({ error: decision.error }) }] };
|
|
127
|
+
}
|
|
128
|
+
}
|
|
109
129
|
const read = args.read_scope ?? userService.DEFAULT_READ_SCOPE;
|
|
110
130
|
const write = args.write_scope ?? userService.DEFAULT_WRITE_SCOPE;
|
|
111
131
|
if (!userService.isValidScopePair(read, write)) {
|
|
@@ -127,7 +147,11 @@ function registerUserTools(server) {
|
|
|
127
147
|
title: 'Remove User Role',
|
|
128
148
|
description: 'Remove a role from a user.',
|
|
129
149
|
inputSchema: schemas_1.removeUserRoleSchema,
|
|
130
|
-
}, async (args) => {
|
|
150
|
+
}, async (args, extra) => {
|
|
151
|
+
const caller = (0, caller_auth_1.externalCaller)(extra);
|
|
152
|
+
const refused = caller ? refusal(await (0, capabilities_1.mayRevokeRole)(caller.userId, args.user_id, args.role)) : null;
|
|
153
|
+
if (refused)
|
|
154
|
+
return refused;
|
|
131
155
|
const removed = await userService.removeUserRole(args.user_id, args.role);
|
|
132
156
|
if (!removed) {
|
|
133
157
|
return {
|
|
@@ -147,7 +171,11 @@ function registerUserTools(server) {
|
|
|
147
171
|
'rename preserves the value. Identity-binding keys (badge scheme target facets) assert ' +
|
|
148
172
|
'uniqueness among active users.',
|
|
149
173
|
inputSchema: schemas_1.patchUserPropertiesSchema,
|
|
150
|
-
}, async (args) => {
|
|
174
|
+
}, async (args, extra) => {
|
|
175
|
+
const caller = (0, caller_auth_1.externalCaller)(extra);
|
|
176
|
+
const refused = caller ? refusal(await (0, capabilities_1.mayManageAccount)(caller.userId, args.user_id)) : null;
|
|
177
|
+
if (refused)
|
|
178
|
+
return refused;
|
|
151
179
|
const result = await (0, users_1.patchUserProperties)({
|
|
152
180
|
id: args.user_id,
|
|
153
181
|
set: args.set,
|
|
@@ -228,6 +256,13 @@ function registerUserTools(server) {
|
|
|
228
256
|
'priority_threshold_minutes, priority_facet, entity_facet).',
|
|
229
257
|
inputSchema: schemas_1.updateRoleSchema,
|
|
230
258
|
}, async (args) => {
|
|
259
|
+
const listSchemaError = args.list_schema != null ? (0, list_schema_1.listSchemaRelationsError)(args.list_schema) : null;
|
|
260
|
+
if (listSchemaError) {
|
|
261
|
+
return {
|
|
262
|
+
content: [{ type: 'text', text: JSON.stringify({ error: `list_schema: ${listSchemaError}` }) }],
|
|
263
|
+
isError: true,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
231
266
|
const updated = await roleService.updateRoleMetadata(args.role, {
|
|
232
267
|
title: args.title,
|
|
233
268
|
description: args.description,
|
|
@@ -35,6 +35,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.registerWorkflowConfigTools = registerWorkflowConfigTools;
|
|
37
37
|
const configService = __importStar(require("../../../services/config"));
|
|
38
|
+
const workflow_invocation_1 = require("../../../services/workflow-invocation");
|
|
39
|
+
const caller_auth_1 = require("../caller-auth");
|
|
38
40
|
const lookup_cache_1 = require("../../../services/knowledge/lookup-cache");
|
|
39
41
|
const lookup_refs_1 = require("../../../services/knowledge/lookup-refs");
|
|
40
42
|
const ltconfig_1 = require("../../../modules/ltconfig");
|
|
@@ -101,7 +103,16 @@ function registerWorkflowConfigTools(server) {
|
|
|
101
103
|
'to their defaults, so send the whole profile (start from get_workflow_config). ' +
|
|
102
104
|
'Invalidates the config cache and restarts cron if schedule changes.',
|
|
103
105
|
inputSchema: schemas_1.upsertWorkflowConfigSchema,
|
|
104
|
-
}, async (args) => {
|
|
106
|
+
}, async (args, extra) => {
|
|
107
|
+
const caller = (0, caller_auth_1.externalCaller)(extra);
|
|
108
|
+
if (caller && args.execute_as) {
|
|
109
|
+
try {
|
|
110
|
+
await (0, workflow_invocation_1.assertMayActAs)(caller.userId, args.execute_as);
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
return errorResult(err.message);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
105
116
|
if (args.icon && !(0, workflow_icons_1.isWorkflowIcon)(args.icon)) {
|
|
106
117
|
return errorResult(`Unknown workflow icon "${args.icon}"; choose one of WORKFLOW_ICONS`);
|
|
107
118
|
}
|
|
@@ -37,9 +37,26 @@ exports.registerWorkflowTools = registerWorkflowTools;
|
|
|
37
37
|
const configService = __importStar(require("../../../services/config"));
|
|
38
38
|
const registry_1 = require("../../../services/workers/registry");
|
|
39
39
|
const workflow_invocation_1 = require("../../../services/workflow-invocation");
|
|
40
|
+
const caller_auth_1 = require("../caller-auth");
|
|
41
|
+
const capabilities_1 = require("../../../modules/capabilities");
|
|
42
|
+
const run_read_1 = require("./run-read");
|
|
40
43
|
const workflowApi = __importStar(require("../../../api/workflows"));
|
|
41
44
|
const workflow_state_1 = require("../../../shared/workflow-state");
|
|
42
45
|
const schemas_1 = require("./schemas");
|
|
46
|
+
const SYSTEM_INVOKER = { userId: 'lt-system', role: 'superadmin' };
|
|
47
|
+
/**
|
|
48
|
+
* Who a workflow is invoked as. A `/mcp` caller must satisfy the workflow's
|
|
49
|
+
* invocation roles and becomes the envelope identity. Key scopes are left
|
|
50
|
+
* off: at `/mcp` they decide which invoke tool is listed, not whether the
|
|
51
|
+
* invocation is allowed. Internal calls invoke as lt-system.
|
|
52
|
+
*/
|
|
53
|
+
async function resolveInvoker(workflowType, extra, executeAs) {
|
|
54
|
+
const caller = (0, caller_auth_1.externalCaller)(extra);
|
|
55
|
+
if (!caller)
|
|
56
|
+
return SYSTEM_INVOKER;
|
|
57
|
+
await (0, workflow_invocation_1.authorizeInvocation)({ workflowType, userId: caller.userId, executeAs });
|
|
58
|
+
return { userId: caller.userId, role: caller.role };
|
|
59
|
+
}
|
|
43
60
|
function registerWorkflowTools(server) {
|
|
44
61
|
// mirrors GET /api/workflows/discovered
|
|
45
62
|
server.registerTool('list_discovered_workflows', {
|
|
@@ -99,8 +116,9 @@ function registerWorkflowTools(server) {
|
|
|
99
116
|
'the payload must satisfy. Returns the workflow ID immediately; the ' +
|
|
100
117
|
'workflow runs durably in the background.',
|
|
101
118
|
inputSchema: schemas_1.invokeWorkflowSchema,
|
|
102
|
-
}, async (args) => {
|
|
119
|
+
}, async (args, extra) => {
|
|
103
120
|
const config = await configService.getWorkflowConfig(args.workflow_type);
|
|
121
|
+
const invoker = await resolveInvoker(args.workflow_type, extra, args.execute_as);
|
|
104
122
|
const rejected = await inputSchemaRejection(config, args);
|
|
105
123
|
if (rejected)
|
|
106
124
|
return rejected;
|
|
@@ -112,7 +130,7 @@ function registerWorkflowTools(server) {
|
|
|
112
130
|
// WorkflowOptions passthrough — parity with the HTTP invoke route, which
|
|
113
131
|
// spreads extra body keys into options. signalIn stays service-forced.
|
|
114
132
|
options: args.options,
|
|
115
|
-
auth:
|
|
133
|
+
auth: invoker,
|
|
116
134
|
});
|
|
117
135
|
return {
|
|
118
136
|
content: [{
|
|
@@ -132,7 +150,7 @@ function registerWorkflowTools(server) {
|
|
|
132
150
|
'flag fails with a clear error. Call get_workflow_config for the ' +
|
|
133
151
|
'input_schema the payload must satisfy.',
|
|
134
152
|
inputSchema: schemas_1.invokeWorkflowSchema,
|
|
135
|
-
}, async (args) => {
|
|
153
|
+
}, async (args, extra) => {
|
|
136
154
|
const config = await configService.getWorkflowConfig(args.workflow_type);
|
|
137
155
|
if (!config?.invocable) {
|
|
138
156
|
return {
|
|
@@ -152,6 +170,7 @@ function registerWorkflowTools(server) {
|
|
|
152
170
|
isError: true,
|
|
153
171
|
};
|
|
154
172
|
}
|
|
173
|
+
const invoker = await resolveInvoker(args.workflow_type, extra, args.execute_as);
|
|
155
174
|
const rejected = await inputSchemaRejection(config, args);
|
|
156
175
|
if (rejected)
|
|
157
176
|
return rejected;
|
|
@@ -161,7 +180,7 @@ function registerWorkflowTools(server) {
|
|
|
161
180
|
metadata: args.metadata,
|
|
162
181
|
executeAs: args.execute_as,
|
|
163
182
|
options: args.options,
|
|
164
|
-
auth:
|
|
183
|
+
auth: invoker,
|
|
165
184
|
});
|
|
166
185
|
return {
|
|
167
186
|
content: [{
|
|
@@ -179,11 +198,14 @@ function registerWorkflowTools(server) {
|
|
|
179
198
|
'Resolution is namespace-aware: pass app_id to read a workflow (e.g. a ' +
|
|
180
199
|
'child) running in a non-default HotMesh namespace.',
|
|
181
200
|
inputSchema: schemas_1.getWorkflowStatusSchema,
|
|
182
|
-
}, async (args) => {
|
|
201
|
+
}, async (args, extra) => {
|
|
183
202
|
const reply = (body, isError = false) => ({
|
|
184
203
|
content: [{ type: 'text', text: JSON.stringify(body) }],
|
|
185
204
|
...(isError ? { isError: true } : {}),
|
|
186
205
|
});
|
|
206
|
+
if (!(await (0, capabilities_1.mayReadWorkflowRun)(await (0, caller_auth_1.callerAuth)(extra), args.workflow_id))) {
|
|
207
|
+
return reply({ error: run_read_1.RUN_READ_DENIED }, true);
|
|
208
|
+
}
|
|
187
209
|
const found = await workflowApi.getWorkflowResult({
|
|
188
210
|
workflowId: args.workflow_id,
|
|
189
211
|
appId: args.app_id,
|
|
@@ -38,6 +38,8 @@ const yamlDb = __importStar(require("../../../services/yaml-workflow/db"));
|
|
|
38
38
|
const yamlGenerator = __importStar(require("../../../services/yaml-workflow/generator"));
|
|
39
39
|
const yamlDeployer = __importStar(require("../../../services/yaml-workflow/deployer"));
|
|
40
40
|
const yamlWorkers = __importStar(require("../../../services/yaml-workflow/workers"));
|
|
41
|
+
const deploy_1 = require("../../../api/yaml-workflows/deploy");
|
|
42
|
+
const caller_auth_1 = require("../caller-auth");
|
|
41
43
|
const task_1 = require("../../../services/task");
|
|
42
44
|
const schemas_1 = require("./schemas");
|
|
43
45
|
function registerYamlWorkflowTools(server) {
|
|
@@ -170,7 +172,7 @@ function registerYamlWorkflowTools(server) {
|
|
|
170
172
|
'register workers. All sibling workflows sharing the same app_id ' +
|
|
171
173
|
'are deployed together.',
|
|
172
174
|
inputSchema: schemas_1.deployYamlWorkflowSchema,
|
|
173
|
-
}, async (args) => {
|
|
175
|
+
}, async (args, extra) => {
|
|
174
176
|
const wf = await yamlDb.getYamlWorkflow(args.id);
|
|
175
177
|
if (!wf) {
|
|
176
178
|
return {
|
|
@@ -178,6 +180,10 @@ function registerYamlWorkflowTools(server) {
|
|
|
178
180
|
isError: true,
|
|
179
181
|
};
|
|
180
182
|
}
|
|
183
|
+
const refused = await (0, deploy_1.deployRefusal)(wf, (0, caller_auth_1.externalCaller)(extra));
|
|
184
|
+
if (refused) {
|
|
185
|
+
return { content: [{ type: 'text', text: JSON.stringify({ error: refused.error }) }], isError: true };
|
|
186
|
+
}
|
|
181
187
|
const deployVersion = wf.app_version || '1';
|
|
182
188
|
const siblings = await yamlDb.listYamlWorkflowsByAppId(wf.app_id);
|
|
183
189
|
await yamlDeployer.deployAppId(wf.app_id, deployVersion);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { LTApiAuth } from '../../types/sdk';
|
|
2
|
+
/** The `extra` argument the MCP SDK passes to a tool handler. */
|
|
3
|
+
export interface ToolCallExtra {
|
|
4
|
+
authInfo?: unknown;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* The lt-system bot as an api principal. The escalation RBAC helpers query a
|
|
8
|
+
* uuid column, so the bot's real UUID is resolved once and cached rather than
|
|
9
|
+
* passing its external_id. The bot is a superadmin.
|
|
10
|
+
*/
|
|
11
|
+
export declare function systemAuth(): Promise<LTApiAuth>;
|
|
12
|
+
/**
|
|
13
|
+
* The authenticated caller when the call arrived at `/mcp`. The SDK forwards
|
|
14
|
+
* `req.auth` as `authInfo`; internal dispatch passes no `extra`.
|
|
15
|
+
*/
|
|
16
|
+
export declare function externalCaller(extra?: ToolCallExtra): LTApiAuth | undefined;
|
|
17
|
+
/** The external caller, or the lt-system principal for internal calls. */
|
|
18
|
+
export declare function callerAuth(extra?: ToolCallExtra): Promise<LTApiAuth>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.systemAuth = systemAuth;
|
|
4
|
+
exports.externalCaller = externalCaller;
|
|
5
|
+
exports.callerAuth = callerAuth;
|
|
6
|
+
const iam_1 = require("../../services/iam");
|
|
7
|
+
let systemPrincipalId = null;
|
|
8
|
+
/**
|
|
9
|
+
* The lt-system bot as an api principal. The escalation RBAC helpers query a
|
|
10
|
+
* uuid column, so the bot's real UUID is resolved once and cached rather than
|
|
11
|
+
* passing its external_id. The bot is a superadmin.
|
|
12
|
+
*/
|
|
13
|
+
async function systemAuth() {
|
|
14
|
+
if (!systemPrincipalId)
|
|
15
|
+
systemPrincipalId = await (0, iam_1.ensureSystemBot)();
|
|
16
|
+
return { userId: systemPrincipalId, role: 'superadmin' };
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The authenticated caller when the call arrived at `/mcp`. The SDK forwards
|
|
20
|
+
* `req.auth` as `authInfo`; internal dispatch passes no `extra`.
|
|
21
|
+
*/
|
|
22
|
+
function externalCaller(extra) {
|
|
23
|
+
const auth = extra?.authInfo;
|
|
24
|
+
return auth?.userId ? auth : undefined;
|
|
25
|
+
}
|
|
26
|
+
/** The external caller, or the lt-system principal for internal calls. */
|
|
27
|
+
async function callerAuth(extra) {
|
|
28
|
+
return externalCaller(extra) ?? systemAuth();
|
|
29
|
+
}
|
|
@@ -37,6 +37,7 @@ exports.createClaudeCodeServer = createClaudeCodeServer;
|
|
|
37
37
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
38
38
|
const zod_1 = require("zod");
|
|
39
39
|
const logger_1 = require("../../lib/logger");
|
|
40
|
+
const registered_tools_1 = require("../../services/mcp/registered-tools");
|
|
40
41
|
const claudeCode = __importStar(require("../activities/claude-code"));
|
|
41
42
|
// ── Schemas ──────────────────────────────────────────────────────────────────
|
|
42
43
|
const executeTaskSchema = zod_1.z.object({
|
|
@@ -105,6 +106,6 @@ async function createClaudeCodeServer(options) {
|
|
|
105
106
|
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
106
107
|
};
|
|
107
108
|
});
|
|
108
|
-
logger_1.loggerRegistry.info(`[lt-mcp:claude-code] ${name} ready (
|
|
109
|
+
logger_1.loggerRegistry.info(`[lt-mcp:claude-code] ${name} ready (${(0, registered_tools_1.registeredToolCount)(instance)} tools registered)`);
|
|
109
110
|
return instance;
|
|
110
111
|
}
|
|
@@ -5,6 +5,7 @@ exports.getDbServer = getDbServer;
|
|
|
5
5
|
exports.stopDbServer = stopDbServer;
|
|
6
6
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
7
7
|
const logger_1 = require("../../../lib/logger");
|
|
8
|
+
const registered_tools_1 = require("../../../services/mcp/registered-tools");
|
|
8
9
|
const tools_1 = require("./tools");
|
|
9
10
|
let server = null;
|
|
10
11
|
/**
|
|
@@ -28,7 +29,7 @@ async function createDbServer(options) {
|
|
|
28
29
|
server = instance;
|
|
29
30
|
}
|
|
30
31
|
(0, tools_1.registerTools)(instance);
|
|
31
|
-
logger_1.loggerRegistry.info(`[lt-mcp:db-server] ${name} ready (
|
|
32
|
+
logger_1.loggerRegistry.info(`[lt-mcp:db-server] ${name} ready (${(0, registered_tools_1.registeredToolCount)(instance)} tools registered)`);
|
|
32
33
|
return instance;
|
|
33
34
|
}
|
|
34
35
|
/**
|
|
@@ -38,6 +38,7 @@ const path = __importStar(require("path"));
|
|
|
38
38
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
39
39
|
const zod_1 = require("zod");
|
|
40
40
|
const logger_1 = require("../../lib/logger");
|
|
41
|
+
const registered_tools_1 = require("../../services/mcp/registered-tools");
|
|
41
42
|
const publish_1 = require("../../lib/events/publish");
|
|
42
43
|
const fileStorage = __importStar(require("../activities/file-storage"));
|
|
43
44
|
const MIME_MAP = {
|
|
@@ -116,6 +117,6 @@ async function createFileStorageServer(options) {
|
|
|
116
117
|
}
|
|
117
118
|
return { content: [{ type: 'text', text: JSON.stringify(result) }] };
|
|
118
119
|
});
|
|
119
|
-
logger_1.loggerRegistry.info(`[lt-mcp:file-storage] ${name} ready (
|
|
120
|
+
logger_1.loggerRegistry.info(`[lt-mcp:file-storage] ${name} ready (${(0, registered_tools_1.registeredToolCount)(instance)} tools registered)`);
|
|
120
121
|
return instance;
|
|
121
122
|
}
|
|
@@ -37,6 +37,7 @@ exports.createHttpFetchServer = createHttpFetchServer;
|
|
|
37
37
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
38
38
|
const zod_1 = require("zod");
|
|
39
39
|
const logger_1 = require("../../lib/logger");
|
|
40
|
+
const registered_tools_1 = require("../../services/mcp/registered-tools");
|
|
40
41
|
const http = __importStar(require("../activities/http"));
|
|
41
42
|
const httpRequestSchema = zod_1.z.object({
|
|
42
43
|
url: zod_1.z.string().describe('URL to request'),
|
|
@@ -95,6 +96,6 @@ async function createHttpFetchServer(options) {
|
|
|
95
96
|
return { content: [{ type: 'text', text: JSON.stringify({ error: err.message }) }], isError: true };
|
|
96
97
|
}
|
|
97
98
|
});
|
|
98
|
-
logger_1.loggerRegistry.info(`[lt-mcp:http-fetch] ${name} ready (
|
|
99
|
+
logger_1.loggerRegistry.info(`[lt-mcp:http-fetch] ${name} ready (${(0, registered_tools_1.registeredToolCount)(instance)} tools registered)`);
|
|
99
100
|
return instance;
|
|
100
101
|
}
|
|
@@ -39,6 +39,8 @@ exports.stopServer = stopServer;
|
|
|
39
39
|
const crypto = __importStar(require("crypto"));
|
|
40
40
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
41
41
|
const logger_1 = require("../../lib/logger");
|
|
42
|
+
const caller_auth_1 = require("./caller-auth");
|
|
43
|
+
const registered_tools_1 = require("../../services/mcp/registered-tools");
|
|
42
44
|
const escalationService = __importStar(require("../../services/escalation"));
|
|
43
45
|
const resolver_validation_1 = require("../../services/escalation/resolver-validation");
|
|
44
46
|
const enforcement_cache_1 = require("../../services/role/enforcement-cache");
|
|
@@ -275,11 +277,13 @@ async function createHumanQueueServer(options) {
|
|
|
275
277
|
+ 'escalation and wakes the waiting workflow with the full item collection. Duplicate or undeclared '
|
|
276
278
|
+ 'item keys are rejected. The payload validates against the same form_schema a single-item resolve uses.',
|
|
277
279
|
inputSchema: human_queue_schemas_1.resolveBatchItemSchema,
|
|
278
|
-
}, async (args) => {
|
|
280
|
+
}, async (args, extra) => {
|
|
279
281
|
const rejected = await checkResolveToolPayload(args.escalation_id, args.payload);
|
|
280
282
|
if (rejected)
|
|
281
283
|
return rejected;
|
|
282
|
-
|
|
284
|
+
// The fill's actor is the caller: the person at /mcp, else lt-system.
|
|
285
|
+
const actor = (await (0, caller_auth_1.callerAuth)(extra)).userId;
|
|
286
|
+
const result = await escalationService.resolveBatchItem(args.escalation_id, args.item_key, args.payload, { source: 'mcp_server' }, undefined, undefined, actor);
|
|
283
287
|
if (result.outcome !== 'accepted' && result.outcome !== 'completed') {
|
|
284
288
|
return {
|
|
285
289
|
content: [{
|
|
@@ -427,7 +431,7 @@ async function createHumanQueueServer(options) {
|
|
|
427
431
|
}],
|
|
428
432
|
};
|
|
429
433
|
});
|
|
430
|
-
logger_1.loggerRegistry.info(`[lt-mcp:server] ${name} ready (
|
|
434
|
+
logger_1.loggerRegistry.info(`[lt-mcp:server] ${name} ready (${(0, registered_tools_1.registeredToolCount)(server)} tools registered)`);
|
|
431
435
|
return server;
|
|
432
436
|
}
|
|
433
437
|
/** Get the current MCP server instance. */
|
|
@@ -37,7 +37,10 @@ exports.createOAuthServer = createOAuthServer;
|
|
|
37
37
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
38
38
|
const zod_1 = require("zod");
|
|
39
39
|
const logger_1 = require("../../lib/logger");
|
|
40
|
+
const registered_tools_1 = require("../../services/mcp/registered-tools");
|
|
40
41
|
const oauth = __importStar(require("../activities/oauth"));
|
|
42
|
+
const capabilities_1 = require("../../modules/capabilities");
|
|
43
|
+
const caller_auth_1 = require("./caller-auth");
|
|
41
44
|
const getAccessTokenSchema = zod_1.z.object({
|
|
42
45
|
provider: zod_1.z.string().describe('OAuth provider name (google, github, microsoft, anthropic, etc.)'),
|
|
43
46
|
user_id: zod_1.z.string().describe('User ID to get token for'),
|
|
@@ -51,6 +54,21 @@ const revokeConnectionSchema = zod_1.z.object({
|
|
|
51
54
|
user_id: zod_1.z.string().describe('User ID to revoke connection for'),
|
|
52
55
|
label: zod_1.z.string().optional().describe('Credential label to revoke (default: "default")'),
|
|
53
56
|
});
|
|
57
|
+
/**
|
|
58
|
+
* A `/mcp` caller may use their own connections; another user's need
|
|
59
|
+
* superadmin. Internal calls from workflows are unrestricted.
|
|
60
|
+
*/
|
|
61
|
+
async function refuseOtherUser(userId, extra) {
|
|
62
|
+
const caller = (0, caller_auth_1.externalCaller)(extra);
|
|
63
|
+
if (!caller || caller.userId === userId)
|
|
64
|
+
return null;
|
|
65
|
+
if ((await (0, capabilities_1.resolveCapabilities)(caller)).superadmin)
|
|
66
|
+
return null;
|
|
67
|
+
return {
|
|
68
|
+
isError: true,
|
|
69
|
+
content: [{ type: 'text', text: JSON.stringify({ error: 'You can only use your own OAuth connections' }) }],
|
|
70
|
+
};
|
|
71
|
+
}
|
|
54
72
|
/**
|
|
55
73
|
* Create an OAuth MCP server.
|
|
56
74
|
*
|
|
@@ -69,7 +87,10 @@ async function createOAuthServer() {
|
|
|
69
87
|
'authenticated API request — do not cache or reuse across workflow steps. ' +
|
|
70
88
|
'Use the label parameter to select a specific credential when multiple exist.',
|
|
71
89
|
inputSchema: getAccessTokenSchema,
|
|
72
|
-
}, async (args) => {
|
|
90
|
+
}, async (args, extra) => {
|
|
91
|
+
const refused = await refuseOtherUser(args.user_id, extra);
|
|
92
|
+
if (refused)
|
|
93
|
+
return refused;
|
|
73
94
|
const result = await oauth.getAccessToken(args);
|
|
74
95
|
return {
|
|
75
96
|
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
@@ -79,7 +100,10 @@ async function createOAuthServer() {
|
|
|
79
100
|
title: 'List OAuth Connections',
|
|
80
101
|
description: 'List all OAuth providers connected for a user. Returns provider, label, and credential type for each connection.',
|
|
81
102
|
inputSchema: listConnectionsSchema,
|
|
82
|
-
}, async (args) => {
|
|
103
|
+
}, async (args, extra) => {
|
|
104
|
+
const refused = await refuseOtherUser(args.user_id, extra);
|
|
105
|
+
if (refused)
|
|
106
|
+
return refused;
|
|
83
107
|
const result = await oauth.listConnections(args);
|
|
84
108
|
return {
|
|
85
109
|
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
@@ -89,12 +113,15 @@ async function createOAuthServer() {
|
|
|
89
113
|
title: 'Revoke OAuth Connection',
|
|
90
114
|
description: 'Disconnect an OAuth provider for a user, removing stored tokens. Use label to target a specific credential.',
|
|
91
115
|
inputSchema: revokeConnectionSchema,
|
|
92
|
-
}, async (args) => {
|
|
116
|
+
}, async (args, extra) => {
|
|
117
|
+
const refused = await refuseOtherUser(args.user_id, extra);
|
|
118
|
+
if (refused)
|
|
119
|
+
return refused;
|
|
93
120
|
const result = await oauth.revokeConnection(args);
|
|
94
121
|
return {
|
|
95
122
|
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
96
123
|
};
|
|
97
124
|
});
|
|
98
|
-
logger_1.loggerRegistry.info(
|
|
125
|
+
logger_1.loggerRegistry.info(`[lt-mcp:oauth] long-tail-oauth ready (${(0, registered_tools_1.registeredToolCount)(instance)} tools registered)`);
|
|
99
126
|
return instance;
|
|
100
127
|
}
|
|
@@ -37,6 +37,7 @@ exports.createSchemaExchangeServer = createSchemaExchangeServer;
|
|
|
37
37
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
38
38
|
const zod_1 = require("zod");
|
|
39
39
|
const logger_1 = require("../../lib/logger");
|
|
40
|
+
const registered_tools_1 = require("../../services/mcp/registered-tools");
|
|
40
41
|
const schemaExchange = __importStar(require("../activities/schema-exchange"));
|
|
41
42
|
const exchangeSchema = zod_1.z.object({
|
|
42
43
|
endpoint: zod_1.z.string().optional().describe('Service endpoint URL. Supports template variables resolved by the caller (e.g. /Patient/{id}).'),
|
|
@@ -88,6 +89,6 @@ async function createSchemaExchangeServer(options) {
|
|
|
88
89
|
const result = schemaExchange.validateSchema(args.data, args.schema);
|
|
89
90
|
return { content: [{ type: 'text', text: JSON.stringify(result) }] };
|
|
90
91
|
});
|
|
91
|
-
logger_1.loggerRegistry.info(`[lt-mcp:schema-exchange] ${name} ready (
|
|
92
|
+
logger_1.loggerRegistry.info(`[lt-mcp:schema-exchange] ${name} ready (${(0, registered_tools_1.registeredToolCount)(instance)} tools registered)`);
|
|
92
93
|
return instance;
|
|
93
94
|
}
|