@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
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getRelatedAggregates = getRelatedAggregates;
|
|
37
|
+
exports.getRelatedRows = getRelatedRows;
|
|
38
|
+
const escalationService = __importStar(require("../../services/escalation"));
|
|
39
|
+
const roleService = __importStar(require("../../services/role"));
|
|
40
|
+
const uuid_1 = require("../../lib/uuid");
|
|
41
|
+
const list_schema_1 = require("../../shared/list-schema");
|
|
42
|
+
const segment_1 = require("../../shared/roles/segment");
|
|
43
|
+
const helpers_1 = require("./helpers");
|
|
44
|
+
const DEFAULT_STATUS = 'pending';
|
|
45
|
+
const NOT_FOUND = 'Role list schema not found';
|
|
46
|
+
/** Gate the host role, then read its declaration from the stored list schema. */
|
|
47
|
+
async function loadDeclaration(role, version, auth) {
|
|
48
|
+
if (typeof role !== 'string' || !role)
|
|
49
|
+
return { error: { status: 400, error: 'role is required' } };
|
|
50
|
+
if (version !== undefined && (!Number.isInteger(version) || version < 1)) {
|
|
51
|
+
return { error: { status: 400, error: 'version must be a positive integer' } };
|
|
52
|
+
}
|
|
53
|
+
const readScope = await (0, helpers_1.getEscalationReadScope)(auth.userId);
|
|
54
|
+
const readable = readScope.global || readScope.allRoles.includes(role) || readScope.selfRoles.includes(role);
|
|
55
|
+
if (!readable)
|
|
56
|
+
return { error: { status: 404, error: NOT_FOUND } };
|
|
57
|
+
const stored = await roleService.getRoleListSchema(role, version);
|
|
58
|
+
if (!stored)
|
|
59
|
+
return { error: { status: 404, error: NOT_FOUND } };
|
|
60
|
+
let relations;
|
|
61
|
+
try {
|
|
62
|
+
relations = (0, list_schema_1.readListSchemaRelations)(stored.list_schema);
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
return { error: { status: 422, error: `list schema for ${role}: ${err.message}` } };
|
|
66
|
+
}
|
|
67
|
+
const scope = {
|
|
68
|
+
global: readScope.global,
|
|
69
|
+
visibleRoles: readScope.global ? undefined : readScope.allRoles,
|
|
70
|
+
selfRoles: readScope.global ? undefined : readScope.selfRoles,
|
|
71
|
+
meUserId: auth.userId,
|
|
72
|
+
};
|
|
73
|
+
return { scope, readScope, relations, version: stored.version };
|
|
74
|
+
}
|
|
75
|
+
async function resolveQueryRoles(query, readScope) {
|
|
76
|
+
const details = await roleService.listRolesWithDetails();
|
|
77
|
+
const roles = query.roles ?? (0, segment_1.segmentRoles)(details, query.segment);
|
|
78
|
+
if (!roles)
|
|
79
|
+
return `segment "${query.segment}" names no Pace Board sequence`;
|
|
80
|
+
const titles = new Map(details.map((d) => [d.role, d.title]));
|
|
81
|
+
const roleLabels = {};
|
|
82
|
+
for (const r of roles)
|
|
83
|
+
roleLabels[r] = titles.get(r) || r;
|
|
84
|
+
const restricted = readScope.global ? [] : roles.filter((r) => !readScope.allRoles.includes(r));
|
|
85
|
+
return { roles, roleLabels, restricted };
|
|
86
|
+
}
|
|
87
|
+
/** The split paths the declared columns ask of one set ('' when unsplit). */
|
|
88
|
+
function splitsFor(relations, set) {
|
|
89
|
+
const splits = new Set(relations.columns.filter((c) => c.related === set).map((c) => c.splitBy ?? ''));
|
|
90
|
+
if (!splits.size)
|
|
91
|
+
splits.add('');
|
|
92
|
+
return [...splits];
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Aggregate every related set the role's list schema declares, for one page
|
|
96
|
+
* of host rows. One statement per (set, split) pair, whatever the page size.
|
|
97
|
+
*/
|
|
98
|
+
async function getRelatedAggregates(input, auth) {
|
|
99
|
+
try {
|
|
100
|
+
if (!Array.isArray(input.ids))
|
|
101
|
+
return { status: 400, error: 'ids must be an array of escalation ids' };
|
|
102
|
+
if (input.ids.length > list_schema_1.RELATED_LIMITS.MAX_HOSTS) {
|
|
103
|
+
return { status: 400, error: `ids holds at most ${list_schema_1.RELATED_LIMITS.MAX_HOSTS} rows` };
|
|
104
|
+
}
|
|
105
|
+
const loaded = await loadDeclaration(input.role, input.version, auth);
|
|
106
|
+
if ('error' in loaded)
|
|
107
|
+
return loaded.error;
|
|
108
|
+
const { scope, readScope, relations, version } = loaded;
|
|
109
|
+
const data = { version, sets: {} };
|
|
110
|
+
const names = Object.keys(relations.sets);
|
|
111
|
+
const ids = [...new Set(input.ids.filter(uuid_1.isUuid))];
|
|
112
|
+
if (!names.length || !ids.length)
|
|
113
|
+
return { status: 200, data };
|
|
114
|
+
const hosts = await escalationService.readRelatedHosts({ ids, role: input.role, scope });
|
|
115
|
+
const hostIds = hosts.map((h) => h.id);
|
|
116
|
+
for (const name of names) {
|
|
117
|
+
const decl = relations.sets[name];
|
|
118
|
+
const result = { source: decl.source, aggregates: {} };
|
|
119
|
+
if (decl.source === list_schema_1.RELATED_SOURCES.ITEMS) {
|
|
120
|
+
const roles = new Set();
|
|
121
|
+
for (const splitBy of splitsFor(relations, name)) {
|
|
122
|
+
const read = await escalationService.aggregateRelatedItems({
|
|
123
|
+
hostIds, scope, splitBy: splitBy || undefined,
|
|
124
|
+
});
|
|
125
|
+
result.aggregates[splitBy] = read.aggregates;
|
|
126
|
+
read.roles.forEach((r) => roles.add(r));
|
|
127
|
+
}
|
|
128
|
+
if (roles.size)
|
|
129
|
+
result.roles = [...roles].sort();
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
const resolved = await resolveQueryRoles(decl.query, readScope);
|
|
133
|
+
if (typeof resolved === 'string')
|
|
134
|
+
return { status: 400, error: `x-lt-related.${name}: ${resolved}` };
|
|
135
|
+
Object.assign(result, resolved);
|
|
136
|
+
const matched = [];
|
|
137
|
+
const unresolved = [];
|
|
138
|
+
for (const host of hosts) {
|
|
139
|
+
const match = (0, list_schema_1.resolveRelatedFacets)(decl.query.facets ?? {}, (0, list_schema_1.rowTemplateContext)(host), decl.query.narrow);
|
|
140
|
+
if (match)
|
|
141
|
+
matched.push({ hostId: host.id, match });
|
|
142
|
+
else
|
|
143
|
+
unresolved.push(host.id);
|
|
144
|
+
}
|
|
145
|
+
for (const splitBy of splitsFor(relations, name)) {
|
|
146
|
+
const agg = await escalationService.aggregateRelatedQuery({
|
|
147
|
+
hosts: matched, roles: resolved.roles, status: decl.query.status ?? DEFAULT_STATUS, scope,
|
|
148
|
+
splitBy: splitBy || undefined,
|
|
149
|
+
});
|
|
150
|
+
for (const id of unresolved)
|
|
151
|
+
agg[id] = { count: 0, unresolved: true };
|
|
152
|
+
result.aggregates[splitBy] = agg;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
data.sets[name] = result;
|
|
156
|
+
}
|
|
157
|
+
return { status: 200, data };
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
return { status: 500, error: err.message };
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/** One host's rows in one related set, for a row detail section. */
|
|
164
|
+
async function getRelatedRows(input, auth) {
|
|
165
|
+
try {
|
|
166
|
+
if (!(0, uuid_1.isUuid)(input.id))
|
|
167
|
+
return { status: 400, error: 'id must be an escalation id' };
|
|
168
|
+
if (input.limit !== undefined && (!Number.isInteger(input.limit) || input.limit < 1 || input.limit > list_schema_1.RELATED_LIMITS.ROWS_MAX)) {
|
|
169
|
+
return { status: 400, error: `limit must be 1..${list_schema_1.RELATED_LIMITS.ROWS_MAX}` };
|
|
170
|
+
}
|
|
171
|
+
const loaded = await loadDeclaration(input.role, input.version, auth);
|
|
172
|
+
if ('error' in loaded)
|
|
173
|
+
return loaded.error;
|
|
174
|
+
const { scope, readScope, relations } = loaded;
|
|
175
|
+
const decl = relations.sets[input.set];
|
|
176
|
+
if (!decl)
|
|
177
|
+
return { status: 404, error: `x-lt-related declares no set "${input.set}"` };
|
|
178
|
+
const [host] = await escalationService.readRelatedHosts({ ids: [input.id], role: input.role, scope });
|
|
179
|
+
if (!host)
|
|
180
|
+
return { status: 404, error: 'Escalation not found' };
|
|
181
|
+
const limit = input.limit ?? list_schema_1.RELATED_LIMITS.ROWS_DEFAULT;
|
|
182
|
+
if (decl.source === list_schema_1.RELATED_SOURCES.ITEMS) {
|
|
183
|
+
const { rows, total } = await escalationService.listRelatedItems({ hostId: input.id, scope, limit });
|
|
184
|
+
const data = { source: decl.source, rows, total };
|
|
185
|
+
return { status: 200, data };
|
|
186
|
+
}
|
|
187
|
+
const resolved = await resolveQueryRoles(decl.query, readScope);
|
|
188
|
+
if (typeof resolved === 'string')
|
|
189
|
+
return { status: 400, error: `x-lt-related.${input.set}: ${resolved}` };
|
|
190
|
+
const match = (0, list_schema_1.resolveRelatedFacets)(decl.query.facets ?? {}, (0, list_schema_1.rowTemplateContext)(host), decl.query.narrow);
|
|
191
|
+
const { rows, total } = match
|
|
192
|
+
? await escalationService.listRelatedQueryRows({
|
|
193
|
+
hosts: [{ hostId: input.id, match }], roles: resolved.roles,
|
|
194
|
+
status: decl.query.status ?? DEFAULT_STATUS, scope, limit,
|
|
195
|
+
})
|
|
196
|
+
: { rows: [], total: 0 };
|
|
197
|
+
const data = {
|
|
198
|
+
source: decl.source, rows, total, restricted: resolved.restricted, roleLabels: resolved.roleLabels,
|
|
199
|
+
};
|
|
200
|
+
return { status: 200, data };
|
|
201
|
+
}
|
|
202
|
+
catch (err) {
|
|
203
|
+
return { status: 500, error: err.message };
|
|
204
|
+
}
|
|
205
|
+
}
|
|
@@ -12,14 +12,15 @@ export declare function getEscalation(input: {
|
|
|
12
12
|
id: string;
|
|
13
13
|
}, auth: LTApiAuth): Promise<LTApiResult>;
|
|
14
14
|
/**
|
|
15
|
-
* List
|
|
15
|
+
* List the escalations for a given workflow ID. With `auth`, only the rows
|
|
16
|
+
* that caller may read; without it (in-process callers), every row.
|
|
16
17
|
*
|
|
17
18
|
* @param input.workflowId — HotMesh workflow ID
|
|
18
19
|
* @returns `{ status: 200, data: { escalations } }`
|
|
19
20
|
*/
|
|
20
21
|
export declare function getEscalationsByWorkflowId(input: {
|
|
21
22
|
workflowId: string;
|
|
22
|
-
}): Promise<LTApiResult>;
|
|
23
|
+
}, auth?: LTApiAuth): Promise<LTApiResult>;
|
|
23
24
|
/**
|
|
24
25
|
* Route a pending escalation to a different role.
|
|
25
26
|
*
|
|
@@ -69,14 +69,19 @@ async function getEscalation(input, auth) {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
|
-
* List
|
|
72
|
+
* List the escalations for a given workflow ID. With `auth`, only the rows
|
|
73
|
+
* that caller may read; without it (in-process callers), every row.
|
|
73
74
|
*
|
|
74
75
|
* @param input.workflowId — HotMesh workflow ID
|
|
75
76
|
* @returns `{ status: 200, data: { escalations } }`
|
|
76
77
|
*/
|
|
77
|
-
async function getEscalationsByWorkflowId(input) {
|
|
78
|
+
async function getEscalationsByWorkflowId(input, auth) {
|
|
78
79
|
try {
|
|
79
|
-
const
|
|
80
|
+
const all = await escalationService.getEscalationsByWorkflowId(input.workflowId);
|
|
81
|
+
if (!auth?.userId)
|
|
82
|
+
return { status: 200, data: { escalations: all } };
|
|
83
|
+
const scope = await (0, helpers_1.getEscalationReadScope)(auth.userId);
|
|
84
|
+
const escalations = all.filter((e) => (0, helpers_1.scopeAdmits)(scope, auth.userId, e));
|
|
80
85
|
return { status: 200, data: { escalations } };
|
|
81
86
|
}
|
|
82
87
|
catch (err) {
|
package/build/api/mcp/tools.d.ts
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
|
+
import type { CapabilityGate } from '../../types';
|
|
1
2
|
import type { LTApiResult, LTApiAuth } from '../../types/sdk';
|
|
3
|
+
/**
|
|
4
|
+
* The built-in server a server id or name refers to: the one a tool call would
|
|
5
|
+
* dispatch to, else a shipped factory whose name matches. Null for an external
|
|
6
|
+
* server. Matching both keeps the gate in force wherever the code runs.
|
|
7
|
+
*/
|
|
8
|
+
export declare function builtinServerFor(serverIdOrName: string): Promise<string | null>;
|
|
9
|
+
/**
|
|
10
|
+
* The capability a built-in tool's manifest gates it at, from the manifest the
|
|
11
|
+
* server was registered with (Long Tail's or the host's). A tool without a gate needs builder.
|
|
12
|
+
*/
|
|
13
|
+
export declare function builtinToolGate(serverName: string, toolName: string): CapabilityGate;
|
|
2
14
|
/**
|
|
3
15
|
* List all tools exposed by a connected MCP server.
|
|
4
16
|
*
|
package/build/api/mcp/tools.js
CHANGED
|
@@ -1,8 +1,92 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.builtinServerFor = builtinServerFor;
|
|
37
|
+
exports.builtinToolGate = builtinToolGate;
|
|
3
38
|
exports.listMcpServerTools = listMcpServerTools;
|
|
4
39
|
exports.callMcpTool = callMcpTool;
|
|
5
40
|
const mcp_1 = require("../../services/mcp");
|
|
41
|
+
const mcpClient = __importStar(require("../../services/mcp/client"));
|
|
42
|
+
const userService = __importStar(require("../../services/user"));
|
|
43
|
+
const capabilities_1 = require("../../modules/capabilities");
|
|
44
|
+
const workflow_invocation_1 = require("../../services/workflow-invocation");
|
|
45
|
+
const system_1 = require("../../system");
|
|
46
|
+
const uuid_1 = require("../../lib/uuid");
|
|
47
|
+
const ROLE_TYPE_ORDER = ['superadmin', 'admin', 'member'];
|
|
48
|
+
const normalizeName = (name) => name.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
|
|
49
|
+
/**
|
|
50
|
+
* The built-in server a server id or name refers to: the one a tool call would
|
|
51
|
+
* dispatch to, else a shipped factory whose name matches. Null for an external
|
|
52
|
+
* server. Matching both keeps the gate in force wherever the code runs.
|
|
53
|
+
*/
|
|
54
|
+
async function builtinServerFor(serverIdOrName) {
|
|
55
|
+
const registered = await mcpClient.resolveBuiltinServerName(serverIdOrName);
|
|
56
|
+
if (registered)
|
|
57
|
+
return registered;
|
|
58
|
+
if (system_1.builtinMcpServerFactories[serverIdOrName])
|
|
59
|
+
return serverIdOrName;
|
|
60
|
+
const wanted = normalizeName(serverIdOrName);
|
|
61
|
+
if (!wanted)
|
|
62
|
+
return null;
|
|
63
|
+
return Object.keys(system_1.builtinMcpServerFactories).find((name) => {
|
|
64
|
+
const have = normalizeName(name);
|
|
65
|
+
return have.includes(wanted) || wanted.includes(have);
|
|
66
|
+
}) ?? null;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The capability a built-in tool's manifest gates it at, from the manifest the
|
|
70
|
+
* server was registered with (Long Tail's or the host's). A tool without a gate needs builder.
|
|
71
|
+
*/
|
|
72
|
+
function builtinToolGate(serverName, toolName) {
|
|
73
|
+
const manifest = mcpClient.getBuiltinToolManifest(serverName)
|
|
74
|
+
?? system_1.builtinMcpServerFactories[serverName]?.config?.toolManifest;
|
|
75
|
+
return manifest?.find((t) => t.name === toolName)?.gate ?? 'builder';
|
|
76
|
+
}
|
|
77
|
+
/** The principal a tool call acts as: the caller, or an execute_as target the caller outranks. */
|
|
78
|
+
async function actingPrincipal(auth, executeAs) {
|
|
79
|
+
if (!executeAs)
|
|
80
|
+
return { userId: auth.userId, role: auth.role };
|
|
81
|
+
await (0, workflow_invocation_1.assertMayActAs)(auth.userId, executeAs);
|
|
82
|
+
const target = (0, uuid_1.isUuid)(executeAs)
|
|
83
|
+
? await userService.getUser(executeAs)
|
|
84
|
+
: await userService.getUserByExternalId(executeAs);
|
|
85
|
+
if (!target)
|
|
86
|
+
throw new workflow_invocation_1.InvocationError(`execute_as principal "${executeAs}" not found`, 404);
|
|
87
|
+
const role = ROLE_TYPE_ORDER.find((type) => target.roles.some((r) => r.type === type));
|
|
88
|
+
return { userId: target.id, role };
|
|
89
|
+
}
|
|
6
90
|
/**
|
|
7
91
|
* List all tools exposed by a connected MCP server.
|
|
8
92
|
*
|
|
@@ -41,22 +125,42 @@ async function listMcpServerTools(input) {
|
|
|
41
125
|
*/
|
|
42
126
|
async function callMcpTool(input, auth) {
|
|
43
127
|
try {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
const effectiveUserId = input.execute_as || auth?.userId;
|
|
49
|
-
const authContext = effectiveUserId ? { userId: effectiveUserId } : undefined;
|
|
128
|
+
if (!auth?.userId)
|
|
129
|
+
return { status: 401, error: 'Authentication required' };
|
|
130
|
+
const actor = await actingPrincipal(auth, input.execute_as);
|
|
50
131
|
// Inject user_id into arguments so builtin tools can resolve
|
|
51
132
|
// the calling user's credentials (OAuth tokens, etc.)
|
|
52
133
|
const args = { ...(input.arguments || {}) };
|
|
53
|
-
if (
|
|
54
|
-
args.user_id =
|
|
134
|
+
if (!args.user_id)
|
|
135
|
+
args.user_id = actor.userId;
|
|
136
|
+
// A built-in tool runs in this process. It is gated as /mcp gates it, by
|
|
137
|
+
// the tool's manifest capability for the acting principal (live, never a
|
|
138
|
+
// role claim), and runs as that principal rather than as lt-system.
|
|
139
|
+
const builtin = await builtinServerFor(input.id);
|
|
140
|
+
if (builtin) {
|
|
141
|
+
const permitted = await (0, capabilities_1.capabilityAccess)({ userId: actor.userId })(builtinToolGate(builtin, input.toolName));
|
|
142
|
+
if (!permitted)
|
|
143
|
+
return { status: 403, error: `Forbidden: ${input.toolName} is not available to you` };
|
|
144
|
+
const result = await mcpClient.callBuiltinToolAs(builtin, input.toolName, args, actor);
|
|
145
|
+
return { status: 200, data: { result } };
|
|
146
|
+
}
|
|
147
|
+
// An external server's tools run on its stored credential (headers, env),
|
|
148
|
+
// which carries that server's authority: a builder's to use.
|
|
149
|
+
if (!(await (0, capabilities_1.capabilityAccess)({ userId: actor.userId })('builder'))) {
|
|
150
|
+
return { status: 403, error: `Forbidden: tools on an external MCP server need builder access` };
|
|
151
|
+
}
|
|
152
|
+
const adapter = mcp_1.mcpRegistry.current;
|
|
153
|
+
if (!adapter) {
|
|
154
|
+
return { status: 400, error: 'MCP adapter not registered' };
|
|
55
155
|
}
|
|
56
|
-
const result = await adapter.callTool(input.id, input.toolName, args,
|
|
156
|
+
const result = await adapter.callTool(input.id, input.toolName, args, { userId: actor.userId });
|
|
57
157
|
return { status: 200, data: { result } };
|
|
58
158
|
}
|
|
59
159
|
catch (err) {
|
|
160
|
+
if (err instanceof workflow_invocation_1.InvocationError)
|
|
161
|
+
return { status: err.statusCode, error: err.message };
|
|
162
|
+
if (err.name === 'ToolNotFoundError')
|
|
163
|
+
return { status: 404, error: err.message };
|
|
60
164
|
if (err.name === 'MissingCredentialError') {
|
|
61
165
|
return {
|
|
62
166
|
status: 422,
|
package/build/api/roles.js
CHANGED
|
@@ -51,6 +51,7 @@ const roleService = __importStar(require("../services/role"));
|
|
|
51
51
|
const types_1 = require("../services/role/types");
|
|
52
52
|
const badge_grant_1 = require("../services/role/badge-grant");
|
|
53
53
|
const facet_sql_1 = require("../services/escalation/facet-sql");
|
|
54
|
+
const list_schema_1 = require("../shared/list-schema");
|
|
54
55
|
/**
|
|
55
56
|
* List all distinct role names in the system.
|
|
56
57
|
*
|
|
@@ -295,6 +296,9 @@ async function updateRole(input) {
|
|
|
295
296
|
const grantError = (0, badge_grant_1.badgeGrantError)(input.properties?.[types_1.ROLE_PROPERTY_KEYS.BADGE_GRANT]);
|
|
296
297
|
if (grantError)
|
|
297
298
|
return { status: 400, error: grantError };
|
|
299
|
+
const listSchemaError = input.list_schema != null ? (0, list_schema_1.listSchemaRelationsError)(input.list_schema) : null;
|
|
300
|
+
if (listSchemaError)
|
|
301
|
+
return { status: 400, error: `list_schema: ${listSchemaError}` };
|
|
298
302
|
if (input.portals != null && !isPortalList(input.portals)) {
|
|
299
303
|
return {
|
|
300
304
|
status: 400,
|
|
@@ -39,6 +39,7 @@ const escalationService = __importStar(require("../../services/escalation"));
|
|
|
39
39
|
const types_1 = require("../../types");
|
|
40
40
|
const identity_1 = require("./identity");
|
|
41
41
|
const grant_1 = require("./grant");
|
|
42
|
+
const helpers_1 = require("../escalations/helpers");
|
|
42
43
|
const context_1 = require("./context");
|
|
43
44
|
const locate_1 = require("./locate");
|
|
44
45
|
const verbs_1 = require("./verbs");
|
|
@@ -84,9 +85,21 @@ async function executeScanChoice(input, auth) {
|
|
|
84
85
|
effectiveAuth = peeked.auth;
|
|
85
86
|
grant = peeked.grant;
|
|
86
87
|
}
|
|
87
|
-
// 3.
|
|
88
|
-
//
|
|
89
|
-
|
|
88
|
+
// 3. With no live grant, a choice that needs a badge parks for the next
|
|
89
|
+
// badge scan before any row is read, whatever the station may read.
|
|
90
|
+
if (!grant && choice.requireActingIdentity
|
|
91
|
+
&& !(await (0, identity_1.actingIdentitySatisfied)(step, { stationAuth: auth, acting: false }))) {
|
|
92
|
+
return stampPointer((0, context_1.notPrimed)({ rule }), rule, input);
|
|
93
|
+
}
|
|
94
|
+
// 4. The row anchors the target: the scheme's facet on the escalation the
|
|
95
|
+
// screen presented. A missing binding is loud misconfiguration. A row the
|
|
96
|
+
// actor may not read answers as one that left the presented state, and
|
|
97
|
+
// discloses nothing of the row.
|
|
98
|
+
const loaded = await escalationService.getEscalation(input.escalationId);
|
|
99
|
+
if (loaded && (await (0, helpers_1.assertReadAccess)(effectiveAuth.userId, loaded))) {
|
|
100
|
+
return stampPointer((0, context_1.conflict)('the item is no longer in the presented state'), rule, input);
|
|
101
|
+
}
|
|
102
|
+
const row = loaded;
|
|
90
103
|
const target = row?.metadata?.[scheme.target_facet];
|
|
91
104
|
if (!row || typeof target !== 'string' || !target) {
|
|
92
105
|
return {
|
|
@@ -104,11 +117,11 @@ async function executeScanChoice(input, auth) {
|
|
|
104
117
|
acting: !!grant,
|
|
105
118
|
grant,
|
|
106
119
|
};
|
|
107
|
-
//
|
|
120
|
+
// 5. The identity gate, per the choice.
|
|
108
121
|
if (choice.requireActingIdentity && !(await (0, identity_1.actingIdentitySatisfied)(step, ctx))) {
|
|
109
122
|
return decorate((0, context_1.notPrimed)(ctx), ctx, input);
|
|
110
123
|
}
|
|
111
|
-
//
|
|
124
|
+
// 6. The row must still match the step's query — the reality the screen
|
|
112
125
|
// showed. A row that moved on (resolved, claimed away, re-routed) is the
|
|
113
126
|
// same double-actor race a second scan loses.
|
|
114
127
|
const located = await (0, locate_1.locateForStep)(step, ctx, 2);
|
|
@@ -116,10 +129,10 @@ async function executeScanChoice(input, auth) {
|
|
|
116
129
|
if (!presented) {
|
|
117
130
|
return decorate((0, context_1.conflict)('the item is no longer in the presented state'), ctx, input);
|
|
118
131
|
}
|
|
119
|
-
//
|
|
132
|
+
// 7. Dispatch through the same atomic executors a direct scan uses.
|
|
120
133
|
const synthesized = { query: step.query, verb: choice.verb, params: choice.params };
|
|
121
134
|
const result = decorate(await (0, verbs_1.dispatchChoiceVerb)(synthesized, ctx, presented), ctx, input);
|
|
122
|
-
//
|
|
135
|
+
// 8. Settle the badge: refund a spend whose act did not land
|
|
123
136
|
const acting = await (0, grant_1.settleGrant)(ctx, result);
|
|
124
137
|
if (acting && result.data)
|
|
125
138
|
result.data = { ...result.data, acting };
|
|
@@ -129,6 +142,17 @@ async function executeScanChoice(input, auth) {
|
|
|
129
142
|
return { status: 500, error: err.message };
|
|
130
143
|
}
|
|
131
144
|
}
|
|
145
|
+
/** Stamp the rule and pointer onto an outcome decided before the row was read. */
|
|
146
|
+
function stampPointer(result, rule, input) {
|
|
147
|
+
if (result.data && typeof result.data === 'object' && 'outcome' in result.data) {
|
|
148
|
+
result.data = {
|
|
149
|
+
...result.data,
|
|
150
|
+
rule: { schemeVersion: rule.scheme_version, category: rule.category, name: rule.name },
|
|
151
|
+
stepIndex: input.stepIndex,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
132
156
|
/** Stamp the rule + pointer identity onto the outcome, mirroring execute. */
|
|
133
157
|
function decorate(result, ctx, input) {
|
|
134
158
|
if (result.data && typeof result.data === 'object' && 'outcome' in result.data) {
|
|
@@ -45,7 +45,11 @@ function renderFacts(step, ctx, row) {
|
|
|
45
45
|
if (!step.facts)
|
|
46
46
|
return undefined;
|
|
47
47
|
const tpl = { ...(0, context_1.templateContext)(ctx), item: row.metadata ?? {} };
|
|
48
|
-
return step.facts.map((fact) => ({
|
|
48
|
+
return step.facts.map((fact) => ({
|
|
49
|
+
label: fact.label,
|
|
50
|
+
value: scanCodeService.renderScanCopy(fact.value.trim(), tpl),
|
|
51
|
+
...(fact.format ? { format: fact.format } : {}),
|
|
52
|
+
}));
|
|
49
53
|
}
|
|
50
54
|
// ── The info-choice outcome — locate → present reality + labeled choices ───
|
|
51
55
|
//
|
package/build/api/settings.d.ts
CHANGED
|
@@ -8,6 +8,6 @@ import type { LTApiResult } from '../types/sdk';
|
|
|
8
8
|
* environment block (long-tail + HotMesh versions, Node env/version).
|
|
9
9
|
*
|
|
10
10
|
* @param req — the incoming HTTP request, used to derive NATS WS URL from headers when proxying
|
|
11
|
-
* @returns `{ status: 200, data: { telemetry, escalation, events, auth, ai, features, environment } }`
|
|
11
|
+
* @returns `{ status: 200, data: { telemetry, escalation, events, auth, ai, features, search, branding, display, environment } }`
|
|
12
12
|
*/
|
|
13
13
|
export declare function getSettings(req?: IncomingMessage): Promise<LTApiResult>;
|
package/build/api/settings.js
CHANGED
|
@@ -10,6 +10,8 @@ const config_1 = require("../modules/config");
|
|
|
10
10
|
const features_1 = require("../modules/features");
|
|
11
11
|
const search_1 = require("../modules/search");
|
|
12
12
|
const branding_1 = require("../modules/branding");
|
|
13
|
+
const oauth_server_1 = require("../modules/oauth-server");
|
|
14
|
+
const display_1 = require("../modules/display");
|
|
13
15
|
const version_1 = require("../modules/version");
|
|
14
16
|
const sso_1 = require("../modules/sso");
|
|
15
17
|
const defaults_1 = require("../modules/defaults");
|
|
@@ -41,7 +43,7 @@ function resolveNatsWsUrl(adapter, req) {
|
|
|
41
43
|
* environment block (long-tail + HotMesh versions, Node env/version).
|
|
42
44
|
*
|
|
43
45
|
* @param req — the incoming HTTP request, used to derive NATS WS URL from headers when proxying
|
|
44
|
-
* @returns `{ status: 200, data: { telemetry, escalation, events, auth, ai, features, environment } }`
|
|
46
|
+
* @returns `{ status: 200, data: { telemetry, escalation, events, auth, ai, features, search, branding, display, environment } }`
|
|
45
47
|
*/
|
|
46
48
|
async function getSettings(req) {
|
|
47
49
|
try {
|
|
@@ -65,6 +67,12 @@ async function getSettings(req) {
|
|
|
65
67
|
events: {
|
|
66
68
|
transport,
|
|
67
69
|
natsWsUrl: natsAdapter ? resolveNatsWsUrl(natsAdapter, req) : null,
|
|
70
|
+
reconnect: {
|
|
71
|
+
initialDelayMs: config_1.config.NATS_RECONNECT_INITIAL_MS,
|
|
72
|
+
maxDelayMs: config_1.config.NATS_RECONNECT_MAX_MS,
|
|
73
|
+
noticeAfterMs: config_1.config.NATS_LIVE_NOTICE_AFTER_MS,
|
|
74
|
+
spreadMs: config_1.config.NATS_RECONNECT_SPREAD_MS,
|
|
75
|
+
},
|
|
68
76
|
},
|
|
69
77
|
auth: {
|
|
70
78
|
sso: (0, sso_1.isSSOEnabled)(),
|
|
@@ -72,6 +80,8 @@ async function getSettings(req) {
|
|
|
72
80
|
// Session keepalive dials for the SPA (null = no keepalive / no idle gate).
|
|
73
81
|
ssoKeepaliveSeconds: (0, sso_1.getSSOConfig)()?.keepaliveSeconds ?? null,
|
|
74
82
|
ssoKeepaliveIdleTimeoutSeconds: (0, sso_1.getSSOConfig)()?.keepaliveIdleTimeoutSeconds ?? null,
|
|
83
|
+
// The OAuth authorization server for MCP clients (Connected apps).
|
|
84
|
+
oauthServer: (0, oauth_server_1.getOAuthServerSettings)() !== null,
|
|
75
85
|
},
|
|
76
86
|
ai: {
|
|
77
87
|
enabled: (0, llm_1.hasLLMApiKey)(),
|
|
@@ -79,6 +89,7 @@ async function getSettings(req) {
|
|
|
79
89
|
features: (0, features_1.getFeatureFlags)(),
|
|
80
90
|
search: (0, search_1.getSearchConfig)(),
|
|
81
91
|
branding: (0, branding_1.getBranding)(),
|
|
92
|
+
display: (0, display_1.getDisplay)(),
|
|
82
93
|
environment: {
|
|
83
94
|
longTailVersion: version_1.LONG_TAIL_VERSION,
|
|
84
95
|
hotmeshVersion: version_1.HOTMESH_VERSION,
|
package/build/api/tasks.d.ts
CHANGED
|
@@ -47,7 +47,7 @@ export declare function listTasks(input: {
|
|
|
47
47
|
origin_id?: string;
|
|
48
48
|
limit?: number;
|
|
49
49
|
offset?: number;
|
|
50
|
-
}): Promise<LTApiResult>;
|
|
50
|
+
}, auth?: LTApiAuth): Promise<LTApiResult>;
|
|
51
51
|
/**
|
|
52
52
|
* Return aggregate process statistics.
|
|
53
53
|
*
|
|
@@ -82,7 +82,7 @@ export declare function listProcesses(input: {
|
|
|
82
82
|
*/
|
|
83
83
|
export declare function getProcess(input: {
|
|
84
84
|
originId: string;
|
|
85
|
-
}): Promise<LTApiResult>;
|
|
85
|
+
}, auth?: LTApiAuth): Promise<LTApiResult>;
|
|
86
86
|
/**
|
|
87
87
|
* Get a single task by ID.
|
|
88
88
|
*
|
|
@@ -91,4 +91,4 @@ export declare function getProcess(input: {
|
|
|
91
91
|
*/
|
|
92
92
|
export declare function getTask(input: {
|
|
93
93
|
id: string;
|
|
94
|
-
}): Promise<LTApiResult>;
|
|
94
|
+
}, auth?: LTApiAuth): Promise<LTApiResult>;
|