@hotmeshio/long-tail 0.1.14 → 0.1.15
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 +15 -0
- package/build/api/escalations/bulk.d.ts +78 -0
- package/build/api/escalations/bulk.js +279 -0
- package/build/api/escalations/claim.d.ts +30 -0
- package/build/api/escalations/claim.js +121 -0
- package/build/api/escalations/create.d.ts +29 -0
- package/build/api/escalations/create.js +101 -0
- package/build/api/escalations/helpers.d.ts +10 -0
- package/build/api/escalations/helpers.js +80 -0
- package/build/api/escalations/index.d.ts +6 -0
- package/build/api/escalations/index.js +26 -0
- package/build/api/escalations/list.d.ts +75 -0
- package/build/api/escalations/list.js +170 -0
- package/build/api/escalations/resolve.d.ts +18 -0
- package/build/api/escalations/resolve.js +243 -0
- package/build/api/escalations/single.d.ts +37 -0
- package/build/api/escalations/single.js +123 -0
- package/build/api/files.d.ts +3 -0
- package/build/api/files.js +18 -1
- package/build/api/knowledge.d.ts +36 -0
- package/build/api/knowledge.js +112 -0
- package/build/api/mcp/index.d.ts +2 -0
- package/build/api/mcp/index.js +16 -0
- package/build/api/{mcp.d.ts → mcp/servers.d.ts} +1 -33
- package/build/api/{mcp.js → mcp/servers.js} +4 -65
- package/build/api/mcp/tools.d.ts +33 -0
- package/build/api/mcp/tools.js +64 -0
- package/build/api/settings.js +9 -1
- package/build/api/workflows/config.d.ts +64 -0
- package/build/api/workflows/config.js +142 -0
- package/build/api/workflows/discovery.d.ts +29 -0
- package/build/api/workflows/discovery.js +153 -0
- package/build/api/workflows/index.d.ts +3 -0
- package/build/api/workflows/index.js +18 -0
- package/build/api/workflows/invocation.d.ts +67 -0
- package/build/api/workflows/invocation.js +188 -0
- package/build/api/yaml-workflows/cron.d.ts +39 -0
- package/build/api/yaml-workflows/cron.js +127 -0
- package/build/api/{yaml-workflows.d.ts → yaml-workflows/crud.d.ts} +22 -146
- package/build/api/{yaml-workflows.js → yaml-workflows/crud.js} +77 -378
- package/build/api/yaml-workflows/deploy.d.ts +71 -0
- package/build/api/yaml-workflows/deploy.js +223 -0
- package/build/api/yaml-workflows/helpers.d.ts +2 -0
- package/build/api/yaml-workflows/helpers.js +8 -0
- package/build/api/yaml-workflows/index.d.ts +4 -0
- package/build/api/yaml-workflows/index.js +27 -0
- package/build/api/yaml-workflows/versions.d.ts +43 -0
- package/build/api/yaml-workflows/versions.js +124 -0
- package/build/bin/ltc.d.ts +2 -0
- package/build/bin/ltc.js +220 -0
- package/build/examples/seed-data.d.ts +55 -0
- package/build/examples/seed-data.js +161 -0
- package/build/examples/seed.js +7 -164
- package/build/lib/cli/auth.d.ts +23 -0
- package/build/lib/cli/auth.js +167 -0
- package/build/lib/cli/client.d.ts +6 -0
- package/build/lib/cli/client.js +31 -0
- package/build/lib/cli/commands/escalations.d.ts +19 -0
- package/build/lib/cli/commands/escalations.js +69 -0
- package/build/lib/cli/commands/knowledge.d.ts +18 -0
- package/build/lib/cli/commands/knowledge.js +87 -0
- package/build/lib/cli/commands/mcp.d.ts +8 -0
- package/build/lib/cli/commands/mcp.js +33 -0
- package/build/lib/cli/commands/pipelines.d.ts +16 -0
- package/build/lib/cli/commands/pipelines.js +67 -0
- package/build/lib/cli/commands/status.d.ts +1 -0
- package/build/lib/cli/commands/status.js +28 -0
- package/build/lib/cli/commands/users.d.ts +7 -0
- package/build/lib/cli/commands/users.js +25 -0
- package/build/lib/cli/commands/workflows.d.ts +16 -0
- package/build/lib/cli/commands/workflows.js +104 -0
- package/build/lib/cli/compile.d.ts +2 -0
- package/build/lib/cli/compile.js +165 -0
- package/build/lib/cli/format.d.ts +23 -0
- package/build/lib/cli/format.js +94 -0
- package/build/lib/cli/init.d.ts +1 -0
- package/build/lib/cli/init.js +61 -0
- package/build/lib/cli/output.d.ts +27 -0
- package/build/lib/cli/output.js +126 -0
- package/build/lib/cli/scanner.d.ts +10 -0
- package/build/lib/cli/scanner.js +164 -0
- package/build/lib/cli/types.d.ts +16 -0
- package/build/lib/cli/types.js +2 -0
- package/build/lib/logger/index.d.ts +0 -9
- package/build/lib/logger/index.js +9 -4
- package/build/lib/storage/index.js +2 -2
- package/build/routes/file-browser.js +14 -0
- package/build/routes/index.js +2 -0
- package/build/routes/knowledge.d.ts +2 -0
- package/build/routes/knowledge.js +141 -0
- package/build/routes/yaml-workflows/crud.js +9 -0
- package/build/sdk/index.d.ts +17 -0
- package/build/sdk/index.js +19 -0
- package/build/services/mcp/client/connection-dispatch.d.ts +18 -0
- package/build/services/mcp/client/connection-dispatch.js +78 -0
- package/build/services/mcp/client/connection-lifecycle.d.ts +48 -0
- package/build/services/mcp/client/connection-lifecycle.js +296 -0
- package/build/services/mcp/client/connection-test.d.ts +10 -0
- package/build/services/mcp/client/connection-test.js +49 -0
- package/build/services/mcp/client/connection.d.ts +3 -68
- package/build/services/mcp/client/connection.js +15 -393
- package/build/services/mcp/server-lifecycle.d.ts +27 -0
- package/build/services/mcp/server-lifecycle.js +49 -0
- package/build/services/mcp/server-tools.d.ts +13 -0
- package/build/services/mcp/server-tools.js +287 -0
- package/build/services/mcp/server.d.ts +2 -26
- package/build/services/mcp/server.js +7 -315
- package/build/services/yaml-workflow/builder-regenerate.d.ts +25 -0
- package/build/services/yaml-workflow/builder-regenerate.js +111 -0
- package/build/services/yaml-workflow/db-versions.d.ts +17 -0
- package/build/services/yaml-workflow/db-versions.js +76 -0
- package/build/services/yaml-workflow/db.d.ts +3 -13
- package/build/services/yaml-workflow/db.js +15 -71
- package/build/services/yaml-workflow/deployer-helpers.js +48 -17
- package/build/services/yaml-workflow/durable-compiler/index.d.ts +22 -0
- package/build/services/yaml-workflow/durable-compiler/index.js +168 -0
- package/build/services/yaml-workflow/durable-compiler/parser.d.ts +12 -0
- package/build/services/yaml-workflow/durable-compiler/parser.js +110 -0
- package/build/services/yaml-workflow/durable-compiler/prompts.d.ts +18 -0
- package/build/services/yaml-workflow/durable-compiler/prompts.js +570 -0
- package/build/services/yaml-workflow/durable-compiler/types.d.ts +51 -0
- package/build/services/yaml-workflow/durable-compiler/types.js +5 -0
- package/build/services/yaml-workflow/pipeline/build/dag-assembly.d.ts +17 -0
- package/build/services/yaml-workflow/pipeline/build/dag-assembly.js +192 -0
- package/build/services/yaml-workflow/pipeline/build/dag.d.ts +4 -13
- package/build/services/yaml-workflow/pipeline/build/dag.js +9 -185
- package/build/services/yaml-workflow/pipeline/prompt-templates.d.ts +10 -0
- package/build/services/yaml-workflow/pipeline/prompt-templates.js +270 -0
- package/build/services/yaml-workflow/pipeline/prompts.d.ts +3 -6
- package/build/services/yaml-workflow/pipeline/prompts.js +8 -263
- package/build/start/workers.js +6 -5
- package/build/system/activities/file-storage.d.ts +4 -0
- package/build/system/activities/file-storage.js +7 -1
- package/build/system/activities/knowledge.d.ts +23 -0
- package/build/system/activities/knowledge.js +50 -10
- package/build/system/activities/sql.d.ts +3 -0
- package/build/system/activities/sql.js +25 -1
- package/build/system/mcp-servers/file-storage.js +3 -1
- package/build/system/mcp-servers/human-queue-schemas.d.ts +91 -0
- package/build/system/mcp-servers/human-queue-schemas.js +42 -0
- package/build/system/mcp-servers/human-queue.d.ts +2 -6
- package/build/system/mcp-servers/human-queue.js +9 -51
- package/build/system/mcp-servers/knowledge.js +43 -9
- package/build/system/mcp-servers/workflow-compiler.js +54 -0
- package/build/system/workflows/mcp-triage/activities-proxy.d.ts +21 -0
- package/build/system/workflows/mcp-triage/activities-proxy.js +70 -0
- package/build/system/workflows/mcp-triage/index.js +17 -75
- package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +1 -0
- package/build/system/workflows/mcp-workflow-planner/activities/persist.js +1 -0
- package/build/system/workflows/mcp-workflow-planner/index.js +2 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/dashboard/dist/assets/{AdminDashboard-Cngijp4Q.js → AdminDashboard-NLryl1_B.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-Cngijp4Q.js.map → AdminDashboard-NLryl1_B.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-6vexlrk3.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-6vexlrk3.js.map +1 -0
- package/dashboard/dist/assets/{BotPicker-B8Uvw9Si.js → BotPicker-DWhn0tr1.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-B8Uvw9Si.js.map → BotPicker-DWhn0tr1.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-DiFPuWOY.js → CollapsibleSection-CgYgQiOc.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-DiFPuWOY.js.map → CollapsibleSection-CgYgQiOc.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-CpXG9uyu.js → ConfirmDeleteModal-DCKAPXD3.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-CpXG9uyu.js.map → ConfirmDeleteModal-DCKAPXD3.js.map} +1 -1
- package/dashboard/dist/assets/{CopyableId-DKsTR9lK.js → CopyableId-DXkaAOYk.js} +2 -2
- package/dashboard/dist/assets/{CopyableId-DKsTR9lK.js.map → CopyableId-DXkaAOYk.js.map} +1 -1
- package/dashboard/dist/assets/{CredentialsPage-DlS7Kf40.js → CredentialsPage-B361BOfU.js} +2 -2
- package/dashboard/dist/assets/{CredentialsPage-DlS7Kf40.js.map → CredentialsPage-B361BOfU.js.map} +1 -1
- package/dashboard/dist/assets/{CustomDurationPicker-B-9eW3pm.js → CustomDurationPicker-D2G1ldiF.js} +2 -2
- package/dashboard/dist/assets/{CustomDurationPicker-B-9eW3pm.js.map → CustomDurationPicker-D2G1ldiF.js.map} +1 -1
- package/dashboard/dist/assets/{DataTable-DkOokbtL.js → DataTable-DXSUbA26.js} +2 -2
- package/dashboard/dist/assets/{DataTable-DkOokbtL.js.map → DataTable-DXSUbA26.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-DVtHqM-5.js → ElapsedCell-CQGqkXP_.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-DVtHqM-5.js.map → ElapsedCell-CQGqkXP_.js.map} +1 -1
- package/dashboard/dist/assets/{EmptyState-C7KIMIbE.js → EmptyState-Dep92Wkg.js} +2 -2
- package/dashboard/dist/assets/{EmptyState-C7KIMIbE.js.map → EmptyState-Dep92Wkg.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-BMKBlkPx.js → EscalationsOverview-DVEFVjs7.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-BMKBlkPx.js.map → EscalationsOverview-DVEFVjs7.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-BYZ5OVdQ.js → EventTable-BMJAPkMi.js} +2 -2
- package/dashboard/dist/assets/{EventTable-BYZ5OVdQ.js.map → EventTable-BMJAPkMi.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-C5r3n6YO.js → FilterBar-DbVbCzH2.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-C5r3n6YO.js.map → FilterBar-DbVbCzH2.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-BGUajIsW.js → ListToolbar-0XNuXj0M.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-BGUajIsW.js.map → ListToolbar-0XNuXj0M.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-B_kJYHea.js → McpOverview-CeYnCzBN.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-B_kJYHea.js.map → McpOverview-CeYnCzBN.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-t3qW3QNa.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-t3qW3QNa.js.map +1 -0
- package/dashboard/dist/assets/{McpQueryPage-BgAq_bQg.js → McpQueryPage-CfUcdzaj.js} +2 -2
- package/dashboard/dist/assets/{McpQueryPage-BgAq_bQg.js.map → McpQueryPage-CfUcdzaj.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunDetailPage-B8c0OszR.js → McpRunDetailPage-CZtodW_Z.js} +2 -2
- package/dashboard/dist/assets/{McpRunDetailPage-B8c0OszR.js.map → McpRunDetailPage-CZtodW_Z.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-BY8C6k78.js → McpRunsPage-Dzgq7HGt.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-BY8C6k78.js.map → McpRunsPage-Dzgq7HGt.js.map} +1 -1
- package/dashboard/dist/assets/{Modal-E1yRnCeW.js → Modal-yyhUeKoA.js} +2 -2
- package/dashboard/dist/assets/{Modal-E1yRnCeW.js.map → Modal-yyhUeKoA.js.map} +1 -1
- package/dashboard/dist/assets/{OperatorDashboard-C8MSTzey.js → OperatorDashboard-Ceh7OQtZ.js} +2 -2
- package/dashboard/dist/assets/{OperatorDashboard-C8MSTzey.js.map → OperatorDashboard-Ceh7OQtZ.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeader-Cm5HBQF_.js → PageHeader-CZ9a8cpr.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-Cm5HBQF_.js.map → PageHeader-CZ9a8cpr.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-CNmWJFSN.js → PageHeaderWithStats-BJuNs5NM.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-CNmWJFSN.js.map → PageHeaderWithStats-BJuNs5NM.js.map} +1 -1
- package/dashboard/dist/assets/{PriorityBadge-HSI4RVhs.js → PriorityBadge-BrPikMFy.js} +2 -2
- package/dashboard/dist/assets/{PriorityBadge-HSI4RVhs.js.map → PriorityBadge-BrPikMFy.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessDetailPage-Dln8622H.js → ProcessDetailPage-2miaYd8G.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-Dln8622H.js.map → ProcessDetailPage-2miaYd8G.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-bIsd9N_h.js → ProcessesListPage-DqpRDqjk.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-bIsd9N_h.js.map → ProcessesListPage-DqpRDqjk.js.map} +1 -1
- package/dashboard/dist/assets/{RolePill-BVUp2bF0.js → RolePill-DxbJMfJu.js} +2 -2
- package/dashboard/dist/assets/{RolePill-BVUp2bF0.js.map → RolePill-DxbJMfJu.js.map} +1 -1
- package/dashboard/dist/assets/RolesPage-CYHRo21-.js +2 -0
- package/dashboard/dist/assets/{RolesPage-kH-Njt25.js.map → RolesPage-CYHRo21-.js.map} +1 -1
- package/dashboard/dist/assets/{RowActions-DbUJPfaW.js → RowActions-DurFwIwe.js} +2 -2
- package/dashboard/dist/assets/{RowActions-DbUJPfaW.js.map → RowActions-DurFwIwe.js.map} +1 -1
- package/dashboard/dist/assets/RunAsSelector-CNKraP6u.js +2 -0
- package/dashboard/dist/assets/RunAsSelector-CNKraP6u.js.map +1 -0
- package/dashboard/dist/assets/{StatCard-Bs3JbyAz.js → StatCard-CKplpK3w.js} +2 -2
- package/dashboard/dist/assets/{StatCard-Bs3JbyAz.js.map → StatCard-CKplpK3w.js.map} +1 -1
- package/dashboard/dist/assets/{StatusBadge-CakDdsCw.js → StatusBadge-Dm0V1dNN.js} +2 -2
- package/dashboard/dist/assets/{StatusBadge-CakDdsCw.js.map → StatusBadge-Dm0V1dNN.js.map} +1 -1
- package/dashboard/dist/assets/{StepIndicator-Cd_SG_yA.js → StepIndicator-Dicx0WTZ.js} +2 -2
- package/dashboard/dist/assets/{StepIndicator-Cd_SG_yA.js.map → StepIndicator-Dicx0WTZ.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-Bz0C18nC.js → StickyPagination-B2jYvU3-.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-Bz0C18nC.js.map → StickyPagination-B2jYvU3-.js.map} +1 -1
- package/dashboard/dist/assets/SwimlaneTimeline-ClwumkT1.js +2 -0
- package/dashboard/dist/assets/SwimlaneTimeline-ClwumkT1.js.map +1 -0
- package/dashboard/dist/assets/{TagInput-ClFhXG-U.js → TagInput-CypDZ6Kl.js} +2 -2
- package/dashboard/dist/assets/{TagInput-ClFhXG-U.js.map → TagInput-CypDZ6Kl.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-SuMBdARt.js → TaskDetailPage-DooDNJGT.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-SuMBdARt.js.map → TaskDetailPage-DooDNJGT.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-lJR1JW_W.js → TaskQueuePill-C1hZ-j31.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-lJR1JW_W.js.map → TaskQueuePill-C1hZ-j31.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-Dkq1Vtbt.js → TasksListPage-D7CdkAeg.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-Dkq1Vtbt.js.map → TasksListPage-D7CdkAeg.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-DgfDZ1pl.js → TimeAgo-B5LXB2aj.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-DgfDZ1pl.js.map → TimeAgo-B5LXB2aj.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-MpHZ1hMD.js → TimestampCell-Crb9b0Gw.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-MpHZ1hMD.js.map → TimestampCell-Crb9b0Gw.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-DqsosA4B.js → UserName-OPg-nkRa.js} +2 -2
- package/dashboard/dist/assets/{UserName-DqsosA4B.js.map → UserName-OPg-nkRa.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-CVlg38C3.js → WorkflowExecutionPage-CcLVrs9b.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-CVlg38C3.js.map → WorkflowExecutionPage-CcLVrs9b.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowPill-CRpZhjGR.js → WorkflowPill-CCV4MMj7.js} +2 -2
- package/dashboard/dist/assets/{WorkflowPill-CRpZhjGR.js.map → WorkflowPill-CCV4MMj7.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsDashboard-Ugzbs8mV.js → WorkflowsDashboard-DB1SncBi.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-Ugzbs8mV.js.map → WorkflowsDashboard-DB1SncBi.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-CIp_lTNl.js → WorkflowsOverview-DvShiYJV.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-CIp_lTNl.js.map → WorkflowsOverview-DvShiYJV.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-DCBoMeGI.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-DCBoMeGI.js.map +1 -0
- package/dashboard/dist/assets/{bots-DPfUpVqI.js → bots-Dqos20NE.js} +2 -2
- package/dashboard/dist/assets/{bots-DPfUpVqI.js.map → bots-Dqos20NE.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-RrCDbMC3.js → escalation-A0CsbvNV.js} +2 -2
- package/dashboard/dist/assets/{escalation-RrCDbMC3.js.map → escalation-A0CsbvNV.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-CDGa9wsD.js → escalation-columns-BpBJN6k4.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-CDGa9wsD.js.map → escalation-columns-BpBJN6k4.js.map} +1 -1
- package/dashboard/dist/assets/{helpers-ZSKqdkdS.js → helpers-CmznCuAx.js} +2 -2
- package/dashboard/dist/assets/{helpers-ZSKqdkdS.js.map → helpers-CmznCuAx.js.map} +1 -1
- package/dashboard/dist/assets/index-BIeYV5QK.js +2 -0
- package/dashboard/dist/assets/index-BIeYV5QK.js.map +1 -0
- package/dashboard/dist/assets/index-BYwD3kHN.js +5 -0
- package/dashboard/dist/assets/index-BYwD3kHN.js.map +1 -0
- package/dashboard/dist/assets/index-C5TUqJu0.css +1 -0
- package/dashboard/dist/assets/{index-DX6zxr6t.js → index-C8-UaN4N.js} +2 -2
- package/dashboard/dist/assets/{index-DX6zxr6t.js.map → index-C8-UaN4N.js.map} +1 -1
- package/dashboard/dist/assets/index-CAj5LT9H.js +15 -0
- package/dashboard/dist/assets/index-CAj5LT9H.js.map +1 -0
- package/dashboard/dist/assets/index-CjxHCVxl.js +2 -0
- package/dashboard/dist/assets/{index-C90ZPzXk.js.map → index-CjxHCVxl.js.map} +1 -1
- package/dashboard/dist/assets/index-Cr0Rqsj7.js +2 -0
- package/dashboard/dist/assets/index-Cr0Rqsj7.js.map +1 -0
- package/dashboard/dist/assets/index-DZHNte4o.js +2 -0
- package/dashboard/dist/assets/{index-K40Qw1tk.js.map → index-DZHNte4o.js.map} +1 -1
- package/dashboard/dist/assets/{index-DNytWfSZ.js → index-VnYkWW8r.js} +2 -2
- package/dashboard/dist/assets/{index-DNytWfSZ.js.map → index-VnYkWW8r.js.map} +1 -1
- package/dashboard/dist/assets/{index-BbI2dzhJ.js → index-XGOmZ117.js} +2 -2
- package/dashboard/dist/assets/{index-BbI2dzhJ.js.map → index-XGOmZ117.js.map} +1 -1
- package/dashboard/dist/assets/index-ZjOUzWhc.js +2 -0
- package/dashboard/dist/assets/index-ZjOUzWhc.js.map +1 -0
- package/dashboard/dist/assets/{index-Cmgrk7PQ.js → index-puKKZ5l8.js} +71 -71
- package/dashboard/dist/assets/index-puKKZ5l8.js.map +1 -0
- package/dashboard/dist/assets/{index-BmVCyB6C.js → index-t5frSddy.js} +2 -2
- package/dashboard/dist/assets/{index-BmVCyB6C.js.map → index-t5frSddy.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-CNE44TSp.js → mcp-DrWymhSu.js} +2 -2
- package/dashboard/dist/assets/{mcp-CNE44TSp.js.map → mcp-DrWymhSu.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-RQX0uN-5.js → mcp-query-BhUxVEMS.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-RQX0uN-5.js.map → mcp-query-BhUxVEMS.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-runs-0w40bdz-.js → mcp-runs-DUfz4mLd.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-0w40bdz-.js.map → mcp-runs-DUfz4mLd.js.map} +1 -1
- package/dashboard/dist/assets/{namespaces-BbmdXuPp.js → namespaces-Cm6AY5sh.js} +2 -2
- package/dashboard/dist/assets/{namespaces-BbmdXuPp.js.map → namespaces-Cm6AY5sh.js.map} +1 -1
- package/dashboard/dist/assets/{roles-DoHYlhWH.js → roles-2v1Kc7BJ.js} +2 -2
- package/dashboard/dist/assets/{roles-DoHYlhWH.js.map → roles-2v1Kc7BJ.js.map} +1 -1
- package/dashboard/dist/assets/{settings-BAiJiCHS.js → settings-DTQNp6tH.js} +2 -2
- package/dashboard/dist/assets/{settings-BAiJiCHS.js.map → settings-DTQNp6tH.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-CvroqHtm.js → tasks-CS1rgG1s.js} +2 -2
- package/dashboard/dist/assets/{tasks-CvroqHtm.js.map → tasks-CS1rgG1s.js.map} +1 -1
- package/dashboard/dist/assets/useEventHooks-BjXX8x3a.js +2 -0
- package/dashboard/dist/assets/{useEventHooks-BHMbzR_y.js.map → useEventHooks-BjXX8x3a.js.map} +1 -1
- package/dashboard/dist/assets/useYamlActivityEvents-BeR-nVWQ.js +2 -0
- package/dashboard/dist/assets/{useYamlActivityEvents-D56KV14X.js.map → useYamlActivityEvents-BeR-nVWQ.js.map} +1 -1
- package/dashboard/dist/assets/{users-CxIMy_xw.js → users-DYsdQ7Md.js} +2 -2
- package/dashboard/dist/assets/{users-CxIMy_xw.js.map → users-DYsdQ7Md.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-AFGxSeQS.js → vendor-icons-CWl44VA6.js} +77 -77
- package/dashboard/dist/assets/vendor-icons-CWl44VA6.js.map +1 -0
- package/dashboard/dist/assets/{workflows-yR9yais7.js → workflows-2QAXh3UD.js} +2 -2
- package/dashboard/dist/assets/{workflows-yR9yais7.js.map → workflows-2QAXh3UD.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-QVF2MZ0l.js → yaml-workflows-sx8-UEE3.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-QVF2MZ0l.js.map → yaml-workflows-sx8-UEE3.js.map} +1 -1
- package/dashboard/dist/index.html +3 -3
- package/docs/api/http/file-browser.md +101 -0
- package/docs/api/http/knowledge.md +203 -0
- package/docs/api/http/settings.md +6 -4
- package/docs/api/sdk/files.md +68 -0
- package/docs/api/sdk/knowledge.md +126 -0
- package/docs/api/sdk/settings.md +3 -2
- package/docs/cli.md +171 -0
- package/docs/compilation.md +16 -0
- package/docs/compiler.md +311 -0
- package/docs/events.md +19 -0
- package/docs/workflows.md +19 -0
- package/package.json +13 -2
- package/build/api/escalations.d.ts +0 -271
- package/build/api/escalations.js +0 -932
- package/build/api/workflows.d.ts +0 -158
- package/build/api/workflows.js +0 -414
- package/dashboard/dist/assets/AvailableEscalationsPage-CpBfGV1h.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-CpBfGV1h.js.map +0 -1
- package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js +0 -5
- package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js.map +0 -1
- package/dashboard/dist/assets/RolesPage-kH-Njt25.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-Cfe-xQRX.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-Cfe-xQRX.js.map +0 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js.map +0 -1
- package/dashboard/dist/assets/helpers-rMEcLwKs.js +0 -2
- package/dashboard/dist/assets/helpers-rMEcLwKs.js.map +0 -1
- package/dashboard/dist/assets/index-ABcJHHlN.js +0 -5
- package/dashboard/dist/assets/index-ABcJHHlN.js.map +0 -1
- package/dashboard/dist/assets/index-B91h_jZ0.js +0 -15
- package/dashboard/dist/assets/index-B91h_jZ0.js.map +0 -1
- package/dashboard/dist/assets/index-C1E5GTs9.js +0 -2
- package/dashboard/dist/assets/index-C1E5GTs9.js.map +0 -1
- package/dashboard/dist/assets/index-C90ZPzXk.js +0 -2
- package/dashboard/dist/assets/index-Cmgrk7PQ.js.map +0 -1
- package/dashboard/dist/assets/index-DeX-ezqf.css +0 -1
- package/dashboard/dist/assets/index-K40Qw1tk.js +0 -2
- package/dashboard/dist/assets/index-lCyNr5Xk.js +0 -2
- package/dashboard/dist/assets/index-lCyNr5Xk.js.map +0 -1
- package/dashboard/dist/assets/useEventHooks-BHMbzR_y.js +0 -2
- package/dashboard/dist/assets/useYamlActivityEvents-D56KV14X.js +0 -2
- package/dashboard/dist/assets/vendor-icons-AFGxSeQS.js.map +0 -1
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.registerHumanQueueTools = registerHumanQueueTools;
|
|
37
|
+
const crypto = __importStar(require("crypto"));
|
|
38
|
+
const zod_1 = require("zod");
|
|
39
|
+
const escalationService = __importStar(require("../escalation"));
|
|
40
|
+
// ── Schemas (extracted to break TS2589 deep-instantiation in registerTool generics) ──
|
|
41
|
+
const escalateSchema = zod_1.z.object({
|
|
42
|
+
role: zod_1.z.string().describe('Target role for the escalation (e.g., "reviewer")'),
|
|
43
|
+
message: zod_1.z.string().describe('Description of what needs human review'),
|
|
44
|
+
data: zod_1.z.record(zod_1.z.any()).optional().describe('Contextual data for the reviewer'),
|
|
45
|
+
type: zod_1.z.string().optional().default('mcp').describe('Escalation type classification'),
|
|
46
|
+
subtype: zod_1.z.string().optional().default('tool_call').describe('Escalation subtype'),
|
|
47
|
+
priority: zod_1.z.number().min(1).max(4).optional().default(2)
|
|
48
|
+
.describe('Priority: 1 (highest) to 4 (lowest)'),
|
|
49
|
+
});
|
|
50
|
+
const checkResolutionSchema = zod_1.z.object({
|
|
51
|
+
escalation_id: zod_1.z.string().describe('The escalation ID to check'),
|
|
52
|
+
});
|
|
53
|
+
const getAvailableWorkSchema = zod_1.z.object({
|
|
54
|
+
role: zod_1.z.string().describe('Role to filter by'),
|
|
55
|
+
limit: zod_1.z.number().optional().default(10).describe('Max results to return'),
|
|
56
|
+
});
|
|
57
|
+
const claimAndResolveSchema = zod_1.z.object({
|
|
58
|
+
escalation_id: zod_1.z.string().describe('The escalation ID to claim and resolve'),
|
|
59
|
+
resolver_id: zod_1.z.string().describe('Identifier for who/what is resolving'),
|
|
60
|
+
payload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload data'),
|
|
61
|
+
});
|
|
62
|
+
const resolveEscalationSchema = zod_1.z.object({
|
|
63
|
+
escalation_id: zod_1.z.string().describe('The escalation ID to resolve'),
|
|
64
|
+
payload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload data'),
|
|
65
|
+
});
|
|
66
|
+
const escalateAndWaitSchema = zod_1.z.object({
|
|
67
|
+
role: zod_1.z.string().describe('Target role for the escalation (e.g., "reviewer")'),
|
|
68
|
+
message: zod_1.z.string().describe('Description of what input is needed from the human'),
|
|
69
|
+
form_schema: zod_1.z.record(zod_1.z.any()).optional()
|
|
70
|
+
.describe('JSON Schema for the resolver form. Use format:"password" for sensitive fields.'),
|
|
71
|
+
data: zod_1.z.record(zod_1.z.any()).optional().describe('Contextual data for the reviewer'),
|
|
72
|
+
assigned_to: zod_1.z.string().optional().describe('Auto-assign to a specific user'),
|
|
73
|
+
type: zod_1.z.string().optional().default('mcp').describe('Escalation type classification'),
|
|
74
|
+
subtype: zod_1.z.string().optional().default('wait_for_human').describe('Escalation subtype'),
|
|
75
|
+
priority: zod_1.z.number().min(1).max(4).optional().default(1)
|
|
76
|
+
.describe('Priority: 1 (highest) to 4 (lowest)'),
|
|
77
|
+
}).passthrough();
|
|
78
|
+
/**
|
|
79
|
+
* Register all human queue tools on the given MCP server.
|
|
80
|
+
*
|
|
81
|
+
* Tools registered:
|
|
82
|
+
* - escalate_to_human -- create a new escalation (fire-and-forget)
|
|
83
|
+
* - check_resolution -- check escalation status
|
|
84
|
+
* - get_available_work -- list available escalations by role
|
|
85
|
+
* - claim_and_resolve -- claim + resolve in one step
|
|
86
|
+
* - resolve_escalation -- resolve an already-claimed escalation
|
|
87
|
+
* - escalate_and_wait -- create escalation and return signal for durable wait
|
|
88
|
+
*/
|
|
89
|
+
function registerHumanQueueTools(server) {
|
|
90
|
+
// ── escalate_to_human ───────────────────────────────────────────────
|
|
91
|
+
server.registerTool('escalate_to_human', {
|
|
92
|
+
title: 'Escalate to Human',
|
|
93
|
+
description: 'Create a new escalation for human review. Returns the escalation ID.',
|
|
94
|
+
inputSchema: escalateSchema,
|
|
95
|
+
}, async (args) => {
|
|
96
|
+
const escalation = await escalationService.createEscalation({
|
|
97
|
+
type: args.type || 'mcp',
|
|
98
|
+
subtype: args.subtype || 'tool_call',
|
|
99
|
+
description: args.message,
|
|
100
|
+
priority: args.priority,
|
|
101
|
+
role: args.role,
|
|
102
|
+
envelope: JSON.stringify(args.data || {}),
|
|
103
|
+
metadata: { source: 'mcp_server' },
|
|
104
|
+
});
|
|
105
|
+
return {
|
|
106
|
+
content: [{
|
|
107
|
+
type: 'text',
|
|
108
|
+
text: JSON.stringify({
|
|
109
|
+
escalation_id: escalation.id,
|
|
110
|
+
status: escalation.status,
|
|
111
|
+
role: escalation.role,
|
|
112
|
+
created_at: escalation.created_at,
|
|
113
|
+
}),
|
|
114
|
+
}],
|
|
115
|
+
};
|
|
116
|
+
});
|
|
117
|
+
// ── check_resolution ────────────────────────────────────────────────
|
|
118
|
+
server.registerTool('check_resolution', {
|
|
119
|
+
title: 'Check Escalation Resolution',
|
|
120
|
+
description: 'Check the status of an escalation. Returns status and resolver payload if resolved.',
|
|
121
|
+
inputSchema: checkResolutionSchema,
|
|
122
|
+
}, async (args) => {
|
|
123
|
+
const escalation = await escalationService.getEscalation(args.escalation_id);
|
|
124
|
+
if (!escalation) {
|
|
125
|
+
return {
|
|
126
|
+
content: [{
|
|
127
|
+
type: 'text',
|
|
128
|
+
text: JSON.stringify({ error: 'Escalation not found' }),
|
|
129
|
+
}],
|
|
130
|
+
isError: true,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
const result = {
|
|
134
|
+
escalation_id: escalation.id,
|
|
135
|
+
status: escalation.status,
|
|
136
|
+
};
|
|
137
|
+
if (escalation.status === 'resolved' && escalation.resolver_payload) {
|
|
138
|
+
try {
|
|
139
|
+
result.resolver_payload = JSON.parse(escalation.resolver_payload);
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
result.resolver_payload = escalation.resolver_payload;
|
|
143
|
+
}
|
|
144
|
+
result.resolved_at = escalation.resolved_at;
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
148
|
+
};
|
|
149
|
+
});
|
|
150
|
+
// ── get_available_work ──────────────────────────────────────────────
|
|
151
|
+
server.registerTool('get_available_work', {
|
|
152
|
+
title: 'Get Available Work',
|
|
153
|
+
description: 'List available escalations for a role. Returns pending, unassigned escalations.',
|
|
154
|
+
inputSchema: getAvailableWorkSchema,
|
|
155
|
+
}, async (args) => {
|
|
156
|
+
const { escalations } = await escalationService.listAvailableEscalations({
|
|
157
|
+
role: args.role,
|
|
158
|
+
limit: args.limit,
|
|
159
|
+
});
|
|
160
|
+
const items = escalations.map((e) => ({
|
|
161
|
+
escalation_id: e.id,
|
|
162
|
+
type: e.type,
|
|
163
|
+
subtype: e.subtype,
|
|
164
|
+
description: e.description,
|
|
165
|
+
priority: e.priority,
|
|
166
|
+
role: e.role,
|
|
167
|
+
created_at: e.created_at,
|
|
168
|
+
}));
|
|
169
|
+
return {
|
|
170
|
+
content: [{
|
|
171
|
+
type: 'text',
|
|
172
|
+
text: JSON.stringify({ count: items.length, escalations: items }),
|
|
173
|
+
}],
|
|
174
|
+
};
|
|
175
|
+
});
|
|
176
|
+
// ── claim_and_resolve ───────────────────────────────────────────────
|
|
177
|
+
server.registerTool('claim_and_resolve', {
|
|
178
|
+
title: 'Claim and Resolve',
|
|
179
|
+
description: 'Claim an escalation and immediately resolve it with a payload. Atomic operation.',
|
|
180
|
+
inputSchema: claimAndResolveSchema,
|
|
181
|
+
}, async (args) => {
|
|
182
|
+
const claimed = await escalationService.claimEscalation(args.escalation_id, args.resolver_id, 5);
|
|
183
|
+
if (!claimed) {
|
|
184
|
+
return {
|
|
185
|
+
content: [{
|
|
186
|
+
type: 'text',
|
|
187
|
+
text: JSON.stringify({ error: 'Escalation not available for claim' }),
|
|
188
|
+
}],
|
|
189
|
+
isError: true,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
const resolved = await escalationService.resolveEscalation(args.escalation_id, args.payload);
|
|
193
|
+
if (!resolved) {
|
|
194
|
+
return {
|
|
195
|
+
content: [{
|
|
196
|
+
type: 'text',
|
|
197
|
+
text: JSON.stringify({ error: 'Failed to resolve escalation' }),
|
|
198
|
+
}],
|
|
199
|
+
isError: true,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
return {
|
|
203
|
+
content: [{
|
|
204
|
+
type: 'text',
|
|
205
|
+
text: JSON.stringify({
|
|
206
|
+
escalation_id: resolved.id,
|
|
207
|
+
status: resolved.status,
|
|
208
|
+
resolved_at: resolved.resolved_at,
|
|
209
|
+
}),
|
|
210
|
+
}],
|
|
211
|
+
};
|
|
212
|
+
});
|
|
213
|
+
// ── resolve_escalation ──────────────────────────────────────────────
|
|
214
|
+
server.registerTool('resolve_escalation', {
|
|
215
|
+
title: 'Resolve Escalation',
|
|
216
|
+
description: 'Resolve an already-claimed escalation with a payload. Use when the claim happened externally (e.g. via API).',
|
|
217
|
+
inputSchema: resolveEscalationSchema,
|
|
218
|
+
}, async (args) => {
|
|
219
|
+
const resolved = await escalationService.resolveEscalation(args.escalation_id, args.payload);
|
|
220
|
+
if (!resolved) {
|
|
221
|
+
return {
|
|
222
|
+
content: [{
|
|
223
|
+
type: 'text',
|
|
224
|
+
text: JSON.stringify({ error: 'Failed to resolve escalation' }),
|
|
225
|
+
}],
|
|
226
|
+
isError: true,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
return {
|
|
230
|
+
content: [{
|
|
231
|
+
type: 'text',
|
|
232
|
+
text: JSON.stringify({
|
|
233
|
+
escalation_id: resolved.id,
|
|
234
|
+
status: resolved.status,
|
|
235
|
+
resolved_at: resolved.resolved_at,
|
|
236
|
+
}),
|
|
237
|
+
}],
|
|
238
|
+
};
|
|
239
|
+
});
|
|
240
|
+
// ── escalate_and_wait ──────────────────────────────────────────────
|
|
241
|
+
server.registerTool('escalate_and_wait', {
|
|
242
|
+
title: 'Escalate and Wait',
|
|
243
|
+
description: 'Create an escalation and pause the workflow until a human responds. ' +
|
|
244
|
+
'Returns a signal ID that the workflow uses to wait. ' +
|
|
245
|
+
'Preferred over escalate_to_human + check_resolution polling.',
|
|
246
|
+
inputSchema: escalateAndWaitSchema,
|
|
247
|
+
}, async (args) => {
|
|
248
|
+
const signalId = `wait-for-human-${crypto.randomUUID()}`;
|
|
249
|
+
// YAML workflows inject _yaml_signal_routing to override Durable's signalId-based routing
|
|
250
|
+
const yamlRouting = args._yaml_signal_routing;
|
|
251
|
+
const signalRouting = yamlRouting
|
|
252
|
+
? { ...yamlRouting, signalId }
|
|
253
|
+
: { signalId };
|
|
254
|
+
const metadata = {
|
|
255
|
+
source: 'mcp_server',
|
|
256
|
+
signal_routing: signalRouting,
|
|
257
|
+
};
|
|
258
|
+
if (args.form_schema) {
|
|
259
|
+
metadata.form_schema = args.form_schema;
|
|
260
|
+
}
|
|
261
|
+
const escalation = await escalationService.createEscalation({
|
|
262
|
+
type: args.type || 'mcp',
|
|
263
|
+
subtype: args.subtype || 'wait_for_human',
|
|
264
|
+
description: args.message,
|
|
265
|
+
priority: args.priority,
|
|
266
|
+
role: args.role,
|
|
267
|
+
envelope: JSON.stringify(args.data || {}),
|
|
268
|
+
metadata,
|
|
269
|
+
workflow_type: yamlRouting?.workflowType,
|
|
270
|
+
workflow_id: yamlRouting?.workflowId,
|
|
271
|
+
task_queue: yamlRouting?.taskQueue,
|
|
272
|
+
});
|
|
273
|
+
if (args.assigned_to) {
|
|
274
|
+
await escalationService.claimEscalation(escalation.id, args.assigned_to, 240);
|
|
275
|
+
}
|
|
276
|
+
return {
|
|
277
|
+
content: [{
|
|
278
|
+
type: 'text',
|
|
279
|
+
text: JSON.stringify({
|
|
280
|
+
type: 'waitFor',
|
|
281
|
+
signalId,
|
|
282
|
+
escalationId: escalation.id,
|
|
283
|
+
}),
|
|
284
|
+
}],
|
|
285
|
+
};
|
|
286
|
+
});
|
|
287
|
+
}
|
|
@@ -1,26 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* Create the Long Tail Human Queue MCP server.
|
|
4
|
-
*
|
|
5
|
-
* Registers five tools that expose the escalation API:
|
|
6
|
-
* - escalate_to_human — create a new escalation (fire-and-forget)
|
|
7
|
-
* - check_resolution — check escalation status
|
|
8
|
-
* - get_available_work — list available escalations by role
|
|
9
|
-
* - claim_and_resolve — claim + resolve in one step
|
|
10
|
-
* - escalate_and_wait — create escalation and return signal for durable wait
|
|
11
|
-
*
|
|
12
|
-
* The server is created with tools registered but no transport
|
|
13
|
-
* auto-connected. Callers connect a transport programmatically
|
|
14
|
-
* or via the Streamable HTTP endpoint.
|
|
15
|
-
*/
|
|
16
|
-
export declare function createHumanQueueServer(options?: {
|
|
17
|
-
name?: string;
|
|
18
|
-
}): Promise<McpServer>;
|
|
19
|
-
/**
|
|
20
|
-
* Get the current MCP server instance.
|
|
21
|
-
*/
|
|
22
|
-
export declare function getServer(): McpServer | null;
|
|
23
|
-
/**
|
|
24
|
-
* Stop the MCP server and release resources.
|
|
25
|
-
*/
|
|
26
|
-
export declare function stopServer(): Promise<void>;
|
|
1
|
+
export { registerHumanQueueTools } from './server-tools';
|
|
2
|
+
export { createHumanQueueServer, getServer, stopServer } from './server-lifecycle';
|
|
@@ -1,317 +1,9 @@
|
|
|
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
|
-
exports.createHumanQueueServer =
|
|
37
|
-
|
|
38
|
-
exports.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const escalationService = __importStar(require("../escalation"));
|
|
44
|
-
let server = null;
|
|
45
|
-
// ── Schemas (extracted to break TS2589 deep-instantiation in registerTool generics) ──
|
|
46
|
-
const escalateSchema = zod_1.z.object({
|
|
47
|
-
role: zod_1.z.string().describe('Target role for the escalation (e.g., "reviewer")'),
|
|
48
|
-
message: zod_1.z.string().describe('Description of what needs human review'),
|
|
49
|
-
data: zod_1.z.record(zod_1.z.any()).optional().describe('Contextual data for the reviewer'),
|
|
50
|
-
type: zod_1.z.string().optional().default('mcp').describe('Escalation type classification'),
|
|
51
|
-
subtype: zod_1.z.string().optional().default('tool_call').describe('Escalation subtype'),
|
|
52
|
-
priority: zod_1.z.number().min(1).max(4).optional().default(2)
|
|
53
|
-
.describe('Priority: 1 (highest) to 4 (lowest)'),
|
|
54
|
-
});
|
|
55
|
-
const checkResolutionSchema = zod_1.z.object({
|
|
56
|
-
escalation_id: zod_1.z.string().describe('The escalation ID to check'),
|
|
57
|
-
});
|
|
58
|
-
const getAvailableWorkSchema = zod_1.z.object({
|
|
59
|
-
role: zod_1.z.string().describe('Role to filter by'),
|
|
60
|
-
limit: zod_1.z.number().optional().default(10).describe('Max results to return'),
|
|
61
|
-
});
|
|
62
|
-
const claimAndResolveSchema = zod_1.z.object({
|
|
63
|
-
escalation_id: zod_1.z.string().describe('The escalation ID to claim and resolve'),
|
|
64
|
-
resolver_id: zod_1.z.string().describe('Identifier for who/what is resolving'),
|
|
65
|
-
payload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload data'),
|
|
66
|
-
});
|
|
67
|
-
const resolveEscalationSchema = zod_1.z.object({
|
|
68
|
-
escalation_id: zod_1.z.string().describe('The escalation ID to resolve'),
|
|
69
|
-
payload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload data'),
|
|
70
|
-
});
|
|
71
|
-
const escalateAndWaitSchema = zod_1.z.object({
|
|
72
|
-
role: zod_1.z.string().describe('Target role for the escalation (e.g., "reviewer")'),
|
|
73
|
-
message: zod_1.z.string().describe('Description of what input is needed from the human'),
|
|
74
|
-
form_schema: zod_1.z.record(zod_1.z.any()).optional()
|
|
75
|
-
.describe('JSON Schema for the resolver form. Use format:"password" for sensitive fields.'),
|
|
76
|
-
data: zod_1.z.record(zod_1.z.any()).optional().describe('Contextual data for the reviewer'),
|
|
77
|
-
assigned_to: zod_1.z.string().optional().describe('Auto-assign to a specific user'),
|
|
78
|
-
type: zod_1.z.string().optional().default('mcp').describe('Escalation type classification'),
|
|
79
|
-
subtype: zod_1.z.string().optional().default('wait_for_human').describe('Escalation subtype'),
|
|
80
|
-
priority: zod_1.z.number().min(1).max(4).optional().default(1)
|
|
81
|
-
.describe('Priority: 1 (highest) to 4 (lowest)'),
|
|
82
|
-
}).passthrough();
|
|
83
|
-
/**
|
|
84
|
-
* Create the Long Tail Human Queue MCP server.
|
|
85
|
-
*
|
|
86
|
-
* Registers five tools that expose the escalation API:
|
|
87
|
-
* - escalate_to_human — create a new escalation (fire-and-forget)
|
|
88
|
-
* - check_resolution — check escalation status
|
|
89
|
-
* - get_available_work — list available escalations by role
|
|
90
|
-
* - claim_and_resolve — claim + resolve in one step
|
|
91
|
-
* - escalate_and_wait — create escalation and return signal for durable wait
|
|
92
|
-
*
|
|
93
|
-
* The server is created with tools registered but no transport
|
|
94
|
-
* auto-connected. Callers connect a transport programmatically
|
|
95
|
-
* or via the Streamable HTTP endpoint.
|
|
96
|
-
*/
|
|
97
|
-
async function createHumanQueueServer(options) {
|
|
98
|
-
if (server)
|
|
99
|
-
return server;
|
|
100
|
-
const name = options?.name || 'long-tail-human-queue';
|
|
101
|
-
server = new mcp_js_1.McpServer({ name, version: '1.0.0' });
|
|
102
|
-
// ── escalate_to_human ───────────────────────────────────────────────
|
|
103
|
-
server.registerTool('escalate_to_human', {
|
|
104
|
-
title: 'Escalate to Human',
|
|
105
|
-
description: 'Create a new escalation for human review. Returns the escalation ID.',
|
|
106
|
-
inputSchema: escalateSchema,
|
|
107
|
-
}, async (args) => {
|
|
108
|
-
const escalation = await escalationService.createEscalation({
|
|
109
|
-
type: args.type || 'mcp',
|
|
110
|
-
subtype: args.subtype || 'tool_call',
|
|
111
|
-
description: args.message,
|
|
112
|
-
priority: args.priority,
|
|
113
|
-
role: args.role,
|
|
114
|
-
envelope: JSON.stringify(args.data || {}),
|
|
115
|
-
metadata: { source: 'mcp_server' },
|
|
116
|
-
});
|
|
117
|
-
return {
|
|
118
|
-
content: [{
|
|
119
|
-
type: 'text',
|
|
120
|
-
text: JSON.stringify({
|
|
121
|
-
escalation_id: escalation.id,
|
|
122
|
-
status: escalation.status,
|
|
123
|
-
role: escalation.role,
|
|
124
|
-
created_at: escalation.created_at,
|
|
125
|
-
}),
|
|
126
|
-
}],
|
|
127
|
-
};
|
|
128
|
-
});
|
|
129
|
-
// ── check_resolution ────────────────────────────────────────────────
|
|
130
|
-
server.registerTool('check_resolution', {
|
|
131
|
-
title: 'Check Escalation Resolution',
|
|
132
|
-
description: 'Check the status of an escalation. Returns status and resolver payload if resolved.',
|
|
133
|
-
inputSchema: checkResolutionSchema,
|
|
134
|
-
}, async (args) => {
|
|
135
|
-
const escalation = await escalationService.getEscalation(args.escalation_id);
|
|
136
|
-
if (!escalation) {
|
|
137
|
-
return {
|
|
138
|
-
content: [{
|
|
139
|
-
type: 'text',
|
|
140
|
-
text: JSON.stringify({ error: 'Escalation not found' }),
|
|
141
|
-
}],
|
|
142
|
-
isError: true,
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
const result = {
|
|
146
|
-
escalation_id: escalation.id,
|
|
147
|
-
status: escalation.status,
|
|
148
|
-
};
|
|
149
|
-
if (escalation.status === 'resolved' && escalation.resolver_payload) {
|
|
150
|
-
try {
|
|
151
|
-
result.resolver_payload = JSON.parse(escalation.resolver_payload);
|
|
152
|
-
}
|
|
153
|
-
catch {
|
|
154
|
-
result.resolver_payload = escalation.resolver_payload;
|
|
155
|
-
}
|
|
156
|
-
result.resolved_at = escalation.resolved_at;
|
|
157
|
-
}
|
|
158
|
-
return {
|
|
159
|
-
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
160
|
-
};
|
|
161
|
-
});
|
|
162
|
-
// ── get_available_work ──────────────────────────────────────────────
|
|
163
|
-
server.registerTool('get_available_work', {
|
|
164
|
-
title: 'Get Available Work',
|
|
165
|
-
description: 'List available escalations for a role. Returns pending, unassigned escalations.',
|
|
166
|
-
inputSchema: getAvailableWorkSchema,
|
|
167
|
-
}, async (args) => {
|
|
168
|
-
const { escalations } = await escalationService.listAvailableEscalations({
|
|
169
|
-
role: args.role,
|
|
170
|
-
limit: args.limit,
|
|
171
|
-
});
|
|
172
|
-
const items = escalations.map((e) => ({
|
|
173
|
-
escalation_id: e.id,
|
|
174
|
-
type: e.type,
|
|
175
|
-
subtype: e.subtype,
|
|
176
|
-
description: e.description,
|
|
177
|
-
priority: e.priority,
|
|
178
|
-
role: e.role,
|
|
179
|
-
created_at: e.created_at,
|
|
180
|
-
}));
|
|
181
|
-
return {
|
|
182
|
-
content: [{
|
|
183
|
-
type: 'text',
|
|
184
|
-
text: JSON.stringify({ count: items.length, escalations: items }),
|
|
185
|
-
}],
|
|
186
|
-
};
|
|
187
|
-
});
|
|
188
|
-
// ── claim_and_resolve ───────────────────────────────────────────────
|
|
189
|
-
server.registerTool('claim_and_resolve', {
|
|
190
|
-
title: 'Claim and Resolve',
|
|
191
|
-
description: 'Claim an escalation and immediately resolve it with a payload. Atomic operation.',
|
|
192
|
-
inputSchema: claimAndResolveSchema,
|
|
193
|
-
}, async (args) => {
|
|
194
|
-
const claimed = await escalationService.claimEscalation(args.escalation_id, args.resolver_id, 5);
|
|
195
|
-
if (!claimed) {
|
|
196
|
-
return {
|
|
197
|
-
content: [{
|
|
198
|
-
type: 'text',
|
|
199
|
-
text: JSON.stringify({ error: 'Escalation not available for claim' }),
|
|
200
|
-
}],
|
|
201
|
-
isError: true,
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
const resolved = await escalationService.resolveEscalation(args.escalation_id, args.payload);
|
|
205
|
-
if (!resolved) {
|
|
206
|
-
return {
|
|
207
|
-
content: [{
|
|
208
|
-
type: 'text',
|
|
209
|
-
text: JSON.stringify({ error: 'Failed to resolve escalation' }),
|
|
210
|
-
}],
|
|
211
|
-
isError: true,
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
return {
|
|
215
|
-
content: [{
|
|
216
|
-
type: 'text',
|
|
217
|
-
text: JSON.stringify({
|
|
218
|
-
escalation_id: resolved.id,
|
|
219
|
-
status: resolved.status,
|
|
220
|
-
resolved_at: resolved.resolved_at,
|
|
221
|
-
}),
|
|
222
|
-
}],
|
|
223
|
-
};
|
|
224
|
-
});
|
|
225
|
-
// ── resolve_escalation ──────────────────────────────────────────────
|
|
226
|
-
server.registerTool('resolve_escalation', {
|
|
227
|
-
title: 'Resolve Escalation',
|
|
228
|
-
description: 'Resolve an already-claimed escalation with a payload. Use when the claim happened externally (e.g. via API).',
|
|
229
|
-
inputSchema: resolveEscalationSchema,
|
|
230
|
-
}, async (args) => {
|
|
231
|
-
const resolved = await escalationService.resolveEscalation(args.escalation_id, args.payload);
|
|
232
|
-
if (!resolved) {
|
|
233
|
-
return {
|
|
234
|
-
content: [{
|
|
235
|
-
type: 'text',
|
|
236
|
-
text: JSON.stringify({ error: 'Failed to resolve escalation' }),
|
|
237
|
-
}],
|
|
238
|
-
isError: true,
|
|
239
|
-
};
|
|
240
|
-
}
|
|
241
|
-
return {
|
|
242
|
-
content: [{
|
|
243
|
-
type: 'text',
|
|
244
|
-
text: JSON.stringify({
|
|
245
|
-
escalation_id: resolved.id,
|
|
246
|
-
status: resolved.status,
|
|
247
|
-
resolved_at: resolved.resolved_at,
|
|
248
|
-
}),
|
|
249
|
-
}],
|
|
250
|
-
};
|
|
251
|
-
});
|
|
252
|
-
// ── escalate_and_wait ──────────────────────────────────────────────
|
|
253
|
-
server.registerTool('escalate_and_wait', {
|
|
254
|
-
title: 'Escalate and Wait',
|
|
255
|
-
description: 'Create an escalation and pause the workflow until a human responds. ' +
|
|
256
|
-
'Returns a signal ID that the workflow uses to wait. ' +
|
|
257
|
-
'Preferred over escalate_to_human + check_resolution polling.',
|
|
258
|
-
inputSchema: escalateAndWaitSchema,
|
|
259
|
-
}, async (args) => {
|
|
260
|
-
const signalId = `wait-for-human-${crypto.randomUUID()}`;
|
|
261
|
-
// YAML workflows inject _yaml_signal_routing to override Durable's signalId-based routing
|
|
262
|
-
const yamlRouting = args._yaml_signal_routing;
|
|
263
|
-
const signalRouting = yamlRouting
|
|
264
|
-
? { ...yamlRouting, signalId }
|
|
265
|
-
: { signalId };
|
|
266
|
-
const metadata = {
|
|
267
|
-
source: 'mcp_server',
|
|
268
|
-
signal_routing: signalRouting,
|
|
269
|
-
};
|
|
270
|
-
if (args.form_schema) {
|
|
271
|
-
metadata.form_schema = args.form_schema;
|
|
272
|
-
}
|
|
273
|
-
const escalation = await escalationService.createEscalation({
|
|
274
|
-
type: args.type || 'mcp',
|
|
275
|
-
subtype: args.subtype || 'wait_for_human',
|
|
276
|
-
description: args.message,
|
|
277
|
-
priority: args.priority,
|
|
278
|
-
role: args.role,
|
|
279
|
-
envelope: JSON.stringify(args.data || {}),
|
|
280
|
-
metadata,
|
|
281
|
-
workflow_type: yamlRouting?.workflowType,
|
|
282
|
-
workflow_id: yamlRouting?.workflowId,
|
|
283
|
-
task_queue: yamlRouting?.taskQueue,
|
|
284
|
-
});
|
|
285
|
-
if (args.assigned_to) {
|
|
286
|
-
await escalationService.claimEscalation(escalation.id, args.assigned_to, 240);
|
|
287
|
-
}
|
|
288
|
-
return {
|
|
289
|
-
content: [{
|
|
290
|
-
type: 'text',
|
|
291
|
-
text: JSON.stringify({
|
|
292
|
-
type: 'waitFor',
|
|
293
|
-
signalId,
|
|
294
|
-
escalationId: escalation.id,
|
|
295
|
-
}),
|
|
296
|
-
}],
|
|
297
|
-
};
|
|
298
|
-
});
|
|
299
|
-
logger_1.loggerRegistry.info(`[lt-mcp:server] ${name} ready (5 tools registered)`);
|
|
300
|
-
return server;
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* Get the current MCP server instance.
|
|
304
|
-
*/
|
|
305
|
-
function getServer() {
|
|
306
|
-
return server;
|
|
307
|
-
}
|
|
308
|
-
/**
|
|
309
|
-
* Stop the MCP server and release resources.
|
|
310
|
-
*/
|
|
311
|
-
async function stopServer() {
|
|
312
|
-
if (server) {
|
|
313
|
-
await server.close();
|
|
314
|
-
server = null;
|
|
315
|
-
logger_1.loggerRegistry.info('[lt-mcp:server] stopped');
|
|
316
|
-
}
|
|
317
|
-
}
|
|
3
|
+
exports.stopServer = exports.getServer = exports.createHumanQueueServer = exports.registerHumanQueueTools = void 0;
|
|
4
|
+
var server_tools_1 = require("./server-tools");
|
|
5
|
+
Object.defineProperty(exports, "registerHumanQueueTools", { enumerable: true, get: function () { return server_tools_1.registerHumanQueueTools; } });
|
|
6
|
+
var server_lifecycle_1 = require("./server-lifecycle");
|
|
7
|
+
Object.defineProperty(exports, "createHumanQueueServer", { enumerable: true, get: function () { return server_lifecycle_1.createHumanQueueServer; } });
|
|
8
|
+
Object.defineProperty(exports, "getServer", { enumerable: true, get: function () { return server_lifecycle_1.getServer; } });
|
|
9
|
+
Object.defineProperty(exports, "stopServer", { enumerable: true, get: function () { return server_lifecycle_1.stopServer; } });
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regenerate a Plan Build workflow from its original prompt + compilation feedback.
|
|
3
|
+
*
|
|
4
|
+
* Reuses the builder's LLM call and prompt structure without spawning a full
|
|
5
|
+
* durable workflow. This is the fast path for "Recompile Pipeline" on Plan Build
|
|
6
|
+
* workflows that don't have an execution trace.
|
|
7
|
+
*/
|
|
8
|
+
interface RebuildResult {
|
|
9
|
+
yaml: string;
|
|
10
|
+
inputSchema: Record<string, unknown>;
|
|
11
|
+
outputSchema: Record<string, unknown>;
|
|
12
|
+
activityManifest: unknown[];
|
|
13
|
+
tags: string[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Rebuild a YAML workflow from a prompt with optional feedback on the prior attempt.
|
|
17
|
+
*/
|
|
18
|
+
export declare function rebuildFromPrompt(options: {
|
|
19
|
+
prompt: string;
|
|
20
|
+
feedback?: string;
|
|
21
|
+
priorYaml?: string;
|
|
22
|
+
name: string;
|
|
23
|
+
appId: string;
|
|
24
|
+
}): Promise<RebuildResult>;
|
|
25
|
+
export {};
|