@hotmeshio/long-tail 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -5
- package/build/examples/seed.js +1 -1
- package/build/examples/workflows/basic-echo/activities.d.ts +2 -2
- package/build/examples/workflows/basic-echo/activities.js +7 -7
- package/build/examples/workflows/basic-echo/index.js +1 -1
- package/build/examples/workflows/kitchen-sink/index.js +2 -2
- package/build/index.d.ts +11 -10
- package/build/index.js +13 -12
- package/build/lib/db/index.d.ts +18 -0
- package/build/{services → lib}/db/index.js +9 -0
- package/build/{services → lib}/db/migrate.js +4 -7
- package/{services → build/lib}/db/schemas/001_schema.sql +3 -0
- package/{services → build/lib}/db/schemas/011_system_workflow_configs.sql +7 -0
- package/build/lib/db/schemas/015_knowledge.sql +23 -0
- package/build/lib/db/schemas/016_streamable_http.sql +7 -0
- package/build/{services → lib}/telemetry/honeycomb.d.ts +2 -2
- package/build/{services → lib}/telemetry/honeycomb.js +2 -2
- package/build/modules/defaults.d.ts +2 -0
- package/build/modules/defaults.js +3 -1
- package/build/routes/controlplane.js +1 -1
- package/build/routes/dba.js +4 -0
- package/build/routes/docs.d.ts +2 -0
- package/build/routes/docs.js +105 -0
- package/build/routes/escalations/bulk.js +120 -202
- package/build/routes/escalations/resolve.js +1 -1
- package/build/routes/escalations/single.js +1 -1
- package/build/routes/files.js +1 -1
- package/build/routes/index.js +2 -0
- package/build/routes/insight.js +65 -1
- package/build/routes/mcp.js +26 -3
- package/build/routes/oauth.js +1 -1
- package/build/routes/settings.js +4 -4
- package/build/routes/workflows/discovery.js +3 -3
- package/build/routes/workflows/invocation.js +1 -1
- package/build/routes/yaml-workflows/cron.d.ts +2 -0
- package/build/routes/yaml-workflows/cron.js +117 -0
- package/build/routes/yaml-workflows/crud.js +39 -1
- package/build/routes/yaml-workflows/deployment.js +9 -9
- package/build/routes/yaml-workflows/index.js +4 -1
- package/build/services/auth/bot-api-key.js +1 -1
- package/build/services/auth/index.d.ts +4 -0
- package/build/services/auth/index.js +17 -0
- package/build/services/auth/service-token.js +1 -1
- package/build/services/config/provider.js +1 -1
- package/build/services/config/read.js +1 -1
- package/build/services/config/write.js +1 -1
- package/build/services/controlplane/index.js +3 -4
- package/build/services/controlplane/quorum-bridge.js +2 -2
- package/build/services/cron/index.d.ts +17 -0
- package/build/services/cron/index.js +98 -6
- package/build/services/dba.d.ts +4 -0
- package/build/services/dba.js +3 -6
- package/build/services/escalation/bulk.js +1 -1
- package/build/services/escalation/crud.js +1 -1
- package/build/services/escalation/queries.js +1 -1
- package/build/services/export/client.js +2 -5
- package/build/services/export/index.js +14 -2
- package/build/services/hotmesh-utils.js +1 -1
- package/build/services/iam/bots.js +6 -12
- package/build/services/iam/context.d.ts +1 -1
- package/build/services/iam/context.js +5 -5
- package/build/services/iam/credentials.js +1 -1
- package/build/services/iam/ephemeral.js +8 -15
- package/build/services/iam/principal.js +3 -10
- package/build/services/iam/resolve.js +1 -1
- package/build/services/iam/sql.d.ts +10 -0
- package/build/services/iam/sql.js +42 -0
- package/build/services/insight/index.d.ts +12 -0
- package/build/services/insight/index.js +34 -6
- package/build/services/interceptor/activities/escalation.js +1 -1
- package/build/services/interceptor/activities/task.js +9 -6
- package/build/services/interceptor/activities/workflow.js +4 -5
- package/build/services/interceptor/activity-interceptor.d.ts +1 -1
- package/build/services/interceptor/activity-interceptor.js +5 -5
- package/build/services/interceptor/completion.js +1 -1
- package/build/services/interceptor/escalation.js +1 -1
- package/build/services/interceptor/index.js +4 -4
- package/build/services/interceptor/lifecycle.js +1 -1
- package/build/services/maintenance/index.js +4 -5
- package/build/services/mcp/adapter.js +1 -16
- package/build/services/mcp/client/connection.d.ts +10 -1
- package/build/services/mcp/client/connection.js +51 -3
- package/build/services/mcp/client/tools.js +1 -1
- package/build/services/mcp/db-server/index.js +1 -1
- package/build/services/mcp/db-server/schemas.d.ts +2 -2
- package/build/services/mcp/db-server/tools.js +17 -4
- package/build/services/mcp/db.d.ts +1 -1
- package/build/services/mcp/db.js +11 -1
- package/build/services/mcp/playwright-server/index.js +1 -1
- package/build/services/mcp/playwright-server/lifecycle.js +1 -1
- package/build/services/mcp/playwright-server/schemas.d.ts +2 -2
- package/build/services/mcp/playwright-server/tools.js +1 -1
- package/build/services/mcp/server.js +1 -1
- package/build/services/mcp/sql.d.ts +7 -1
- package/build/services/mcp/sql.js +36 -3
- package/build/services/mcp/types.d.ts +3 -1
- package/build/services/mcp/workflow-compiler-server.js +1 -1
- package/build/services/mcp/workflow-server.js +1 -1
- package/build/services/mcp-runs/execution-builder.js +8 -6
- package/build/services/mcp-runs/queries.js +2 -2
- package/build/services/mcp-runs/sql.d.ts +4 -1
- package/build/services/mcp-runs/sql.js +23 -2
- package/build/services/namespace/index.js +1 -1
- package/build/services/oauth/db.js +9 -37
- package/build/services/oauth/index.js +1 -1
- package/build/services/oauth/providers/registry.js +1 -1
- package/build/services/oauth/sql.d.ts +7 -0
- package/build/services/oauth/sql.js +32 -0
- package/build/services/orchestrator/index.js +3 -3
- package/build/services/role/index.js +1 -1
- package/build/services/task/crud.js +1 -1
- package/build/services/task/process.js +1 -1
- package/build/services/task/resolve.js +1 -1
- package/build/services/user/auth.js +1 -1
- package/build/services/user/crud.js +1 -1
- package/build/services/user/rbac.js +1 -1
- package/build/services/user/roles.js +1 -1
- package/build/services/user/sql.d.ts +2 -0
- package/build/services/user/sql.js +3 -1
- package/build/services/yaml-workflow/db-utils.js +1 -1
- package/build/services/yaml-workflow/db.d.ts +3 -0
- package/build/services/yaml-workflow/db.js +25 -1
- package/build/services/yaml-workflow/deployer-helpers.js +1 -1
- package/build/services/yaml-workflow/deployer.js +4 -4
- package/build/services/yaml-workflow/generator.js +1 -1
- package/build/services/yaml-workflow/input-analyzer-helpers.d.ts +6 -0
- package/build/services/yaml-workflow/input-analyzer-helpers.js +36 -7
- package/build/services/yaml-workflow/input-analyzer.js +16 -3
- package/build/services/yaml-workflow/invoke.d.ts +19 -0
- package/build/services/yaml-workflow/invoke.js +80 -0
- package/build/services/yaml-workflow/pipeline/analyze.js +1 -1
- package/build/services/yaml-workflow/pipeline/build/dag.js +11 -6
- package/build/services/yaml-workflow/pipeline/build/wiring.d.ts +1 -1
- package/build/services/yaml-workflow/pipeline/build/wiring.js +89 -2
- package/build/services/yaml-workflow/pipeline/compile/llm-call.js +1 -1
- package/build/services/yaml-workflow/pipeline/extract.js +5 -3
- package/build/services/yaml-workflow/pipeline/index.d.ts +5 -0
- package/build/services/yaml-workflow/pipeline/index.js +22 -0
- package/build/services/yaml-workflow/pipeline/prompts.d.ts +1 -1
- package/build/services/yaml-workflow/pipeline/prompts.js +44 -1
- package/build/services/yaml-workflow/pipeline/validate.js +2 -2
- package/build/services/yaml-workflow/sql.d.ts +3 -0
- package/build/services/yaml-workflow/sql.js +16 -1
- package/build/services/yaml-workflow/types.d.ts +13 -1
- package/build/services/yaml-workflow/workers/callbacks.js +10 -2
- package/build/services/yaml-workflow/workers/events.js +2 -2
- package/build/services/yaml-workflow/workers/register.js +37 -9
- package/build/start/adapters.js +7 -7
- package/build/start/index.js +4 -4
- package/build/start/server.js +1 -1
- package/build/start/workers.d.ts +1 -2
- package/build/start/workers.js +8 -7
- package/build/system/activities/claude-code.js +1 -1
- package/build/system/activities/file-storage.js +1 -1
- package/build/system/activities/knowledge.d.ts +58 -0
- package/build/system/activities/knowledge.js +128 -0
- package/build/system/activities/sql.d.ts +9 -0
- package/build/system/activities/sql.js +41 -0
- package/build/system/activities/triage/context.js +1 -1
- package/build/system/activities/triage/discovery.d.ts +2 -14
- package/build/system/activities/triage/discovery.js +5 -161
- package/build/system/activities/triage/llm.d.ts +1 -8
- package/build/system/activities/triage/llm.js +2 -28
- package/build/system/activities/triage/tools.d.ts +1 -17
- package/build/system/activities/triage/tools.js +8 -167
- package/build/system/index.js +11 -4
- package/build/system/mcp-servers/admin/escalations.d.ts +5 -0
- package/build/system/mcp-servers/admin/escalations.js +149 -0
- package/build/system/mcp-servers/admin/index.d.ts +31 -0
- package/build/system/mcp-servers/admin/index.js +80 -0
- package/build/system/mcp-servers/admin/maintenance.d.ts +5 -0
- package/build/system/mcp-servers/admin/maintenance.js +58 -0
- package/build/system/mcp-servers/admin/mcp-servers.d.ts +5 -0
- package/build/system/mcp-servers/admin/mcp-servers.js +146 -0
- package/build/system/mcp-servers/admin/schemas.d.ts +411 -0
- package/build/system/mcp-servers/admin/schemas.js +177 -0
- package/build/system/mcp-servers/admin/tasks.d.ts +5 -0
- package/build/system/mcp-servers/admin/tasks.js +112 -0
- package/build/system/mcp-servers/admin/users.d.ts +5 -0
- package/build/system/mcp-servers/admin/users.js +167 -0
- package/build/system/mcp-servers/admin/workflow-config.d.ts +9 -0
- package/build/system/mcp-servers/admin/workflow-config.js +118 -0
- package/build/system/mcp-servers/admin/workflows.d.ts +6 -0
- package/build/system/mcp-servers/admin/workflows.js +138 -0
- package/build/system/mcp-servers/admin/yaml-workflows.d.ts +8 -0
- package/build/system/mcp-servers/admin/yaml-workflows.js +237 -0
- package/build/system/mcp-servers/claude-code.js +1 -1
- package/build/system/mcp-servers/db-query/index.js +1 -1
- package/build/system/mcp-servers/db-query/schemas.d.ts +2 -2
- package/build/system/mcp-servers/db-query/tools.js +17 -4
- package/build/system/mcp-servers/docs.d.ts +5 -0
- package/build/system/mcp-servers/docs.js +147 -0
- package/build/system/mcp-servers/file-storage.js +1 -1
- package/build/system/mcp-servers/http-fetch.js +1 -1
- package/build/system/mcp-servers/human-queue.js +1 -1
- package/build/system/mcp-servers/knowledge.d.ts +4 -0
- package/build/system/mcp-servers/knowledge.js +137 -0
- package/build/system/mcp-servers/oauth.js +1 -1
- package/build/system/mcp-servers/playwright/browser-lifecycle.js +1 -1
- package/build/system/mcp-servers/playwright/index.js +1 -1
- package/build/system/mcp-servers/playwright/schemas.d.ts +21 -10
- package/build/system/mcp-servers/playwright/schemas.js +3 -0
- package/build/system/mcp-servers/playwright/tools-navigation.js +22 -9
- package/build/system/mcp-servers/playwright/tools-run-script.js +20 -3
- package/build/system/mcp-servers/playwright/vision-helper.d.ts +12 -0
- package/build/system/mcp-servers/playwright/vision-helper.js +81 -0
- package/build/system/mcp-servers/playwright-cli/helpers.js +2 -2
- package/build/system/mcp-servers/playwright-cli/index.js +1 -1
- package/build/system/mcp-servers/playwright-cli/schemas.d.ts +10 -10
- package/build/system/mcp-servers/playwright-cli/schemas.js +1 -1
- package/build/system/mcp-servers/playwright-cli/tools-auth.js +1 -1
- package/build/system/mcp-servers/playwright-cli/tools-capture.js +9 -3
- package/build/system/mcp-servers/translation.d.ts +14 -0
- package/build/system/mcp-servers/translation.js +130 -0
- package/build/system/mcp-servers/vision-prompts.d.ts +2 -0
- package/build/system/mcp-servers/vision-prompts.js +9 -0
- package/build/system/mcp-servers/{document-vision.d.ts → vision.d.ts} +3 -4
- package/build/system/mcp-servers/vision.js +258 -0
- package/build/system/mcp-servers/workflow-compiler.js +1 -1
- package/build/system/mcp-servers/workflow.js +1 -1
- package/build/system/seed/index.js +13 -2
- package/build/system/seed/server-definitions.d.ts +1961 -322
- package/build/system/seed/server-definitions.js +68 -34
- package/build/system/seed/tool-manifests-admin.d.ts +1645 -0
- package/build/system/seed/tool-manifests-admin.js +45 -0
- package/build/system/seed/tool-manifests-browser.d.ts +1 -1
- package/build/system/seed/tool-manifests-browser.js +3 -3
- package/build/system/seed/tool-manifests-data.d.ts +62 -21
- package/build/system/seed/tool-manifests-data.js +55 -17
- package/build/system/seed/tool-manifests-knowledge.d.ts +171 -0
- package/build/system/seed/tool-manifests-knowledge.js +94 -0
- package/build/system/seed/tool-manifests-workflows.d.ts +7 -0
- package/build/system/seed/tool-manifests-workflows.js +10 -3
- package/build/system/workflows/mcp-deterministic/index.js +1 -1
- package/build/system/workflows/mcp-query/activities/discovery.d.ts +2 -20
- package/build/system/workflows/mcp-query/activities/discovery.js +5 -163
- package/build/system/workflows/mcp-query/activities/llm.d.ts +1 -7
- package/build/system/workflows/mcp-query/activities/llm.js +2 -27
- package/build/system/workflows/mcp-query/activities/tool-executor.d.ts +0 -4
- package/build/system/workflows/mcp-query/activities/tool-executor.js +2 -106
- package/build/system/workflows/mcp-query/activities/tool-loader.d.ts +0 -9
- package/build/system/workflows/mcp-query/activities/tool-loader.js +2 -87
- package/build/system/workflows/mcp-query/index.js +55 -5
- package/build/system/workflows/mcp-query/prompts.d.ts +1 -2
- package/build/system/workflows/mcp-query/prompts.js +5 -32
- package/build/system/workflows/mcp-query/strategy-advisors.d.ts +3 -14
- package/build/system/workflows/mcp-query/strategy-advisors.js +4 -107
- package/build/system/workflows/mcp-query/types.d.ts +2 -10
- package/build/system/workflows/mcp-query/types.js +0 -1
- package/build/system/workflows/mcp-query-router/index.js +1 -1
- package/build/system/workflows/mcp-triage/index.d.ts +2 -2
- package/build/system/workflows/mcp-triage/index.js +39 -7
- package/build/system/workflows/mcp-triage/prompts.js +7 -14
- package/build/system/workflows/mcp-triage-deterministic/index.js +1 -1
- package/build/system/workflows/mcp-triage-router/index.js +1 -1
- package/build/system/workflows/mcp-workflow-builder/activities/caches.d.ts +5 -0
- package/build/system/workflows/mcp-workflow-builder/activities/caches.js +8 -0
- package/build/system/workflows/mcp-workflow-builder/activities/index.d.ts +2 -0
- package/build/system/workflows/mcp-workflow-builder/activities/index.js +7 -0
- package/build/system/workflows/mcp-workflow-builder/activities/llm.d.ts +2 -0
- package/build/system/workflows/mcp-workflow-builder/activities/llm.js +25 -0
- package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.d.ts +5 -0
- package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.js +8 -0
- package/build/system/workflows/mcp-workflow-builder/index.d.ts +16 -0
- package/build/system/workflows/mcp-workflow-builder/index.js +229 -0
- package/build/system/workflows/mcp-workflow-builder/prompts.d.ts +8 -0
- package/build/system/workflows/mcp-workflow-builder/prompts.js +247 -0
- package/build/system/workflows/shared/discovery.d.ts +35 -0
- package/build/system/workflows/shared/discovery.js +175 -0
- package/build/system/workflows/shared/index.d.ts +7 -0
- package/build/system/workflows/shared/index.js +18 -0
- package/build/system/workflows/shared/llm-caller.d.ts +8 -0
- package/build/system/workflows/shared/llm-caller.js +31 -0
- package/build/system/workflows/shared/prompts.d.ts +2 -0
- package/build/system/workflows/shared/prompts.js +32 -0
- package/build/system/workflows/shared/strategy-advisors.d.ts +14 -0
- package/build/system/workflows/shared/strategy-advisors.js +109 -0
- package/build/system/workflows/shared/tool-executor.d.ts +11 -0
- package/build/system/workflows/shared/tool-executor.js +111 -0
- package/build/system/workflows/shared/tool-loader.d.ts +19 -0
- package/build/system/workflows/shared/tool-loader.js +97 -0
- package/build/system/workflows/shared/types.d.ts +9 -0
- package/build/system/workflows/shared/types.js +2 -0
- package/build/system/workflows/tool-result-guard.d.ts +14 -0
- package/build/system/workflows/tool-result-guard.js +78 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/mcp.d.ts +4 -3
- package/build/types/user.d.ts +2 -0
- package/build/types/yaml-workflow.d.ts +6 -2
- package/build/vitest.config.d.ts +1 -1
- package/build/vitest.integration.config.d.ts +1 -1
- package/build/workers/index.js +2 -8
- package/dashboard/dist/assets/AdminDashboard-BXkKGkb5.js +2 -0
- package/dashboard/dist/assets/AdminDashboard-BXkKGkb5.js.map +1 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-DcH592mc.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-DcH592mc.js.map +1 -0
- package/dashboard/dist/assets/BotPicker-A6LtzyuO.js +2 -0
- package/dashboard/dist/assets/{BotPicker-D6FYW1Gt.js.map → BotPicker-A6LtzyuO.js.map} +1 -1
- package/dashboard/dist/assets/CollapsibleSection-C7nL2_mv.js +2 -0
- package/dashboard/dist/assets/{CollapsibleSection-Cxk4wvjT.js.map → CollapsibleSection-C7nL2_mv.js.map} +1 -1
- package/dashboard/dist/assets/ConfirmDeleteModal-CWFwJrSl.js +2 -0
- package/dashboard/dist/assets/{ConfirmDeleteModal-FSXyKjaB.js.map → ConfirmDeleteModal-CWFwJrSl.js.map} +1 -1
- package/dashboard/dist/assets/CopyableId-DbZ5c3jh.js +2 -0
- package/dashboard/dist/assets/{CopyableId-CBdxWfp8.js.map → CopyableId-DbZ5c3jh.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-ClWkmLPu.js +2 -0
- package/dashboard/dist/assets/CredentialsPage-ClWkmLPu.js.map +1 -0
- package/dashboard/dist/assets/CustomDurationPicker-CtH2hReF.js +2 -0
- package/dashboard/dist/assets/{CustomDurationPicker-CAninCbl.js.map → CustomDurationPicker-CtH2hReF.js.map} +1 -1
- package/dashboard/dist/assets/DataTable-CM5ZcpPi.js +2 -0
- package/dashboard/dist/assets/DataTable-CM5ZcpPi.js.map +1 -0
- package/dashboard/dist/assets/ElapsedCell-CwqavyeC.js +2 -0
- package/dashboard/dist/assets/ElapsedCell-CwqavyeC.js.map +1 -0
- package/dashboard/dist/assets/EmptyState-BBn78pmm.js +2 -0
- package/dashboard/dist/assets/{EmptyState-2CmV-IaS.js.map → EmptyState-BBn78pmm.js.map} +1 -1
- package/dashboard/dist/assets/EscalationsOverview-BcJ2E3X7.js +2 -0
- package/dashboard/dist/assets/{EscalationsOverview-GXYFPASS.js.map → EscalationsOverview-BcJ2E3X7.js.map} +1 -1
- package/dashboard/dist/assets/EventTable-C1en_KZ0.js +2 -0
- package/dashboard/dist/assets/{EventTable-B01oJf6Y.js.map → EventTable-C1en_KZ0.js.map} +1 -1
- package/dashboard/dist/assets/FilterBar-CZTlrLQT.js +2 -0
- package/dashboard/dist/assets/{FilterBar-Ck4K4rzu.js.map → FilterBar-CZTlrLQT.js.map} +1 -1
- package/dashboard/dist/assets/ListToolbar-Cdbsapig.js +2 -0
- package/dashboard/dist/assets/ListToolbar-Cdbsapig.js.map +1 -0
- package/dashboard/dist/assets/McpOverview-CSpEJxKa.js +2 -0
- package/dashboard/dist/assets/{McpOverview-JkvRcX2e.js.map → McpOverview-CSpEJxKa.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-DhqEI180.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-DhqEI180.js.map +1 -0
- package/dashboard/dist/assets/McpQueryPage-CIiVMlqo.js +2 -0
- package/dashboard/dist/assets/McpQueryPage-CIiVMlqo.js.map +1 -0
- package/dashboard/dist/assets/McpRunDetailPage-9xdxgG4d.js +2 -0
- package/dashboard/dist/assets/McpRunDetailPage-9xdxgG4d.js.map +1 -0
- package/dashboard/dist/assets/McpRunsPage-wWLqHsd4.js +2 -0
- package/dashboard/dist/assets/McpRunsPage-wWLqHsd4.js.map +1 -0
- package/dashboard/dist/assets/Modal-kB_P7ZOr.js +2 -0
- package/dashboard/dist/assets/{Modal-B4rbIVAn.js.map → Modal-kB_P7ZOr.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-jc0vrgDI.js +2 -0
- package/dashboard/dist/assets/OperatorDashboard-jc0vrgDI.js.map +1 -0
- package/dashboard/dist/assets/PageHeader-NkOeBR05.js +2 -0
- package/dashboard/dist/assets/PageHeader-NkOeBR05.js.map +1 -0
- package/dashboard/dist/assets/PageHeaderWithStats-ywNhrmFK.js +2 -0
- package/dashboard/dist/assets/PageHeaderWithStats-ywNhrmFK.js.map +1 -0
- package/dashboard/dist/assets/PriorityBadge-B2MQbSxy.js +2 -0
- package/dashboard/dist/assets/{PriorityBadge-DfQY9St9.js.map → PriorityBadge-B2MQbSxy.js.map} +1 -1
- package/dashboard/dist/assets/ProcessDetailPage-B7z7IdqE.js +2 -0
- package/dashboard/dist/assets/ProcessDetailPage-B7z7IdqE.js.map +1 -0
- package/dashboard/dist/assets/ProcessesListPage-C-uHadO6.js +2 -0
- package/dashboard/dist/assets/ProcessesListPage-C-uHadO6.js.map +1 -0
- package/dashboard/dist/assets/RolePill-C1dgC-fK.js +2 -0
- package/dashboard/dist/assets/{RolePill-BTPa8L-P.js.map → RolePill-C1dgC-fK.js.map} +1 -1
- package/dashboard/dist/assets/RolesPage-BSxrD1vm.js +2 -0
- package/dashboard/dist/assets/RolesPage-BSxrD1vm.js.map +1 -0
- package/dashboard/dist/assets/RowActions-lYaHGI-v.js +2 -0
- package/dashboard/dist/assets/{RowActions-Dg-Fsm5O.js.map → RowActions-lYaHGI-v.js.map} +1 -1
- package/dashboard/dist/assets/RunAsSelector-CJDnyp93.js +2 -0
- package/dashboard/dist/assets/RunAsSelector-CJDnyp93.js.map +1 -0
- package/dashboard/dist/assets/StatCard-v2TiITVr.js +2 -0
- package/dashboard/dist/assets/{StatCard-DlgF0CJC.js.map → StatCard-v2TiITVr.js.map} +1 -1
- package/dashboard/dist/assets/StatusBadge-DWlxevgG.js +2 -0
- package/dashboard/dist/assets/StatusBadge-DWlxevgG.js.map +1 -0
- package/dashboard/dist/assets/StepIndicator-CRM4ft28.js +2 -0
- package/dashboard/dist/assets/StepIndicator-CRM4ft28.js.map +1 -0
- package/dashboard/dist/assets/StickyPagination-CF0EToEU.js +2 -0
- package/dashboard/dist/assets/{StickyPagination-F9FZsRy9.js.map → StickyPagination-CF0EToEU.js.map} +1 -1
- package/dashboard/dist/assets/SwimlaneTimeline-CNlj7fgg.js +2 -0
- package/dashboard/dist/assets/SwimlaneTimeline-CNlj7fgg.js.map +1 -0
- package/dashboard/dist/assets/TagInput-CH8qMGhC.js +2 -0
- package/dashboard/dist/assets/TagInput-CH8qMGhC.js.map +1 -0
- package/dashboard/dist/assets/TaskDetailPage-CdWo-6mu.js +2 -0
- package/dashboard/dist/assets/TaskDetailPage-CdWo-6mu.js.map +1 -0
- package/dashboard/dist/assets/TaskQueuePill-BPj4ogVG.js +2 -0
- package/dashboard/dist/assets/{TaskQueuePill-awmtb0qw.js.map → TaskQueuePill-BPj4ogVG.js.map} +1 -1
- package/dashboard/dist/assets/TasksListPage-CtRkMpKU.js +2 -0
- package/dashboard/dist/assets/{TasksListPage-C_QF23c1.js.map → TasksListPage-CtRkMpKU.js.map} +1 -1
- package/dashboard/dist/assets/TimeAgo-Di1a3X5P.js +2 -0
- package/dashboard/dist/assets/TimeAgo-Di1a3X5P.js.map +1 -0
- package/dashboard/dist/assets/TimestampCell-CqrXql-S.js +2 -0
- package/dashboard/dist/assets/TimestampCell-CqrXql-S.js.map +1 -0
- package/dashboard/dist/assets/UserName-BUFYCnRa.js +2 -0
- package/dashboard/dist/assets/{UserName-DaP4YAKr.js.map → UserName-BUFYCnRa.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-25iusMml.js +2 -0
- package/dashboard/dist/assets/WorkflowExecutionPage-25iusMml.js.map +1 -0
- package/dashboard/dist/assets/WorkflowPill-DPKOcbf4.js +2 -0
- package/dashboard/dist/assets/WorkflowPill-DPKOcbf4.js.map +1 -0
- package/dashboard/dist/assets/WorkflowsDashboard-BgxslssH.js +2 -0
- package/dashboard/dist/assets/WorkflowsDashboard-BgxslssH.js.map +1 -0
- package/dashboard/dist/assets/WorkflowsOverview-Doe5L-Re.js +2 -0
- package/dashboard/dist/assets/{WorkflowsOverview-D9OzzQqw.js.map → WorkflowsOverview-Doe5L-Re.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-BliAckJ6.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-BliAckJ6.js.map +1 -0
- package/dashboard/dist/assets/{bots-BkKVMbUW.js → bots-Bi2_O1Ts.js} +2 -2
- package/dashboard/dist/assets/{bots-BkKVMbUW.js.map → bots-Bi2_O1Ts.js.map} +1 -1
- package/dashboard/dist/assets/constants-BHkpVaqx.js +2 -0
- package/dashboard/dist/assets/constants-BHkpVaqx.js.map +1 -0
- package/dashboard/dist/assets/escalation-Ck1KlLkT.js +2 -0
- package/dashboard/dist/assets/escalation-Ck1KlLkT.js.map +1 -0
- package/dashboard/dist/assets/escalation-columns-ohDsj2eJ.js +2 -0
- package/dashboard/dist/assets/{escalation-columns-D6aqStaY.js.map → escalation-columns-ohDsj2eJ.js.map} +1 -1
- package/dashboard/dist/assets/helpers-BoD2SgUY.js +2 -0
- package/dashboard/dist/assets/helpers-BoD2SgUY.js.map +1 -0
- package/dashboard/dist/assets/index-BEtLIsML.js +2 -0
- package/dashboard/dist/assets/index-BEtLIsML.js.map +1 -0
- package/dashboard/dist/assets/index-Bn2xHDr8.js +5 -0
- package/dashboard/dist/assets/index-Bn2xHDr8.js.map +1 -0
- package/dashboard/dist/assets/index-BpT-6WgJ.js +2 -0
- package/dashboard/dist/assets/{index-DTPzZr_X.js.map → index-BpT-6WgJ.js.map} +1 -1
- package/dashboard/dist/assets/index-CZrJ09p-.js +2 -0
- package/dashboard/dist/assets/index-CZrJ09p-.js.map +1 -0
- package/dashboard/dist/assets/index-D3NyVADW.js +2 -0
- package/dashboard/dist/assets/index-D3NyVADW.js.map +1 -0
- package/dashboard/dist/assets/index-D7zYZOnH.js +2 -0
- package/dashboard/dist/assets/index-D7zYZOnH.js.map +1 -0
- package/dashboard/dist/assets/index-DOkHXmyf.js +17 -0
- package/dashboard/dist/assets/index-DOkHXmyf.js.map +1 -0
- package/dashboard/dist/assets/index-DYyLF-Qb.js +281 -0
- package/dashboard/dist/assets/index-DYyLF-Qb.js.map +1 -0
- package/dashboard/dist/assets/index-Dk2Q51o0.js +2 -0
- package/dashboard/dist/assets/index-Dk2Q51o0.js.map +1 -0
- package/dashboard/dist/assets/index-FuohTtaM.js +6 -0
- package/dashboard/dist/assets/index-FuohTtaM.js.map +1 -0
- package/dashboard/dist/assets/index-PyCTS05D.css +1 -0
- package/dashboard/dist/assets/mcp-CJtYjA7A.js +2 -0
- package/dashboard/dist/assets/mcp-CJtYjA7A.js.map +1 -0
- package/dashboard/dist/assets/mcp-query-jQJQrs_7.js +2 -0
- package/dashboard/dist/assets/mcp-query-jQJQrs_7.js.map +1 -0
- package/dashboard/dist/assets/{mcp-runs-ChPbpvXK.js → mcp-runs-DUWm9Z4V.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-ChPbpvXK.js.map → mcp-runs-DUWm9Z4V.js.map} +1 -1
- package/dashboard/dist/assets/namespaces-BM5P2qmL.js +2 -0
- package/dashboard/dist/assets/{namespaces-BgbaC3ow.js.map → namespaces-BM5P2qmL.js.map} +1 -1
- package/dashboard/dist/assets/{roles-ZNrqqnQl.js → roles-lv0shpjJ.js} +2 -2
- package/dashboard/dist/assets/{roles-ZNrqqnQl.js.map → roles-lv0shpjJ.js.map} +1 -1
- package/dashboard/dist/assets/settings-Wlq92mRo.js +2 -0
- package/dashboard/dist/assets/{settings-eBRSE0mQ.js.map → settings-Wlq92mRo.js.map} +1 -1
- package/dashboard/dist/assets/tasks-BFGm4PuE.js +2 -0
- package/dashboard/dist/assets/{tasks-tRqClPns.js.map → tasks-BFGm4PuE.js.map} +1 -1
- package/dashboard/dist/assets/useEventHooks-DIE6ue4x.js +2 -0
- package/dashboard/dist/assets/useEventHooks-DIE6ue4x.js.map +1 -0
- package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js +2 -0
- package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js.map +1 -0
- package/dashboard/dist/assets/{useFilterParams-BaXUAkYK.js → useFilterParams-BUyLHcx_.js} +2 -2
- package/dashboard/dist/assets/{useFilterParams-BaXUAkYK.js.map → useFilterParams-BUyLHcx_.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-BO51u8tm.js → useYamlActivityEvents-DCwSO73t.js} +2 -2
- package/dashboard/dist/assets/useYamlActivityEvents-DCwSO73t.js.map +1 -0
- package/dashboard/dist/assets/{users-tMvNyOo8.js → users-tA5-K0wA.js} +2 -2
- package/dashboard/dist/assets/{users-tMvNyOo8.js.map → users-tA5-K0wA.js.map} +1 -1
- package/dashboard/dist/assets/vendor-icons-BiIug1SK.js +402 -0
- package/dashboard/dist/assets/vendor-icons-BiIug1SK.js.map +1 -0
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js +35 -0
- package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +1 -0
- package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js +26 -0
- package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js.map +1 -0
- package/dashboard/dist/assets/{workflows-Cc4VHcrp.js → workflows-CfLc15Wr.js} +2 -2
- package/dashboard/dist/assets/{workflows-Cc4VHcrp.js.map → workflows-CfLc15Wr.js.map} +1 -1
- package/dashboard/dist/assets/yaml-workflows-D7JXNqbM.js +2 -0
- package/dashboard/dist/assets/yaml-workflows-D7JXNqbM.js.map +1 -0
- package/dashboard/dist/index.html +5 -5
- package/docs/api/dba.md +81 -0
- package/docs/api/escalations.md +575 -0
- package/docs/api/exports.md +170 -0
- package/docs/api/maintenance.md +93 -0
- package/docs/api/mcp-runs.md +128 -0
- package/docs/api/mcp-servers.md +253 -0
- package/docs/api/namespaces.md +48 -0
- package/docs/api/roles.md +390 -0
- package/docs/api/service-accounts.md +188 -0
- package/docs/api/settings.md +33 -0
- package/docs/api/tasks.md +167 -0
- package/docs/api/users.md +180 -0
- package/docs/api/workflows.md +616 -0
- package/docs/api/yaml-workflows.md +312 -0
- package/docs/architecture.md +221 -0
- package/docs/auth.md +181 -0
- package/docs/cloud.md +272 -0
- package/docs/compilation.md +136 -0
- package/docs/contributing.md +56 -0
- package/docs/dashboard.md +145 -0
- package/docs/data.md +478 -0
- package/docs/escalation-strategies.md +263 -0
- package/docs/events.md +251 -0
- package/docs/iam.md +222 -0
- package/docs/img/01-login.png +0 -0
- package/docs/img/02-dashboard-home.png +0 -0
- package/docs/img/03-processes-list.png +0 -0
- package/docs/img/04-escalations-list.png +0 -0
- package/docs/img/05-mcp-servers.png +0 -0
- package/docs/img/06-mcp-pipelines.png +0 -0
- package/docs/img/07-workflows-list.png +0 -0
- package/docs/img/compilation/01-query-submit.png +0 -0
- package/docs/img/compilation/02-mcp-servers.png +0 -0
- package/docs/img/compilation/03-query-completed.png +0 -0
- package/docs/img/compilation/04-wizard-original.png +0 -0
- package/docs/img/compilation/05-wizard-timeline.png +0 -0
- package/docs/img/compilation/06-wizard-profile.png +0 -0
- package/docs/img/compilation/07-wizard-deploy.png +0 -0
- package/docs/img/compilation/08-wizard-test-modal.png +0 -0
- package/docs/img/compilation/09-wizard-test-compare.png +0 -0
- package/docs/img/compilation/10-wizard-verify.png +0 -0
- package/docs/logging.md +110 -0
- package/docs/maintenance.md +221 -0
- package/docs/mcp.md +985 -0
- package/docs/oauth-and-delegation.md +469 -0
- package/docs/telemetry.md +144 -0
- package/docs/workflows.md +695 -0
- package/package.json +8 -9
- package/build/services/db/index.d.ts +0 -3
- package/build/services/mcp/vision-server.d.ts +0 -15
- package/build/services/mcp/vision-server.js +0 -214
- package/build/system/mcp-servers/document-vision.js +0 -228
- package/build/system/mcp-servers/prompts.d.ts +0 -4
- package/build/system/mcp-servers/prompts.js +0 -10
- package/dashboard/dist/assets/AdminDashboard-jfacvOC7.js +0 -2
- package/dashboard/dist/assets/AdminDashboard-jfacvOC7.js.map +0 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-BglLDoT8.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-BglLDoT8.js.map +0 -1
- package/dashboard/dist/assets/BotPicker-D6FYW1Gt.js +0 -2
- package/dashboard/dist/assets/CollapsibleSection-Cxk4wvjT.js +0 -2
- package/dashboard/dist/assets/ConfirmDeleteModal-FSXyKjaB.js +0 -2
- package/dashboard/dist/assets/CopyableId-CBdxWfp8.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-Ikzsot0w.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-Ikzsot0w.js.map +0 -1
- package/dashboard/dist/assets/CustomDurationPicker-CAninCbl.js +0 -2
- package/dashboard/dist/assets/DataTable-BDn1WBHS.js +0 -2
- package/dashboard/dist/assets/DataTable-BDn1WBHS.js.map +0 -1
- package/dashboard/dist/assets/EmptyState-2CmV-IaS.js +0 -2
- package/dashboard/dist/assets/EscalationsOverview-GXYFPASS.js +0 -2
- package/dashboard/dist/assets/EventTable-B01oJf6Y.js +0 -2
- package/dashboard/dist/assets/Field-DuFBAYhu.js +0 -2
- package/dashboard/dist/assets/Field-DuFBAYhu.js.map +0 -1
- package/dashboard/dist/assets/FilterBar-Ck4K4rzu.js +0 -2
- package/dashboard/dist/assets/McpOverview-JkvRcX2e.js +0 -2
- package/dashboard/dist/assets/McpQueryDetailPage-CUMqhQdS.js +0 -2
- package/dashboard/dist/assets/McpQueryDetailPage-CUMqhQdS.js.map +0 -1
- package/dashboard/dist/assets/McpQueryPage-DRRhw4nN.js +0 -2
- package/dashboard/dist/assets/McpQueryPage-DRRhw4nN.js.map +0 -1
- package/dashboard/dist/assets/McpRunDetailPage-CmPs5EvE.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-CmPs5EvE.js.map +0 -1
- package/dashboard/dist/assets/McpRunsPage-Dl5Y2u6k.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-Dl5Y2u6k.js.map +0 -1
- package/dashboard/dist/assets/Modal-B4rbIVAn.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-B56il28q.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-B56il28q.js.map +0 -1
- package/dashboard/dist/assets/PageHeader-CpWFly5S.js +0 -2
- package/dashboard/dist/assets/PageHeader-CpWFly5S.js.map +0 -1
- package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-CMLq4M7D.js +0 -2
- package/dashboard/dist/assets/ProcessDetailPage-CMLq4M7D.js.map +0 -1
- package/dashboard/dist/assets/ProcessesListPage-CZ_HF06v.js +0 -2
- package/dashboard/dist/assets/ProcessesListPage-CZ_HF06v.js.map +0 -1
- package/dashboard/dist/assets/RolePill-BTPa8L-P.js +0 -2
- package/dashboard/dist/assets/RolesPage-9grZW7yR.js +0 -2
- package/dashboard/dist/assets/RolesPage-9grZW7yR.js.map +0 -1
- package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js +0 -2
- package/dashboard/dist/assets/SimpleMarkdown-CBlvaWP4.js +0 -4
- package/dashboard/dist/assets/SimpleMarkdown-CBlvaWP4.js.map +0 -1
- package/dashboard/dist/assets/StatCard-DlgF0CJC.js +0 -2
- package/dashboard/dist/assets/StatusBadge-TlC4jiig.js +0 -2
- package/dashboard/dist/assets/StatusBadge-TlC4jiig.js.map +0 -1
- package/dashboard/dist/assets/StickyPagination-F9FZsRy9.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-7SiwATsZ.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-7SiwATsZ.js.map +0 -1
- package/dashboard/dist/assets/TaskDetailPage-CbPVTakt.js +0 -2
- package/dashboard/dist/assets/TaskDetailPage-CbPVTakt.js.map +0 -1
- package/dashboard/dist/assets/TaskQueuePill-awmtb0qw.js +0 -2
- package/dashboard/dist/assets/TasksListPage-C_QF23c1.js +0 -2
- package/dashboard/dist/assets/TimeAgo-UPG6DoH8.js +0 -2
- package/dashboard/dist/assets/TimeAgo-UPG6DoH8.js.map +0 -1
- package/dashboard/dist/assets/TimestampCell-DoWMKg6w.js +0 -2
- package/dashboard/dist/assets/TimestampCell-DoWMKg6w.js.map +0 -1
- package/dashboard/dist/assets/UserName-DaP4YAKr.js +0 -2
- package/dashboard/dist/assets/VersionHistory-Bt7WBr6m.js +0 -5
- package/dashboard/dist/assets/VersionHistory-Bt7WBr6m.js.map +0 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-DjtAQ3hy.js +0 -2
- package/dashboard/dist/assets/WorkflowExecutionPage-DjtAQ3hy.js.map +0 -1
- package/dashboard/dist/assets/WorkflowPill-CCDSVaQj.js +0 -2
- package/dashboard/dist/assets/WorkflowPill-CCDSVaQj.js.map +0 -1
- package/dashboard/dist/assets/WorkflowsDashboard-D8z9uBNB.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-D8z9uBNB.js.map +0 -1
- package/dashboard/dist/assets/WorkflowsOverview-D9OzzQqw.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowDetailPage-DrDvvP62.js +0 -3
- package/dashboard/dist/assets/YamlWorkflowDetailPage-DrDvvP62.js.map +0 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-COqiNCQK.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-COqiNCQK.js.map +0 -1
- package/dashboard/dist/assets/constants-CgaZfe5d.js +0 -2
- package/dashboard/dist/assets/constants-CgaZfe5d.js.map +0 -1
- package/dashboard/dist/assets/escalation-columns-D6aqStaY.js +0 -2
- package/dashboard/dist/assets/escalation-qalymbKB.js +0 -2
- package/dashboard/dist/assets/escalation-qalymbKB.js.map +0 -1
- package/dashboard/dist/assets/format-gXZXQ-HJ.js +0 -2
- package/dashboard/dist/assets/format-gXZXQ-HJ.js.map +0 -1
- package/dashboard/dist/assets/helpers-0gSleuzT.js +0 -2
- package/dashboard/dist/assets/helpers-0gSleuzT.js.map +0 -1
- package/dashboard/dist/assets/index-BWvMHed7.js +0 -6
- package/dashboard/dist/assets/index-BWvMHed7.js.map +0 -1
- package/dashboard/dist/assets/index-BaszoPO_.css +0 -1
- package/dashboard/dist/assets/index-Cn2jyj9A.js +0 -2
- package/dashboard/dist/assets/index-Cn2jyj9A.js.map +0 -1
- package/dashboard/dist/assets/index-D8VH6K8B.js +0 -54
- package/dashboard/dist/assets/index-D8VH6K8B.js.map +0 -1
- package/dashboard/dist/assets/index-D9SYwJsi.js +0 -3
- package/dashboard/dist/assets/index-D9SYwJsi.js.map +0 -1
- package/dashboard/dist/assets/index-DTPzZr_X.js +0 -2
- package/dashboard/dist/assets/index-D_6AB5BE.js +0 -2
- package/dashboard/dist/assets/index-D_6AB5BE.js.map +0 -1
- package/dashboard/dist/assets/index-S9Ks2Lj2.js +0 -2
- package/dashboard/dist/assets/index-S9Ks2Lj2.js.map +0 -1
- package/dashboard/dist/assets/index-X85K5bHC.js +0 -17
- package/dashboard/dist/assets/index-X85K5bHC.js.map +0 -1
- package/dashboard/dist/assets/index-rjmgHlSH.js +0 -2
- package/dashboard/dist/assets/index-rjmgHlSH.js.map +0 -1
- package/dashboard/dist/assets/mcp-blCW6IL7.js +0 -2
- package/dashboard/dist/assets/mcp-blCW6IL7.js.map +0 -1
- package/dashboard/dist/assets/mcp-query-DoAyPbjC.js +0 -2
- package/dashboard/dist/assets/mcp-query-DoAyPbjC.js.map +0 -1
- package/dashboard/dist/assets/namespaces-BgbaC3ow.js +0 -2
- package/dashboard/dist/assets/settings-eBRSE0mQ.js +0 -2
- package/dashboard/dist/assets/tasks-tRqClPns.js +0 -2
- package/dashboard/dist/assets/useNatsEvents-Xr43X1fG.js +0 -2
- package/dashboard/dist/assets/useNatsEvents-Xr43X1fG.js.map +0 -1
- package/dashboard/dist/assets/useYamlActivityEvents-BO51u8tm.js.map +0 -1
- package/dashboard/dist/assets/vendor-icons-ZTAKVwGc.js +0 -292
- package/dashboard/dist/assets/vendor-icons-ZTAKVwGc.js.map +0 -1
- package/dashboard/dist/assets/vendor-query-B2UbickB.js +0 -18
- package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +0 -1
- package/dashboard/dist/assets/vendor-react-Cw8Gy8NJ.js +0 -22
- package/dashboard/dist/assets/vendor-react-Cw8Gy8NJ.js.map +0 -1
- package/dashboard/dist/assets/yaml-workflows-BL4V5CQy.js +0 -2
- package/dashboard/dist/assets/yaml-workflows-BL4V5CQy.js.map +0 -1
- package/services/db/README.md +0 -8
- /package/build/{services → lib}/db/migrate.d.ts +0 -0
- /package/{services → build/lib}/db/schemas/002_seed.sql +0 -0
- /package/{services → build/lib}/db/schemas/003_workflow_discovery.sql +0 -0
- /package/{services → build/lib}/db/schemas/004_query_router.sql +0 -0
- /package/{services → build/lib}/db/schemas/005_triage_router.sql +0 -0
- /package/{services → build/lib}/db/schemas/006_oauth.sql +0 -0
- /package/{services → build/lib}/db/schemas/007_security.sql +0 -0
- /package/{services → build/lib}/db/schemas/008_bot_accounts.sql +0 -0
- /package/{services → build/lib}/db/schemas/009_audit_trail.sql +0 -0
- /package/{services → build/lib}/db/schemas/010_credential_providers.sql +0 -0
- /package/{services → build/lib}/db/schemas/012_drop_modality.sql +0 -0
- /package/{services → build/lib}/db/schemas/013_execute_as.sql +0 -0
- /package/{services → build/lib}/db/schemas/014_ephemeral_credentials.sql +0 -0
- /package/build/{services → lib}/events/index.d.ts +0 -0
- /package/build/{services → lib}/events/index.js +0 -0
- /package/build/{services → lib}/events/memory.d.ts +0 -0
- /package/build/{services → lib}/events/memory.js +0 -0
- /package/build/{services → lib}/events/nats.d.ts +0 -0
- /package/build/{services → lib}/events/nats.js +0 -0
- /package/build/{services → lib}/events/publish.d.ts +0 -0
- /package/build/{services → lib}/events/publish.js +0 -0
- /package/build/{services → lib}/events/socketio.d.ts +0 -0
- /package/build/{services → lib}/events/socketio.js +0 -0
- /package/build/{services → lib}/logger/index.d.ts +0 -0
- /package/build/{services → lib}/logger/index.js +0 -0
- /package/build/{services → lib}/logger/pino.d.ts +0 -0
- /package/build/{services → lib}/logger/pino.js +0 -0
- /package/build/{services → lib}/storage/index.d.ts +0 -0
- /package/build/{services → lib}/storage/index.js +0 -0
- /package/build/{services → lib}/storage/local.d.ts +0 -0
- /package/build/{services → lib}/storage/local.js +0 -0
- /package/build/{services → lib}/storage/s3.d.ts +0 -0
- /package/build/{services → lib}/storage/s3.js +0 -0
- /package/build/{services → lib}/storage/types.d.ts +0 -0
- /package/build/{services → lib}/storage/types.js +0 -0
- /package/build/{services → lib}/telemetry/index.d.ts +0 -0
- /package/build/{services → lib}/telemetry/index.js +0 -0
|
@@ -16,7 +16,7 @@ exports.ensureSystemBot = ensureSystemBot;
|
|
|
16
16
|
* They share the same RBAC, OAuth credentials, and delegation tokens
|
|
17
17
|
* as human users — no separate infrastructure needed.
|
|
18
18
|
*/
|
|
19
|
-
const db_1 = require("
|
|
19
|
+
const db_1 = require("../../lib/db");
|
|
20
20
|
const user_1 = require("../user");
|
|
21
21
|
const user_2 = require("../user");
|
|
22
22
|
Object.defineProperty(exports, "addBotRole", { enumerable: true, get: function () { return user_2.addUserRole; } });
|
|
@@ -25,13 +25,7 @@ Object.defineProperty(exports, "getBotRoles", { enumerable: true, get: function
|
|
|
25
25
|
const bot_api_key_1 = require("../auth/bot-api-key");
|
|
26
26
|
Object.defineProperty(exports, "listBotKeys", { enumerable: true, get: function () { return bot_api_key_1.listBotApiKeys; } });
|
|
27
27
|
Object.defineProperty(exports, "revokeBotKey", { enumerable: true, get: function () { return bot_api_key_1.revokeBotApiKey; } });
|
|
28
|
-
const
|
|
29
|
-
SELECT * FROM lt_users
|
|
30
|
-
WHERE account_type = 'bot'
|
|
31
|
-
ORDER BY created_at DESC
|
|
32
|
-
LIMIT $1 OFFSET $2`;
|
|
33
|
-
const COUNT_BOTS = `
|
|
34
|
-
SELECT COUNT(*)::int AS total FROM lt_users WHERE account_type = 'bot'`;
|
|
28
|
+
const sql_1 = require("./sql");
|
|
35
29
|
/**
|
|
36
30
|
* Create a new bot account.
|
|
37
31
|
*/
|
|
@@ -49,7 +43,7 @@ async function createBot(input) {
|
|
|
49
43
|
// Create the user row, then set account_type column
|
|
50
44
|
const user = await (0, user_1.createUser)(userInput);
|
|
51
45
|
const pool = await (0, db_1.getPool)();
|
|
52
|
-
await pool.query(
|
|
46
|
+
await pool.query(sql_1.SET_ACCOUNT_TYPE_BOT, ['bot', user.id]);
|
|
53
47
|
return toBotRecord(user, input.description, input.created_by);
|
|
54
48
|
}
|
|
55
49
|
/**
|
|
@@ -67,8 +61,8 @@ async function getBot(id) {
|
|
|
67
61
|
async function listBots(limit = 50, offset = 0) {
|
|
68
62
|
const pool = await (0, db_1.getPool)();
|
|
69
63
|
const [{ rows }, countResult] = await Promise.all([
|
|
70
|
-
pool.query(LIST_BOTS, [limit, offset]),
|
|
71
|
-
pool.query(COUNT_BOTS),
|
|
64
|
+
pool.query(sql_1.LIST_BOTS, [limit, offset]),
|
|
65
|
+
pool.query(sql_1.COUNT_BOTS),
|
|
72
66
|
]);
|
|
73
67
|
// Attach roles to each bot
|
|
74
68
|
const bots = await Promise.all(rows.map(async (row) => {
|
|
@@ -135,7 +129,7 @@ const SYSTEM_BOT_NAME = 'lt-system';
|
|
|
135
129
|
*/
|
|
136
130
|
async function ensureSystemBot() {
|
|
137
131
|
const pool = await (0, db_1.getPool)();
|
|
138
|
-
const { rows } = await pool.query(
|
|
132
|
+
const { rows } = await pool.query(sql_1.GET_USER_BY_EXTERNAL_ID, [SYSTEM_BOT_NAME]);
|
|
139
133
|
if (rows.length > 0)
|
|
140
134
|
return rows[0].id;
|
|
141
135
|
const bot = await createBot({
|
|
@@ -7,7 +7,7 @@ export declare function runWithToolContext<T>(ctx: ToolContext, fn: () => Promis
|
|
|
7
7
|
/**
|
|
8
8
|
* Retrieve the ToolContext for the current execution scope.
|
|
9
9
|
*
|
|
10
|
-
* Activities: reads from
|
|
10
|
+
* Activities: reads from headers (injected by activity interceptor).
|
|
11
11
|
* Workflow scope: reads from AsyncLocalStorage (set by workflow interceptor).
|
|
12
12
|
* Returns undefined when no identity is available.
|
|
13
13
|
*/
|
|
@@ -7,9 +7,9 @@ exports.getToolContext = getToolContext;
|
|
|
7
7
|
*
|
|
8
8
|
* Two paths, checked in order:
|
|
9
9
|
*
|
|
10
|
-
* 1. **
|
|
10
|
+
* 1. **headers** (production-safe, distributed):
|
|
11
11
|
* The activity interceptor injects `principal` + `scopes` into
|
|
12
|
-
* `
|
|
12
|
+
* `headers`, which HotMesh delivers to the activity worker
|
|
13
13
|
* via `Durable.activity.getContext()`. Works across process boundaries.
|
|
14
14
|
*
|
|
15
15
|
* 2. **AsyncLocalStorage** (workflow-local, single-process):
|
|
@@ -30,15 +30,15 @@ function runWithToolContext(ctx, fn) {
|
|
|
30
30
|
/**
|
|
31
31
|
* Retrieve the ToolContext for the current execution scope.
|
|
32
32
|
*
|
|
33
|
-
* Activities: reads from
|
|
33
|
+
* Activities: reads from headers (injected by activity interceptor).
|
|
34
34
|
* Workflow scope: reads from AsyncLocalStorage (set by workflow interceptor).
|
|
35
35
|
* Returns undefined when no identity is available.
|
|
36
36
|
*/
|
|
37
37
|
function getToolContext() {
|
|
38
|
-
// 1. Try
|
|
38
|
+
// 1. Try headers (activity worker — works distributed)
|
|
39
39
|
try {
|
|
40
40
|
const actCtx = hotmesh_1.Durable.activity.getContext();
|
|
41
|
-
const meta = actCtx?.
|
|
41
|
+
const meta = actCtx?.headers;
|
|
42
42
|
if (meta?.principal) {
|
|
43
43
|
const principal = meta.principal;
|
|
44
44
|
return {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.MissingCredentialError = void 0;
|
|
4
4
|
exports.resolveCredential = resolveCredential;
|
|
5
5
|
const oauth_1 = require("../oauth");
|
|
6
|
-
const logger_1 = require("
|
|
6
|
+
const logger_1 = require("../../lib/logger");
|
|
7
7
|
/**
|
|
8
8
|
* Thrown when credential resolution finds no credential for a provider.
|
|
9
9
|
* Caught by route handlers to return structured 422 responses.
|
|
@@ -9,9 +9,10 @@ exports.storeEphemeral = storeEphemeral;
|
|
|
9
9
|
exports.exchangeEphemeral = exchangeEphemeral;
|
|
10
10
|
exports.revokeEphemeral = revokeEphemeral;
|
|
11
11
|
exports.cleanupExpired = cleanupExpired;
|
|
12
|
-
const db_1 = require("
|
|
12
|
+
const db_1 = require("../../lib/db");
|
|
13
13
|
const crypto_1 = require("../oauth/crypto");
|
|
14
|
-
const logger_1 = require("
|
|
14
|
+
const logger_1 = require("../../lib/logger");
|
|
15
|
+
const sql_1 = require("./sql");
|
|
15
16
|
// ── Token format ────────────────────────────────────────────────────────────
|
|
16
17
|
// Opaque string: eph:v1:<label>:<uuid>
|
|
17
18
|
// The LLM passes these through as-is. Exchange happens inside activity bodies.
|
|
@@ -80,9 +81,7 @@ async function storeEphemeral(value, opts = {}) {
|
|
|
80
81
|
const expiresAt = opts.ttlSeconds
|
|
81
82
|
? `NOW() + ${opts.ttlSeconds} * INTERVAL '1 second'`
|
|
82
83
|
: 'NULL';
|
|
83
|
-
const { rows } = await pool.query(
|
|
84
|
-
VALUES ($1, $2, $3, ${expiresAt})
|
|
85
|
-
RETURNING token`, [Buffer.from(encrypted, 'base64'), opts.label || null, maxUses]);
|
|
84
|
+
const { rows } = await pool.query((0, sql_1.INSERT_EPHEMERAL)(expiresAt), [Buffer.from(encrypted, 'base64'), opts.label || null, maxUses]);
|
|
86
85
|
return rows[0].token;
|
|
87
86
|
}
|
|
88
87
|
/**
|
|
@@ -97,18 +96,13 @@ async function exchangeEphemeral(token) {
|
|
|
97
96
|
const pool = (0, db_1.getPool)();
|
|
98
97
|
// Atomic increment + check in one query.
|
|
99
98
|
// Returns the row if the exchange is valid, nothing if expired/exhausted.
|
|
100
|
-
const { rows } = await pool.query(
|
|
101
|
-
SET use_count = use_count + 1
|
|
102
|
-
WHERE token = $1
|
|
103
|
-
AND (expires_at IS NULL OR expires_at > NOW())
|
|
104
|
-
AND (max_uses = 0 OR use_count < max_uses)
|
|
105
|
-
RETURNING value, use_count, max_uses`, [token]);
|
|
99
|
+
const { rows } = await pool.query(sql_1.EXCHANGE_EPHEMERAL, [token]);
|
|
106
100
|
if (rows.length === 0)
|
|
107
101
|
return null;
|
|
108
102
|
const { value: buf, use_count, max_uses } = rows[0];
|
|
109
103
|
// Auto-delete when max_uses is reached (if bounded)
|
|
110
104
|
if (max_uses > 0 && use_count >= max_uses) {
|
|
111
|
-
await pool.query(
|
|
105
|
+
await pool.query(sql_1.DELETE_EPHEMERAL, [token]);
|
|
112
106
|
}
|
|
113
107
|
return (0, crypto_1.decrypt)(buf.toString('base64'));
|
|
114
108
|
}
|
|
@@ -117,7 +111,7 @@ async function exchangeEphemeral(token) {
|
|
|
117
111
|
*/
|
|
118
112
|
async function revokeEphemeral(token) {
|
|
119
113
|
const pool = (0, db_1.getPool)();
|
|
120
|
-
const { rowCount } = await pool.query(
|
|
114
|
+
const { rowCount } = await pool.query(sql_1.DELETE_EPHEMERAL, [token]);
|
|
121
115
|
return (rowCount ?? 0) > 0;
|
|
122
116
|
}
|
|
123
117
|
/**
|
|
@@ -125,7 +119,6 @@ async function revokeEphemeral(token) {
|
|
|
125
119
|
*/
|
|
126
120
|
async function cleanupExpired() {
|
|
127
121
|
const pool = (0, db_1.getPool)();
|
|
128
|
-
const { rowCount } = await pool.query(
|
|
129
|
-
WHERE expires_at IS NOT NULL AND expires_at < NOW()`);
|
|
122
|
+
const { rowCount } = await pool.query(sql_1.CLEANUP_EXPIRED_EPHEMERAL);
|
|
130
123
|
return rowCount ?? 0;
|
|
131
124
|
}
|
|
@@ -11,21 +11,14 @@
|
|
|
11
11
|
*/
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
exports.resolvePrincipal = resolvePrincipal;
|
|
14
|
-
const db_1 = require("
|
|
14
|
+
const db_1 = require("../../lib/db");
|
|
15
|
+
const sql_1 = require("./sql");
|
|
15
16
|
/** UUID v4 pattern for distinguishing UUIDs from external_ids. */
|
|
16
17
|
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
17
|
-
/** Fetch user + roles by external_id OR id in one query. */
|
|
18
|
-
const GET_USER_WITH_ROLES_FLEXIBLE = `
|
|
19
|
-
SELECT u.id, u.external_id, u.display_name, u.status, u.metadata,
|
|
20
|
-
r.role, r.type AS role_type
|
|
21
|
-
FROM lt_users u
|
|
22
|
-
LEFT JOIN lt_user_roles r ON r.user_id = u.id
|
|
23
|
-
WHERE u.external_id = $1 OR u.id::text = $1
|
|
24
|
-
ORDER BY r.created_at`;
|
|
25
18
|
const ROLE_TYPE_PRIORITY = { superadmin: 3, admin: 2, member: 1 };
|
|
26
19
|
async function resolvePrincipal(identifier) {
|
|
27
20
|
const pool = (0, db_1.getPool)();
|
|
28
|
-
const { rows } = await pool.query(GET_USER_WITH_ROLES_FLEXIBLE, [identifier]);
|
|
21
|
+
const { rows } = await pool.query(sql_1.GET_USER_WITH_ROLES_FLEXIBLE, [identifier]);
|
|
29
22
|
if (rows.length === 0)
|
|
30
23
|
return null;
|
|
31
24
|
const user = rows[0];
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.resolveToolContext = resolveToolContext;
|
|
4
4
|
const delegation_1 = require("../auth/delegation");
|
|
5
5
|
const user_1 = require("../user");
|
|
6
|
-
const logger_1 = require("
|
|
6
|
+
const logger_1 = require("../../lib/logger");
|
|
7
7
|
/** Role type priority for determining highest role type. */
|
|
8
8
|
const ROLE_TYPE_PRIORITY = { superadmin: 3, admin: 2, member: 1 };
|
|
9
9
|
/**
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Build INSERT for ephemeral credentials. expiresExpr is a SQL expression like 'NULL' or "NOW() + N * INTERVAL '1 second'". */
|
|
2
|
+
export declare const INSERT_EPHEMERAL: (expiresExpr: string) => string;
|
|
3
|
+
export declare const EXCHANGE_EPHEMERAL = "\n UPDATE lt_ephemeral_credentials\n SET use_count = use_count + 1\n WHERE token = $1\n AND (expires_at IS NULL OR expires_at > NOW())\n AND (max_uses = 0 OR use_count < max_uses)\n RETURNING value, use_count, max_uses";
|
|
4
|
+
export declare const DELETE_EPHEMERAL = "\n DELETE FROM lt_ephemeral_credentials WHERE token = $1";
|
|
5
|
+
export declare const CLEANUP_EXPIRED_EPHEMERAL = "\n DELETE FROM lt_ephemeral_credentials\n WHERE expires_at IS NOT NULL AND expires_at < NOW()";
|
|
6
|
+
export declare const LIST_BOTS = "\n SELECT * FROM lt_users\n WHERE account_type = 'bot'\n ORDER BY created_at DESC\n LIMIT $1 OFFSET $2";
|
|
7
|
+
export declare const COUNT_BOTS = "\n SELECT COUNT(*)::int AS total FROM lt_users WHERE account_type = 'bot'";
|
|
8
|
+
export declare const SET_ACCOUNT_TYPE_BOT = "\n UPDATE lt_users SET account_type = $1 WHERE id = $2";
|
|
9
|
+
export declare const GET_USER_BY_EXTERNAL_ID = "\n SELECT id FROM lt_users WHERE external_id = $1";
|
|
10
|
+
export declare const GET_USER_WITH_ROLES_FLEXIBLE = "\n SELECT u.id, u.external_id, u.display_name, u.status, u.metadata,\n r.role, r.type AS role_type\n FROM lt_users u\n LEFT JOIN lt_user_roles r ON r.user_id = u.id\n WHERE u.external_id = $1 OR u.id::text = $1\n ORDER BY r.created_at";
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ─── Ephemeral credentials ──────────────────────────────────────────────────
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.GET_USER_WITH_ROLES_FLEXIBLE = exports.GET_USER_BY_EXTERNAL_ID = exports.SET_ACCOUNT_TYPE_BOT = exports.COUNT_BOTS = exports.LIST_BOTS = exports.CLEANUP_EXPIRED_EPHEMERAL = exports.DELETE_EPHEMERAL = exports.EXCHANGE_EPHEMERAL = exports.INSERT_EPHEMERAL = void 0;
|
|
5
|
+
/** Build INSERT for ephemeral credentials. expiresExpr is a SQL expression like 'NULL' or "NOW() + N * INTERVAL '1 second'". */
|
|
6
|
+
const INSERT_EPHEMERAL = (expiresExpr) => `
|
|
7
|
+
INSERT INTO lt_ephemeral_credentials (value, label, max_uses, expires_at)
|
|
8
|
+
VALUES ($1, $2, $3, ${expiresExpr})
|
|
9
|
+
RETURNING token`;
|
|
10
|
+
exports.INSERT_EPHEMERAL = INSERT_EPHEMERAL;
|
|
11
|
+
exports.EXCHANGE_EPHEMERAL = `
|
|
12
|
+
UPDATE lt_ephemeral_credentials
|
|
13
|
+
SET use_count = use_count + 1
|
|
14
|
+
WHERE token = $1
|
|
15
|
+
AND (expires_at IS NULL OR expires_at > NOW())
|
|
16
|
+
AND (max_uses = 0 OR use_count < max_uses)
|
|
17
|
+
RETURNING value, use_count, max_uses`;
|
|
18
|
+
exports.DELETE_EPHEMERAL = `
|
|
19
|
+
DELETE FROM lt_ephemeral_credentials WHERE token = $1`;
|
|
20
|
+
exports.CLEANUP_EXPIRED_EPHEMERAL = `
|
|
21
|
+
DELETE FROM lt_ephemeral_credentials
|
|
22
|
+
WHERE expires_at IS NOT NULL AND expires_at < NOW()`;
|
|
23
|
+
// ─── Bot accounts ───────────────────────────────────────────────────────────
|
|
24
|
+
exports.LIST_BOTS = `
|
|
25
|
+
SELECT * FROM lt_users
|
|
26
|
+
WHERE account_type = 'bot'
|
|
27
|
+
ORDER BY created_at DESC
|
|
28
|
+
LIMIT $1 OFFSET $2`;
|
|
29
|
+
exports.COUNT_BOTS = `
|
|
30
|
+
SELECT COUNT(*)::int AS total FROM lt_users WHERE account_type = 'bot'`;
|
|
31
|
+
exports.SET_ACCOUNT_TYPE_BOT = `
|
|
32
|
+
UPDATE lt_users SET account_type = $1 WHERE id = $2`;
|
|
33
|
+
exports.GET_USER_BY_EXTERNAL_ID = `
|
|
34
|
+
SELECT id FROM lt_users WHERE external_id = $1`;
|
|
35
|
+
// ─── Principal resolution ───────────────────────────────────────────────────
|
|
36
|
+
exports.GET_USER_WITH_ROLES_FLEXIBLE = `
|
|
37
|
+
SELECT u.id, u.external_id, u.display_name, u.status, u.metadata,
|
|
38
|
+
r.role, r.type AS role_type
|
|
39
|
+
FROM lt_users u
|
|
40
|
+
LEFT JOIN lt_user_roles r ON r.user_id = u.id
|
|
41
|
+
WHERE u.external_id = $1 OR u.id::text = $1
|
|
42
|
+
ORDER BY r.created_at`;
|
|
@@ -7,6 +7,7 @@ export interface McpQueryInput {
|
|
|
7
7
|
tags?: string[];
|
|
8
8
|
wait?: boolean;
|
|
9
9
|
direct?: boolean;
|
|
10
|
+
context?: Record<string, any>;
|
|
10
11
|
userId?: string;
|
|
11
12
|
}
|
|
12
13
|
export interface McpQueryResult {
|
|
@@ -27,4 +28,15 @@ export interface DescribeResult {
|
|
|
27
28
|
tags: string[];
|
|
28
29
|
}
|
|
29
30
|
export declare function startMcpQuery(input: McpQueryInput): Promise<McpQueryResult>;
|
|
31
|
+
export interface WorkflowBuilderInput {
|
|
32
|
+
prompt: string;
|
|
33
|
+
tags?: string[];
|
|
34
|
+
wait?: boolean;
|
|
35
|
+
feedback?: string;
|
|
36
|
+
prior_yaml?: string;
|
|
37
|
+
answers?: string;
|
|
38
|
+
prior_questions?: string[];
|
|
39
|
+
userId?: string;
|
|
40
|
+
}
|
|
41
|
+
export declare function startWorkflowBuilder(input: WorkflowBuilderInput): Promise<McpQueryResult>;
|
|
30
42
|
export declare function describeWorkflow(input: DescribeInput): Promise<DescribeResult>;
|
|
@@ -5,26 +5,25 @@
|
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.startMcpQuery = startMcpQuery;
|
|
8
|
+
exports.startWorkflowBuilder = startWorkflowBuilder;
|
|
8
9
|
exports.describeWorkflow = describeWorkflow;
|
|
9
|
-
const pg_1 = require("pg");
|
|
10
10
|
const hotmesh_1 = require("@hotmeshio/hotmesh");
|
|
11
|
-
const
|
|
11
|
+
const db_1 = require("../../lib/db");
|
|
12
12
|
const defaults_1 = require("../../modules/defaults");
|
|
13
13
|
const llm_1 = require("../llm");
|
|
14
14
|
const prompts_1 = require("./prompts");
|
|
15
15
|
// ── MCP query invocation ─────────────────────────────────────────────────────
|
|
16
16
|
async function startMcpQuery(input) {
|
|
17
|
-
const { prompt, tags, wait = true, direct = false, userId } = input;
|
|
17
|
+
const { prompt, tags, wait = true, direct = false, context, userId } = input;
|
|
18
18
|
const startTime = Date.now();
|
|
19
|
-
const
|
|
20
|
-
const client = new hotmesh_1.Durable.Client({ connection });
|
|
19
|
+
const client = new hotmesh_1.Durable.Client({ connection: (0, db_1.getConnection)() });
|
|
21
20
|
const wfName = direct ? 'mcpQuery' : 'mcpQueryRouter';
|
|
22
21
|
const entity = direct ? 'mcpQuery' : 'mcpQueryRouter';
|
|
23
22
|
const prefix = direct ? 'mcp-query-direct' : 'mcp-query';
|
|
24
23
|
const workflowId = `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
25
24
|
const handle = await client.workflow.start({
|
|
26
25
|
args: [{
|
|
27
|
-
data: { prompt, tags },
|
|
26
|
+
data: { prompt, tags, context },
|
|
28
27
|
metadata: { source: 'dashboard' },
|
|
29
28
|
lt: { userId },
|
|
30
29
|
}],
|
|
@@ -46,6 +45,35 @@ async function startMcpQuery(input) {
|
|
|
46
45
|
duration_ms: Date.now() - startTime,
|
|
47
46
|
};
|
|
48
47
|
}
|
|
48
|
+
async function startWorkflowBuilder(input) {
|
|
49
|
+
const { prompt, tags, wait = true, feedback, prior_yaml, answers, prior_questions, userId } = input;
|
|
50
|
+
const startTime = Date.now();
|
|
51
|
+
const client = new hotmesh_1.Durable.Client({ connection: (0, db_1.getConnection)() });
|
|
52
|
+
const workflowId = `wf-builder-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
53
|
+
const handle = await client.workflow.start({
|
|
54
|
+
args: [{
|
|
55
|
+
data: { prompt, tags, feedback, prior_yaml, answers, prior_questions },
|
|
56
|
+
metadata: { source: 'dashboard' },
|
|
57
|
+
lt: { userId },
|
|
58
|
+
}],
|
|
59
|
+
taskQueue: 'long-tail-system',
|
|
60
|
+
workflowName: 'mcpWorkflowBuilder',
|
|
61
|
+
workflowId,
|
|
62
|
+
expire: defaults_1.JOB_EXPIRE_SECS,
|
|
63
|
+
entity: 'mcpWorkflowBuilder',
|
|
64
|
+
});
|
|
65
|
+
if (wait === false) {
|
|
66
|
+
return { workflow_id: workflowId, status: 'started', prompt };
|
|
67
|
+
}
|
|
68
|
+
const result = await handle.result({ state: true });
|
|
69
|
+
const data = result?.data || result;
|
|
70
|
+
return {
|
|
71
|
+
...data,
|
|
72
|
+
prompt,
|
|
73
|
+
workflow_id: workflowId,
|
|
74
|
+
duration_ms: Date.now() - startTime,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
49
77
|
// ── Workflow description generation ──────────────────────────────────────────
|
|
50
78
|
async function describeWorkflow(input) {
|
|
51
79
|
const { prompt, result_title, result_summary } = input;
|
|
@@ -38,7 +38,7 @@ exports.ltClaimEscalation = ltClaimEscalation;
|
|
|
38
38
|
exports.ltEnrichEscalationRouting = ltEnrichEscalationRouting;
|
|
39
39
|
exports.ltCreateEscalation = ltCreateEscalation;
|
|
40
40
|
const escalationService = __importStar(require("../../escalation"));
|
|
41
|
-
const logger_1 = require("
|
|
41
|
+
const logger_1 = require("../../../lib/logger");
|
|
42
42
|
/**
|
|
43
43
|
* Resolve an escalation record. Called by the interceptor after
|
|
44
44
|
* detecting a re-run (resolver data present in the envelope).
|
|
@@ -42,17 +42,20 @@ exports.ltAppendMilestones = ltAppendMilestones;
|
|
|
42
42
|
exports.ltGetTaskByWorkflowId = ltGetTaskByWorkflowId;
|
|
43
43
|
exports.ltGetTask = ltGetTask;
|
|
44
44
|
const taskService = __importStar(require("../../task"));
|
|
45
|
-
const publish_1 = require("
|
|
46
|
-
const db_1 = require("
|
|
45
|
+
const publish_1 = require("../../../lib/events/publish");
|
|
46
|
+
const db_1 = require("../../../lib/db");
|
|
47
|
+
const sql_1 = require("../../user/sql");
|
|
47
48
|
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
48
|
-
/** Resolve an
|
|
49
|
+
/** Resolve an identifier to a verified lt_users UUID. Returns undefined if not found. */
|
|
49
50
|
async function resolveUserUuid(identifier) {
|
|
50
51
|
if (!identifier)
|
|
51
52
|
return undefined;
|
|
52
|
-
if (UUID_RE.test(identifier))
|
|
53
|
-
return identifier;
|
|
54
53
|
const pool = (0, db_1.getPool)();
|
|
55
|
-
|
|
54
|
+
if (UUID_RE.test(identifier)) {
|
|
55
|
+
const { rows } = await pool.query(sql_1.VERIFY_USER_BY_ID, [identifier]);
|
|
56
|
+
return rows[0]?.id ?? undefined;
|
|
57
|
+
}
|
|
58
|
+
const { rows } = await pool.query(sql_1.GET_USER_BY_EXTERNAL_ID, [identifier]);
|
|
56
59
|
return rows[0]?.id ?? undefined;
|
|
57
60
|
}
|
|
58
61
|
/**
|
|
@@ -2,11 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ltSignalParent = ltSignalParent;
|
|
4
4
|
exports.ltStartWorkflow = ltStartWorkflow;
|
|
5
|
-
const pg_1 = require("pg");
|
|
6
5
|
const hotmesh_1 = require("@hotmeshio/hotmesh");
|
|
7
|
-
const
|
|
6
|
+
const db_1 = require("../../../lib/db");
|
|
8
7
|
const defaults_1 = require("../../../modules/defaults");
|
|
9
|
-
const logger_1 = require("
|
|
8
|
+
const logger_1 = require("../../../lib/logger");
|
|
10
9
|
/**
|
|
11
10
|
* Signal an orchestrator workflow from within the interceptor.
|
|
12
11
|
* Used after a child workflow succeeds to send the result back
|
|
@@ -14,7 +13,7 @@ const logger_1 = require("../../logger");
|
|
|
14
13
|
*/
|
|
15
14
|
async function ltSignalParent(input) {
|
|
16
15
|
const client = new hotmesh_1.Durable.Client({
|
|
17
|
-
connection:
|
|
16
|
+
connection: (0, db_1.getConnection)(),
|
|
18
17
|
});
|
|
19
18
|
const handle = await client.workflow.getHandle(input.parentTaskQueue, input.parentWorkflowType, input.parentWorkflowId);
|
|
20
19
|
await handle.signal(input.signalId, input.data);
|
|
@@ -28,7 +27,7 @@ async function ltSignalParent(input) {
|
|
|
28
27
|
*/
|
|
29
28
|
async function ltStartWorkflow(input) {
|
|
30
29
|
const client = new hotmesh_1.Durable.Client({
|
|
31
|
-
connection:
|
|
30
|
+
connection: (0, db_1.getConnection)(),
|
|
32
31
|
});
|
|
33
32
|
await client.workflow.start({
|
|
34
33
|
workflowName: input.workflowName,
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* the stored activity result → after-phase runs
|
|
11
11
|
*
|
|
12
12
|
* Before phase:
|
|
13
|
-
* Injects the envelope's pre-resolved principal into
|
|
13
|
+
* Injects the envelope's pre-resolved principal into headers
|
|
14
14
|
* so activities can read it via `Durable.activity.getContext()`.
|
|
15
15
|
* Skipped for `lt*` interceptor activities (they don't need identity).
|
|
16
16
|
*
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createLTActivityInterceptor = createLTActivityInterceptor;
|
|
4
4
|
const hotmesh_1 = require("@hotmeshio/hotmesh");
|
|
5
|
-
const publish_1 = require("
|
|
5
|
+
const publish_1 = require("../../lib/events/publish");
|
|
6
6
|
const state_1 = require("./state");
|
|
7
7
|
/**
|
|
8
8
|
* Create an LT Activity Interceptor.
|
|
@@ -16,7 +16,7 @@ const state_1 = require("./state");
|
|
|
16
16
|
* the stored activity result → after-phase runs
|
|
17
17
|
*
|
|
18
18
|
* Before phase:
|
|
19
|
-
* Injects the envelope's pre-resolved principal into
|
|
19
|
+
* Injects the envelope's pre-resolved principal into headers
|
|
20
20
|
* so activities can read it via `Durable.activity.getContext()`.
|
|
21
21
|
* Skipped for `lt*` interceptor activities (they don't need identity).
|
|
22
22
|
*
|
|
@@ -32,7 +32,7 @@ function createLTActivityInterceptor(_options) {
|
|
|
32
32
|
async execute(activityCtx, workflowCtx, next) {
|
|
33
33
|
try {
|
|
34
34
|
// ── Before phase ─────────────────────────────────────────
|
|
35
|
-
// Inject principal into
|
|
35
|
+
// Inject principal into headers for non-interceptor activities.
|
|
36
36
|
// The principal was resolved at the front door and travels in the envelope.
|
|
37
37
|
if (!activityCtx.activityName.startsWith('lt')) {
|
|
38
38
|
const envelope = (0, state_1.extractEnvelope)(workflowCtx);
|
|
@@ -40,8 +40,8 @@ function createLTActivityInterceptor(_options) {
|
|
|
40
40
|
if (principal) {
|
|
41
41
|
activityCtx.options = {
|
|
42
42
|
...activityCtx.options,
|
|
43
|
-
|
|
44
|
-
...(activityCtx.options?.
|
|
43
|
+
headers: {
|
|
44
|
+
...(activityCtx.options?.headers ?? {}),
|
|
45
45
|
principal,
|
|
46
46
|
scopes: envelope.lt?.scopes,
|
|
47
47
|
...(envelope.lt?.initiatingPrincipal
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handleCompletion = handleCompletion;
|
|
4
4
|
const state_1 = require("./state");
|
|
5
|
-
const publish_1 = require("
|
|
5
|
+
const publish_1 = require("../../lib/events/publish");
|
|
6
6
|
/**
|
|
7
7
|
* Handle a workflow that returned { type: 'return' }.
|
|
8
8
|
*
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.handleEscalation = handleEscalation;
|
|
4
4
|
exports.handleErrorEscalation = handleErrorEscalation;
|
|
5
5
|
const state_1 = require("./state");
|
|
6
|
-
const publish_1 = require("
|
|
6
|
+
const publish_1 = require("../../lib/events/publish");
|
|
7
7
|
const credentials_1 = require("../iam/credentials");
|
|
8
8
|
/**
|
|
9
9
|
* Handle a workflow that returned { type: 'escalation' }.
|
|
@@ -56,12 +56,12 @@ const DEFAULT_ACTIVITY_QUEUE = 'lt-interceptor';
|
|
|
56
56
|
*/
|
|
57
57
|
async function registerLT(connection, options) {
|
|
58
58
|
const taskQueue = options?.taskQueue ?? DEFAULT_ACTIVITY_QUEUE;
|
|
59
|
-
await hotmesh_1.Durable.registerActivityWorker({ connection, taskQueue }, interceptorActivities, taskQueue);
|
|
60
|
-
hotmesh_1.Durable.
|
|
59
|
+
await hotmesh_1.Durable.registerActivityWorker({ connection, taskQueue, guid: `interceptor::${taskQueue}-${hotmesh_1.Durable.guid()}` }, interceptorActivities, taskQueue);
|
|
60
|
+
hotmesh_1.Durable.registerInboundInterceptor(createLTInterceptor({
|
|
61
61
|
activityTaskQueue: taskQueue,
|
|
62
62
|
defaultRole: options?.defaultRole,
|
|
63
63
|
}));
|
|
64
|
-
hotmesh_1.Durable.
|
|
64
|
+
hotmesh_1.Durable.registerOutboundInterceptor((0, activity_interceptor_1.createLTActivityInterceptor)());
|
|
65
65
|
}
|
|
66
66
|
/**
|
|
67
67
|
* The Long Tail interceptor wraps every registered workflow.
|
|
@@ -96,7 +96,7 @@ function createLTInterceptor(options) {
|
|
|
96
96
|
const activities = hotmesh_1.Durable.workflow.proxyActivities({
|
|
97
97
|
activities: interceptorActivities,
|
|
98
98
|
taskQueue: activityTaskQueue,
|
|
99
|
-
|
|
99
|
+
retry: { maximumAttempts: 3 },
|
|
100
100
|
});
|
|
101
101
|
// 2. Load config — unregistered workflows still get ToolContext
|
|
102
102
|
const wfConfig = await activities.ltGetWorkflowConfig(wf.workflowName);
|
|
@@ -13,7 +13,7 @@ exports.resolveReRun = resolveReRun;
|
|
|
13
13
|
exports.ensureTaskWithRouting = ensureTaskWithRouting;
|
|
14
14
|
exports.publishStartedEvents = publishStartedEvents;
|
|
15
15
|
exports.completePlainResult = completePlainResult;
|
|
16
|
-
const publish_1 = require("
|
|
16
|
+
const publish_1 = require("../../lib/events/publish");
|
|
17
17
|
// ── Helpers ──────────────────────────────────────────────────────────────────
|
|
18
18
|
/** Extract workflow identity fields from the HotMesh context map. */
|
|
19
19
|
function extractWorkflowIdentity(ctx) {
|
|
@@ -35,9 +35,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.maintenanceRegistry = void 0;
|
|
37
37
|
const hotmesh_1 = require("@hotmeshio/hotmesh");
|
|
38
|
-
const
|
|
39
|
-
const
|
|
40
|
-
const logger_1 = require("../logger");
|
|
38
|
+
const db_1 = require("../../lib/db");
|
|
39
|
+
const logger_1 = require("../../lib/logger");
|
|
41
40
|
const dbaService = __importStar(require("../dba"));
|
|
42
41
|
const CRON_TOPIC = 'lt.maintenance.prune';
|
|
43
42
|
const CRON_ID = 'lt-maintenance-nightly';
|
|
@@ -115,7 +114,7 @@ class LTMaintenanceRegistry {
|
|
|
115
114
|
return;
|
|
116
115
|
const rules = this._config.rules;
|
|
117
116
|
const schedule = this._config.schedule;
|
|
118
|
-
const connection =
|
|
117
|
+
const connection = (0, db_1.getConnection)();
|
|
119
118
|
await hotmesh_1.Virtual.cron({
|
|
120
119
|
topic: CRON_TOPIC,
|
|
121
120
|
connection,
|
|
@@ -147,7 +146,7 @@ class LTMaintenanceRegistry {
|
|
|
147
146
|
if (!this.connected)
|
|
148
147
|
return;
|
|
149
148
|
try {
|
|
150
|
-
const connection =
|
|
149
|
+
const connection = (0, db_1.getConnection)();
|
|
151
150
|
await hotmesh_1.Virtual.interrupt({
|
|
152
151
|
topic: CRON_TOPIC,
|
|
153
152
|
connection,
|
|
@@ -34,12 +34,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.BuiltInMcpAdapter = void 0;
|
|
37
|
-
const logger_1 = require("
|
|
37
|
+
const logger_1 = require("../../lib/logger");
|
|
38
38
|
const mcpClient = __importStar(require("./client"));
|
|
39
39
|
const mcpServer = __importStar(require("./server"));
|
|
40
|
-
const mcpDbServer = __importStar(require("./db-server"));
|
|
41
|
-
const mcpWorkflowCompilerServer = __importStar(require("./workflow-compiler-server"));
|
|
42
|
-
const mcpWorkflowServer = __importStar(require("./workflow-server"));
|
|
43
40
|
const mcpDbService = __importStar(require("./db"));
|
|
44
41
|
/**
|
|
45
42
|
* Built-in MCP adapter.
|
|
@@ -60,15 +57,6 @@ class BuiltInMcpAdapter {
|
|
|
60
57
|
});
|
|
61
58
|
logger_1.loggerRegistry.info('[lt-mcp] human queue server started');
|
|
62
59
|
}
|
|
63
|
-
// Start DB query MCP server (always available)
|
|
64
|
-
await mcpDbServer.createDbServer();
|
|
65
|
-
logger_1.loggerRegistry.info('[lt-mcp] db query server started');
|
|
66
|
-
// Start Workflow Compiler MCP server (always available)
|
|
67
|
-
await mcpWorkflowCompilerServer.createWorkflowCompilerServer();
|
|
68
|
-
logger_1.loggerRegistry.info('[lt-mcp] workflow compiler server started');
|
|
69
|
-
// Start MCP Workflows server (exposes compiled YAML workflows as tools)
|
|
70
|
-
await mcpWorkflowServer.createWorkflowServer();
|
|
71
|
-
logger_1.loggerRegistry.info('[lt-mcp] workflow server started');
|
|
72
60
|
// Connect to auto-connect servers from DB
|
|
73
61
|
await mcpClient.connectAutoServers();
|
|
74
62
|
// Also connect to explicitly specified servers
|
|
@@ -91,9 +79,6 @@ class BuiltInMcpAdapter {
|
|
|
91
79
|
}
|
|
92
80
|
async disconnect() {
|
|
93
81
|
await mcpClient.disconnectAll();
|
|
94
|
-
await mcpWorkflowServer.stopWorkflowServer();
|
|
95
|
-
await mcpWorkflowCompilerServer.stopWorkflowCompilerServer();
|
|
96
|
-
await mcpDbServer.stopDbServer();
|
|
97
82
|
await mcpServer.stopServer();
|
|
98
83
|
logger_1.loggerRegistry.info('[lt-mcp] disconnected');
|
|
99
84
|
}
|
|
@@ -20,7 +20,7 @@ export declare function disconnectFromServer(serverId: string): Promise<void>;
|
|
|
20
20
|
* Returns the client or null if not found.
|
|
21
21
|
*
|
|
22
22
|
* Built-in servers are connected once under their canonical factory name.
|
|
23
|
-
* Alias lookups (e.g. '
|
|
23
|
+
* Alias lookups (e.g. 'translation' matching 'long-tail-translation') reuse
|
|
24
24
|
* the same client instance to avoid double-connecting the singleton server.
|
|
25
25
|
*/
|
|
26
26
|
export declare function resolveClient(serverId: string): Promise<Client | null>;
|
|
@@ -40,6 +40,15 @@ export declare function listServerTools(serverId: string): Promise<LTMcpToolMani
|
|
|
40
40
|
* Check if a server is connected.
|
|
41
41
|
*/
|
|
42
42
|
export declare function isConnected(serverId: string): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Test connectivity to an MCP server without persisting.
|
|
45
|
+
* Creates a temporary client, connects, lists tools, then disconnects.
|
|
46
|
+
*/
|
|
47
|
+
export declare function testConnection(transportType: 'stdio' | 'sse' | 'streamable-http', transportConfig: Record<string, any>): Promise<{
|
|
48
|
+
success: boolean;
|
|
49
|
+
tools: LTMcpToolManifest[];
|
|
50
|
+
error?: string;
|
|
51
|
+
}>;
|
|
43
52
|
/**
|
|
44
53
|
* Clear all state. Used in tests.
|
|
45
54
|
*/
|