@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
|
@@ -91,23 +91,28 @@ exports.CLAUDE_CODE_TOOLS = [
|
|
|
91
91
|
prompt: {
|
|
92
92
|
type: 'string',
|
|
93
93
|
description: 'The task prompt. Be specific and actionable.',
|
|
94
|
+
default: 'List the files in the current directory and describe what this project does in 2 sentences.',
|
|
94
95
|
},
|
|
95
96
|
working_directory: {
|
|
96
97
|
type: 'string',
|
|
97
|
-
description: 'Working directory for the task. Defaults to
|
|
98
|
+
description: 'Working directory for the task. Defaults to /app (container root).',
|
|
99
|
+
default: '/app',
|
|
98
100
|
},
|
|
99
101
|
allowed_tools: {
|
|
100
102
|
type: 'array',
|
|
101
103
|
items: { type: 'string' },
|
|
102
|
-
description: 'Restrict which tools Claude Code can use (e.g., ["Read", "Grep"]).',
|
|
104
|
+
description: 'Restrict which tools Claude Code can use (e.g., ["Read", "Grep", "Glob", "Bash"]).',
|
|
105
|
+
default: ['Read', 'Glob', 'Grep', 'Bash'],
|
|
103
106
|
},
|
|
104
107
|
max_turns: {
|
|
105
108
|
type: 'number',
|
|
106
109
|
description: 'Maximum agentic turns before stopping.',
|
|
110
|
+
default: 5,
|
|
107
111
|
},
|
|
108
112
|
model: {
|
|
109
113
|
type: 'string',
|
|
110
114
|
description: 'Override the Claude model (e.g., "claude-sonnet-4-6").',
|
|
115
|
+
default: 'claude-sonnet-4-6',
|
|
111
116
|
},
|
|
112
117
|
system_prompt: {
|
|
113
118
|
type: 'string',
|
|
@@ -116,10 +121,12 @@ exports.CLAUDE_CODE_TOOLS = [
|
|
|
116
121
|
timeout_ms: {
|
|
117
122
|
type: 'number',
|
|
118
123
|
description: 'Execution timeout in ms. Default: 120000, max: 300000.',
|
|
124
|
+
default: 120000,
|
|
119
125
|
},
|
|
120
126
|
credential_label: {
|
|
121
127
|
type: 'string',
|
|
122
|
-
description: 'Label of the stored Anthropic credential to use (e.g., "subscription", "api-batch").
|
|
128
|
+
description: 'Label of the stored Anthropic credential to use (e.g., "subscription", "api-batch").',
|
|
129
|
+
default: 'default',
|
|
123
130
|
},
|
|
124
131
|
},
|
|
125
132
|
required: ['prompt'],
|
|
@@ -38,7 +38,7 @@ const hotmesh_1 = require("@hotmeshio/hotmesh");
|
|
|
38
38
|
const activities = __importStar(require("./activities"));
|
|
39
39
|
const { invokeCompiledWorkflow } = hotmesh_1.Durable.workflow.proxyActivities({
|
|
40
40
|
activities,
|
|
41
|
-
|
|
41
|
+
retry: {
|
|
42
42
|
maximumAttempts: 3,
|
|
43
43
|
backoffCoefficient: 2,
|
|
44
44
|
maximumInterval: '10 seconds',
|
|
@@ -1,31 +1,13 @@
|
|
|
1
|
+
import { extractWorkflowInputs } from '../../shared/discovery';
|
|
1
2
|
import type { WorkflowCandidate } from '../../../../types/discovery';
|
|
2
|
-
/**
|
|
3
|
-
* Phase 1: Ranked discovery of compiled YAML workflows.
|
|
4
|
-
*
|
|
5
|
-
* Uses PostgreSQL full-text search (tsvector) + tag overlap for
|
|
6
|
-
* multi-signal ranked matching. Returns candidates for the LLM judge.
|
|
7
|
-
*/
|
|
8
3
|
export declare function findCompiledWorkflows(prompt: string): Promise<{
|
|
9
4
|
inventory: string;
|
|
10
5
|
toolIds: string[];
|
|
11
6
|
candidates: WorkflowCandidate[];
|
|
12
7
|
}>;
|
|
13
|
-
/**
|
|
14
|
-
* Phase 2: LLM-as-judge evaluates whether any discovered workflow
|
|
15
|
-
* matches the user's intent. One cheap call (mini model, ~200 tokens)
|
|
16
|
-
* to potentially skip the entire agentic loop.
|
|
17
|
-
*/
|
|
18
8
|
export declare function evaluateWorkflowMatch(prompt: string, candidates: WorkflowCandidate[]): Promise<{
|
|
19
9
|
matched: boolean;
|
|
20
10
|
workflowName: string | null;
|
|
21
11
|
confidence: number;
|
|
22
12
|
}>;
|
|
23
|
-
|
|
24
|
-
* Phase 2b: Extract structured inputs from the user's prompt using the
|
|
25
|
-
* matched workflow's input_schema. Acts as a second confirmation gate —
|
|
26
|
-
* if the LLM can't map the prompt to the schema, the match is rejected.
|
|
27
|
-
*/
|
|
28
|
-
export declare function extractWorkflowInputs(prompt: string, inputSchema: Record<string, unknown>, workflowName: string): Promise<{
|
|
29
|
-
inputs: Record<string, any> | null;
|
|
30
|
-
extracted: boolean;
|
|
31
|
-
}>;
|
|
13
|
+
export { extractWorkflowInputs };
|
|
@@ -1,172 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractWorkflowInputs = void 0;
|
|
36
4
|
exports.findCompiledWorkflows = findCompiledWorkflows;
|
|
37
5
|
exports.evaluateWorkflowMatch = evaluateWorkflowMatch;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const defaults_1 = require("../../../../modules/defaults");
|
|
41
|
-
const logger_1 = require("../../../../services/logger");
|
|
42
|
-
const yamlDb = __importStar(require("../../../../services/yaml-workflow/db"));
|
|
43
|
-
const prompts_1 = require("../prompts");
|
|
6
|
+
const discovery_1 = require("../../shared/discovery");
|
|
7
|
+
Object.defineProperty(exports, "extractWorkflowInputs", { enumerable: true, get: function () { return discovery_1.extractWorkflowInputs; } });
|
|
44
8
|
const caches_1 = require("./caches");
|
|
45
|
-
/**
|
|
46
|
-
* Phase 1: Ranked discovery of compiled YAML workflows.
|
|
47
|
-
*
|
|
48
|
-
* Uses PostgreSQL full-text search (tsvector) + tag overlap for
|
|
49
|
-
* multi-signal ranked matching. Returns candidates for the LLM judge.
|
|
50
|
-
*/
|
|
51
9
|
async function findCompiledWorkflows(prompt) {
|
|
52
|
-
|
|
53
|
-
const keywords = prompt
|
|
54
|
-
.toLowerCase()
|
|
55
|
-
.replace(/[^a-z0-9\s-]/g, ' ')
|
|
56
|
-
.split(/\s+/)
|
|
57
|
-
.filter((w) => w.length > 2 && !defaults_1.STOP_WORDS.has(w));
|
|
58
|
-
// Ranked discovery: FTS + tag overlap
|
|
59
|
-
logger_1.loggerRegistry.debug(`[mcpQuery:findCompiledWorkflows] keywords: [${keywords.join(',')}]`);
|
|
60
|
-
const workflows = await yamlDb.discoverWorkflows(prompt, keywords, undefined, 5);
|
|
61
|
-
logger_1.loggerRegistry.info(`[mcpQuery:findCompiledWorkflows] ${workflows.length} candidate(s) found`);
|
|
62
|
-
if (workflows.length === 0) {
|
|
63
|
-
return { inventory: '', toolIds: [], candidates: [] };
|
|
64
|
-
}
|
|
65
|
-
const toolIds = [];
|
|
66
|
-
const inventoryLines = [];
|
|
67
|
-
const candidates = [];
|
|
68
|
-
for (const wf of workflows) {
|
|
69
|
-
const qualifiedName = `yaml__${wf.name.replace(/[^a-zA-Z0-9]/g, '_')}`;
|
|
70
|
-
caches_1.yamlWorkflowMap.set(qualifiedName, wf.name);
|
|
71
|
-
caches_1.toolDefCache.set(qualifiedName, {
|
|
72
|
-
type: 'function',
|
|
73
|
-
function: {
|
|
74
|
-
name: qualifiedName,
|
|
75
|
-
description: `[COMPILED WORKFLOW] ${wf.description || wf.name} — deterministic, no LLM needed. ` +
|
|
76
|
-
`Tags: ${wf.tags.join(', ')}`,
|
|
77
|
-
parameters: (wf.input_schema || { type: 'object', properties: {} }),
|
|
78
|
-
},
|
|
79
|
-
});
|
|
80
|
-
toolIds.push(qualifiedName);
|
|
81
|
-
const activityCount = wf.activity_manifest.filter((a) => a.type === 'worker').length;
|
|
82
|
-
inventoryLines.push(`★ ${wf.name} [compiled, ${activityCount} steps, tags: ${wf.tags.join(', ')}]: ${wf.description || 'deterministic workflow'}`);
|
|
83
|
-
candidates.push({
|
|
84
|
-
name: wf.name,
|
|
85
|
-
description: wf.description,
|
|
86
|
-
original_prompt: wf.original_prompt,
|
|
87
|
-
category: wf.category,
|
|
88
|
-
tags: wf.tags,
|
|
89
|
-
input_schema: wf.input_schema,
|
|
90
|
-
tool_names: wf.activity_manifest
|
|
91
|
-
.filter((a) => a.type === 'worker' && a.mcp_tool_name)
|
|
92
|
-
.map((a) => a.mcp_tool_name),
|
|
93
|
-
fts_rank: wf.fts_rank || 0,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
return { inventory: inventoryLines.join('\n'), toolIds, candidates };
|
|
10
|
+
return (0, discovery_1.findCompiledWorkflows)(prompt, { yamlWorkflowMap: caches_1.yamlWorkflowMap, toolDefCache: caches_1.toolDefCache }, 'mcpQuery');
|
|
97
11
|
}
|
|
98
|
-
/**
|
|
99
|
-
* Phase 2: LLM-as-judge evaluates whether any discovered workflow
|
|
100
|
-
* matches the user's intent. One cheap call (mini model, ~200 tokens)
|
|
101
|
-
* to potentially skip the entire agentic loop.
|
|
102
|
-
*/
|
|
103
12
|
async function evaluateWorkflowMatch(prompt, candidates) {
|
|
104
|
-
|
|
105
|
-
if (candidates.length === 0) {
|
|
106
|
-
return { matched: false, workflowName: null, confidence: 0 };
|
|
107
|
-
}
|
|
108
|
-
const candidateText = candidates.map((c, i) => `${i + 1}. **${c.name}** (category: ${c.category || 'general'})\n` +
|
|
109
|
-
` Description: ${c.description || 'N/A'}\n` +
|
|
110
|
-
` Original prompt: "${c.original_prompt || 'N/A'}"\n` +
|
|
111
|
-
` Tools: ${c.tool_names.join(', ')}\n` +
|
|
112
|
-
` Input: ${JSON.stringify(c.input_schema).slice(0, 300)}`).join('\n\n');
|
|
113
|
-
try {
|
|
114
|
-
const response = await (0, llm_1.callLLM)({
|
|
115
|
-
model: defaults_1.LLM_MODEL_SECONDARY,
|
|
116
|
-
max_tokens: 200,
|
|
117
|
-
temperature: 0,
|
|
118
|
-
messages: [
|
|
119
|
-
{ role: 'system', content: prompts_1.WORKFLOW_MATCH_PROMPT },
|
|
120
|
-
{ role: 'user', content: `## User Request\n${prompt}\n\n## Candidate Workflows\n${candidateText}` },
|
|
121
|
-
],
|
|
122
|
-
});
|
|
123
|
-
const raw = response.content || '{}';
|
|
124
|
-
const cleaned = raw.replace(/^```(?:json)?\s*/m, '').replace(/\s*```$/m, '').trim();
|
|
125
|
-
const result = JSON.parse(cleaned);
|
|
126
|
-
if (result.match && result.confidence >= 0.7) {
|
|
127
|
-
logger_1.loggerRegistry.info(`[mcpQuery:evaluateWorkflowMatch] MATCHED: ${result.workflow_name} (confidence: ${result.confidence})`);
|
|
128
|
-
return { matched: true, workflowName: result.workflow_name, confidence: result.confidence };
|
|
129
|
-
}
|
|
130
|
-
logger_1.loggerRegistry.info(`[mcpQuery:evaluateWorkflowMatch] no match (confidence: ${result.confidence || 0})`);
|
|
131
|
-
return { matched: false, workflowName: null, confidence: result.confidence || 0 };
|
|
132
|
-
}
|
|
133
|
-
catch (err) {
|
|
134
|
-
logger_1.loggerRegistry.warn(`[mcpQuery:evaluateWorkflowMatch] error: ${err.message}`);
|
|
135
|
-
return { matched: false, workflowName: null, confidence: 0 };
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Phase 2b: Extract structured inputs from the user's prompt using the
|
|
140
|
-
* matched workflow's input_schema. Acts as a second confirmation gate —
|
|
141
|
-
* if the LLM can't map the prompt to the schema, the match is rejected.
|
|
142
|
-
*/
|
|
143
|
-
async function extractWorkflowInputs(prompt, inputSchema, workflowName) {
|
|
144
|
-
try {
|
|
145
|
-
const response = await (0, llm_1.callLLM)({
|
|
146
|
-
model: defaults_1.LLM_MODEL_SECONDARY,
|
|
147
|
-
max_tokens: 500,
|
|
148
|
-
temperature: 0,
|
|
149
|
-
messages: [
|
|
150
|
-
{ role: 'system', content: prompts_1.EXTRACT_INPUTS_PROMPT },
|
|
151
|
-
{
|
|
152
|
-
role: 'user',
|
|
153
|
-
content: `## User Request\n${prompt}\n\n` +
|
|
154
|
-
`## Workflow: ${workflowName}\n` +
|
|
155
|
-
`## Input Schema\n${JSON.stringify(inputSchema, null, 2)}`,
|
|
156
|
-
},
|
|
157
|
-
],
|
|
158
|
-
});
|
|
159
|
-
const raw = response.content || '{}';
|
|
160
|
-
const cleaned = raw.replace(/^```(?:json)?\s*/m, '').replace(/\s*```$/m, '').trim();
|
|
161
|
-
const result = JSON.parse(cleaned);
|
|
162
|
-
if (result._extraction_failed) {
|
|
163
|
-
return { inputs: null, extracted: false };
|
|
164
|
-
}
|
|
165
|
-
// Remove the meta field before passing to the workflow
|
|
166
|
-
delete result._extraction_failed;
|
|
167
|
-
return { inputs: result, extracted: true };
|
|
168
|
-
}
|
|
169
|
-
catch {
|
|
170
|
-
return { inputs: null, extracted: false };
|
|
171
|
-
}
|
|
13
|
+
return (0, discovery_1.evaluateWorkflowMatch)(prompt, candidates, 'mcpQuery');
|
|
172
14
|
}
|
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
/**
|
|
3
|
-
* Call the LLM with messages and optional tool IDs.
|
|
4
|
-
*
|
|
5
|
-
* Tool IDs are resolved from the module-level toolDefCache so that only
|
|
6
|
-
* lightweight string arrays flow through the durable pipe.
|
|
7
|
-
*/
|
|
1
|
+
import type { LLMResponse } from '../../../../services/llm';
|
|
8
2
|
export declare function callQueryLLM(messages: any[], toolIds?: string[]): Promise<LLMResponse>;
|
|
@@ -1,33 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.callQueryLLM = callQueryLLM;
|
|
4
|
-
const
|
|
5
|
-
const defaults_1 = require("../../../../modules/defaults");
|
|
6
|
-
const logger_1 = require("../../../../services/logger");
|
|
4
|
+
const llm_caller_1 = require("../../shared/llm-caller");
|
|
7
5
|
const caches_1 = require("./caches");
|
|
8
|
-
/**
|
|
9
|
-
* Call the LLM with messages and optional tool IDs.
|
|
10
|
-
*
|
|
11
|
-
* Tool IDs are resolved from the module-level toolDefCache so that only
|
|
12
|
-
* lightweight string arrays flow through the durable pipe.
|
|
13
|
-
*/
|
|
14
6
|
async function callQueryLLM(messages, toolIds) {
|
|
15
|
-
|
|
16
|
-
let tools;
|
|
17
|
-
if (toolIds?.length) {
|
|
18
|
-
tools = toolIds
|
|
19
|
-
.map((id) => caches_1.toolDefCache.get(id))
|
|
20
|
-
.filter((t) => !!t);
|
|
21
|
-
}
|
|
22
|
-
const t0 = Date.now();
|
|
23
|
-
const response = await (0, llm_1.callLLM)({
|
|
24
|
-
model: defaults_1.LLM_MODEL_PRIMARY,
|
|
25
|
-
messages,
|
|
26
|
-
temperature: 0,
|
|
27
|
-
...(tools?.length ? { tools } : {}),
|
|
28
|
-
...(!tools?.length ? { max_tokens: defaults_1.LLM_MAX_TOKENS_DEFAULT } : {}),
|
|
29
|
-
});
|
|
30
|
-
const usage = response.usage;
|
|
31
|
-
logger_1.loggerRegistry.info(`[mcpQuery:callLLM] ${Date.now() - t0}ms | in=${usage?.prompt_tokens} out=${usage?.completion_tokens} total=${usage?.total_tokens}`);
|
|
32
|
-
return response;
|
|
7
|
+
return (0, llm_caller_1.callWorkflowLLM)(messages, toolIds, caches_1.toolDefCache, 'mcpQuery');
|
|
33
8
|
}
|
|
@@ -1,112 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
3
|
exports.callMcpTool = callMcpTool;
|
|
37
|
-
const
|
|
38
|
-
const ephemeral_1 = require("../../../../services/iam/ephemeral");
|
|
39
|
-
const mcpClient = __importStar(require("../../../../services/mcp/client"));
|
|
40
|
-
const mcpDbService = __importStar(require("../../../../services/mcp/db"));
|
|
41
|
-
const yamlDb = __importStar(require("../../../../services/yaml-workflow/db"));
|
|
42
|
-
const yamlDeployer = __importStar(require("../../../../services/yaml-workflow/deployer"));
|
|
4
|
+
const tool_executor_1 = require("../../shared/tool-executor");
|
|
43
5
|
const caches_1 = require("./caches");
|
|
44
|
-
/**
|
|
45
|
-
* Call any tool by its qualified name — handles both YAML workflows
|
|
46
|
-
* (yaml__* prefix) and raw MCP tools (server_slug__tool_name).
|
|
47
|
-
*/
|
|
48
6
|
async function callMcpTool(qualifiedName, args) {
|
|
49
|
-
|
|
50
|
-
const yamlWorkflowName = caches_1.yamlWorkflowMap.get(qualifiedName);
|
|
51
|
-
if (yamlWorkflowName) {
|
|
52
|
-
try {
|
|
53
|
-
const wf = await yamlDb.getYamlWorkflowByName(yamlWorkflowName);
|
|
54
|
-
if (!wf || wf.status !== 'active') {
|
|
55
|
-
return { error: `Compiled workflow "${yamlWorkflowName}" is not active` };
|
|
56
|
-
}
|
|
57
|
-
// Inject _scope from the current ToolContext so YAML workers get IAM
|
|
58
|
-
const toolCtx = (0, context_1.getToolContext)();
|
|
59
|
-
const scopedArgs = toolCtx?.principal.id
|
|
60
|
-
? {
|
|
61
|
-
...args,
|
|
62
|
-
_scope: {
|
|
63
|
-
principal: toolCtx.principal,
|
|
64
|
-
...(toolCtx.initiatingPrincipal ? { initiatingPrincipal: toolCtx.initiatingPrincipal } : {}),
|
|
65
|
-
scopes: toolCtx.credentials.scopes,
|
|
66
|
-
},
|
|
67
|
-
}
|
|
68
|
-
: args;
|
|
69
|
-
const { job_id, result } = await yamlDeployer.invokeYamlWorkflowSync(wf.app_id, wf.graph_topic, scopedArgs, undefined, wf.graph_topic);
|
|
70
|
-
return { job_id, workflow: yamlWorkflowName, status: 'completed', result };
|
|
71
|
-
}
|
|
72
|
-
catch (err) {
|
|
73
|
-
return { error: err.message, tool: qualifiedName, args };
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
// Exchange ephemeral credential tokens (eph:v1:...) right before the MCP call.
|
|
77
|
-
// This is the latest possible moment — the LLM only ever sees opaque tokens.
|
|
78
|
-
args = await (0, ephemeral_1.exchangeTokensInArgs)(args);
|
|
79
|
-
// Standard MCP tool routing
|
|
80
|
-
const serverName = caches_1.toolServerMap.get(qualifiedName);
|
|
81
|
-
const separatorIdx = qualifiedName.indexOf('__');
|
|
82
|
-
const toolName = separatorIdx >= 0
|
|
83
|
-
? qualifiedName.slice(separatorIdx + 2)
|
|
84
|
-
: qualifiedName;
|
|
85
|
-
// Build auth context from ToolContext (set by interceptor via IAM service)
|
|
86
|
-
const toolCtx = (0, context_1.getToolContext)();
|
|
87
|
-
const authContext = toolCtx?.principal.id
|
|
88
|
-
? { userId: toolCtx.principal.id, delegationToken: toolCtx.credentials.delegationToken }
|
|
89
|
-
: undefined;
|
|
90
|
-
if (serverName) {
|
|
91
|
-
try {
|
|
92
|
-
return await mcpClient.callServerTool(serverName, toolName, args, authContext);
|
|
93
|
-
}
|
|
94
|
-
catch (err) {
|
|
95
|
-
return { error: err.message, tool: qualifiedName, args };
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
// Fallback: try the tool name directly against all connected servers
|
|
99
|
-
const { servers } = await mcpDbService.listMcpServers({ limit: 100 });
|
|
100
|
-
for (const server of servers) {
|
|
101
|
-
const manifest = server.tool_manifest || [];
|
|
102
|
-
if (manifest.some((t) => t.name === toolName)) {
|
|
103
|
-
try {
|
|
104
|
-
return await mcpClient.callServerTool(server.name, toolName, args, authContext);
|
|
105
|
-
}
|
|
106
|
-
catch (err) {
|
|
107
|
-
return { error: err.message, tool: qualifiedName, args };
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
return { error: `Unknown tool: ${qualifiedName} (no server found)`, tool: qualifiedName };
|
|
7
|
+
return (0, tool_executor_1.callTool)(qualifiedName, args, { toolServerMap: caches_1.toolServerMap, yamlWorkflowMap: caches_1.yamlWorkflowMap });
|
|
112
8
|
}
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Single activity that discovers, caches, and returns lightweight tool data.
|
|
3
|
-
*
|
|
4
|
-
* Full ChatCompletionTool definitions are cached in module-level toolDefCache
|
|
5
|
-
* so they never flow through the durable pipe. Only tool IDs (qualified name
|
|
6
|
-
* strings) and a compact inventory string are returned.
|
|
7
|
-
*
|
|
8
|
-
* @param tags - MCP server tags to scope by. Pass undefined to load all servers.
|
|
9
|
-
*/
|
|
10
1
|
export declare function loadTools(tags?: string[]): Promise<{
|
|
11
2
|
toolIds: string[];
|
|
12
3
|
inventory: string;
|
|
@@ -1,93 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
3
|
exports.loadTools = loadTools;
|
|
37
|
-
const
|
|
38
|
-
const strategy_advisors_1 = require("../strategy-advisors");
|
|
4
|
+
const tool_loader_1 = require("../../shared/tool-loader");
|
|
39
5
|
const caches_1 = require("./caches");
|
|
40
|
-
/**
|
|
41
|
-
* Single activity that discovers, caches, and returns lightweight tool data.
|
|
42
|
-
*
|
|
43
|
-
* Full ChatCompletionTool definitions are cached in module-level toolDefCache
|
|
44
|
-
* so they never flow through the durable pipe. Only tool IDs (qualified name
|
|
45
|
-
* strings) and a compact inventory string are returned.
|
|
46
|
-
*
|
|
47
|
-
* @param tags - MCP server tags to scope by. Pass undefined to load all servers.
|
|
48
|
-
*/
|
|
49
6
|
async function loadTools(tags) {
|
|
50
|
-
|
|
51
|
-
if (tags?.length) {
|
|
52
|
-
servers = await mcpDbService.findServersByTags(tags, 'any');
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
const result = await mcpDbService.listMcpServers({ limit: 100 });
|
|
56
|
-
servers = result.servers;
|
|
57
|
-
}
|
|
58
|
-
const toolIds = [];
|
|
59
|
-
const inventoryLines = [];
|
|
60
|
-
const serverInfos = [];
|
|
61
|
-
for (const server of servers) {
|
|
62
|
-
const manifest = server.tool_manifest || [];
|
|
63
|
-
const slug = server.name.replace(/[^a-zA-Z0-9]/g, '_');
|
|
64
|
-
const serverTags = server.tags?.length ? server.tags.join(', ') : 'general';
|
|
65
|
-
const toolNames = [];
|
|
66
|
-
for (const t of manifest) {
|
|
67
|
-
const qualifiedName = `${slug}__${t.name}`;
|
|
68
|
-
caches_1.toolServerMap.set(qualifiedName, server.name);
|
|
69
|
-
caches_1.toolDefCache.set(qualifiedName, {
|
|
70
|
-
type: 'function',
|
|
71
|
-
function: {
|
|
72
|
-
name: qualifiedName,
|
|
73
|
-
description: `[${server.name}] ${t.description || ''}`,
|
|
74
|
-
parameters: (t.inputSchema || { type: 'object', properties: {} }),
|
|
75
|
-
},
|
|
76
|
-
});
|
|
77
|
-
toolIds.push(qualifiedName);
|
|
78
|
-
toolNames.push(t.name);
|
|
79
|
-
}
|
|
80
|
-
inventoryLines.push(`• ${server.name} [${serverTags}] (${manifest.length} tools): ${toolNames.join(', ')}`);
|
|
81
|
-
serverInfos.push({
|
|
82
|
-
name: server.name,
|
|
83
|
-
description: server.description || null,
|
|
84
|
-
tags: server.tags || [],
|
|
85
|
-
metadata: server.metadata || null,
|
|
86
|
-
toolNames,
|
|
87
|
-
toolCount: manifest.length,
|
|
88
|
-
slug,
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
const strategy = (0, strategy_advisors_1.generateStrategySection)(serverInfos);
|
|
92
|
-
return { toolIds, inventory: inventoryLines.join('\n'), strategy };
|
|
7
|
+
return (0, tool_loader_1.loadToolsFromServers)(tags, { toolServerMap: caches_1.toolServerMap, toolDefCache: caches_1.toolDefCache }, { logPrefix: 'mcpQuery' });
|
|
93
8
|
}
|
|
@@ -39,9 +39,10 @@ const defaults_1 = require("../../../modules/defaults");
|
|
|
39
39
|
const activities = __importStar(require("./activities"));
|
|
40
40
|
const interceptorActivities = __importStar(require("../../../services/interceptor/activities"));
|
|
41
41
|
const prompts_1 = require("./prompts");
|
|
42
|
+
const tool_result_guard_1 = require("../tool-result-guard");
|
|
42
43
|
const { loadTools, callMcpTool, callQueryLLM, } = hotmesh_1.Durable.workflow.proxyActivities({
|
|
43
44
|
activities,
|
|
44
|
-
|
|
45
|
+
retry: {
|
|
45
46
|
maximumAttempts: 3,
|
|
46
47
|
backoffCoefficient: 2,
|
|
47
48
|
maximumInterval: '10 seconds',
|
|
@@ -50,7 +51,7 @@ const { loadTools, callMcpTool, callQueryLLM, } = hotmesh_1.Durable.workflow.pro
|
|
|
50
51
|
const { ltEnrichEscalationRouting, } = hotmesh_1.Durable.workflow.proxyActivities({
|
|
51
52
|
activities: interceptorActivities,
|
|
52
53
|
taskQueue: 'lt-interceptor',
|
|
53
|
-
|
|
54
|
+
retry: { maximumAttempts: 3 },
|
|
54
55
|
});
|
|
55
56
|
const MAX_TOOL_ROUNDS = defaults_1.TOOL_ROUNDS_MCP_QUERY;
|
|
56
57
|
/**
|
|
@@ -106,8 +107,30 @@ async function mcpQuery(envelope) {
|
|
|
106
107
|
messages.push({ role: 'user', content: triageHints });
|
|
107
108
|
messages.push({ role: 'assistant', content: 'Understood. I will use these learnings to take a more targeted approach this time.' });
|
|
108
109
|
}
|
|
110
|
+
// If invoked from the help assistant, inject dashboard context
|
|
111
|
+
const dashContext = envelope.data?.context;
|
|
112
|
+
if (dashContext) {
|
|
113
|
+
const lines = [
|
|
114
|
+
`[Dashboard Context]`,
|
|
115
|
+
`Page: ${dashContext.page || 'unknown'}`,
|
|
116
|
+
dashContext.entities?.workflowId ? `Workflow: ${dashContext.entities.workflowId}` : '',
|
|
117
|
+
dashContext.entities?.workflowStatus ? `Status: ${dashContext.entities.workflowStatus}` : '',
|
|
118
|
+
dashContext.entities?.yamlContent ? `YAML:\n${dashContext.entities.yamlContent}` : '',
|
|
119
|
+
dashContext.entities?.prompt ? `Original query: ${dashContext.entities.prompt}` : '',
|
|
120
|
+
``,
|
|
121
|
+
`IMPORTANT: This is a help assistant conversation. Always include the actual data, content, and results from tool calls in your response. Do not just confirm an action was taken — show the user what was retrieved, stored, or produced.`,
|
|
122
|
+
`[End Context]`,
|
|
123
|
+
].filter(Boolean).join('\n');
|
|
124
|
+
messages.push({ role: 'user', content: lines });
|
|
125
|
+
messages.push({ role: 'assistant', content: 'I have the dashboard context. I will always show actual data and results, not just confirmations.' });
|
|
126
|
+
}
|
|
109
127
|
messages.push({ role: 'user', content: prompt });
|
|
110
128
|
let toolCallCount = 0;
|
|
129
|
+
// Repeated-error circuit breaker: if the same tool returns the same
|
|
130
|
+
// error twice in a row, the LLM is stuck — break out immediately.
|
|
131
|
+
const MAX_REPEATED_ERRORS = 2;
|
|
132
|
+
let lastErrorKey = '';
|
|
133
|
+
let repeatedErrorCount = 0;
|
|
111
134
|
// Agentic loop: LLM decides → execute tools → feed back → repeat
|
|
112
135
|
const BUDGET_WARNING_THRESHOLD = 3;
|
|
113
136
|
for (let round = 0; round < MAX_TOOL_ROUNDS; round++) {
|
|
@@ -129,6 +152,7 @@ async function mcpQuery(envelope) {
|
|
|
129
152
|
content: response.content,
|
|
130
153
|
tool_calls: fnCalls,
|
|
131
154
|
});
|
|
155
|
+
let roundHadError = false;
|
|
132
156
|
for (const toolCall of fnCalls) {
|
|
133
157
|
toolCallCount++;
|
|
134
158
|
let args = {};
|
|
@@ -141,7 +165,7 @@ async function mcpQuery(envelope) {
|
|
|
141
165
|
const result = await callMcpTool(toolCall.function.name, args);
|
|
142
166
|
// Durable waitFor: if the tool returns a signal, pause until human responds
|
|
143
167
|
if (result?.type === 'waitFor' && result?.signalId) {
|
|
144
|
-
const ctx = hotmesh_1.Durable.workflow.
|
|
168
|
+
const ctx = hotmesh_1.Durable.workflow.workflowInfo();
|
|
145
169
|
const workflowType = ctx.workflowTopic.replace(`${ctx.taskQueue}-`, '');
|
|
146
170
|
await ltEnrichEscalationRouting({
|
|
147
171
|
escalationId: result.escalationId,
|
|
@@ -153,7 +177,7 @@ async function mcpQuery(envelope) {
|
|
|
153
177
|
},
|
|
154
178
|
claimForUserId: envelope.lt?.userId,
|
|
155
179
|
});
|
|
156
|
-
const signalData = await hotmesh_1.Durable.workflow.
|
|
180
|
+
const signalData = await hotmesh_1.Durable.workflow.condition(result.signalId);
|
|
157
181
|
messages.push({
|
|
158
182
|
role: 'tool',
|
|
159
183
|
tool_call_id: toolCall.id,
|
|
@@ -161,11 +185,37 @@ async function mcpQuery(envelope) {
|
|
|
161
185
|
});
|
|
162
186
|
continue;
|
|
163
187
|
}
|
|
188
|
+
const resultStr = (0, tool_result_guard_1.sanitizeToolResult)(result);
|
|
164
189
|
messages.push({
|
|
165
190
|
role: 'tool',
|
|
166
191
|
tool_call_id: toolCall.id,
|
|
167
|
-
content:
|
|
192
|
+
content: resultStr,
|
|
168
193
|
});
|
|
194
|
+
// Track repeated errors: same tool + same error = stuck
|
|
195
|
+
const isError = resultStr.includes('MCP error') || resultStr.includes('"error"');
|
|
196
|
+
if (isError) {
|
|
197
|
+
roundHadError = true;
|
|
198
|
+
const errorKey = `${toolCall.function.name}::${resultStr.slice(0, 200)}`;
|
|
199
|
+
if (errorKey === lastErrorKey) {
|
|
200
|
+
repeatedErrorCount++;
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
lastErrorKey = errorKey;
|
|
204
|
+
repeatedErrorCount = 1;
|
|
205
|
+
}
|
|
206
|
+
if (repeatedErrorCount >= MAX_REPEATED_ERRORS) {
|
|
207
|
+
messages.push({
|
|
208
|
+
role: 'user',
|
|
209
|
+
content: `[CIRCUIT BREAKER] The tool "${toolCall.function.name}" has returned the same error ${repeatedErrorCount} times. Stop retrying this tool. Summarize what you accomplished and what failed.`,
|
|
210
|
+
});
|
|
211
|
+
const bailResponse = await callQueryLLM(messages, undefined);
|
|
212
|
+
return buildQueryReturn(bailResponse.content || 'Workflow stopped: repeated tool errors.', toolCallCount, [{ name: 'circuit_breaker', value: toolCall.function.name }]);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
if (!roundHadError) {
|
|
217
|
+
lastErrorKey = '';
|
|
218
|
+
repeatedErrorCount = 0;
|
|
169
219
|
}
|
|
170
220
|
}
|
|
171
221
|
// Exhausted rounds — ask LLM for diagnostic summary
|