@hotmeshio/long-tail 0.1.13 → 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 +16 -0
- package/build/api/files.js +61 -0
- 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/mcp-runs.d.ts +2 -0
- package/build/api/mcp-runs.js +2 -0
- package/build/api/settings.js +9 -1
- package/build/api/workflow-sets.d.ts +11 -0
- package/build/api/workflow-sets.js +62 -0
- 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 -137
- package/build/api/{yaml-workflows.js → yaml-workflows/crud.js} +86 -358
- 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/lib/storage/local.d.ts +15 -0
- package/build/lib/storage/local.js +63 -0
- package/build/lib/storage/mime.d.ts +4 -0
- package/build/lib/storage/mime.js +31 -0
- package/build/lib/storage/s3.d.ts +16 -0
- package/build/lib/storage/s3.js +70 -0
- package/build/lib/storage/types.d.ts +18 -0
- package/build/modules/utils.d.ts +73 -0
- package/build/modules/utils.js +84 -0
- package/build/routes/file-browser.d.ts +2 -0
- package/build/routes/file-browser.js +126 -0
- package/build/routes/files.js +25 -17
- package/build/routes/index.js +4 -0
- package/build/routes/knowledge.d.ts +2 -0
- package/build/routes/knowledge.js +141 -0
- package/build/routes/mcp-runs.js +2 -0
- package/build/routes/workflow-sets.js +9 -0
- package/build/routes/yaml-workflows/crud.js +9 -0
- package/build/routes/yaml-workflows/deployment.js +8 -0
- package/build/sdk/index.d.ts +17 -0
- package/build/sdk/index.js +19 -0
- package/build/services/insight/index.d.ts +13 -0
- package/build/services/insight/index.js +4 -7
- package/build/services/insight/prompts.d.ts +1 -1
- package/build/services/insight/prompts.js +1 -1
- 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/mcp-runs/queries.d.ts +2 -0
- package/build/services/mcp-runs/queries.js +11 -1
- package/build/services/mcp-runs/sql.d.ts +1 -1
- package/build/services/mcp-runs/sql.js +2 -2
- package/build/services/workflow-sets/db.d.ts +1 -0
- package/build/services/workflow-sets/db.js +6 -0
- package/build/services/workflow-sets/index.d.ts +1 -1
- package/build/services/workflow-sets/index.js +2 -1
- package/build/services/workflow-sets/sql.d.ts +1 -0
- package/build/services/workflow-sets/sql.js +6 -1
- 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 +14 -12
- package/build/services/yaml-workflow/db.js +32 -70
- 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/generator.js +4 -4
- 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/build/index.d.ts +2 -1
- package/build/services/yaml-workflow/pipeline/build/index.js +3 -2
- package/build/services/yaml-workflow/pipeline/build/utils.d.ts +0 -2
- package/build/services/yaml-workflow/pipeline/build/utils.js +0 -8
- 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/services/yaml-workflow/sql.d.ts +2 -1
- package/build/services/yaml-workflow/sql.js +10 -3
- 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/schema-exchange.d.ts +50 -0
- package/build/system/activities/schema-exchange.js +210 -0
- package/build/system/activities/sql.d.ts +4 -1
- package/build/system/activities/sql.js +37 -2
- package/build/system/index.js +1 -0
- 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 +69 -6
- package/build/system/mcp-servers/schema-exchange.d.ts +4 -0
- package/build/system/mcp-servers/schema-exchange.js +93 -0
- package/build/system/mcp-servers/workflow-compiler.js +54 -0
- package/build/system/seed/server-definitions.d.ts +112 -1
- package/build/system/seed/server-definitions.js +37 -0
- package/build/system/seed/tool-manifests-data.d.ts +87 -0
- package/build/system/seed/tool-manifests-data.js +37 -1
- package/build/system/seed/tool-manifests-knowledge.d.ts +9 -1
- package/build/system/seed/tool-manifests-knowledge.js +6 -5
- 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-builder/prompts.d.ts +1 -1
- package/build/system/workflows/mcp-workflow-builder/prompts.js +21 -20
- package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +2 -1
- package/build/system/workflows/mcp-workflow-planner/activities/persist.js +4 -3
- package/build/system/workflows/mcp-workflow-planner/index.js +41 -5
- package/build/system/workflows/mcp-workflow-planner/prompts.d.ts +1 -1
- package/build/system/workflows/mcp-workflow-planner/prompts.js +3 -3
- package/build/tsconfig.tsbuildinfo +1 -1
- package/dashboard/dist/assets/{AdminDashboard-DUrSBQOl.js → AdminDashboard-NLryl1_B.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-DUrSBQOl.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-Cg5iNEkm.js → BotPicker-DWhn0tr1.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-Cg5iNEkm.js.map → BotPicker-DWhn0tr1.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-Kd9UIyeU.js → CollapsibleSection-CgYgQiOc.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-Kd9UIyeU.js.map → CollapsibleSection-CgYgQiOc.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-DZMgmlof.js → ConfirmDeleteModal-DCKAPXD3.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-DZMgmlof.js.map → ConfirmDeleteModal-DCKAPXD3.js.map} +1 -1
- package/dashboard/dist/assets/{CopyableId-cPFTRm8q.js → CopyableId-DXkaAOYk.js} +2 -2
- package/dashboard/dist/assets/{CopyableId-cPFTRm8q.js.map → CopyableId-DXkaAOYk.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-B361BOfU.js +2 -0
- package/dashboard/dist/assets/{CredentialsPage-DJablIbs.js.map → CredentialsPage-B361BOfU.js.map} +1 -1
- package/dashboard/dist/assets/{CustomDurationPicker-NgIP6YDW.js → CustomDurationPicker-D2G1ldiF.js} +2 -2
- package/dashboard/dist/assets/{CustomDurationPicker-NgIP6YDW.js.map → CustomDurationPicker-D2G1ldiF.js.map} +1 -1
- package/dashboard/dist/assets/{DataTable-CTRhTAfT.js → DataTable-DXSUbA26.js} +2 -2
- package/dashboard/dist/assets/{DataTable-CTRhTAfT.js.map → DataTable-DXSUbA26.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-HcSJ_MMs.js → ElapsedCell-CQGqkXP_.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-HcSJ_MMs.js.map → ElapsedCell-CQGqkXP_.js.map} +1 -1
- package/dashboard/dist/assets/{EmptyState-joNbd4gg.js → EmptyState-Dep92Wkg.js} +2 -2
- package/dashboard/dist/assets/{EmptyState-joNbd4gg.js.map → EmptyState-Dep92Wkg.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-DpXDnQux.js → EscalationsOverview-DVEFVjs7.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-DpXDnQux.js.map → EscalationsOverview-DVEFVjs7.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-CYem3v8n.js → EventTable-BMJAPkMi.js} +2 -2
- package/dashboard/dist/assets/{EventTable-CYem3v8n.js.map → EventTable-BMJAPkMi.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-BiO8SOzc.js → FilterBar-DbVbCzH2.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-BiO8SOzc.js.map → FilterBar-DbVbCzH2.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-6yRDh2e9.js → ListToolbar-0XNuXj0M.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-6yRDh2e9.js.map → ListToolbar-0XNuXj0M.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-CUgSxkQe.js → McpOverview-CeYnCzBN.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-CUgSxkQe.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-CfUcdzaj.js +2 -0
- package/dashboard/dist/assets/{McpQueryPage-lV6kfDG5.js.map → McpQueryPage-CfUcdzaj.js.map} +1 -1
- package/dashboard/dist/assets/McpRunDetailPage-CZtodW_Z.js +2 -0
- package/dashboard/dist/assets/McpRunDetailPage-CZtodW_Z.js.map +1 -0
- package/dashboard/dist/assets/McpRunsPage-Dzgq7HGt.js +2 -0
- package/dashboard/dist/assets/McpRunsPage-Dzgq7HGt.js.map +1 -0
- package/dashboard/dist/assets/{Modal-BuTvD0pz.js → Modal-yyhUeKoA.js} +2 -2
- package/dashboard/dist/assets/{Modal-BuTvD0pz.js.map → Modal-yyhUeKoA.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-Ceh7OQtZ.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-C9SSV96T.js.map → OperatorDashboard-Ceh7OQtZ.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeader-BcTVF9ul.js → PageHeader-CZ9a8cpr.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-BcTVF9ul.js.map → PageHeader-CZ9a8cpr.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-BI7JG5x6.js → PageHeaderWithStats-BJuNs5NM.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-BI7JG5x6.js.map → PageHeaderWithStats-BJuNs5NM.js.map} +1 -1
- package/dashboard/dist/assets/{PriorityBadge-DqVaOU65.js → PriorityBadge-BrPikMFy.js} +2 -2
- package/dashboard/dist/assets/{PriorityBadge-DqVaOU65.js.map → PriorityBadge-BrPikMFy.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessDetailPage-hFMhf9qa.js → ProcessDetailPage-2miaYd8G.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-hFMhf9qa.js.map → ProcessDetailPage-2miaYd8G.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-ByVoBCQ3.js → ProcessesListPage-DqpRDqjk.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-ByVoBCQ3.js.map → ProcessesListPage-DqpRDqjk.js.map} +1 -1
- package/dashboard/dist/assets/{RolePill-D9ZIkYiu.js → RolePill-DxbJMfJu.js} +2 -2
- package/dashboard/dist/assets/{RolePill-D9ZIkYiu.js.map → RolePill-DxbJMfJu.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-SMedMuqa.js → RolesPage-CYHRo21-.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-SMedMuqa.js.map → RolesPage-CYHRo21-.js.map} +1 -1
- package/dashboard/dist/assets/{RowActions-yDhwwDbU.js → RowActions-DurFwIwe.js} +2 -2
- package/dashboard/dist/assets/{RowActions-yDhwwDbU.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-BrBnQFxh.js → StatCard-CKplpK3w.js} +2 -2
- package/dashboard/dist/assets/{StatCard-BrBnQFxh.js.map → StatCard-CKplpK3w.js.map} +1 -1
- package/dashboard/dist/assets/{StatusBadge-xgb-lZku.js → StatusBadge-Dm0V1dNN.js} +2 -2
- package/dashboard/dist/assets/{StatusBadge-xgb-lZku.js.map → StatusBadge-Dm0V1dNN.js.map} +1 -1
- package/dashboard/dist/assets/{StepIndicator-B9ps2SvM.js → StepIndicator-Dicx0WTZ.js} +2 -2
- package/dashboard/dist/assets/{StepIndicator-B9ps2SvM.js.map → StepIndicator-Dicx0WTZ.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-DTIjBKN3.js → StickyPagination-B2jYvU3-.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-DTIjBKN3.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-CdNUuqk4.js → TagInput-CypDZ6Kl.js} +2 -2
- package/dashboard/dist/assets/{TagInput-CdNUuqk4.js.map → TagInput-CypDZ6Kl.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-C-nzaNea.js → TaskDetailPage-DooDNJGT.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-C-nzaNea.js.map → TaskDetailPage-DooDNJGT.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-Lvr2-NzS.js → TaskQueuePill-C1hZ-j31.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-Lvr2-NzS.js.map → TaskQueuePill-C1hZ-j31.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-DSUmD84y.js → TasksListPage-D7CdkAeg.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-DSUmD84y.js.map → TasksListPage-D7CdkAeg.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-BZdLdrIh.js → TimeAgo-B5LXB2aj.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-BZdLdrIh.js.map → TimeAgo-B5LXB2aj.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-QX_0i5FK.js → TimestampCell-Crb9b0Gw.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-QX_0i5FK.js.map → TimestampCell-Crb9b0Gw.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-DyZMXcBm.js → UserName-OPg-nkRa.js} +2 -2
- package/dashboard/dist/assets/{UserName-DyZMXcBm.js.map → UserName-OPg-nkRa.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-DjVxfZaF.js → WorkflowExecutionPage-CcLVrs9b.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-DjVxfZaF.js.map → WorkflowExecutionPage-CcLVrs9b.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowPill-CCV4MMj7.js +2 -0
- package/dashboard/dist/assets/WorkflowPill-CCV4MMj7.js.map +1 -0
- package/dashboard/dist/assets/{WorkflowsDashboard-DZjuiFZ0.js → WorkflowsDashboard-DB1SncBi.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-DZjuiFZ0.js.map → WorkflowsDashboard-DB1SncBi.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-CLnLRpOu.js → WorkflowsOverview-DvShiYJV.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-CLnLRpOu.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-DIM6lBoY.js → bots-Dqos20NE.js} +2 -2
- package/dashboard/dist/assets/{bots-DIM6lBoY.js.map → bots-Dqos20NE.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-JOTuOqjq.js → escalation-A0CsbvNV.js} +2 -2
- package/dashboard/dist/assets/{escalation-JOTuOqjq.js.map → escalation-A0CsbvNV.js.map} +1 -1
- package/dashboard/dist/assets/escalation-columns-BpBJN6k4.js +2 -0
- package/dashboard/dist/assets/{escalation-columns-Cyg58nkg.js.map → escalation-columns-BpBJN6k4.js.map} +1 -1
- package/dashboard/dist/assets/{helpers-B1BDxBZd.js → helpers-CmznCuAx.js} +2 -2
- package/dashboard/dist/assets/{helpers-B1BDxBZd.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-C8-UaN4N.js +2 -0
- package/dashboard/dist/assets/{index-Cg5nfiYX.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-Cf60K3x9.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-Di12t56M.js.map → index-DZHNte4o.js.map} +1 -1
- package/dashboard/dist/assets/{index-Ds0JoXS2.js → index-VnYkWW8r.js} +2 -2
- package/dashboard/dist/assets/{index-Ds0JoXS2.js.map → index-VnYkWW8r.js.map} +1 -1
- package/dashboard/dist/assets/{index-BcR6PfpY.js → index-XGOmZ117.js} +2 -2
- package/dashboard/dist/assets/{index-BcR6PfpY.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-BYZX9tOb.js → index-puKKZ5l8.js} +77 -77
- package/dashboard/dist/assets/index-puKKZ5l8.js.map +1 -0
- package/dashboard/dist/assets/{index-BizfauqT.js → index-t5frSddy.js} +4 -4
- package/dashboard/dist/assets/{index-BizfauqT.js.map → index-t5frSddy.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-B_xbczAt.js → mcp-DrWymhSu.js} +2 -2
- package/dashboard/dist/assets/{mcp-B_xbczAt.js.map → mcp-DrWymhSu.js.map} +1 -1
- package/dashboard/dist/assets/mcp-query-BhUxVEMS.js +2 -0
- package/dashboard/dist/assets/mcp-query-BhUxVEMS.js.map +1 -0
- package/dashboard/dist/assets/mcp-runs-DUfz4mLd.js +2 -0
- package/dashboard/dist/assets/mcp-runs-DUfz4mLd.js.map +1 -0
- package/dashboard/dist/assets/{namespaces-C3WtdO_9.js → namespaces-Cm6AY5sh.js} +2 -2
- package/dashboard/dist/assets/{namespaces-C3WtdO_9.js.map → namespaces-Cm6AY5sh.js.map} +1 -1
- package/dashboard/dist/assets/{roles-BDAsPpZG.js → roles-2v1Kc7BJ.js} +2 -2
- package/dashboard/dist/assets/{roles-BDAsPpZG.js.map → roles-2v1Kc7BJ.js.map} +1 -1
- package/dashboard/dist/assets/{settings-Ife_UwAp.js → settings-DTQNp6tH.js} +2 -2
- package/dashboard/dist/assets/{settings-Ife_UwAp.js.map → settings-DTQNp6tH.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-BquNDHDI.js → tasks-CS1rgG1s.js} +2 -2
- package/dashboard/dist/assets/{tasks-BquNDHDI.js.map → tasks-CS1rgG1s.js.map} +1 -1
- package/dashboard/dist/assets/useEventHooks-BjXX8x3a.js +2 -0
- package/dashboard/dist/assets/{useEventHooks-anv_B2Yy.js.map → useEventHooks-BjXX8x3a.js.map} +1 -1
- package/dashboard/dist/assets/useFilterParams-CGRYFw_A.js +2 -0
- package/dashboard/dist/assets/useFilterParams-CGRYFw_A.js.map +1 -0
- package/dashboard/dist/assets/useYamlActivityEvents-BeR-nVWQ.js +2 -0
- package/dashboard/dist/assets/useYamlActivityEvents-BeR-nVWQ.js.map +1 -0
- package/dashboard/dist/assets/{users-CFcxB4v6.js → users-DYsdQ7Md.js} +2 -2
- package/dashboard/dist/assets/{users-CFcxB4v6.js.map → users-DYsdQ7Md.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-T4r2DSPD.js → vendor-icons-CWl44VA6.js} +132 -82
- package/dashboard/dist/assets/vendor-icons-CWl44VA6.js.map +1 -0
- package/dashboard/dist/assets/{workflows-CeRci9z3.js → workflows-2QAXh3UD.js} +2 -2
- package/dashboard/dist/assets/{workflows-CeRci9z3.js.map → workflows-2QAXh3UD.js.map} +1 -1
- package/dashboard/dist/assets/yaml-workflows-sx8-UEE3.js +2 -0
- package/dashboard/dist/assets/yaml-workflows-sx8-UEE3.js.map +1 -0
- 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/schema-exchange.md +173 -0
- package/docs/self-test.md +106 -0
- package/docs/workflows.md +19 -0
- package/package.json +15 -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-Dbd1qUK_.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-Dbd1qUK_.js.map +0 -1
- package/dashboard/dist/assets/CredentialsPage-DJablIbs.js +0 -2
- package/dashboard/dist/assets/McpQueryDetailPage-BWbinTM_.js +0 -5
- package/dashboard/dist/assets/McpQueryDetailPage-BWbinTM_.js.map +0 -1
- package/dashboard/dist/assets/McpQueryPage-lV6kfDG5.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-D6gaxH3_.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-D6gaxH3_.js.map +0 -1
- package/dashboard/dist/assets/McpRunsPage-DKvTklh9.js +0 -2
- package/dashboard/dist/assets/McpRunsPage-DKvTklh9.js.map +0 -1
- package/dashboard/dist/assets/OperatorDashboard-C9SSV96T.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-RK4Yu66z.js +0 -2
- package/dashboard/dist/assets/SwimlaneTimeline-RK4Yu66z.js.map +0 -1
- package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js +0 -2
- package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js.map +0 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-VjdhnLmO.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-VjdhnLmO.js.map +0 -1
- package/dashboard/dist/assets/escalation-columns-Cyg58nkg.js +0 -2
- package/dashboard/dist/assets/helpers-BCix9c_m.js +0 -2
- package/dashboard/dist/assets/helpers-BCix9c_m.js.map +0 -1
- package/dashboard/dist/assets/index-BUK3qR-1.js +0 -2
- package/dashboard/dist/assets/index-BUK3qR-1.js.map +0 -1
- package/dashboard/dist/assets/index-BYZX9tOb.js.map +0 -1
- package/dashboard/dist/assets/index-Cf60K3x9.js +0 -2
- package/dashboard/dist/assets/index-Cg5nfiYX.js +0 -2
- package/dashboard/dist/assets/index-D1wVX50Z.js +0 -15
- package/dashboard/dist/assets/index-D1wVX50Z.js.map +0 -1
- package/dashboard/dist/assets/index-DDYFpi4l.js +0 -5
- package/dashboard/dist/assets/index-DDYFpi4l.js.map +0 -1
- package/dashboard/dist/assets/index-DcIKW-cZ.css +0 -1
- package/dashboard/dist/assets/index-Di12t56M.js +0 -2
- package/dashboard/dist/assets/mcp-query-B8-P_QoG.js +0 -2
- package/dashboard/dist/assets/mcp-query-B8-P_QoG.js.map +0 -1
- package/dashboard/dist/assets/mcp-runs-CWeZinoF.js +0 -2
- package/dashboard/dist/assets/mcp-runs-CWeZinoF.js.map +0 -1
- package/dashboard/dist/assets/useEventHooks-anv_B2Yy.js +0 -2
- package/dashboard/dist/assets/useFilterParams-BUyLHcx_.js +0 -2
- package/dashboard/dist/assets/useFilterParams-BUyLHcx_.js.map +0 -1
- package/dashboard/dist/assets/useYamlActivityEvents-DN-PTgVx.js +0 -2
- package/dashboard/dist/assets/useYamlActivityEvents-DN-PTgVx.js.map +0 -1
- package/dashboard/dist/assets/vendor-icons-T4r2DSPD.js.map +0 -1
- package/dashboard/dist/assets/yaml-workflows-DLwd2BOX.js +0 -2
- package/dashboard/dist/assets/yaml-workflows-DLwd2BOX.js.map +0 -1
|
@@ -6,8 +6,10 @@ exports.getWorkflowSet = getWorkflowSet;
|
|
|
6
6
|
exports.updateWorkflowSetPlanApi = updateWorkflowSetPlanApi;
|
|
7
7
|
exports.buildWorkflowSet = buildWorkflowSet;
|
|
8
8
|
exports.deployWorkflowSet = deployWorkflowSet;
|
|
9
|
+
exports.addToWorkflowSet = addToWorkflowSet;
|
|
9
10
|
const workflow_sets_1 = require("../services/workflow-sets");
|
|
10
11
|
const insight_1 = require("../services/insight");
|
|
12
|
+
const yaml_workflows_1 = require("./yaml-workflows");
|
|
11
13
|
/**
|
|
12
14
|
* Create a new workflow set and kick off the LLM-powered planner.
|
|
13
15
|
*
|
|
@@ -168,3 +170,63 @@ async function deployWorkflowSet(input) {
|
|
|
168
170
|
return { status: 500, error: err.message };
|
|
169
171
|
}
|
|
170
172
|
}
|
|
173
|
+
/**
|
|
174
|
+
* Add additional workflows to an existing set.
|
|
175
|
+
*
|
|
176
|
+
* Invokes the planner with the new specification and existing set context.
|
|
177
|
+
* The planner appends new plan items (offset build_order) and builds them
|
|
178
|
+
* with sibling schema awareness so composition wiring works.
|
|
179
|
+
*/
|
|
180
|
+
async function addToWorkflowSet(input, auth) {
|
|
181
|
+
try {
|
|
182
|
+
if (!input.specification || typeof input.specification !== 'string') {
|
|
183
|
+
return { status: 400, error: 'specification is required' };
|
|
184
|
+
}
|
|
185
|
+
if (!process.env.OPENAI_API_KEY && !process.env.ANTHROPIC_API_KEY) {
|
|
186
|
+
return { status: 503, error: 'Workflow planner requires an LLM API key' };
|
|
187
|
+
}
|
|
188
|
+
const set = await (0, workflow_sets_1.getWorkflowSet)(input.id);
|
|
189
|
+
if (!set) {
|
|
190
|
+
return { status: 404, error: 'Workflow set not found' };
|
|
191
|
+
}
|
|
192
|
+
// Gather existing plan items and built workflow schemas
|
|
193
|
+
const existingPlan = (set.plan || []).map(p => ({
|
|
194
|
+
name: p.name,
|
|
195
|
+
description: p.description,
|
|
196
|
+
namespace: p.namespace,
|
|
197
|
+
}));
|
|
198
|
+
const yamlResult = await (0, yaml_workflows_1.listYamlWorkflows)({ set_id: input.id, limit: 100 });
|
|
199
|
+
const workflows = yamlResult.data?.workflows || [];
|
|
200
|
+
const existingSchemas = workflows
|
|
201
|
+
.filter((w) => w.status === 'active' || w.status === 'draft')
|
|
202
|
+
.map((w) => ({
|
|
203
|
+
name: w.name,
|
|
204
|
+
input_schema: w.input_schema || {},
|
|
205
|
+
output_schema: w.output_schema || {},
|
|
206
|
+
graph_topic: w.graph_topic,
|
|
207
|
+
}));
|
|
208
|
+
// Append the new spec to the set's specification field so the full
|
|
209
|
+
// history of what was pasted is preserved and visible on step 1.
|
|
210
|
+
await (0, workflow_sets_1.appendWorkflowSetSpecification)(input.id, input.specification);
|
|
211
|
+
const plannerResult = await (0, insight_1.startWorkflowPlanner)({
|
|
212
|
+
specification: input.specification,
|
|
213
|
+
setId: input.id,
|
|
214
|
+
wait: false,
|
|
215
|
+
userId: auth?.userId,
|
|
216
|
+
existingPlan,
|
|
217
|
+
existingSchemas,
|
|
218
|
+
});
|
|
219
|
+
await (0, workflow_sets_1.updateWorkflowSetSourceWorkflow)(input.id, plannerResult.workflow_id);
|
|
220
|
+
return {
|
|
221
|
+
status: 200,
|
|
222
|
+
data: {
|
|
223
|
+
...set,
|
|
224
|
+
source_workflow_id: plannerResult.workflow_id,
|
|
225
|
+
planner_workflow_id: plannerResult.workflow_id,
|
|
226
|
+
},
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
catch (err) {
|
|
230
|
+
return { status: 500, error: err.message };
|
|
231
|
+
}
|
|
232
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { LTApiResult } from '../../types/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* List all registered workflow configurations.
|
|
4
|
+
*
|
|
5
|
+
* @returns `{ status: 200, data: { workflows: LTWorkflowConfig[] } }`
|
|
6
|
+
*/
|
|
7
|
+
export declare function listWorkflowConfigs(): Promise<LTApiResult>;
|
|
8
|
+
/**
|
|
9
|
+
* Get a single workflow configuration by type.
|
|
10
|
+
*
|
|
11
|
+
* @param input.type — workflow type name (e.g. `"reviewContent"`)
|
|
12
|
+
* @returns `{ status: 200, data: <config> }` or 404
|
|
13
|
+
*/
|
|
14
|
+
export declare function getWorkflowConfig(input: {
|
|
15
|
+
type: string;
|
|
16
|
+
}): Promise<LTApiResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Create or replace a workflow configuration.
|
|
19
|
+
*
|
|
20
|
+
* Invalidates the config cache and restarts the cron schedule if one
|
|
21
|
+
* is defined. Idempotent — safe to call repeatedly with the same input.
|
|
22
|
+
*
|
|
23
|
+
* @param input.type — workflow type name
|
|
24
|
+
* @param input.invocable — whether the workflow can be started via the API
|
|
25
|
+
* @param input.task_queue — HotMesh task queue
|
|
26
|
+
* @param input.default_role — default escalation role
|
|
27
|
+
* @param input.description — human-readable description
|
|
28
|
+
* @param input.execute_as — service account for proxy invocation
|
|
29
|
+
* @param input.roles — roles that can resolve escalations
|
|
30
|
+
* @param input.invocation_roles — roles that can invoke this workflow
|
|
31
|
+
* @param input.consumes — workflow types whose data this workflow consumes
|
|
32
|
+
* @param input.tool_tags — MCP tool tags for discovery
|
|
33
|
+
* @param input.envelope_schema — JSON Schema for envelope.data validation
|
|
34
|
+
* @param input.resolver_schema — JSON Schema for resolver payload validation
|
|
35
|
+
* @param input.cron_schedule — cron expression for scheduled execution
|
|
36
|
+
* @returns `{ status: 200, data: <saved config> }`
|
|
37
|
+
*/
|
|
38
|
+
export declare function upsertWorkflowConfig(input: {
|
|
39
|
+
type: string;
|
|
40
|
+
invocable?: boolean;
|
|
41
|
+
task_queue?: string | null;
|
|
42
|
+
default_role?: string;
|
|
43
|
+
description?: string | null;
|
|
44
|
+
execute_as?: string | null;
|
|
45
|
+
roles?: string[];
|
|
46
|
+
invocation_roles?: string[];
|
|
47
|
+
consumes?: string[];
|
|
48
|
+
tool_tags?: string[];
|
|
49
|
+
envelope_schema?: any;
|
|
50
|
+
resolver_schema?: any;
|
|
51
|
+
cron_schedule?: string | null;
|
|
52
|
+
}): Promise<LTApiResult>;
|
|
53
|
+
/**
|
|
54
|
+
* Delete a workflow configuration.
|
|
55
|
+
*
|
|
56
|
+
* Removes the config record and invalidates the cache. Active workers
|
|
57
|
+
* continue running — this only removes the config/interceptor binding.
|
|
58
|
+
*
|
|
59
|
+
* @param input.type — workflow type name
|
|
60
|
+
* @returns `{ status: 200, data: { deleted: true, workflow_type } }` or 404
|
|
61
|
+
*/
|
|
62
|
+
export declare function deleteWorkflowConfig(input: {
|
|
63
|
+
type: string;
|
|
64
|
+
}): Promise<LTApiResult>;
|
|
@@ -0,0 +1,142 @@
|
|
|
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.listWorkflowConfigs = listWorkflowConfigs;
|
|
37
|
+
exports.getWorkflowConfig = getWorkflowConfig;
|
|
38
|
+
exports.upsertWorkflowConfig = upsertWorkflowConfig;
|
|
39
|
+
exports.deleteWorkflowConfig = deleteWorkflowConfig;
|
|
40
|
+
const configService = __importStar(require("../../services/config"));
|
|
41
|
+
const cron_1 = require("../../services/cron");
|
|
42
|
+
const ltconfig_1 = require("../../modules/ltconfig");
|
|
43
|
+
/**
|
|
44
|
+
* List all registered workflow configurations.
|
|
45
|
+
*
|
|
46
|
+
* @returns `{ status: 200, data: { workflows: LTWorkflowConfig[] } }`
|
|
47
|
+
*/
|
|
48
|
+
async function listWorkflowConfigs() {
|
|
49
|
+
try {
|
|
50
|
+
const configs = await configService.listWorkflowConfigs();
|
|
51
|
+
return { status: 200, data: { workflows: configs } };
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
return { status: 500, error: err.message };
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get a single workflow configuration by type.
|
|
59
|
+
*
|
|
60
|
+
* @param input.type — workflow type name (e.g. `"reviewContent"`)
|
|
61
|
+
* @returns `{ status: 200, data: <config> }` or 404
|
|
62
|
+
*/
|
|
63
|
+
async function getWorkflowConfig(input) {
|
|
64
|
+
try {
|
|
65
|
+
const config = await configService.getWorkflowConfig(input.type);
|
|
66
|
+
if (!config) {
|
|
67
|
+
return { status: 404, error: 'Workflow config not found' };
|
|
68
|
+
}
|
|
69
|
+
return { status: 200, data: config };
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
return { status: 500, error: err.message };
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Create or replace a workflow configuration.
|
|
77
|
+
*
|
|
78
|
+
* Invalidates the config cache and restarts the cron schedule if one
|
|
79
|
+
* is defined. Idempotent — safe to call repeatedly with the same input.
|
|
80
|
+
*
|
|
81
|
+
* @param input.type — workflow type name
|
|
82
|
+
* @param input.invocable — whether the workflow can be started via the API
|
|
83
|
+
* @param input.task_queue — HotMesh task queue
|
|
84
|
+
* @param input.default_role — default escalation role
|
|
85
|
+
* @param input.description — human-readable description
|
|
86
|
+
* @param input.execute_as — service account for proxy invocation
|
|
87
|
+
* @param input.roles — roles that can resolve escalations
|
|
88
|
+
* @param input.invocation_roles — roles that can invoke this workflow
|
|
89
|
+
* @param input.consumes — workflow types whose data this workflow consumes
|
|
90
|
+
* @param input.tool_tags — MCP tool tags for discovery
|
|
91
|
+
* @param input.envelope_schema — JSON Schema for envelope.data validation
|
|
92
|
+
* @param input.resolver_schema — JSON Schema for resolver payload validation
|
|
93
|
+
* @param input.cron_schedule — cron expression for scheduled execution
|
|
94
|
+
* @returns `{ status: 200, data: <saved config> }`
|
|
95
|
+
*/
|
|
96
|
+
async function upsertWorkflowConfig(input) {
|
|
97
|
+
try {
|
|
98
|
+
const config = await configService.upsertWorkflowConfig({
|
|
99
|
+
workflow_type: input.type,
|
|
100
|
+
invocable: input.invocable ?? false,
|
|
101
|
+
task_queue: input.task_queue ?? null,
|
|
102
|
+
default_role: input.default_role ?? 'reviewer',
|
|
103
|
+
description: input.description ?? null,
|
|
104
|
+
execute_as: input.execute_as ?? null,
|
|
105
|
+
roles: input.roles ?? [],
|
|
106
|
+
invocation_roles: input.invocation_roles ?? [],
|
|
107
|
+
consumes: input.consumes ?? [],
|
|
108
|
+
tool_tags: input.tool_tags ?? [],
|
|
109
|
+
envelope_schema: input.envelope_schema ?? null,
|
|
110
|
+
resolver_schema: input.resolver_schema ?? null,
|
|
111
|
+
cron_schedule: input.cron_schedule ?? null,
|
|
112
|
+
});
|
|
113
|
+
ltconfig_1.ltConfig.invalidate();
|
|
114
|
+
await cron_1.cronRegistry.restartCron(config);
|
|
115
|
+
return { status: 200, data: config };
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
118
|
+
return { status: 500, error: err.message };
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Delete a workflow configuration.
|
|
123
|
+
*
|
|
124
|
+
* Removes the config record and invalidates the cache. Active workers
|
|
125
|
+
* continue running — this only removes the config/interceptor binding.
|
|
126
|
+
*
|
|
127
|
+
* @param input.type — workflow type name
|
|
128
|
+
* @returns `{ status: 200, data: { deleted: true, workflow_type } }` or 404
|
|
129
|
+
*/
|
|
130
|
+
async function deleteWorkflowConfig(input) {
|
|
131
|
+
try {
|
|
132
|
+
const deleted = await configService.deleteWorkflowConfig(input.type);
|
|
133
|
+
if (!deleted) {
|
|
134
|
+
return { status: 404, error: 'Workflow config not found' };
|
|
135
|
+
}
|
|
136
|
+
ltconfig_1.ltConfig.invalidate();
|
|
137
|
+
return { status: 200, data: { deleted: true, workflow_type: input.type } };
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
return { status: 500, error: err.message };
|
|
141
|
+
}
|
|
142
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { LTApiResult } from '../../types/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* List active workflow workers with their registration status.
|
|
4
|
+
*
|
|
5
|
+
* @param input.include_system — include system workflows (default: false)
|
|
6
|
+
* @returns `{ status: 200, data: { workers: [{ name, task_queue, registered, system }] } }`
|
|
7
|
+
*/
|
|
8
|
+
export declare function listWorkers(input: {
|
|
9
|
+
include_system?: boolean;
|
|
10
|
+
}): Promise<LTApiResult>;
|
|
11
|
+
/**
|
|
12
|
+
* Discover all known workflow types from workers, history, and config.
|
|
13
|
+
*
|
|
14
|
+
* Merges three sources: active in-memory workers, historical entities
|
|
15
|
+
* from the durable jobs table, and registered workflow configs. Returns
|
|
16
|
+
* a unified list with status flags for each type.
|
|
17
|
+
*
|
|
18
|
+
* @param input.include_system — include system workflows (default: false)
|
|
19
|
+
* @returns `{ status: 200, data: { workflows: [{ workflow_type, task_queue, registered, active, invocable, ... }] } }`
|
|
20
|
+
*/
|
|
21
|
+
export declare function listDiscoveredWorkflows(input: {
|
|
22
|
+
include_system?: boolean;
|
|
23
|
+
}): Promise<LTApiResult>;
|
|
24
|
+
/**
|
|
25
|
+
* List all cron-scheduled workflows and their active state.
|
|
26
|
+
*
|
|
27
|
+
* @returns `{ status: 200, data: { schedules: [{ workflow_type, cron_schedule, active, ... }] } }`
|
|
28
|
+
*/
|
|
29
|
+
export declare function getCronStatus(): Promise<LTApiResult>;
|
|
@@ -0,0 +1,153 @@
|
|
|
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.listWorkers = listWorkers;
|
|
37
|
+
exports.listDiscoveredWorkflows = listDiscoveredWorkflows;
|
|
38
|
+
exports.getCronStatus = getCronStatus;
|
|
39
|
+
const configService = __importStar(require("../../services/config"));
|
|
40
|
+
const cron_1 = require("../../services/cron");
|
|
41
|
+
const db_1 = require("../../lib/db");
|
|
42
|
+
const registry_1 = require("../../services/workers/registry");
|
|
43
|
+
const sql_1 = require("../../services/mcp-runs/sql");
|
|
44
|
+
/**
|
|
45
|
+
* List active workflow workers with their registration status.
|
|
46
|
+
*
|
|
47
|
+
* @param input.include_system — include system workflows (default: false)
|
|
48
|
+
* @returns `{ status: 200, data: { workers: [{ name, task_queue, registered, system }] } }`
|
|
49
|
+
*/
|
|
50
|
+
async function listWorkers(input) {
|
|
51
|
+
try {
|
|
52
|
+
const activeWorkers = (0, registry_1.getRegisteredWorkers)();
|
|
53
|
+
const configs = await configService.listWorkflowConfigs();
|
|
54
|
+
const registeredTypes = new Set(configs.map((c) => c.workflow_type));
|
|
55
|
+
const workers = [...activeWorkers.entries()]
|
|
56
|
+
.filter(([name]) => input.include_system || !registry_1.SYSTEM_WORKFLOWS.has(name))
|
|
57
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
58
|
+
.map(([name, { taskQueue }]) => ({
|
|
59
|
+
name,
|
|
60
|
+
task_queue: taskQueue,
|
|
61
|
+
registered: registeredTypes.has(name),
|
|
62
|
+
system: registry_1.SYSTEM_WORKFLOWS.has(name),
|
|
63
|
+
}));
|
|
64
|
+
return { status: 200, data: { workers } };
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
return { status: 500, error: err.message };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Discover all known workflow types from workers, history, and config.
|
|
72
|
+
*
|
|
73
|
+
* Merges three sources: active in-memory workers, historical entities
|
|
74
|
+
* from the durable jobs table, and registered workflow configs. Returns
|
|
75
|
+
* a unified list with status flags for each type.
|
|
76
|
+
*
|
|
77
|
+
* @param input.include_system — include system workflows (default: false)
|
|
78
|
+
* @returns `{ status: 200, data: { workflows: [{ workflow_type, task_queue, registered, active, invocable, ... }] } }`
|
|
79
|
+
*/
|
|
80
|
+
async function listDiscoveredWorkflows(input) {
|
|
81
|
+
try {
|
|
82
|
+
// 1. Active workers from in-memory registry
|
|
83
|
+
const activeWorkers = (0, registry_1.getRegisteredWorkers)();
|
|
84
|
+
// 2. Historical entities from durable.jobs
|
|
85
|
+
const pool = (0, db_1.getPool)();
|
|
86
|
+
const { rows: entityRows } = await pool.query(sql_1.DISTINCT_ENTITIES_DURABLE);
|
|
87
|
+
const historicalEntities = new Set(entityRows.map((r) => r.entity));
|
|
88
|
+
// 3. Registered configs
|
|
89
|
+
const configs = await configService.listWorkflowConfigs();
|
|
90
|
+
const configMap = new Map(configs.map((c) => [c.workflow_type, c]));
|
|
91
|
+
// Build unified set of all workflow types
|
|
92
|
+
const allTypes = new Set();
|
|
93
|
+
for (const [name] of activeWorkers)
|
|
94
|
+
allTypes.add(name);
|
|
95
|
+
for (const entity of historicalEntities)
|
|
96
|
+
allTypes.add(entity);
|
|
97
|
+
for (const c of configs)
|
|
98
|
+
allTypes.add(c.workflow_type);
|
|
99
|
+
const workflows = [...allTypes]
|
|
100
|
+
.filter((t) => input.include_system || !registry_1.SYSTEM_WORKFLOWS.has(t))
|
|
101
|
+
.sort()
|
|
102
|
+
.map((workflowType) => {
|
|
103
|
+
const config = configMap.get(workflowType);
|
|
104
|
+
const worker = activeWorkers.get(workflowType);
|
|
105
|
+
const hasCertification = !!(config &&
|
|
106
|
+
((config.roles?.length ?? 0) > 0 ||
|
|
107
|
+
(config.consumes?.length ?? 0) > 0));
|
|
108
|
+
const tier = !config ? 'durable' : hasCertification ? 'certified' : 'configured';
|
|
109
|
+
return {
|
|
110
|
+
workflow_type: workflowType,
|
|
111
|
+
task_queue: config?.task_queue ?? worker?.taskQueue ?? null,
|
|
112
|
+
tier,
|
|
113
|
+
registered: !!config,
|
|
114
|
+
active: !!worker,
|
|
115
|
+
invocable: config?.invocable ?? !!worker,
|
|
116
|
+
system: registry_1.SYSTEM_WORKFLOWS.has(workflowType),
|
|
117
|
+
description: config?.description ?? null,
|
|
118
|
+
roles: config?.roles ?? [],
|
|
119
|
+
invocation_roles: config?.invocation_roles ?? [],
|
|
120
|
+
execute_as: config?.execute_as ?? null,
|
|
121
|
+
};
|
|
122
|
+
});
|
|
123
|
+
return { status: 200, data: { workflows } };
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
return { status: 500, error: err.message };
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* List all cron-scheduled workflows and their active state.
|
|
131
|
+
*
|
|
132
|
+
* @returns `{ status: 200, data: { schedules: [{ workflow_type, cron_schedule, active, ... }] } }`
|
|
133
|
+
*/
|
|
134
|
+
async function getCronStatus() {
|
|
135
|
+
try {
|
|
136
|
+
const configs = await configService.listWorkflowConfigs();
|
|
137
|
+
const cronConfigs = configs.filter((c) => c.cron_schedule);
|
|
138
|
+
const activeTypes = cron_1.cronRegistry.activeWorkflowTypes;
|
|
139
|
+
const schedules = cronConfigs.map((c) => ({
|
|
140
|
+
workflow_type: c.workflow_type,
|
|
141
|
+
cron_schedule: c.cron_schedule,
|
|
142
|
+
description: c.description,
|
|
143
|
+
task_queue: c.task_queue,
|
|
144
|
+
invocable: c.invocable,
|
|
145
|
+
active: activeTypes.includes(c.workflow_type),
|
|
146
|
+
envelope_schema: c.envelope_schema,
|
|
147
|
+
}));
|
|
148
|
+
return { status: 200, data: { schedules } };
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
return { status: 500, error: err.message };
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { invokeWorkflow, getWorkflowStatus, getWorkflowResult, terminateWorkflow, exportWorkflow, } from './invocation';
|
|
2
|
+
export { listWorkers, listDiscoveredWorkflows, getCronStatus, } from './discovery';
|
|
3
|
+
export { listWorkflowConfigs, getWorkflowConfig, upsertWorkflowConfig, deleteWorkflowConfig, } from './config';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteWorkflowConfig = exports.upsertWorkflowConfig = exports.getWorkflowConfig = exports.listWorkflowConfigs = exports.getCronStatus = exports.listDiscoveredWorkflows = exports.listWorkers = exports.exportWorkflow = exports.terminateWorkflow = exports.getWorkflowResult = exports.getWorkflowStatus = exports.invokeWorkflow = void 0;
|
|
4
|
+
var invocation_1 = require("./invocation");
|
|
5
|
+
Object.defineProperty(exports, "invokeWorkflow", { enumerable: true, get: function () { return invocation_1.invokeWorkflow; } });
|
|
6
|
+
Object.defineProperty(exports, "getWorkflowStatus", { enumerable: true, get: function () { return invocation_1.getWorkflowStatus; } });
|
|
7
|
+
Object.defineProperty(exports, "getWorkflowResult", { enumerable: true, get: function () { return invocation_1.getWorkflowResult; } });
|
|
8
|
+
Object.defineProperty(exports, "terminateWorkflow", { enumerable: true, get: function () { return invocation_1.terminateWorkflow; } });
|
|
9
|
+
Object.defineProperty(exports, "exportWorkflow", { enumerable: true, get: function () { return invocation_1.exportWorkflow; } });
|
|
10
|
+
var discovery_1 = require("./discovery");
|
|
11
|
+
Object.defineProperty(exports, "listWorkers", { enumerable: true, get: function () { return discovery_1.listWorkers; } });
|
|
12
|
+
Object.defineProperty(exports, "listDiscoveredWorkflows", { enumerable: true, get: function () { return discovery_1.listDiscoveredWorkflows; } });
|
|
13
|
+
Object.defineProperty(exports, "getCronStatus", { enumerable: true, get: function () { return discovery_1.getCronStatus; } });
|
|
14
|
+
var config_1 = require("./config");
|
|
15
|
+
Object.defineProperty(exports, "listWorkflowConfigs", { enumerable: true, get: function () { return config_1.listWorkflowConfigs; } });
|
|
16
|
+
Object.defineProperty(exports, "getWorkflowConfig", { enumerable: true, get: function () { return config_1.getWorkflowConfig; } });
|
|
17
|
+
Object.defineProperty(exports, "upsertWorkflowConfig", { enumerable: true, get: function () { return config_1.upsertWorkflowConfig; } });
|
|
18
|
+
Object.defineProperty(exports, "deleteWorkflowConfig", { enumerable: true, get: function () { return config_1.deleteWorkflowConfig; } });
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { LTApiResult, LTApiAuth } from '../../types/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Start a workflow — proxy for `Durable.Client.workflow.start()`.
|
|
4
|
+
*
|
|
5
|
+
* Resolves the task queue, enforces auth/role constraints, builds the
|
|
6
|
+
* LTEnvelope with IAM context, and delegates to the Durable client.
|
|
7
|
+
* Any WorkflowOptions field (workflowId, expire, entity, namespace,
|
|
8
|
+
* search, signalIn, pending, etc.) can be passed via `options` and
|
|
9
|
+
* flows through to the Durable client unchanged.
|
|
10
|
+
*
|
|
11
|
+
* @see https://docs.hotmesh.io/types/types_durable.WorkflowOptions.html
|
|
12
|
+
*/
|
|
13
|
+
export declare function invokeWorkflow(input: {
|
|
14
|
+
type: string;
|
|
15
|
+
data?: Record<string, any>;
|
|
16
|
+
metadata?: Record<string, any>;
|
|
17
|
+
execute_as?: string;
|
|
18
|
+
/** Passthrough to Durable WorkflowOptions. */
|
|
19
|
+
options?: Record<string, any>;
|
|
20
|
+
}, auth: LTApiAuth): Promise<LTApiResult>;
|
|
21
|
+
/**
|
|
22
|
+
* Get the execution status of a workflow.
|
|
23
|
+
*
|
|
24
|
+
* Returns the HotMesh status code (0 = completed, 1 = running).
|
|
25
|
+
* Resolves the workflow handle via task record or worker registry.
|
|
26
|
+
*
|
|
27
|
+
* @param input.workflowId — HotMesh workflow ID
|
|
28
|
+
* @returns `{ status: 200, data: { workflowId, status } }` or 404
|
|
29
|
+
*/
|
|
30
|
+
export declare function getWorkflowStatus(input: {
|
|
31
|
+
workflowId: string;
|
|
32
|
+
}): Promise<LTApiResult>;
|
|
33
|
+
/**
|
|
34
|
+
* Get the result of a completed workflow.
|
|
35
|
+
*
|
|
36
|
+
* Returns 202 if the workflow is still running, 200 with the result
|
|
37
|
+
* payload when complete. Never blocks — always returns immediately.
|
|
38
|
+
*
|
|
39
|
+
* @param input.workflowId — HotMesh workflow ID
|
|
40
|
+
* @returns `{ status: 200, data: { workflowId, result } }` or 202 if running
|
|
41
|
+
*/
|
|
42
|
+
export declare function getWorkflowResult(input: {
|
|
43
|
+
workflowId: string;
|
|
44
|
+
}): Promise<LTApiResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Terminate a running workflow.
|
|
47
|
+
*
|
|
48
|
+
* Interrupts the workflow execution immediately via HotMesh.
|
|
49
|
+
*
|
|
50
|
+
* @param input.workflowId — HotMesh workflow ID
|
|
51
|
+
* @returns `{ status: 200, data: { terminated: true, workflowId } }` or 404
|
|
52
|
+
*/
|
|
53
|
+
export declare function terminateWorkflow(input: {
|
|
54
|
+
workflowId: string;
|
|
55
|
+
}): Promise<LTApiResult>;
|
|
56
|
+
/**
|
|
57
|
+
* Export the full state of a workflow.
|
|
58
|
+
*
|
|
59
|
+
* Returns the serialized workflow state including all activity
|
|
60
|
+
* results, signals, and metadata.
|
|
61
|
+
*
|
|
62
|
+
* @param input.workflowId — HotMesh workflow ID
|
|
63
|
+
* @returns `{ status: 200, data: <exported state> }` or 404
|
|
64
|
+
*/
|
|
65
|
+
export declare function exportWorkflow(input: {
|
|
66
|
+
workflowId: string;
|
|
67
|
+
}): Promise<LTApiResult>;
|