@hotmeshio/long-tail 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- 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 +3 -3
- 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 +87 -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 +2 -1
- package/build/routes/mcp.js +3 -2
- 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/crud.js +1 -1
- package/build/routes/yaml-workflows/deployment.js +25 -0
- 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.js +4 -5
- 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 +1 -0
- package/build/services/insight/index.js +4 -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 +1 -1
- package/build/services/mcp/client/connection.js +2 -2
- 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/tools.js +17 -4
- package/build/services/mcp/db.js +1 -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 +6 -0
- package/build/services/mcp/sql.js +34 -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.js +1 -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/pipeline/analyze.js +1 -1
- package/build/services/yaml-workflow/pipeline/build/dag.js +10 -5
- 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/validate.js +2 -2
- package/build/services/yaml-workflow/workers/callbacks.js +1 -1
- package/build/services/yaml-workflow/workers/events.js +2 -2
- package/build/services/yaml-workflow/workers/register.js +8 -8
- 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 +5 -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/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 +19 -8
- 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 +28 -28
- 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 +4 -2
- 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 +221 -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 +1954 -322
- package/build/system/seed/server-definitions.js +65 -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/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/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 +94 -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/user.d.ts +2 -0
- 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-CTyAMUJR.js +2 -0
- package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js.map +1 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js.map +1 -0
- package/dashboard/dist/assets/BotPicker-C51nKFEu.js +2 -0
- package/dashboard/dist/assets/{BotPicker-D6FYW1Gt.js.map → BotPicker-C51nKFEu.js.map} +1 -1
- package/dashboard/dist/assets/CollapsibleSection-BSyfd8uL.js +2 -0
- package/dashboard/dist/assets/{CollapsibleSection-Cxk4wvjT.js.map → CollapsibleSection-BSyfd8uL.js.map} +1 -1
- package/dashboard/dist/assets/ConfirmDeleteModal-CBdhia5T.js +2 -0
- package/dashboard/dist/assets/{ConfirmDeleteModal-FSXyKjaB.js.map → ConfirmDeleteModal-CBdhia5T.js.map} +1 -1
- package/dashboard/dist/assets/CopyableId-dGlewBCS.js +2 -0
- package/dashboard/dist/assets/{CopyableId-CBdxWfp8.js.map → CopyableId-dGlewBCS.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js +2 -0
- package/dashboard/dist/assets/{CredentialsPage-Ikzsot0w.js.map → CredentialsPage-CoBNFSAu.js.map} +1 -1
- package/dashboard/dist/assets/CustomDurationPicker-BataWFj8.js +2 -0
- package/dashboard/dist/assets/{CustomDurationPicker-CAninCbl.js.map → CustomDurationPicker-BataWFj8.js.map} +1 -1
- package/dashboard/dist/assets/DataTable-B3uf5CCo.js +2 -0
- package/dashboard/dist/assets/DataTable-B3uf5CCo.js.map +1 -0
- package/dashboard/dist/assets/ElapsedCell-G5oSwTpT.js +2 -0
- package/dashboard/dist/assets/ElapsedCell-G5oSwTpT.js.map +1 -0
- package/dashboard/dist/assets/EmptyState-BChBJNGS.js +2 -0
- package/dashboard/dist/assets/{EmptyState-2CmV-IaS.js.map → EmptyState-BChBJNGS.js.map} +1 -1
- package/dashboard/dist/assets/EscalationsOverview-CxUv8xjG.js +2 -0
- package/dashboard/dist/assets/{EscalationsOverview-GXYFPASS.js.map → EscalationsOverview-CxUv8xjG.js.map} +1 -1
- package/dashboard/dist/assets/EventTable-CVt8B0BZ.js +2 -0
- package/dashboard/dist/assets/{EventTable-B01oJf6Y.js.map → EventTable-CVt8B0BZ.js.map} +1 -1
- package/dashboard/dist/assets/FilterBar-CShf0oe7.js +2 -0
- package/dashboard/dist/assets/{FilterBar-Ck4K4rzu.js.map → FilterBar-CShf0oe7.js.map} +1 -1
- package/dashboard/dist/assets/McpOverview-CbaZRnJl.js +2 -0
- package/dashboard/dist/assets/{McpOverview-JkvRcX2e.js.map → McpOverview-CbaZRnJl.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js.map +1 -0
- package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js +2 -0
- package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js.map +1 -0
- package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js +2 -0
- package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js.map +1 -0
- package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js +2 -0
- package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js.map +1 -0
- package/dashboard/dist/assets/Modal-CI5RBPOQ.js +2 -0
- package/dashboard/dist/assets/{Modal-B4rbIVAn.js.map → Modal-CI5RBPOQ.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js +2 -0
- package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js.map +1 -0
- package/dashboard/dist/assets/PageHeader-SMD9qtOO.js +2 -0
- package/dashboard/dist/assets/PageHeader-SMD9qtOO.js.map +1 -0
- package/dashboard/dist/assets/PageHeaderWithStats-TikLQsTp.js +2 -0
- package/dashboard/dist/assets/PageHeaderWithStats-TikLQsTp.js.map +1 -0
- package/dashboard/dist/assets/PriorityBadge-CQ0EsLTA.js +2 -0
- package/dashboard/dist/assets/{PriorityBadge-DfQY9St9.js.map → PriorityBadge-CQ0EsLTA.js.map} +1 -1
- package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js +2 -0
- package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js.map +1 -0
- package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js +2 -0
- package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js.map +1 -0
- package/dashboard/dist/assets/RefreshButton-BcQDObrv.js +2 -0
- package/dashboard/dist/assets/RefreshButton-BcQDObrv.js.map +1 -0
- package/dashboard/dist/assets/RolePill-Crj4TH5p.js +2 -0
- package/dashboard/dist/assets/{RolePill-BTPa8L-P.js.map → RolePill-Crj4TH5p.js.map} +1 -1
- package/dashboard/dist/assets/RolesPage-C_RInUwS.js +2 -0
- package/dashboard/dist/assets/RolesPage-C_RInUwS.js.map +1 -0
- package/dashboard/dist/assets/RowActions-Cp5HyK_w.js +2 -0
- package/dashboard/dist/assets/{RowActions-Dg-Fsm5O.js.map → RowActions-Cp5HyK_w.js.map} +1 -1
- package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js +2 -0
- package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js.map +1 -0
- package/dashboard/dist/assets/StatCard-BKZLSgNV.js +2 -0
- package/dashboard/dist/assets/{StatCard-DlgF0CJC.js.map → StatCard-BKZLSgNV.js.map} +1 -1
- package/dashboard/dist/assets/StatusBadge-BYNGGZK5.js +2 -0
- package/dashboard/dist/assets/StatusBadge-BYNGGZK5.js.map +1 -0
- package/dashboard/dist/assets/StickyPagination-CTosgiU2.js +2 -0
- package/dashboard/dist/assets/{StickyPagination-F9FZsRy9.js.map → StickyPagination-CTosgiU2.js.map} +1 -1
- package/dashboard/dist/assets/SwimlaneTimeline-ylG5Ps1s.js +2 -0
- package/dashboard/dist/assets/SwimlaneTimeline-ylG5Ps1s.js.map +1 -0
- package/dashboard/dist/assets/TaskDetailPage-C9pDGdD2.js +2 -0
- package/dashboard/dist/assets/TaskDetailPage-C9pDGdD2.js.map +1 -0
- package/dashboard/dist/assets/TaskQueuePill-BtJbZTT0.js +2 -0
- package/dashboard/dist/assets/{TaskQueuePill-awmtb0qw.js.map → TaskQueuePill-BtJbZTT0.js.map} +1 -1
- package/dashboard/dist/assets/TasksListPage-DtFLUEhg.js +2 -0
- package/dashboard/dist/assets/{TasksListPage-C_QF23c1.js.map → TasksListPage-DtFLUEhg.js.map} +1 -1
- package/dashboard/dist/assets/TimeAgo-WuM6xImZ.js +2 -0
- package/dashboard/dist/assets/TimeAgo-WuM6xImZ.js.map +1 -0
- package/dashboard/dist/assets/TimestampCell-IVL_-Upy.js +2 -0
- package/dashboard/dist/assets/TimestampCell-IVL_-Upy.js.map +1 -0
- package/dashboard/dist/assets/UserName-DU9qeg13.js +2 -0
- package/dashboard/dist/assets/{UserName-DaP4YAKr.js.map → UserName-DU9qeg13.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js +2 -0
- package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js.map +1 -0
- package/dashboard/dist/assets/WorkflowPill-Diw8iWBP.js +2 -0
- package/dashboard/dist/assets/WorkflowPill-Diw8iWBP.js.map +1 -0
- package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js +2 -0
- package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js.map +1 -0
- package/dashboard/dist/assets/WorkflowsOverview-CPuvA4t3.js +2 -0
- package/dashboard/dist/assets/{WorkflowsOverview-D9OzzQqw.js.map → WorkflowsOverview-CPuvA4t3.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js.map +1 -0
- package/dashboard/dist/assets/{bots-BkKVMbUW.js → bots-BPiZXf2h.js} +2 -2
- package/dashboard/dist/assets/{bots-BkKVMbUW.js.map → bots-BPiZXf2h.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-DTY_OKRh.js +2 -0
- package/dashboard/dist/assets/escalation-DTY_OKRh.js.map +1 -0
- package/dashboard/dist/assets/escalation-columns-C91fHSkp.js +2 -0
- package/dashboard/dist/assets/{escalation-columns-D6aqStaY.js.map → escalation-columns-C91fHSkp.js.map} +1 -1
- package/dashboard/dist/assets/helpers-DBUZ9pnG.js +2 -0
- package/dashboard/dist/assets/helpers-DBUZ9pnG.js.map +1 -0
- package/dashboard/dist/assets/index-BOeA-gfK.js +17 -0
- package/dashboard/dist/assets/{index-X85K5bHC.js.map → index-BOeA-gfK.js.map} +1 -1
- package/dashboard/dist/assets/index-BZ6K_kmL.js +3 -0
- package/dashboard/dist/assets/index-BZ6K_kmL.js.map +1 -0
- package/dashboard/dist/assets/index-Bpm0yeoi.js +2 -0
- package/dashboard/dist/assets/index-Bpm0yeoi.js.map +1 -0
- package/dashboard/dist/assets/index-BtOwLI0K.js +2 -0
- package/dashboard/dist/assets/{index-DTPzZr_X.js.map → index-BtOwLI0K.js.map} +1 -1
- package/dashboard/dist/assets/index-CBF3ZvRZ.js +6 -0
- package/dashboard/dist/assets/index-CBF3ZvRZ.js.map +1 -0
- package/dashboard/dist/assets/index-CDWOfCmi.js +2 -0
- package/dashboard/dist/assets/index-CDWOfCmi.js.map +1 -0
- package/dashboard/dist/assets/index-Ce6sL__n.js +2 -0
- package/dashboard/dist/assets/index-Ce6sL__n.js.map +1 -0
- package/dashboard/dist/assets/index-DSzSoku1.js +283 -0
- package/dashboard/dist/assets/index-DSzSoku1.js.map +1 -0
- package/dashboard/dist/assets/index-D_qEAYrg.js +2 -0
- package/dashboard/dist/assets/index-D_qEAYrg.js.map +1 -0
- package/dashboard/dist/assets/index-gCy9XX3W.css +1 -0
- package/dashboard/dist/assets/mcp-BzVpaaKF.js +2 -0
- package/dashboard/dist/assets/{mcp-blCW6IL7.js.map → mcp-BzVpaaKF.js.map} +1 -1
- package/dashboard/dist/assets/mcp-query-wTuxTTCV.js +2 -0
- package/dashboard/dist/assets/mcp-query-wTuxTTCV.js.map +1 -0
- package/dashboard/dist/assets/{mcp-runs-ChPbpvXK.js → mcp-runs-DmXYJD19.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-ChPbpvXK.js.map → mcp-runs-DmXYJD19.js.map} +1 -1
- package/dashboard/dist/assets/namespaces-DoGa7jc7.js +2 -0
- package/dashboard/dist/assets/{namespaces-BgbaC3ow.js.map → namespaces-DoGa7jc7.js.map} +1 -1
- package/dashboard/dist/assets/{roles-ZNrqqnQl.js → roles-wCdQ2Z7k.js} +2 -2
- package/dashboard/dist/assets/{roles-ZNrqqnQl.js.map → roles-wCdQ2Z7k.js.map} +1 -1
- package/dashboard/dist/assets/settings-DDe_L7JT.js +2 -0
- package/dashboard/dist/assets/{settings-eBRSE0mQ.js.map → settings-DDe_L7JT.js.map} +1 -1
- package/dashboard/dist/assets/tasks-3Hih8Bt7.js +2 -0
- package/dashboard/dist/assets/{tasks-tRqClPns.js.map → tasks-3Hih8Bt7.js.map} +1 -1
- 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/{useNatsEvents-Xr43X1fG.js → useNatsEvents-DeGKHFTX.js} +2 -2
- package/dashboard/dist/assets/{useNatsEvents-Xr43X1fG.js.map → useNatsEvents-DeGKHFTX.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-BO51u8tm.js → useYamlActivityEvents-B5dHec6Y.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-BO51u8tm.js.map → useYamlActivityEvents-B5dHec6Y.js.map} +1 -1
- package/dashboard/dist/assets/{users-tMvNyOo8.js → users-BTagPmGW.js} +2 -2
- package/dashboard/dist/assets/{users-tMvNyOo8.js.map → users-BTagPmGW.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-ZTAKVwGc.js → vendor-icons-DCLlGYO9.js} +112 -57
- package/dashboard/dist/assets/vendor-icons-DCLlGYO9.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-B20dR3NE.js} +2 -2
- package/dashboard/dist/assets/{workflows-Cc4VHcrp.js.map → workflows-B20dR3NE.js.map} +1 -1
- package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js +2 -0
- package/dashboard/dist/assets/yaml-workflows-CaLPMQha.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 +195 -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 +264 -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 +715 -0
- package/docs/oauth-and-delegation.md +469 -0
- package/docs/telemetry.md +144 -0
- package/docs/workflows.md +695 -0
- package/lib/db/schemas/015_knowledge.sql +23 -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/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-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-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/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/build/{services → lib}/db/migrate.d.ts +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
- /package/{services → lib}/db/README.md +0 -0
- /package/{services → lib}/db/schemas/001_schema.sql +0 -0
- /package/{services → lib}/db/schemas/002_seed.sql +0 -0
- /package/{services → lib}/db/schemas/003_workflow_discovery.sql +0 -0
- /package/{services → lib}/db/schemas/004_query_router.sql +0 -0
- /package/{services → lib}/db/schemas/005_triage_router.sql +0 -0
- /package/{services → lib}/db/schemas/006_oauth.sql +0 -0
- /package/{services → lib}/db/schemas/007_security.sql +0 -0
- /package/{services → lib}/db/schemas/008_bot_accounts.sql +0 -0
- /package/{services → lib}/db/schemas/009_audit_trail.sql +0 -0
- /package/{services → lib}/db/schemas/010_credential_providers.sql +0 -0
- /package/{services → lib}/db/schemas/011_system_workflow_configs.sql +0 -0
- /package/{services → lib}/db/schemas/012_drop_modality.sql +0 -0
- /package/{services → lib}/db/schemas/013_execute_as.sql +0 -0
- /package/{services → lib}/db/schemas/014_ephemeral_credentials.sql +0 -0
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
# YAML Workflows API (Process Servers)
|
|
2
|
+
|
|
3
|
+
Manage YAML workflow definitions — the compiled deterministic pipelines generated from successful MCP triage executions. Each namespace (`app_id`) acts as a process server; each workflow is a tool within that server. All endpoints require authentication.
|
|
4
|
+
|
|
5
|
+
## List workflows
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
GET /api/yaml-workflows
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Query parameters:**
|
|
12
|
+
|
|
13
|
+
| Parameter | Type | Description |
|
|
14
|
+
|-----------|------|-------------|
|
|
15
|
+
| `status` | `string` | Filter by status: `draft`, `deployed`, `active`, `archived` |
|
|
16
|
+
| `graph_topic` | `string` | Filter by graph topic (tool name) |
|
|
17
|
+
| `app_id` | `string` | Filter by namespace/server (exact match) |
|
|
18
|
+
| `search` | `string` | Search name, graph topic, description, or app ID (case-insensitive) |
|
|
19
|
+
| `source_workflow_id` | `string` | Filter by source execution workflow ID |
|
|
20
|
+
| `limit` | `integer` | Max results (default: 50) |
|
|
21
|
+
| `offset` | `integer` | Pagination offset (default: 0) |
|
|
22
|
+
|
|
23
|
+
**Response 200:**
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"workflows": [
|
|
28
|
+
{
|
|
29
|
+
"id": "a1b2c3d4-...",
|
|
30
|
+
"name": "rotate-and-verify",
|
|
31
|
+
"description": "Rotate document, extract info, validate",
|
|
32
|
+
"app_id": "lt-yaml",
|
|
33
|
+
"app_version": "3",
|
|
34
|
+
"source_workflow_id": "mcp-triage-abc123",
|
|
35
|
+
"source_workflow_type": "mcpTriage",
|
|
36
|
+
"yaml_content": "app:\n id: lt-yaml\n version: \"3\"\n...",
|
|
37
|
+
"graph_topic": "rotate_and_verify",
|
|
38
|
+
"input_schema": { "type": "object", "properties": { "image_ref": { "type": "string" } } },
|
|
39
|
+
"output_schema": {},
|
|
40
|
+
"activity_manifest": [
|
|
41
|
+
{
|
|
42
|
+
"activity_id": "a0",
|
|
43
|
+
"title": "Rotate Page",
|
|
44
|
+
"type": "worker",
|
|
45
|
+
"topic": "rotate_and_verify/a0",
|
|
46
|
+
"tool_source": "mcp",
|
|
47
|
+
"mcp_server_id": "srv-1",
|
|
48
|
+
"mcp_tool_name": "rotate_image",
|
|
49
|
+
"input_mappings": {},
|
|
50
|
+
"output_fields": ["rotated_url"]
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"status": "active",
|
|
54
|
+
"deployed_at": "2025-01-10T00:00:00Z",
|
|
55
|
+
"activated_at": "2025-01-10T00:01:00Z",
|
|
56
|
+
"metadata": null,
|
|
57
|
+
"created_at": "2025-01-09T00:00:00Z",
|
|
58
|
+
"updated_at": "2025-01-10T00:01:00Z"
|
|
59
|
+
}
|
|
60
|
+
],
|
|
61
|
+
"total": 1
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Create a workflow (from execution)
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
POST /api/yaml-workflows
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Generates a YAML workflow from a completed MCP triage execution.
|
|
72
|
+
|
|
73
|
+
**Request body:**
|
|
74
|
+
|
|
75
|
+
| Field | Type | Required | Description |
|
|
76
|
+
|-------|------|----------|-------------|
|
|
77
|
+
| `workflow_id` | `string` | Yes | Source execution workflow ID |
|
|
78
|
+
| `task_queue` | `string` | Yes | Task queue of the source execution |
|
|
79
|
+
| `workflow_name` | `string` | Yes | Source workflow type name |
|
|
80
|
+
| `name` | `string` | Yes | Name for the new workflow |
|
|
81
|
+
| `description` | `string` | No | Human-readable description |
|
|
82
|
+
| `app_id` | `string` | No | Namespace/app ID (default: auto-generated) |
|
|
83
|
+
| `subscribes` | `string` | No | Topic subscription |
|
|
84
|
+
| `tags` | `string[]` | No | Tags for workflow discovery |
|
|
85
|
+
| `compilation_feedback` | `string` | No | Additional instructions for the compilation pipeline |
|
|
86
|
+
|
|
87
|
+
**Response 201:** Created workflow record.
|
|
88
|
+
|
|
89
|
+
**Response 400:** Missing required fields.
|
|
90
|
+
|
|
91
|
+
**Response 409:** Workflow name already exists.
|
|
92
|
+
|
|
93
|
+
**Response 422:** Source execution exhausted its tool rounds (incomplete trace).
|
|
94
|
+
|
|
95
|
+
## Get a workflow
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
GET /api/yaml-workflows/:id
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Response 200:** Workflow record.
|
|
102
|
+
|
|
103
|
+
**Response 404:** Workflow not found.
|
|
104
|
+
|
|
105
|
+
## Update a workflow
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
PUT /api/yaml-workflows/:id
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Request body:** Partial update — `yaml_content`, `name`, `description`.
|
|
112
|
+
|
|
113
|
+
**Response 200:** Updated workflow record.
|
|
114
|
+
|
|
115
|
+
**Response 404:** Workflow not found.
|
|
116
|
+
|
|
117
|
+
## Delete a workflow
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
DELETE /api/yaml-workflows/:id
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Only allowed for `draft` or `archived` workflows.
|
|
124
|
+
|
|
125
|
+
**Response 200:**
|
|
126
|
+
|
|
127
|
+
```json
|
|
128
|
+
{ "deleted": true }
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Response 400:** Cannot delete active or deployed workflows.
|
|
132
|
+
|
|
133
|
+
**Response 404:** Workflow not found.
|
|
134
|
+
|
|
135
|
+
## Deploy a workflow
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
POST /api/yaml-workflows/:id/deploy
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Deploys all YAML workflows sharing this workflow's `app_id` as a merged version. Bumps the version, marks all non-archived siblings as `active`, and registers HotMesh workers for the deployed workflows.
|
|
142
|
+
|
|
143
|
+
**Response 200:** Updated workflow record (with new version).
|
|
144
|
+
|
|
145
|
+
**Response 404:** Workflow not found.
|
|
146
|
+
|
|
147
|
+
## Activate a workflow
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
POST /api/yaml-workflows/:id/activate
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Activates the deployed version and registers workers for all workflows in the same `app_id`. Requires status `deployed` or `active`.
|
|
154
|
+
|
|
155
|
+
**Response 200:** Updated workflow record.
|
|
156
|
+
|
|
157
|
+
**Response 400:** Workflow must be deployed first.
|
|
158
|
+
|
|
159
|
+
**Response 404:** Workflow not found.
|
|
160
|
+
|
|
161
|
+
## Invoke a workflow
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
POST /api/yaml-workflows/:id/invoke
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Invoke an active YAML workflow with parameters.
|
|
168
|
+
|
|
169
|
+
**Request body:**
|
|
170
|
+
|
|
171
|
+
| Field | Type | Required | Description |
|
|
172
|
+
|-------|------|----------|-------------|
|
|
173
|
+
| `data` | `object` | No | Input data matching the workflow's `input_schema` |
|
|
174
|
+
| `sync` | `boolean` | No | Wait for result (default: false) |
|
|
175
|
+
| `timeout` | `integer` | No | Timeout in ms for sync invocations (default: 120000) |
|
|
176
|
+
|
|
177
|
+
**Async response 200:**
|
|
178
|
+
|
|
179
|
+
```json
|
|
180
|
+
{ "job_id": "hmsh:lt-yaml:j:abc123..." }
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**Sync response 200:**
|
|
184
|
+
|
|
185
|
+
```json
|
|
186
|
+
{
|
|
187
|
+
"job_id": "hmsh:lt-yaml:j:abc123...",
|
|
188
|
+
"result": {
|
|
189
|
+
"metadata": { "jid": "abc123", "tpc": "rotate_and_verify" },
|
|
190
|
+
"data": { "rotated_url": "https://...", "verified": true }
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**Response 400:** Workflow must be active to invoke.
|
|
196
|
+
|
|
197
|
+
**Response 404:** Workflow not found.
|
|
198
|
+
|
|
199
|
+
## Regenerate a workflow
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
POST /api/yaml-workflows/:id/regenerate
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Re-generate the YAML from the original source execution. Allowed for `draft`, `deployed`, and `active` workflows (not `archived`).
|
|
206
|
+
|
|
207
|
+
**Request body:**
|
|
208
|
+
|
|
209
|
+
| Field | Type | Required | Description |
|
|
210
|
+
|-------|------|----------|-------------|
|
|
211
|
+
| `task_queue` | `string` | No | Override task queue (default: from source) |
|
|
212
|
+
| `compilation_feedback` | `string` | No | Additional instructions for the regeneration |
|
|
213
|
+
|
|
214
|
+
**Response 200:** Updated workflow record.
|
|
215
|
+
|
|
216
|
+
**Response 400:** Archived workflows cannot be regenerated.
|
|
217
|
+
|
|
218
|
+
**Response 404:** Workflow not found.
|
|
219
|
+
|
|
220
|
+
## Archive a workflow
|
|
221
|
+
|
|
222
|
+
```
|
|
223
|
+
POST /api/yaml-workflows/:id/archive
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Stops accepting invocations. If active, stops the engine.
|
|
227
|
+
|
|
228
|
+
**Response 200:** Updated workflow record with status `archived`.
|
|
229
|
+
|
|
230
|
+
**Response 404:** Workflow not found.
|
|
231
|
+
|
|
232
|
+
## List app IDs
|
|
233
|
+
|
|
234
|
+
```
|
|
235
|
+
GET /api/yaml-workflows/app-ids
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Returns distinct `app_id` values from non-archived workflows.
|
|
239
|
+
|
|
240
|
+
**Response 200:**
|
|
241
|
+
|
|
242
|
+
```json
|
|
243
|
+
{
|
|
244
|
+
"app_ids": ["lt-yaml", "my-custom-app"]
|
|
245
|
+
}
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## Get version history
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
GET /api/yaml-workflows/:id/versions
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Returns version history for a YAML workflow.
|
|
255
|
+
|
|
256
|
+
**Query parameters:**
|
|
257
|
+
|
|
258
|
+
| Parameter | Type | Description |
|
|
259
|
+
|-----------|------|-------------|
|
|
260
|
+
| `limit` | `integer` | Max results (default: 20) |
|
|
261
|
+
| `offset` | `integer` | Pagination offset (default: 0) |
|
|
262
|
+
|
|
263
|
+
**Response 200:** Version history records.
|
|
264
|
+
|
|
265
|
+
**Response 404:** Workflow not found.
|
|
266
|
+
|
|
267
|
+
## Get version snapshot
|
|
268
|
+
|
|
269
|
+
```
|
|
270
|
+
GET /api/yaml-workflows/:id/versions/:version
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
Returns a single version snapshot with YAML content, schemas, and activity manifest.
|
|
274
|
+
|
|
275
|
+
**Path parameters:**
|
|
276
|
+
|
|
277
|
+
| Parameter | Description |
|
|
278
|
+
|-----------|-------------|
|
|
279
|
+
| `id` | Workflow UUID |
|
|
280
|
+
| `version` | Version number (positive integer) |
|
|
281
|
+
|
|
282
|
+
**Response 200:** Version snapshot object.
|
|
283
|
+
|
|
284
|
+
**Response 400:**
|
|
285
|
+
|
|
286
|
+
```json
|
|
287
|
+
{ "error": "Invalid version number" }
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
**Response 404:**
|
|
291
|
+
|
|
292
|
+
```json
|
|
293
|
+
{ "error": "Version 3 not found" }
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
## Get raw YAML
|
|
297
|
+
|
|
298
|
+
```
|
|
299
|
+
GET /api/yaml-workflows/:id/yaml
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Returns the raw YAML content as `text/yaml`. Supports an optional `version` query parameter to retrieve YAML for a specific version.
|
|
303
|
+
|
|
304
|
+
**Query parameters:**
|
|
305
|
+
|
|
306
|
+
| Parameter | Type | Description |
|
|
307
|
+
|-----------|------|-------------|
|
|
308
|
+
| `version` | `integer` | Return YAML for this version instead of current |
|
|
309
|
+
|
|
310
|
+
**Response 200:** YAML content (Content-Type: text/yaml).
|
|
311
|
+
|
|
312
|
+
**Response 404:** Workflow or version not found.
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
This document describes how Long Tail organizes workflows, activities, and MCP servers. It covers the three-tier project structure, the convention that makes activities and tools interchangeable, the system capabilities that ship by default, the built-in MCP servers, and how to register your own code. For a higher-level overview and quick start guide, see the [README](../README.md).
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- [Project Structure](#project-structure)
|
|
8
|
+
- [The Convention](#the-convention)
|
|
9
|
+
- [Three Workflow Types](#three-workflow-types)
|
|
10
|
+
- [System Capabilities](#system-capabilities)
|
|
11
|
+
- [Tag-Based Tool Discovery](#tag-based-tool-discovery)
|
|
12
|
+
- [System Workflows](#system-workflows)
|
|
13
|
+
- [Built-in MCP Servers](#built-in-mcp-servers)
|
|
14
|
+
- [Registering Your Own](#registering-your-own)
|
|
15
|
+
|
|
16
|
+
## Project Structure
|
|
17
|
+
|
|
18
|
+
Long Tail organizes workflows, activities, and MCP servers into three tiers that follow the same conventions:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
system/ Always ships. The built-in tool inventory.
|
|
22
|
+
├── activities/ Vision, DB queries, HTTP fetch, file storage, ...
|
|
23
|
+
├── workflows/ mcpQuery pipeline, mcpTriage pipeline
|
|
24
|
+
└── mcp-servers/ Built-in MCP servers wrapping the activities
|
|
25
|
+
|
|
26
|
+
examples/ Opt-in demos. Seed with `examples: true`.
|
|
27
|
+
├── workflows/ review-content, verify-document, process-claim, ...
|
|
28
|
+
└── types/
|
|
29
|
+
|
|
30
|
+
your-app/ Your workflows. Same conventions, your directory.
|
|
31
|
+
├── activities/ Your activity functions (= your MCP tools)
|
|
32
|
+
├── workflows/ Your workflow functions
|
|
33
|
+
└── index.ts Barrel export of workers[]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**System** workflows and tools are always available. Two 3-tier pipelines handle all dynamic work: **mcpQuery** (router → deterministic | dynamic) fulfills arbitrary requests using MCP tools, and **mcpTriage** (router → deterministic | dynamic) handles AI-assisted remediation when humans can't resolve an escalation. Each pipeline has a router that checks for compiled workflows before falling back to a dynamic agentic loop.
|
|
37
|
+
|
|
38
|
+
**Examples** demonstrate the patterns. They seed the dashboard with working scenarios on first run.
|
|
39
|
+
|
|
40
|
+
**Your code** follows the same structure. Register workers via `start()`:
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
import { start } from '@hotmeshio/long-tail';
|
|
44
|
+
import { myWorkers } from './my-app';
|
|
45
|
+
|
|
46
|
+
const lt = await start({
|
|
47
|
+
database: { connectionString: process.env.DATABASE_URL },
|
|
48
|
+
workers: [...myWorkers],
|
|
49
|
+
examples: true,
|
|
50
|
+
});
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
All three tiers follow the same directory conventions. The next section explains that convention and why it matters.
|
|
54
|
+
|
|
55
|
+
## The Convention
|
|
56
|
+
|
|
57
|
+
Every tier follows the same structure. Activities are where side effects live. Workflows are deterministic functions that call activities. MCP servers are thin wrappers that expose activities as tools.
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
<dir>/
|
|
61
|
+
├── activities/ Side-effect functions — each one IS an MCP tool
|
|
62
|
+
│ └── analyzer.ts export async function classify(args) { ... }
|
|
63
|
+
├── workflows/
|
|
64
|
+
│ └── my-flow/
|
|
65
|
+
│ ├── index.ts Workflow function (deterministic)
|
|
66
|
+
│ └── orchestrator.ts executeLT() wrapper for composition
|
|
67
|
+
└── mcp-servers/
|
|
68
|
+
└── analyzer.ts Wraps activities/analyzer.ts as an MCP server
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The key insight: **activities are tools and tools are activities**. Write a function that classifies a document. Register it as an activity in your workflow. The same function, wrapped in an MCP server, becomes a tool that any LLM agent can call. When the triage agent uses your tool to fix an edge case, the successful sequence gets compiled into a deterministic workflow — and that workflow becomes a new tool.
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
// activities/analyzer.ts — this function IS a tool
|
|
75
|
+
export async function classify(args: { content: string }) {
|
|
76
|
+
const response = await llm.analyze(args.content);
|
|
77
|
+
return { category: response.category, confidence: response.confidence };
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// workflows/classify-content/index.ts — calls the activity
|
|
81
|
+
const { classify } = Durable.workflow.proxyActivities<typeof activities>({
|
|
82
|
+
activities,
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
export async function classifyContent(envelope: LTEnvelope) {
|
|
86
|
+
const result = await classify(envelope.data);
|
|
87
|
+
if (result.confidence >= 0.85) {
|
|
88
|
+
return { type: 'return', data: result };
|
|
89
|
+
}
|
|
90
|
+
return { type: 'escalation', data: result, message: 'Low confidence', role: 'reviewer' };
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// mcp-servers/analyzer.ts — exposes the activity as a tool
|
|
94
|
+
server.tool('classify', schema, async (args) => activities.classify(args));
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
With this convention in place, the system ships with a set of built-in capabilities that demonstrate the pattern.
|
|
98
|
+
|
|
99
|
+
## Three Workflow Types
|
|
100
|
+
|
|
101
|
+
Long Tail has three distinct workflow types. The dashboard's **Workflow Registry** page shows each with a visual badge.
|
|
102
|
+
|
|
103
|
+
### Durable
|
|
104
|
+
|
|
105
|
+
Any function registered as a HotMesh worker is durable. This is the baseline tier:
|
|
106
|
+
|
|
107
|
+
- **Checkpointed execution** — activity results are persisted in PostgreSQL; crashes resume from the last checkpoint.
|
|
108
|
+
- **Automatic retries** — failed activities retry according to their retry policy.
|
|
109
|
+
- **IAM context** — the caller's identity propagates through the execution envelope.
|
|
110
|
+
|
|
111
|
+
A durable workflow has no entry in `lt_config_workflows`. It runs, but without interceptor tracking, escalation chains, or task records. In the dashboard, durable workflows display a **Workflow** icon with a "Durable" label.
|
|
112
|
+
|
|
113
|
+
### Certified
|
|
114
|
+
|
|
115
|
+
A certified workflow is durable plus the full Long Tail control plane. It has an entry in `lt_config_workflows`, which activates:
|
|
116
|
+
|
|
117
|
+
- **Interceptor wrapping** — every execution is tracked as a task in `lt_tasks` with full audit trail.
|
|
118
|
+
- **Escalation chains** — returning `{ type: 'escalation' }` creates a reviewable record, routes to the correct role, and triggers re-runs on resolution.
|
|
119
|
+
- **Never-fail guarantee** — unhandled errors are caught and surfaced as error escalations.
|
|
120
|
+
- **Invocation controls** — `invocable: true` exposes the workflow for external invocation via the API and dashboard.
|
|
121
|
+
- **Execution identity** — roles, default assignees, and `execute_as` overrides are defined in the config.
|
|
122
|
+
|
|
123
|
+
In the dashboard, certified workflows display a **ShieldCheck** icon with a "Certified" label in accent blue. Promote a durable workflow to certified by creating a config entry; de-certify by removing it. The workflow code does not change.
|
|
124
|
+
|
|
125
|
+
### Pipeline
|
|
126
|
+
|
|
127
|
+
A pipeline workflow is a compiled deterministic workflow generated from a successful dynamic execution. The compilation pipeline extracts the tool-call sequence from an `mcpQuery` or `mcpTriage` run and produces a YAML DAG that replays the same steps without an LLM.
|
|
128
|
+
|
|
129
|
+
- **No LLM per step** — the DAG executes tool calls directly with pre-wired data flow.
|
|
130
|
+
- **Discoverable as a tool** — deployed pipelines become MCP tools that any workflow or agent can invoke.
|
|
131
|
+
- **Automatic routing** — the `mcpQueryRouter` and `mcpTriageRouter` discover compiled pipelines via full-text search and tag matching, routing requests to the deterministic path when confidence is high.
|
|
132
|
+
|
|
133
|
+
Pipeline workflows are stored in `lt_yaml_workflows` with status lifecycle: `draft` → `deployed` → `active` → `archived`. In the dashboard, pipeline workflows display a **Wand2** (magic wand) icon in purple.
|
|
134
|
+
|
|
135
|
+
See the [Compilation Pipeline](compilation.md) guide for the full lifecycle and the [Workflows Guide](workflows.md) for detailed coverage of all three types.
|
|
136
|
+
|
|
137
|
+
## System Capabilities
|
|
138
|
+
|
|
139
|
+
### Tag-Based Tool Discovery
|
|
140
|
+
|
|
141
|
+
Every MCP server is tagged with categories (`database`, `vision`, `http`, `storage`, etc.). Workflows discover tools by tag rather than hard-coding server names:
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
// mcpQuery discovers all tools (or filters by user-provided tags)
|
|
145
|
+
const servers = await findServersByTags(tags, 'any');
|
|
146
|
+
|
|
147
|
+
// scoped discovery — only database-tagged tools
|
|
148
|
+
const servers = await findServersByTags(['database', 'analytics'], 'any');
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Tags are GIN-indexed in PostgreSQL for fast lookup. Register a new MCP server tagged `analytics` and mcpQuery automatically picks up its tools. Register one tagged `vision` and mcpTriage can use it for remediation. The tool inventory grows without code changes.
|
|
152
|
+
|
|
153
|
+
### System Workflows
|
|
154
|
+
|
|
155
|
+
| Pipeline | Workflows | Purpose |
|
|
156
|
+
|----------|-----------|---------|
|
|
157
|
+
| **mcpQuery** | `mcpQueryRouter` → `mcpDeterministic` \| `mcpQuery` | General-purpose MCP orchestration. Router discovers compiled workflows; routes to deterministic (if match) or dynamic agentic loop. |
|
|
158
|
+
| **mcpTriage** | `mcpTriageRouter` → `mcpTriageDeterministic` \| `mcpTriage` | Escalation remediation. Same 3-tier pattern — router checks for compiled solutions before falling back to dynamic triage. |
|
|
159
|
+
|
|
160
|
+
**mcpQuery** is the general-purpose entry point. Ask it to "take a screenshot of example.com" and it uses Playwright tools. Ask it to "fetch the latest exchange rates and save to a file" and it chains HTTP fetch with file storage. Once a useful sequence is discovered, it can be compiled into a deterministic workflow and deployed as a new tool.
|
|
161
|
+
|
|
162
|
+
Engineers can register external servers — Playwright for browser automation, file storage, custom APIs. The triage agent can even recommend that engineers add a new MCP server when it encounters a capability gap. Every server's tools become available as proxy activities in deterministic workflows and as callable tools in dynamic triage.
|
|
163
|
+
|
|
164
|
+
The built-in servers are the starting inventory.
|
|
165
|
+
|
|
166
|
+
## Built-in MCP Servers
|
|
167
|
+
|
|
168
|
+
Long Tail ships with the following built-in servers:
|
|
169
|
+
|
|
170
|
+
| Server | Purpose |
|
|
171
|
+
|--------|---------|
|
|
172
|
+
| `long-tail-db-query` | Query tasks, escalations, process summaries, system health |
|
|
173
|
+
| `long-tail-human-queue` | Route work to humans, check resolution, claim/resolve, escalate-and-wait |
|
|
174
|
+
| `mcp-workflows-longtail` | Discover and invoke compiled workflow tools |
|
|
175
|
+
| `long-tail-workflow-compiler` | Convert executions to YAML, deploy, list |
|
|
176
|
+
| `long-tail-translation` | Translate content between languages |
|
|
177
|
+
| `long-tail-vision` | Analyze and describe images using LLM vision |
|
|
178
|
+
| `long-tail-playwright` | Low-level browser automation |
|
|
179
|
+
| `long-tail-playwright-cli` | High-level browser automation |
|
|
180
|
+
| `long-tail-docs` | Search and read product documentation |
|
|
181
|
+
| `long-tail-file-storage` | Read, write, list, and delete files |
|
|
182
|
+
| `long-tail-http-fetch` | HTTP requests, JSON/text fetch |
|
|
183
|
+
| `long-tail-oauth` | OAuth token management |
|
|
184
|
+
| `long-tail-claude-code` | Agentic coding via Claude Code CLI |
|
|
185
|
+
|
|
186
|
+
Each server can provide `compile_hints` — tool-specific constraints stored in the database that guide the compilation pipeline when converting dynamic executions into deterministic workflows.
|
|
187
|
+
|
|
188
|
+
For details on managing servers via the REST API or at startup, see [docs/mcp.md](mcp.md).
|
|
189
|
+
|
|
190
|
+
To add your own tools to this inventory, follow the same convention.
|
|
191
|
+
|
|
192
|
+
## Registering Your Own
|
|
193
|
+
|
|
194
|
+
Follow the same convention as `system/` and `examples/`. Create a barrel export of your workers:
|
|
195
|
+
|
|
196
|
+
```typescript
|
|
197
|
+
// my-app/index.ts
|
|
198
|
+
import * as myWorkflow from './workflows/my-workflow';
|
|
199
|
+
import * as myOrch from './workflows/my-workflow/orchestrator';
|
|
200
|
+
|
|
201
|
+
export const myWorkers = [
|
|
202
|
+
{ taskQueue: 'my-queue', workflow: myWorkflow.myWorkflow },
|
|
203
|
+
{ taskQueue: 'my-queue-orch', workflow: myOrch.myWorkflowOrchestrator },
|
|
204
|
+
];
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Register at startup:
|
|
208
|
+
|
|
209
|
+
```typescript
|
|
210
|
+
import { start } from '@hotmeshio/long-tail';
|
|
211
|
+
import { myWorkers } from './my-app';
|
|
212
|
+
|
|
213
|
+
const lt = await start({
|
|
214
|
+
database: { connectionString: process.env.DATABASE_URL },
|
|
215
|
+
workers: [...myWorkers],
|
|
216
|
+
mcp: { server: { enabled: true } },
|
|
217
|
+
escalation: { strategy: 'mcp' },
|
|
218
|
+
});
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Your activities become tools. Your tools become available to triage. Triage solutions become compiled workflows. Compiled workflows become tools. The cycle continues.
|