@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,91 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const escalateSchema: z.ZodObject<{
|
|
3
|
+
role: z.ZodString;
|
|
4
|
+
message: z.ZodString;
|
|
5
|
+
data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
6
|
+
type: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
7
|
+
subtype: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
8
|
+
priority: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
role: string;
|
|
11
|
+
type: string;
|
|
12
|
+
message: string;
|
|
13
|
+
priority: number;
|
|
14
|
+
subtype: string;
|
|
15
|
+
data?: Record<string, any> | undefined;
|
|
16
|
+
}, {
|
|
17
|
+
role: string;
|
|
18
|
+
message: string;
|
|
19
|
+
data?: Record<string, any> | undefined;
|
|
20
|
+
type?: string | undefined;
|
|
21
|
+
priority?: number | undefined;
|
|
22
|
+
subtype?: string | undefined;
|
|
23
|
+
}>;
|
|
24
|
+
export declare const checkResolutionSchema: z.ZodObject<{
|
|
25
|
+
escalation_id: z.ZodString;
|
|
26
|
+
}, "strip", z.ZodTypeAny, {
|
|
27
|
+
escalation_id: string;
|
|
28
|
+
}, {
|
|
29
|
+
escalation_id: string;
|
|
30
|
+
}>;
|
|
31
|
+
export declare const getAvailableWorkSchema: z.ZodObject<{
|
|
32
|
+
role: z.ZodString;
|
|
33
|
+
limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
34
|
+
}, "strip", z.ZodTypeAny, {
|
|
35
|
+
role: string;
|
|
36
|
+
limit: number;
|
|
37
|
+
}, {
|
|
38
|
+
role: string;
|
|
39
|
+
limit?: number | undefined;
|
|
40
|
+
}>;
|
|
41
|
+
export declare const claimAndResolveSchema: z.ZodObject<{
|
|
42
|
+
escalation_id: z.ZodString;
|
|
43
|
+
resolver_id: z.ZodString;
|
|
44
|
+
payload: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
45
|
+
}, "strip", z.ZodTypeAny, {
|
|
46
|
+
escalation_id: string;
|
|
47
|
+
resolver_id: string;
|
|
48
|
+
payload: Record<string, any>;
|
|
49
|
+
}, {
|
|
50
|
+
escalation_id: string;
|
|
51
|
+
resolver_id: string;
|
|
52
|
+
payload: Record<string, any>;
|
|
53
|
+
}>;
|
|
54
|
+
export declare const resolveEscalationSchema: z.ZodObject<{
|
|
55
|
+
escalation_id: z.ZodString;
|
|
56
|
+
payload: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
57
|
+
}, "strip", z.ZodTypeAny, {
|
|
58
|
+
escalation_id: string;
|
|
59
|
+
payload: Record<string, any>;
|
|
60
|
+
}, {
|
|
61
|
+
escalation_id: string;
|
|
62
|
+
payload: Record<string, any>;
|
|
63
|
+
}>;
|
|
64
|
+
export declare const escalateAndWaitSchema: z.ZodObject<{
|
|
65
|
+
role: z.ZodString;
|
|
66
|
+
message: z.ZodString;
|
|
67
|
+
form_schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
68
|
+
data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
69
|
+
assigned_to: z.ZodOptional<z.ZodString>;
|
|
70
|
+
type: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
71
|
+
subtype: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
72
|
+
priority: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
73
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
74
|
+
role: z.ZodString;
|
|
75
|
+
message: z.ZodString;
|
|
76
|
+
form_schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
77
|
+
data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
78
|
+
assigned_to: z.ZodOptional<z.ZodString>;
|
|
79
|
+
type: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
80
|
+
subtype: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
81
|
+
priority: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
82
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
83
|
+
role: z.ZodString;
|
|
84
|
+
message: z.ZodString;
|
|
85
|
+
form_schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
86
|
+
data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
87
|
+
assigned_to: z.ZodOptional<z.ZodString>;
|
|
88
|
+
type: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
89
|
+
subtype: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
90
|
+
priority: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
91
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.escalateAndWaitSchema = exports.resolveEscalationSchema = exports.claimAndResolveSchema = exports.getAvailableWorkSchema = exports.checkResolutionSchema = exports.escalateSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
// ── Schemas (extracted to break TS2589 deep-instantiation in registerTool generics) ──
|
|
6
|
+
exports.escalateSchema = zod_1.z.object({
|
|
7
|
+
role: zod_1.z.string().describe('Target role for the escalation (e.g., "reviewer")'),
|
|
8
|
+
message: zod_1.z.string().describe('Description of what needs human review'),
|
|
9
|
+
data: zod_1.z.record(zod_1.z.any()).optional().describe('Contextual data for the reviewer'),
|
|
10
|
+
type: zod_1.z.string().optional().default('mcp').describe('Escalation type classification'),
|
|
11
|
+
subtype: zod_1.z.string().optional().default('tool_call').describe('Escalation subtype'),
|
|
12
|
+
priority: zod_1.z.number().min(1).max(4).optional().default(2)
|
|
13
|
+
.describe('Priority: 1 (highest) to 4 (lowest)'),
|
|
14
|
+
});
|
|
15
|
+
exports.checkResolutionSchema = zod_1.z.object({
|
|
16
|
+
escalation_id: zod_1.z.string().describe('The escalation ID to check'),
|
|
17
|
+
});
|
|
18
|
+
exports.getAvailableWorkSchema = zod_1.z.object({
|
|
19
|
+
role: zod_1.z.string().describe('Role to filter by'),
|
|
20
|
+
limit: zod_1.z.number().optional().default(10).describe('Max results to return'),
|
|
21
|
+
});
|
|
22
|
+
exports.claimAndResolveSchema = zod_1.z.object({
|
|
23
|
+
escalation_id: zod_1.z.string().describe('The escalation ID to claim and resolve'),
|
|
24
|
+
resolver_id: zod_1.z.string().describe('Identifier for who/what is resolving'),
|
|
25
|
+
payload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload data'),
|
|
26
|
+
});
|
|
27
|
+
exports.resolveEscalationSchema = zod_1.z.object({
|
|
28
|
+
escalation_id: zod_1.z.string().describe('The escalation ID to resolve'),
|
|
29
|
+
payload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload data'),
|
|
30
|
+
});
|
|
31
|
+
exports.escalateAndWaitSchema = zod_1.z.object({
|
|
32
|
+
role: zod_1.z.string().describe('Target role for the escalation (e.g., "reviewer")'),
|
|
33
|
+
message: zod_1.z.string().describe('Description of what input is needed from the human'),
|
|
34
|
+
form_schema: zod_1.z.record(zod_1.z.any()).optional()
|
|
35
|
+
.describe('JSON Schema for the resolver form. Use format:"password" for sensitive fields.'),
|
|
36
|
+
data: zod_1.z.record(zod_1.z.any()).optional().describe('Contextual data for the reviewer'),
|
|
37
|
+
assigned_to: zod_1.z.string().optional().describe('Auto-assign to a specific user'),
|
|
38
|
+
type: zod_1.z.string().optional().default('mcp').describe('Escalation type classification'),
|
|
39
|
+
subtype: zod_1.z.string().optional().default('wait_for_human').describe('Escalation subtype'),
|
|
40
|
+
priority: zod_1.z.number().min(1).max(4).optional().default(1)
|
|
41
|
+
.describe('Priority: 1 (highest) to 4 (lowest)'),
|
|
42
|
+
}).passthrough();
|
|
@@ -16,11 +16,7 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
|
16
16
|
export declare function createHumanQueueServer(options?: {
|
|
17
17
|
name?: string;
|
|
18
18
|
}): Promise<McpServer>;
|
|
19
|
-
/**
|
|
20
|
-
* Get the current MCP server instance.
|
|
21
|
-
*/
|
|
19
|
+
/** Get the current MCP server instance. */
|
|
22
20
|
export declare function getServer(): McpServer | null;
|
|
23
|
-
/**
|
|
24
|
-
* Stop the MCP server and release resources.
|
|
25
|
-
*/
|
|
21
|
+
/** Stop the MCP server and release resources. */
|
|
26
22
|
export declare function stopServer(): Promise<void>;
|
|
@@ -38,48 +38,10 @@ exports.getServer = getServer;
|
|
|
38
38
|
exports.stopServer = stopServer;
|
|
39
39
|
const crypto = __importStar(require("crypto"));
|
|
40
40
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
41
|
-
const zod_1 = require("zod");
|
|
42
41
|
const logger_1 = require("../../lib/logger");
|
|
43
42
|
const escalationService = __importStar(require("../../services/escalation"));
|
|
43
|
+
const human_queue_schemas_1 = require("./human-queue-schemas");
|
|
44
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
45
|
/**
|
|
84
46
|
* Create the Long Tail Human Queue MCP server.
|
|
85
47
|
*
|
|
@@ -103,7 +65,7 @@ async function createHumanQueueServer(options) {
|
|
|
103
65
|
server.registerTool('escalate_to_human', {
|
|
104
66
|
title: 'Escalate to Human',
|
|
105
67
|
description: 'Create a new escalation for human review. Returns the escalation ID.',
|
|
106
|
-
inputSchema: escalateSchema,
|
|
68
|
+
inputSchema: human_queue_schemas_1.escalateSchema,
|
|
107
69
|
}, async (args) => {
|
|
108
70
|
const escalation = await escalationService.createEscalation({
|
|
109
71
|
type: args.type || 'mcp',
|
|
@@ -130,7 +92,7 @@ async function createHumanQueueServer(options) {
|
|
|
130
92
|
server.registerTool('check_resolution', {
|
|
131
93
|
title: 'Check Escalation Resolution',
|
|
132
94
|
description: 'Check the status of an escalation. Returns status and resolver payload if resolved.',
|
|
133
|
-
inputSchema: checkResolutionSchema,
|
|
95
|
+
inputSchema: human_queue_schemas_1.checkResolutionSchema,
|
|
134
96
|
}, async (args) => {
|
|
135
97
|
const escalation = await escalationService.getEscalation(args.escalation_id);
|
|
136
98
|
if (!escalation) {
|
|
@@ -163,7 +125,7 @@ async function createHumanQueueServer(options) {
|
|
|
163
125
|
server.registerTool('get_available_work', {
|
|
164
126
|
title: 'Get Available Work',
|
|
165
127
|
description: 'List available escalations for a role. Returns pending, unassigned escalations.',
|
|
166
|
-
inputSchema: getAvailableWorkSchema,
|
|
128
|
+
inputSchema: human_queue_schemas_1.getAvailableWorkSchema,
|
|
167
129
|
}, async (args) => {
|
|
168
130
|
const { escalations } = await escalationService.listAvailableEscalations({
|
|
169
131
|
role: args.role,
|
|
@@ -189,7 +151,7 @@ async function createHumanQueueServer(options) {
|
|
|
189
151
|
server.registerTool('claim_and_resolve', {
|
|
190
152
|
title: 'Claim and Resolve',
|
|
191
153
|
description: 'Claim an escalation and immediately resolve it with a payload. Atomic operation.',
|
|
192
|
-
inputSchema: claimAndResolveSchema,
|
|
154
|
+
inputSchema: human_queue_schemas_1.claimAndResolveSchema,
|
|
193
155
|
}, async (args) => {
|
|
194
156
|
const claimed = await escalationService.claimEscalation(args.escalation_id, args.resolver_id, 5);
|
|
195
157
|
if (!claimed) {
|
|
@@ -226,7 +188,7 @@ async function createHumanQueueServer(options) {
|
|
|
226
188
|
server.registerTool('resolve_escalation', {
|
|
227
189
|
title: 'Resolve Escalation',
|
|
228
190
|
description: 'Resolve an already-claimed escalation with a payload. Use when the claim happened externally (e.g. via API).',
|
|
229
|
-
inputSchema: resolveEscalationSchema,
|
|
191
|
+
inputSchema: human_queue_schemas_1.resolveEscalationSchema,
|
|
230
192
|
}, async (args) => {
|
|
231
193
|
const resolved = await escalationService.resolveEscalation(args.escalation_id, args.payload);
|
|
232
194
|
if (!resolved) {
|
|
@@ -255,7 +217,7 @@ async function createHumanQueueServer(options) {
|
|
|
255
217
|
description: 'Create an escalation and pause the workflow until a human responds. ' +
|
|
256
218
|
'Returns a signal ID that the workflow uses to wait. ' +
|
|
257
219
|
'Preferred over escalate_to_human + check_resolution polling.',
|
|
258
|
-
inputSchema: escalateAndWaitSchema,
|
|
220
|
+
inputSchema: human_queue_schemas_1.escalateAndWaitSchema,
|
|
259
221
|
}, async (args) => {
|
|
260
222
|
const signalId = `wait-for-human-${crypto.randomUUID()}`;
|
|
261
223
|
// YAML workflows inject _yaml_signal_routing to override Durable's signalId-based routing
|
|
@@ -300,15 +262,11 @@ async function createHumanQueueServer(options) {
|
|
|
300
262
|
logger_1.loggerRegistry.info(`[lt-mcp:server] ${name} ready (5 tools registered)`);
|
|
301
263
|
return server;
|
|
302
264
|
}
|
|
303
|
-
/**
|
|
304
|
-
* Get the current MCP server instance.
|
|
305
|
-
*/
|
|
265
|
+
/** Get the current MCP server instance. */
|
|
306
266
|
function getServer() {
|
|
307
267
|
return server;
|
|
308
268
|
}
|
|
309
|
-
/**
|
|
310
|
-
* Stop the MCP server and release resources.
|
|
311
|
-
*/
|
|
269
|
+
/** Stop the MCP server and release resources. */
|
|
312
270
|
async function stopServer() {
|
|
313
271
|
if (server) {
|
|
314
272
|
await server.close();
|
|
@@ -39,10 +39,10 @@ const zod_1 = require("zod");
|
|
|
39
39
|
const logger_1 = require("../../lib/logger");
|
|
40
40
|
const knowledge = __importStar(require("../activities/knowledge"));
|
|
41
41
|
const storeSchema = zod_1.z.object({
|
|
42
|
-
domain: zod_1.z.string().describe('
|
|
43
|
-
key: zod_1.z.string().describe('
|
|
44
|
-
field: zod_1.z.string().optional().describe('
|
|
45
|
-
data: zod_1.z.any().describe('The value to store. When field is provided, this can be any type (string, number, boolean, object, array). When field is omitted,
|
|
42
|
+
domain: zod_1.z.string().describe('Namespace grouping related entries (e.g. "screenshots", "config", "analysis").'),
|
|
43
|
+
key: zod_1.z.string().describe('Unique identifier within the domain (e.g. "google", "user_profile").'),
|
|
44
|
+
field: zod_1.z.string().optional().describe('RECOMMENDED. Names a specific field to set within the entry (e.g. "2026-05-09", "url", "score"). Using field is additive — it merges into existing data without clobbering other fields. Without field, the entire data object is merged at the top level, which can overwrite existing fields with the same keys. Always use field when adding to an entry that may already have data.'),
|
|
45
|
+
data: zod_1.z.any().describe('The value to store. When field is provided, this can be any type (string, number, boolean, object, array) and is stored as { [field]: data }. When field is omitted, data must be a JSON object whose keys merge into existing data.'),
|
|
46
46
|
tags: zod_1.z.array(zod_1.z.string()).optional().describe('Categorization tags (unioned on upsert)'),
|
|
47
47
|
});
|
|
48
48
|
const getSchema = zod_1.z.object({
|
|
@@ -54,9 +54,11 @@ const searchSchema = zod_1.z.object({
|
|
|
54
54
|
query: zod_1.z.record(zod_1.z.any()).describe('JSONB containment query (e.g. {"type":"screenshot"})'),
|
|
55
55
|
tags: zod_1.z.array(zod_1.z.string()).optional().describe('Filter by tags (any match)'),
|
|
56
56
|
limit: zod_1.z.number().optional().describe('Max results (default 50, max 200)'),
|
|
57
|
+
offset: zod_1.z.number().optional().describe('Pagination offset'),
|
|
57
58
|
});
|
|
58
59
|
const listSchema = zod_1.z.object({
|
|
59
60
|
domain: zod_1.z.string().describe('Knowledge domain'),
|
|
61
|
+
search: zod_1.z.string().optional().describe('Search by key name or tag (partial match)'),
|
|
60
62
|
tags: zod_1.z.array(zod_1.z.string()).optional().describe('Filter by tags (any match)'),
|
|
61
63
|
limit: zod_1.z.number().optional().describe('Max results (default 50, max 200)'),
|
|
62
64
|
offset: zod_1.z.number().optional().describe('Pagination offset'),
|
|
@@ -65,6 +67,18 @@ const deleteSchema = zod_1.z.object({
|
|
|
65
67
|
domain: zod_1.z.string().describe('Knowledge domain'),
|
|
66
68
|
key: zod_1.z.string().describe('Document key to delete'),
|
|
67
69
|
});
|
|
70
|
+
const setFieldSchema = zod_1.z.object({
|
|
71
|
+
domain: zod_1.z.string().describe('Knowledge domain'),
|
|
72
|
+
key: zod_1.z.string().describe('Document key'),
|
|
73
|
+
path: zod_1.z.string().describe('Dot-notation path to the field (e.g. "google.holiday", "config.retries"). Sets the value at this exact path without overwriting sibling fields.'),
|
|
74
|
+
value: zod_1.z.any().refine((v) => v !== undefined, 'value is required').describe('Value to set — any JSON type (string, number, boolean, object, array)'),
|
|
75
|
+
tags: zod_1.z.array(zod_1.z.string()).optional().describe('Tags to union with existing tags'),
|
|
76
|
+
});
|
|
77
|
+
const removeFieldSchema = zod_1.z.object({
|
|
78
|
+
domain: zod_1.z.string().describe('Knowledge domain'),
|
|
79
|
+
key: zod_1.z.string().describe('Document key'),
|
|
80
|
+
path: zod_1.z.string().describe('Dot-notation path to remove (e.g. "google.legacy_data", "temp.cache")'),
|
|
81
|
+
});
|
|
68
82
|
const appendSchema = zod_1.z.object({
|
|
69
83
|
domain: zod_1.z.string().describe('Knowledge domain'),
|
|
70
84
|
key: zod_1.z.string().describe('Document key'),
|
|
@@ -74,11 +88,11 @@ const appendSchema = zod_1.z.object({
|
|
|
74
88
|
function registerTools(server) {
|
|
75
89
|
server.registerTool('store_knowledge', {
|
|
76
90
|
title: 'Store Knowledge',
|
|
77
|
-
description: 'Store a value in a 3-level
|
|
78
|
-
'
|
|
79
|
-
'
|
|
80
|
-
'
|
|
81
|
-
'
|
|
91
|
+
description: 'Store a value in the knowledge base using a 3-level hierarchy: domain > key > field. ' +
|
|
92
|
+
'IMPORTANT: Always use the field parameter when adding data to an existing entry — ' +
|
|
93
|
+
'it merges additively without clobbering other fields. Without field, top-level keys ' +
|
|
94
|
+
'in data overwrite existing keys with the same name. ' +
|
|
95
|
+
'Example: domain="screenshots", key="google", field="2026-05-10", data="description text".',
|
|
82
96
|
inputSchema: storeSchema,
|
|
83
97
|
}, async (args) => {
|
|
84
98
|
// When field is provided, wrap the data value as { [field]: data }
|
|
@@ -156,6 +170,26 @@ function registerTools(server) {
|
|
|
156
170
|
const result = await knowledge.appendKnowledge(args);
|
|
157
171
|
return { content: [{ type: 'text', text: JSON.stringify(result) }] };
|
|
158
172
|
});
|
|
173
|
+
server.registerTool('set_knowledge_field', {
|
|
174
|
+
title: 'Set Knowledge Field',
|
|
175
|
+
description: 'RECOMMENDED for updating existing entries. Set a value at a specific path within a knowledge entry ' +
|
|
176
|
+
'without overwriting sibling fields. Use dot-notation for nested paths (e.g. "google.holiday" sets ' +
|
|
177
|
+
'data.google.holiday while preserving data.google.description). Creates the entry if it does not exist. ' +
|
|
178
|
+
'Use this instead of store_knowledge when the entry may already have data you want to preserve.',
|
|
179
|
+
inputSchema: setFieldSchema,
|
|
180
|
+
}, async (args) => {
|
|
181
|
+
const result = await knowledge.setKnowledgeField(args);
|
|
182
|
+
return { content: [{ type: 'text', text: JSON.stringify(result) }] };
|
|
183
|
+
});
|
|
184
|
+
server.registerTool('remove_knowledge_field', {
|
|
185
|
+
title: 'Remove Knowledge Field',
|
|
186
|
+
description: 'Remove a specific field from a knowledge entry by dot-path. The entry survives — only the targeted ' +
|
|
187
|
+
'path is deleted. Use this for intentional cleanup of obsolete or incorrect fields.',
|
|
188
|
+
inputSchema: removeFieldSchema,
|
|
189
|
+
}, async (args) => {
|
|
190
|
+
const result = await knowledge.removeKnowledgeField(args);
|
|
191
|
+
return { content: [{ type: 'text', text: JSON.stringify(result) }] };
|
|
192
|
+
});
|
|
159
193
|
}
|
|
160
194
|
async function createKnowledgeServer(options) {
|
|
161
195
|
const name = options?.name || 'long-tail-knowledge';
|
|
@@ -40,6 +40,7 @@ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
|
40
40
|
const zod_1 = require("zod");
|
|
41
41
|
const logger_1 = require("../../lib/logger");
|
|
42
42
|
const yamlGenerator = __importStar(require("../../services/yaml-workflow/generator"));
|
|
43
|
+
const durable_compiler_1 = require("../../services/yaml-workflow/durable-compiler");
|
|
43
44
|
const yamlDb = __importStar(require("../../services/yaml-workflow/db"));
|
|
44
45
|
const yamlDeployer = __importStar(require("../../services/yaml-workflow/deployer"));
|
|
45
46
|
const yamlWorkers = __importStar(require("../../services/yaml-workflow/workers"));
|
|
@@ -65,6 +66,13 @@ const listSchema = zod_1.z.object({
|
|
|
65
66
|
offset: zod_1.z.number().int().min(0).optional().default(0)
|
|
66
67
|
.describe('Pagination offset'),
|
|
67
68
|
});
|
|
69
|
+
const compileDurableSchema = zod_1.z.object({
|
|
70
|
+
source: zod_1.z.string().describe('TypeScript source code of the durable workflow function (inline source, not a file path)'),
|
|
71
|
+
workflow_name: zod_1.z.string().describe('Name of the exported workflow function to compile (e.g., "assemblyLine", "basicSignal")'),
|
|
72
|
+
yaml_name: zod_1.z.string().describe('Name for the generated YAML workflow (becomes graph topic)'),
|
|
73
|
+
description: zod_1.z.string().optional().describe('Optional description of what the workflow does'),
|
|
74
|
+
app_id: zod_1.z.string().optional().describe('Target namespace (defaults to "longtail")'),
|
|
75
|
+
});
|
|
68
76
|
/**
|
|
69
77
|
* Create the Workflow Compiler MCP server.
|
|
70
78
|
*
|
|
@@ -216,6 +224,52 @@ async function createWorkflowCompilerServer(options) {
|
|
|
216
224
|
}],
|
|
217
225
|
};
|
|
218
226
|
});
|
|
227
|
+
// ── compile_durable_to_yaml ────────────────────────────────────────
|
|
228
|
+
server.registerTool('compile_durable_to_yaml', {
|
|
229
|
+
title: 'Compile Durable Workflow to YAML',
|
|
230
|
+
description: 'Convert a procedural durable TypeScript workflow (Temporal-like API) into an equivalent ' +
|
|
231
|
+
'HotMesh YAML DAG. The generated YAML runs without replay overhead and achieves the same ' +
|
|
232
|
+
'orchestration behavior. Handles proxyActivities, sleep, condition/signal, escalation, ' +
|
|
233
|
+
'startChild composition, parallel execution, and loop patterns.',
|
|
234
|
+
inputSchema: compileDurableSchema,
|
|
235
|
+
}, async (args) => {
|
|
236
|
+
const result = await (0, durable_compiler_1.compileDurableToYaml)({
|
|
237
|
+
source: args.source,
|
|
238
|
+
isFilePath: false,
|
|
239
|
+
workflowName: args.workflow_name,
|
|
240
|
+
name: args.yaml_name,
|
|
241
|
+
description: args.description,
|
|
242
|
+
appId: args.app_id,
|
|
243
|
+
});
|
|
244
|
+
const record = await yamlDb.createYamlWorkflow({
|
|
245
|
+
name: args.yaml_name,
|
|
246
|
+
description: args.description,
|
|
247
|
+
app_id: result.appId,
|
|
248
|
+
yaml_content: result.yaml,
|
|
249
|
+
graph_topic: result.graphTopic,
|
|
250
|
+
input_schema: result.inputSchema,
|
|
251
|
+
output_schema: result.outputSchema,
|
|
252
|
+
activity_manifest: result.activityManifest,
|
|
253
|
+
tags: result.tags,
|
|
254
|
+
source_workflow_type: 'durable',
|
|
255
|
+
original_prompt: args.description,
|
|
256
|
+
category: result.category,
|
|
257
|
+
metadata: { durable_source: args.source },
|
|
258
|
+
});
|
|
259
|
+
return {
|
|
260
|
+
content: [{
|
|
261
|
+
type: 'text',
|
|
262
|
+
text: JSON.stringify({
|
|
263
|
+
yaml_workflow_id: record.id,
|
|
264
|
+
app_id: record.app_id,
|
|
265
|
+
graph_topic: result.graphTopic,
|
|
266
|
+
activity_count: result.activityManifest.filter((a) => a.type === 'worker').length,
|
|
267
|
+
input_schema: result.inputSchema,
|
|
268
|
+
yaml_preview: result.yaml.slice(0, 500),
|
|
269
|
+
}),
|
|
270
|
+
}],
|
|
271
|
+
};
|
|
272
|
+
});
|
|
219
273
|
logger_1.loggerRegistry.info(`[lt-mcp] workflow compiler server created: ${name}`);
|
|
220
274
|
return server;
|
|
221
275
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { TriageResponseDeps } from './types';
|
|
2
|
+
declare const getUpstreamTasks: (originId: string) => Promise<import("../../..").LTTaskRecord[]>, getEscalationHistory: (originId: string) => Promise<import("../../..").LTEscalationRecord[]>, getToolTags: (workflowType: string) => Promise<string[]>, loadTriageTools: (tags?: string[] | undefined) => Promise<{
|
|
3
|
+
toolIds: string[];
|
|
4
|
+
inventory: string;
|
|
5
|
+
strategy: string;
|
|
6
|
+
}>, callTriageTool: (qualifiedName: string, args: Record<string, any>) => Promise<any>, callTriageLLM: (messages: any[], toolIds?: string[] | undefined) => Promise<import("../../../services/llm").LLMResponse>;
|
|
7
|
+
declare const ltEnrichEscalationRouting: (input: {
|
|
8
|
+
escalationId: string;
|
|
9
|
+
signalRouting: {
|
|
10
|
+
taskQueue: string;
|
|
11
|
+
workflowType: string;
|
|
12
|
+
workflowId: string;
|
|
13
|
+
signalId: string;
|
|
14
|
+
};
|
|
15
|
+
taskId?: string;
|
|
16
|
+
claimForUserId?: string;
|
|
17
|
+
}) => Promise<void>;
|
|
18
|
+
export declare const MAX_TOOL_ROUNDS: number;
|
|
19
|
+
/** Proxied activity refs passed to response handlers */
|
|
20
|
+
export declare const responseDeps: TriageResponseDeps;
|
|
21
|
+
export { getUpstreamTasks, getEscalationHistory, getToolTags, loadTriageTools, callTriageTool, callTriageLLM, ltEnrichEscalationRouting, };
|
|
@@ -0,0 +1,70 @@
|
|
|
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.ltEnrichEscalationRouting = exports.callTriageLLM = exports.callTriageTool = exports.loadTriageTools = exports.getToolTags = exports.getEscalationHistory = exports.getUpstreamTasks = exports.responseDeps = exports.MAX_TOOL_ROUNDS = void 0;
|
|
37
|
+
const hotmesh_1 = require("@hotmeshio/hotmesh");
|
|
38
|
+
const defaults_1 = require("../../../modules/defaults");
|
|
39
|
+
const activities = __importStar(require("../../activities/triage"));
|
|
40
|
+
const interceptorActivities = __importStar(require("../../../services/interceptor/activities"));
|
|
41
|
+
const { getUpstreamTasks, getEscalationHistory, getToolTags, loadTriageTools, callTriageTool, callTriageLLM, notifyEngineering, } = hotmesh_1.Durable.workflow.proxyActivities({
|
|
42
|
+
activities,
|
|
43
|
+
retry: {
|
|
44
|
+
maximumAttempts: 3,
|
|
45
|
+
backoffCoefficient: 2,
|
|
46
|
+
maximumInterval: '10 seconds',
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
exports.getUpstreamTasks = getUpstreamTasks;
|
|
50
|
+
exports.getEscalationHistory = getEscalationHistory;
|
|
51
|
+
exports.getToolTags = getToolTags;
|
|
52
|
+
exports.loadTriageTools = loadTriageTools;
|
|
53
|
+
exports.callTriageTool = callTriageTool;
|
|
54
|
+
exports.callTriageLLM = callTriageLLM;
|
|
55
|
+
const { ltCreateEscalation, ltCreateTask, ltGetTask, ltGetWorkflowConfig, ltStartWorkflow, ltEnrichEscalationRouting, } = hotmesh_1.Durable.workflow.proxyActivities({
|
|
56
|
+
activities: interceptorActivities,
|
|
57
|
+
taskQueue: 'lt-interceptor',
|
|
58
|
+
retry: { maximumAttempts: 3 },
|
|
59
|
+
});
|
|
60
|
+
exports.ltEnrichEscalationRouting = ltEnrichEscalationRouting;
|
|
61
|
+
exports.MAX_TOOL_ROUNDS = defaults_1.TOOL_ROUNDS_TRIAGE;
|
|
62
|
+
/** Proxied activity refs passed to response handlers */
|
|
63
|
+
exports.responseDeps = {
|
|
64
|
+
ltCreateEscalation,
|
|
65
|
+
ltCreateTask,
|
|
66
|
+
ltGetTask,
|
|
67
|
+
ltGetWorkflowConfig,
|
|
68
|
+
ltStartWorkflow,
|
|
69
|
+
notifyEngineering,
|
|
70
|
+
};
|