@hotmeshio/long-tail 0.1.6 → 0.1.8
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 +47 -5
- package/build/api/auth.d.ts +16 -0
- package/build/api/auth.js +53 -0
- package/build/api/bot-accounts.d.ts +137 -0
- package/build/api/bot-accounts.js +302 -0
- package/build/api/controlplane.d.ts +68 -0
- package/build/api/controlplane.js +158 -0
- package/build/api/dba.d.ts +42 -0
- package/build/api/dba.js +95 -0
- package/build/api/escalations.d.ts +271 -0
- package/build/api/escalations.js +892 -0
- package/build/api/exports.d.ts +90 -0
- package/build/api/exports.js +204 -0
- package/build/api/index.d.ts +18 -0
- package/build/api/index.js +54 -0
- package/build/api/insight.d.ts +86 -0
- package/build/api/insight.js +147 -0
- package/build/api/maintenance.d.ts +22 -0
- package/build/api/maintenance.js +43 -0
- package/build/api/mcp-runs.d.ts +43 -0
- package/build/api/mcp-runs.js +89 -0
- package/build/api/mcp.d.ts +160 -0
- package/build/api/mcp.js +320 -0
- package/build/api/namespaces.d.ts +20 -0
- package/build/{routes/escalations/helpers.js → api/namespaces.js} +35 -10
- package/build/api/roles.d.ts +88 -0
- package/build/api/roles.js +217 -0
- package/build/api/settings.d.ts +10 -0
- package/build/api/settings.js +43 -0
- package/build/api/tasks.d.ts +70 -0
- package/build/api/tasks.js +139 -0
- package/build/api/users.d.ts +115 -0
- package/build/api/users.js +228 -0
- package/build/api/workflow-sets.d.ts +77 -0
- package/build/api/workflow-sets.js +170 -0
- package/build/api/workflows.d.ts +158 -0
- package/build/api/workflows.js +407 -0
- package/build/api/yaml-workflows.d.ts +282 -0
- package/build/api/yaml-workflows.js +751 -0
- package/build/examples/types/envelopes.d.ts +27 -0
- package/build/examples/types/index.d.ts +1 -1
- package/build/examples/workers.js +8 -0
- package/build/examples/workflows/assembly-line/activities.d.ts +28 -0
- package/build/examples/workflows/assembly-line/activities.js +53 -0
- package/build/examples/workflows/assembly-line/index.d.ts +17 -0
- package/build/examples/workflows/assembly-line/index.js +60 -0
- package/build/examples/workflows/assembly-line/iterator.d.ts +12 -0
- package/build/examples/workflows/assembly-line/iterator.js +54 -0
- package/build/examples/workflows/assembly-line/reverter.d.ts +18 -0
- package/build/examples/workflows/assembly-line/reverter.js +89 -0
- package/build/examples/workflows/assembly-line/types.d.ts +25 -0
- package/build/examples/workflows/assembly-line/types.js +8 -0
- package/build/examples/workflows/assembly-line/worker.d.ts +13 -0
- package/build/examples/workflows/assembly-line/worker.js +81 -0
- package/build/index.d.ts +4 -0
- package/build/index.js +6 -1
- package/build/lib/db/schemas/004_workflow_sets.sql +29 -0
- package/build/lib/db/schemas/005_unique_graph_topic.sql +7 -0
- package/build/lib/db/schemas/011_system_workflow_configs.sql +7 -0
- package/build/lib/events/callback.d.ts +41 -0
- package/build/lib/events/callback.js +98 -0
- package/build/modules/config.js +1 -1
- package/build/routes/auth.js +37 -36
- package/build/routes/bot-accounts.js +34 -164
- package/build/routes/controlplane.js +20 -60
- package/build/routes/dba.js +18 -28
- package/build/routes/escalations/bulk.js +17 -192
- package/build/routes/escalations/list.js +51 -75
- package/build/routes/escalations/resolve.js +3 -193
- package/build/routes/escalations/single.js +13 -122
- package/build/routes/exports.js +44 -95
- package/build/routes/index.js +2 -0
- package/build/routes/insight.js +46 -88
- package/build/routes/maintenance.js +41 -17
- package/build/routes/mcp-runs.js +52 -60
- package/build/routes/mcp.js +49 -177
- package/build/routes/namespaces.js +9 -20
- package/build/routes/roles.js +23 -97
- package/build/routes/settings.js +37 -25
- package/build/routes/tasks.js +28 -64
- package/build/routes/users.js +24 -113
- package/build/routes/workflow-sets.d.ts +2 -0
- package/build/routes/workflow-sets.js +98 -0
- package/build/routes/workflows/config.js +23 -57
- package/build/routes/workflows/discovery.js +11 -85
- package/build/routes/workflows/invocation.js +28 -90
- package/build/routes/yaml-workflows/cron.js +12 -61
- package/build/routes/yaml-workflows/crud.js +30 -223
- package/build/routes/yaml-workflows/deployment.js +15 -115
- package/build/routes/yaml-workflows/versions.js +20 -58
- package/build/sdk/index.d.ts +338 -0
- package/build/sdk/index.js +299 -0
- package/build/services/controlplane/index.d.ts +1 -2
- package/build/services/controlplane/index.js +3 -3
- package/build/services/controlplane/sql.d.ts +2 -2
- package/build/services/controlplane/sql.js +4 -5
- package/build/services/controlplane/types.d.ts +1 -0
- package/build/services/export/index.js +6 -1
- package/build/services/hotmesh-utils.js +2 -4
- package/build/services/insight/index.d.ts +7 -0
- package/build/services/insight/index.js +30 -0
- package/build/services/mcp/client/tools.js +13 -1
- package/build/services/mcp-runs/sql.js +1 -1
- package/build/services/workflow-invocation.d.ts +15 -2
- package/build/services/workflow-invocation.js +11 -6
- package/build/services/workflow-sets/db.d.ts +16 -0
- package/build/services/workflow-sets/db.js +78 -0
- package/build/services/workflow-sets/index.d.ts +1 -0
- package/build/services/workflow-sets/index.js +11 -0
- package/build/services/workflow-sets/sql.d.ts +6 -0
- package/build/services/workflow-sets/sql.js +24 -0
- package/build/services/yaml-workflow/db-utils.d.ts +1 -0
- package/build/services/yaml-workflow/db-utils.js +4 -0
- package/build/services/yaml-workflow/db.d.ts +5 -0
- package/build/services/yaml-workflow/db.js +17 -0
- package/build/services/yaml-workflow/pipeline/build/wiring.js +14 -1
- package/build/services/yaml-workflow/pipeline/prompts.d.ts +1 -1
- package/build/services/yaml-workflow/pipeline/prompts.js +1 -1
- package/build/services/yaml-workflow/sql.d.ts +2 -1
- package/build/services/yaml-workflow/sql.js +8 -3
- package/build/services/yaml-workflow/types.d.ts +3 -0
- package/build/services/yaml-workflow/workers/callbacks.js +7 -1
- package/build/services/yaml-workflow/workers/register.js +7 -0
- package/build/start/adapters.js +4 -0
- package/build/system/index.js +6 -0
- package/build/system/mcp-servers/knowledge.js +1 -1
- package/build/system/seed/server-definitions.js +2 -1
- package/build/system/workflows/mcp-workflow-builder/activities/index.d.ts +1 -1
- package/build/system/workflows/mcp-workflow-builder/activities/index.js +2 -1
- package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.d.ts +6 -0
- package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.js +26 -0
- package/build/system/workflows/mcp-workflow-builder/index.js +26 -2
- package/build/system/workflows/mcp-workflow-builder/prompts.js +104 -35
- package/build/system/workflows/mcp-workflow-planner/activities/analyze.d.ts +11 -0
- package/build/system/workflows/mcp-workflow-planner/activities/analyze.js +36 -0
- package/build/system/workflows/mcp-workflow-planner/activities/index.d.ts +3 -0
- package/build/system/workflows/mcp-workflow-planner/activities/index.js +12 -0
- package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +19 -0
- package/build/system/workflows/mcp-workflow-planner/activities/persist.js +55 -0
- package/build/system/workflows/mcp-workflow-planner/activities/plan.d.ts +10 -0
- package/build/system/workflows/mcp-workflow-planner/activities/plan.js +43 -0
- package/build/system/workflows/mcp-workflow-planner/index.d.ts +7 -0
- package/build/system/workflows/mcp-workflow-planner/index.js +152 -0
- package/build/system/workflows/mcp-workflow-planner/prompts.d.ts +7 -0
- package/build/system/workflows/mcp-workflow-planner/prompts.js +77 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/index.d.ts +1 -0
- package/build/types/sdk.d.ts +27 -0
- package/build/types/sdk.js +2 -0
- package/build/types/workflow-set.d.ts +44 -0
- package/build/types/workflow-set.js +5 -0
- package/dashboard/dist/assets/{AdminDashboard-BXkKGkb5.js → AdminDashboard-B15jSEV2.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-BXkKGkb5.js.map → AdminDashboard-B15jSEV2.js.map} +1 -1
- package/dashboard/dist/assets/{AvailableEscalationsPage-DcH592mc.js → AvailableEscalationsPage-0V2yvKak.js} +2 -2
- package/dashboard/dist/assets/{AvailableEscalationsPage-DcH592mc.js.map → AvailableEscalationsPage-0V2yvKak.js.map} +1 -1
- package/dashboard/dist/assets/BotPicker-B4UxHcek.js +2 -0
- package/dashboard/dist/assets/{BotPicker-A6LtzyuO.js.map → BotPicker-B4UxHcek.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-C7nL2_mv.js → CollapsibleSection-BBexNWVd.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-C7nL2_mv.js.map → CollapsibleSection-BBexNWVd.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-CWFwJrSl.js → ConfirmDeleteModal-DlPDJSq_.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-CWFwJrSl.js.map → ConfirmDeleteModal-DlPDJSq_.js.map} +1 -1
- package/dashboard/dist/assets/{CopyableId-DbZ5c3jh.js → CopyableId-BxHW1ahb.js} +2 -2
- package/dashboard/dist/assets/{CopyableId-DbZ5c3jh.js.map → CopyableId-BxHW1ahb.js.map} +1 -1
- package/dashboard/dist/assets/{CredentialsPage-ClWkmLPu.js → CredentialsPage-Bp_Y1Szk.js} +2 -2
- package/dashboard/dist/assets/{CredentialsPage-ClWkmLPu.js.map → CredentialsPage-Bp_Y1Szk.js.map} +1 -1
- package/dashboard/dist/assets/{CustomDurationPicker-CtH2hReF.js → CustomDurationPicker-ByBFqXSO.js} +2 -2
- package/dashboard/dist/assets/{CustomDurationPicker-CtH2hReF.js.map → CustomDurationPicker-ByBFqXSO.js.map} +1 -1
- package/dashboard/dist/assets/{DataTable-CM5ZcpPi.js → DataTable-DyIXg-tQ.js} +2 -2
- package/dashboard/dist/assets/{DataTable-CM5ZcpPi.js.map → DataTable-DyIXg-tQ.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-CwqavyeC.js → ElapsedCell-BgnA0qpS.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-CwqavyeC.js.map → ElapsedCell-BgnA0qpS.js.map} +1 -1
- package/dashboard/dist/assets/{EmptyState-BBn78pmm.js → EmptyState-DlMImvgm.js} +2 -2
- package/dashboard/dist/assets/{EmptyState-BBn78pmm.js.map → EmptyState-DlMImvgm.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-BcJ2E3X7.js → EscalationsOverview-D90kdfw1.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-BcJ2E3X7.js.map → EscalationsOverview-D90kdfw1.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-C1en_KZ0.js → EventTable-BNxtlgNz.js} +2 -2
- package/dashboard/dist/assets/{EventTable-C1en_KZ0.js.map → EventTable-BNxtlgNz.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-CZTlrLQT.js → FilterBar-BTiaAhCx.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-CZTlrLQT.js.map → FilterBar-BTiaAhCx.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-Cdbsapig.js → ListToolbar-BUcagSCn.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-Cdbsapig.js.map → ListToolbar-BUcagSCn.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-CSpEJxKa.js → McpOverview-B-tCvz8C.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-CSpEJxKa.js.map → McpOverview-B-tCvz8C.js.map} +1 -1
- package/dashboard/dist/assets/McpQueryDetailPage-DPlF1wYb.js +5 -0
- package/dashboard/dist/assets/McpQueryDetailPage-DPlF1wYb.js.map +1 -0
- package/dashboard/dist/assets/McpQueryPage-Bz7AdcfR.js +2 -0
- package/dashboard/dist/assets/McpQueryPage-Bz7AdcfR.js.map +1 -0
- package/dashboard/dist/assets/{McpRunDetailPage-9xdxgG4d.js → McpRunDetailPage-Di_qpL2V.js} +2 -2
- package/dashboard/dist/assets/{McpRunDetailPage-9xdxgG4d.js.map → McpRunDetailPage-Di_qpL2V.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-wWLqHsd4.js → McpRunsPage-BBgybBEa.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-wWLqHsd4.js.map → McpRunsPage-BBgybBEa.js.map} +1 -1
- package/dashboard/dist/assets/{Modal-kB_P7ZOr.js → Modal-CaJ0gTEa.js} +2 -2
- package/dashboard/dist/assets/{Modal-kB_P7ZOr.js.map → Modal-CaJ0gTEa.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-DDfMmrmR.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-jc0vrgDI.js.map → OperatorDashboard-DDfMmrmR.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeader-NkOeBR05.js → PageHeader-C5D-G5rp.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-NkOeBR05.js.map → PageHeader-C5D-G5rp.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-ywNhrmFK.js → PageHeaderWithStats-DCa2eZh2.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-ywNhrmFK.js.map → PageHeaderWithStats-DCa2eZh2.js.map} +1 -1
- package/dashboard/dist/assets/{PriorityBadge-B2MQbSxy.js → PriorityBadge-DTHq6OUZ.js} +2 -2
- package/dashboard/dist/assets/{PriorityBadge-B2MQbSxy.js.map → PriorityBadge-DTHq6OUZ.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessDetailPage-B7z7IdqE.js → ProcessDetailPage-fC4dhrd0.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-B7z7IdqE.js.map → ProcessDetailPage-fC4dhrd0.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-C-uHadO6.js → ProcessesListPage-CL2MY8uD.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-C-uHadO6.js.map → ProcessesListPage-CL2MY8uD.js.map} +1 -1
- package/dashboard/dist/assets/{RolePill-C1dgC-fK.js → RolePill-kgKPANly.js} +2 -2
- package/dashboard/dist/assets/{RolePill-C1dgC-fK.js.map → RolePill-kgKPANly.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-BSxrD1vm.js → RolesPage-Be2lXTHD.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-BSxrD1vm.js.map → RolesPage-Be2lXTHD.js.map} +1 -1
- package/dashboard/dist/assets/{RowActions-lYaHGI-v.js → RowActions-DIzJCwqR.js} +2 -2
- package/dashboard/dist/assets/{RowActions-lYaHGI-v.js.map → RowActions-DIzJCwqR.js.map} +1 -1
- package/dashboard/dist/assets/{StatCard-v2TiITVr.js → StatCard-CRi2Jy6t.js} +2 -2
- package/dashboard/dist/assets/{StatCard-v2TiITVr.js.map → StatCard-CRi2Jy6t.js.map} +1 -1
- package/dashboard/dist/assets/{StatusBadge-DWlxevgG.js → StatusBadge-BETI_8Mr.js} +2 -2
- package/dashboard/dist/assets/{StatusBadge-DWlxevgG.js.map → StatusBadge-BETI_8Mr.js.map} +1 -1
- package/dashboard/dist/assets/{StepIndicator-CRM4ft28.js → StepIndicator-DjpMqCjz.js} +2 -2
- package/dashboard/dist/assets/{StepIndicator-CRM4ft28.js.map → StepIndicator-DjpMqCjz.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-CF0EToEU.js → StickyPagination-BZbExQ9t.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-CF0EToEU.js.map → StickyPagination-BZbExQ9t.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-CNlj7fgg.js → SwimlaneTimeline-DZthQyhR.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-CNlj7fgg.js.map → SwimlaneTimeline-DZthQyhR.js.map} +1 -1
- package/dashboard/dist/assets/{TagInput-CH8qMGhC.js → TagInput-CukbOfYn.js} +2 -2
- package/dashboard/dist/assets/{TagInput-CH8qMGhC.js.map → TagInput-CukbOfYn.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-CdWo-6mu.js → TaskDetailPage-CIZHIKo9.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-CdWo-6mu.js.map → TaskDetailPage-CIZHIKo9.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-BPj4ogVG.js → TaskQueuePill-Q7DGoysj.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-BPj4ogVG.js.map → TaskQueuePill-Q7DGoysj.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-CtRkMpKU.js → TasksListPage-CsC9wjb0.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-CtRkMpKU.js.map → TasksListPage-CsC9wjb0.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-Di1a3X5P.js → TimeAgo-BcOOnJeH.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-Di1a3X5P.js.map → TimeAgo-BcOOnJeH.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-CqrXql-S.js → TimestampCell-CEMapYDQ.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-CqrXql-S.js.map → TimestampCell-CEMapYDQ.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-BUFYCnRa.js → UserName-BHoN7iRL.js} +2 -2
- package/dashboard/dist/assets/{UserName-BUFYCnRa.js.map → UserName-BHoN7iRL.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-25iusMml.js → WorkflowExecutionPage-DawKl1LT.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-25iusMml.js.map → WorkflowExecutionPage-DawKl1LT.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowPill-CP84Vqeg.js +2 -0
- package/dashboard/dist/assets/{WorkflowPill-DPKOcbf4.js.map → WorkflowPill-CP84Vqeg.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsDashboard-BgxslssH.js → WorkflowsDashboard-QrvVFxtQ.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-BgxslssH.js.map → WorkflowsDashboard-QrvVFxtQ.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-Doe5L-Re.js → WorkflowsOverview-DuhAi_OY.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-Doe5L-Re.js.map → WorkflowsOverview-DuhAi_OY.js.map} +1 -1
- package/dashboard/dist/assets/YamlWorkflowsPage-Dc9xw82a.js +2 -0
- package/dashboard/dist/assets/YamlWorkflowsPage-Dc9xw82a.js.map +1 -0
- package/dashboard/dist/assets/{bots-Bi2_O1Ts.js → bots-Dny-rmmI.js} +2 -2
- package/dashboard/dist/assets/{bots-Bi2_O1Ts.js.map → bots-Dny-rmmI.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-Ck1KlLkT.js → escalation-CV0sKNH5.js} +2 -2
- package/dashboard/dist/assets/{escalation-Ck1KlLkT.js.map → escalation-CV0sKNH5.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-ohDsj2eJ.js → escalation-columns-30CKyoWI.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-ohDsj2eJ.js.map → escalation-columns-30CKyoWI.js.map} +1 -1
- package/dashboard/dist/assets/{helpers-BoD2SgUY.js → helpers-C1-30CzH.js} +2 -2
- package/dashboard/dist/assets/{helpers-BoD2SgUY.js.map → helpers-C1-30CzH.js.map} +1 -1
- package/dashboard/dist/assets/helpers-C1jaRD-d.js +2 -0
- package/dashboard/dist/assets/helpers-C1jaRD-d.js.map +1 -0
- package/dashboard/dist/assets/{index-FuohTtaM.js → index-BUVQ6wmy.js} +3 -3
- package/dashboard/dist/assets/{index-FuohTtaM.js.map → index-BUVQ6wmy.js.map} +1 -1
- package/dashboard/dist/assets/index-CxVB7F4X.js +2 -0
- package/dashboard/dist/assets/{index-Dk2Q51o0.js.map → index-CxVB7F4X.js.map} +1 -1
- package/dashboard/dist/assets/{index-BEtLIsML.js → index-D-oCWCAS.js} +2 -2
- package/dashboard/dist/assets/{index-BEtLIsML.js.map → index-D-oCWCAS.js.map} +1 -1
- package/dashboard/dist/assets/index-D0wPM3Ck.js +2 -0
- package/dashboard/dist/assets/{index-BpT-6WgJ.js.map → index-D0wPM3Ck.js.map} +1 -1
- package/dashboard/dist/assets/{index-Bn2xHDr8.js → index-DHgnkykj.js} +3 -3
- package/dashboard/dist/assets/{index-Bn2xHDr8.js.map → index-DHgnkykj.js.map} +1 -1
- package/dashboard/dist/assets/{index-D3NyVADW.js → index-D_aJBEAG.js} +2 -2
- package/dashboard/dist/assets/index-D_aJBEAG.js.map +1 -0
- package/dashboard/dist/assets/{index-PyCTS05D.css → index-DcIKW-cZ.css} +1 -1
- package/dashboard/dist/assets/{index-CZrJ09p-.js → index-Dd_U4mLm.js} +2 -2
- package/dashboard/dist/assets/{index-CZrJ09p-.js.map → index-Dd_U4mLm.js.map} +1 -1
- package/dashboard/dist/assets/{index-DYyLF-Qb.js → index-DnmZbNxk.js} +8 -8
- package/dashboard/dist/assets/index-DnmZbNxk.js.map +1 -0
- package/dashboard/dist/assets/index-_RBvi7s6.js +2 -0
- package/dashboard/dist/assets/{index-D7zYZOnH.js.map → index-_RBvi7s6.js.map} +1 -1
- package/dashboard/dist/assets/index-n7td8zgX.js +17 -0
- package/dashboard/dist/assets/{index-DOkHXmyf.js.map → index-n7td8zgX.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-CJtYjA7A.js → mcp-CRFr4L9W.js} +2 -2
- package/dashboard/dist/assets/{mcp-CJtYjA7A.js.map → mcp-CRFr4L9W.js.map} +1 -1
- package/dashboard/dist/assets/mcp-query-DHY2mZBQ.js +2 -0
- package/dashboard/dist/assets/mcp-query-DHY2mZBQ.js.map +1 -0
- package/dashboard/dist/assets/{mcp-runs-DUWm9Z4V.js → mcp-runs-BqPHqwAO.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-DUWm9Z4V.js.map → mcp-runs-BqPHqwAO.js.map} +1 -1
- package/dashboard/dist/assets/{namespaces-BM5P2qmL.js → namespaces-TG1aIpo_.js} +2 -2
- package/dashboard/dist/assets/{namespaces-BM5P2qmL.js.map → namespaces-TG1aIpo_.js.map} +1 -1
- package/dashboard/dist/assets/{roles-lv0shpjJ.js → roles-DhhLTvXg.js} +2 -2
- package/dashboard/dist/assets/{roles-lv0shpjJ.js.map → roles-DhhLTvXg.js.map} +1 -1
- package/dashboard/dist/assets/{settings-Wlq92mRo.js → settings-D9MBzEeB.js} +2 -2
- package/dashboard/dist/assets/{settings-Wlq92mRo.js.map → settings-D9MBzEeB.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-BFGm4PuE.js → tasks-BxmcZoev.js} +2 -2
- package/dashboard/dist/assets/{tasks-BFGm4PuE.js.map → tasks-BxmcZoev.js.map} +1 -1
- package/dashboard/dist/assets/{useEventHooks-DIE6ue4x.js → useEventHooks-BylecvvI.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-DIE6ue4x.js.map → useEventHooks-BylecvvI.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-DCwSO73t.js → useYamlActivityEvents-ocmj11e_.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-DCwSO73t.js.map → useYamlActivityEvents-ocmj11e_.js.map} +1 -1
- package/dashboard/dist/assets/{users-tA5-K0wA.js → users-Ce5r-JAv.js} +2 -2
- package/dashboard/dist/assets/{users-tA5-K0wA.js.map → users-Ce5r-JAv.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-BiIug1SK.js → vendor-icons-D1DdudfH.js} +93 -73
- package/dashboard/dist/assets/vendor-icons-D1DdudfH.js.map +1 -0
- package/dashboard/dist/assets/{workflows-CfLc15Wr.js → workflows-ykIeVbRJ.js} +2 -2
- package/dashboard/dist/assets/{workflows-CfLc15Wr.js.map → workflows-ykIeVbRJ.js.map} +1 -1
- package/dashboard/dist/assets/yaml-workflows-WypmKYht.js +2 -0
- package/dashboard/dist/assets/yaml-workflows-WypmKYht.js.map +1 -0
- package/dashboard/dist/index.html +3 -3
- package/docs/api/sdk/auth.md +27 -0
- package/docs/api/sdk/bot-accounts.md +243 -0
- package/docs/api/sdk/controlplane.md +103 -0
- package/docs/api/sdk/dba.md +52 -0
- package/docs/api/sdk/escalations.md +374 -0
- package/docs/api/sdk/events.md +68 -0
- package/docs/api/sdk/exports.md +124 -0
- package/docs/api/sdk/insight.md +112 -0
- package/docs/api/sdk/maintenance.md +54 -0
- package/docs/api/sdk/mcp-runs.md +71 -0
- package/docs/api/sdk/mcp.md +250 -0
- package/docs/api/sdk/namespaces.md +43 -0
- package/docs/api/sdk/roles.md +183 -0
- package/docs/api/sdk/settings.md +24 -0
- package/docs/api/sdk/tasks.md +120 -0
- package/docs/api/sdk/users.md +196 -0
- package/docs/api/sdk/workflow-sets.md +135 -0
- package/docs/api/sdk/workflows.md +271 -0
- package/docs/api/sdk/yaml-workflows.md +408 -0
- package/docs/events.md +28 -0
- package/docs/sdk.md +177 -0
- package/docs/story.md +157 -0
- package/package.json +3 -2
- package/build/routes/escalations/helpers.d.ts +0 -5
- package/build/routes/resolve.d.ts +0 -9
- package/build/routes/resolve.js +0 -19
- package/build/routes/yaml-workflows/helpers.d.ts +0 -2
- package/build/routes/yaml-workflows/helpers.js +0 -8
- package/dashboard/dist/assets/BotPicker-A6LtzyuO.js +0 -2
- package/dashboard/dist/assets/McpQueryDetailPage-DhqEI180.js +0 -5
- package/dashboard/dist/assets/McpQueryDetailPage-DhqEI180.js.map +0 -1
- package/dashboard/dist/assets/McpQueryPage-CIiVMlqo.js +0 -2
- package/dashboard/dist/assets/McpQueryPage-CIiVMlqo.js.map +0 -1
- package/dashboard/dist/assets/OperatorDashboard-jc0vrgDI.js +0 -2
- package/dashboard/dist/assets/RunAsSelector-CJDnyp93.js +0 -2
- package/dashboard/dist/assets/RunAsSelector-CJDnyp93.js.map +0 -1
- package/dashboard/dist/assets/WorkflowPill-DPKOcbf4.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-BliAckJ6.js +0 -2
- package/dashboard/dist/assets/YamlWorkflowsPage-BliAckJ6.js.map +0 -1
- package/dashboard/dist/assets/index-BpT-6WgJ.js +0 -2
- package/dashboard/dist/assets/index-D3NyVADW.js.map +0 -1
- package/dashboard/dist/assets/index-D7zYZOnH.js +0 -2
- package/dashboard/dist/assets/index-DOkHXmyf.js +0 -17
- package/dashboard/dist/assets/index-DYyLF-Qb.js.map +0 -1
- package/dashboard/dist/assets/index-Dk2Q51o0.js +0 -2
- package/dashboard/dist/assets/mcp-query-jQJQrs_7.js +0 -2
- package/dashboard/dist/assets/mcp-query-jQJQrs_7.js.map +0 -1
- package/dashboard/dist/assets/vendor-icons-BiIug1SK.js.map +0 -1
- package/dashboard/dist/assets/yaml-workflows-D7JXNqbM.js +0 -2
- package/dashboard/dist/assets/yaml-workflows-D7JXNqbM.js.map +0 -1
- package/docs/img/01-login.png +0 -0
- package/docs/img/02-dashboard-home.png +0 -0
- package/docs/img/03-processes-list.png +0 -0
- package/docs/img/04-escalations-list.png +0 -0
- package/docs/img/05-mcp-servers.png +0 -0
- package/docs/img/06-mcp-pipelines.png +0 -0
- package/docs/img/07-workflows-list.png +0 -0
- package/docs/img/compilation/01-query-submit.png +0 -0
- package/docs/img/compilation/02-mcp-servers.png +0 -0
- package/docs/img/compilation/03-query-completed.png +0 -0
- package/docs/img/compilation/04-wizard-original.png +0 -0
- package/docs/img/compilation/05-wizard-timeline.png +0 -0
- package/docs/img/compilation/06-wizard-profile.png +0 -0
- package/docs/img/compilation/07-wizard-deploy.png +0 -0
- package/docs/img/compilation/08-wizard-test-modal.png +0 -0
- package/docs/img/compilation/09-wizard-test-compare.png +0 -0
- package/docs/img/compilation/10-wizard-verify.png +0 -0
- /package/docs/api/{dba.md → http/dba.md} +0 -0
- /package/docs/api/{escalations.md → http/escalations.md} +0 -0
- /package/docs/api/{exports.md → http/exports.md} +0 -0
- /package/docs/api/{maintenance.md → http/maintenance.md} +0 -0
- /package/docs/api/{mcp-runs.md → http/mcp-runs.md} +0 -0
- /package/docs/api/{mcp-servers.md → http/mcp-servers.md} +0 -0
- /package/docs/api/{namespaces.md → http/namespaces.md} +0 -0
- /package/docs/api/{roles.md → http/roles.md} +0 -0
- /package/docs/api/{service-accounts.md → http/service-accounts.md} +0 -0
- /package/docs/api/{settings.md → http/settings.md} +0 -0
- /package/docs/api/{tasks.md → http/tasks.md} +0 -0
- /package/docs/api/{users.md → http/users.md} +0 -0
- /package/docs/api/{workflows.md → http/workflows.md} +0 -0
- /package/docs/api/{yaml-workflows.md → http/yaml-workflows.md} +0 -0
|
@@ -0,0 +1,228 @@
|
|
|
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.listUsers = listUsers;
|
|
37
|
+
exports.getUser = getUser;
|
|
38
|
+
exports.createUser = createUser;
|
|
39
|
+
exports.updateUser = updateUser;
|
|
40
|
+
exports.deleteUser = deleteUser;
|
|
41
|
+
exports.getUserRoles = getUserRoles;
|
|
42
|
+
exports.addUserRole = addUserRole;
|
|
43
|
+
exports.removeUserRole = removeUserRole;
|
|
44
|
+
const userService = __importStar(require("../services/user"));
|
|
45
|
+
/**
|
|
46
|
+
* List users with optional filters for role, role type, status, and pagination.
|
|
47
|
+
*
|
|
48
|
+
* @param input.role — filter by role name
|
|
49
|
+
* @param input.roleType — filter by role type (superadmin, admin, member)
|
|
50
|
+
* @param input.status — filter by user status
|
|
51
|
+
* @param input.limit — maximum number of users to return
|
|
52
|
+
* @param input.offset — number of users to skip for pagination
|
|
53
|
+
* @returns `{ status: 200, data: User[] }` on success
|
|
54
|
+
*/
|
|
55
|
+
async function listUsers(input) {
|
|
56
|
+
try {
|
|
57
|
+
const result = await userService.listUsers(input);
|
|
58
|
+
return { status: 200, data: result };
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
return { status: 500, error: err.message };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Retrieve a single user by ID.
|
|
66
|
+
*
|
|
67
|
+
* @param input.id — the user's unique identifier
|
|
68
|
+
* @returns `{ status: 200, data: User }` on success, or `{ status: 404 }` if not found
|
|
69
|
+
*/
|
|
70
|
+
async function getUser(input) {
|
|
71
|
+
try {
|
|
72
|
+
const user = await userService.getUser(input.id);
|
|
73
|
+
if (!user) {
|
|
74
|
+
return { status: 404, error: 'User not found' };
|
|
75
|
+
}
|
|
76
|
+
return { status: 200, data: user };
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
return { status: 500, error: err.message };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Create a new user. Requires admin privileges.
|
|
84
|
+
*
|
|
85
|
+
* Validates that external_id is present and that any provided roles have valid
|
|
86
|
+
* names and types. Returns 409 if a user with the same external_id already exists.
|
|
87
|
+
*
|
|
88
|
+
* @param input.external_id — external system identifier (required)
|
|
89
|
+
* @param input.email — user's email address
|
|
90
|
+
* @param input.display_name — user's display name
|
|
91
|
+
* @param input.roles — initial role assignments, each with a role name and type (superadmin, admin, member)
|
|
92
|
+
* @param input.metadata — arbitrary key-value metadata to attach to the user
|
|
93
|
+
* @returns `{ status: 201, data: User }` on success, or `{ status: 409 }` on duplicate external_id
|
|
94
|
+
*/
|
|
95
|
+
async function createUser(input) {
|
|
96
|
+
try {
|
|
97
|
+
if (!input.external_id) {
|
|
98
|
+
return { status: 400, error: 'external_id is required' };
|
|
99
|
+
}
|
|
100
|
+
if (input.roles) {
|
|
101
|
+
for (const r of input.roles) {
|
|
102
|
+
if (!r.role || !r.type || !userService.isValidRoleType(r.type)) {
|
|
103
|
+
return {
|
|
104
|
+
status: 400,
|
|
105
|
+
error: 'Each role must have a role name and type (superadmin, admin, member)',
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
const user = await userService.createUser({
|
|
111
|
+
external_id: input.external_id,
|
|
112
|
+
email: input.email,
|
|
113
|
+
display_name: input.display_name,
|
|
114
|
+
roles: input.roles,
|
|
115
|
+
metadata: input.metadata,
|
|
116
|
+
});
|
|
117
|
+
return { status: 201, data: user };
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
if (err.code === '23505') {
|
|
121
|
+
return { status: 409, error: 'User with this external_id already exists' };
|
|
122
|
+
}
|
|
123
|
+
return { status: 500, error: err.message };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Update an existing user's profile fields. Requires admin privileges.
|
|
128
|
+
*
|
|
129
|
+
* Only the provided fields are updated; omitted fields remain unchanged.
|
|
130
|
+
*
|
|
131
|
+
* @param input.id — the user's unique identifier (required)
|
|
132
|
+
* @param input.email — new email address
|
|
133
|
+
* @param input.display_name — new display name
|
|
134
|
+
* @param input.status — new user status
|
|
135
|
+
* @param input.metadata — replacement metadata object
|
|
136
|
+
* @returns `{ status: 200, data: User }` on success, or `{ status: 404 }` if not found
|
|
137
|
+
*/
|
|
138
|
+
async function updateUser(input) {
|
|
139
|
+
try {
|
|
140
|
+
const { id, ...fields } = input;
|
|
141
|
+
const user = await userService.updateUser(id, fields);
|
|
142
|
+
if (!user) {
|
|
143
|
+
return { status: 404, error: 'User not found' };
|
|
144
|
+
}
|
|
145
|
+
return { status: 200, data: user };
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
return { status: 500, error: err.message };
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Delete a user by ID. Requires admin privileges.
|
|
153
|
+
*
|
|
154
|
+
* @param input.id — the user's unique identifier
|
|
155
|
+
* @returns `{ status: 200, data: { deleted: true } }` on success, or `{ status: 404 }` if not found
|
|
156
|
+
*/
|
|
157
|
+
async function deleteUser(input) {
|
|
158
|
+
try {
|
|
159
|
+
const deleted = await userService.deleteUser(input.id);
|
|
160
|
+
if (!deleted) {
|
|
161
|
+
return { status: 404, error: 'User not found' };
|
|
162
|
+
}
|
|
163
|
+
return { status: 200, data: { deleted: true } };
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
return { status: 500, error: err.message };
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Retrieve all roles assigned to a user.
|
|
171
|
+
*
|
|
172
|
+
* @param input.id — the user's unique identifier
|
|
173
|
+
* @returns `{ status: 200, data: { roles: Role[] } }` on success
|
|
174
|
+
*/
|
|
175
|
+
async function getUserRoles(input) {
|
|
176
|
+
try {
|
|
177
|
+
const roles = await userService.getUserRoles(input.id);
|
|
178
|
+
return { status: 200, data: { roles } };
|
|
179
|
+
}
|
|
180
|
+
catch (err) {
|
|
181
|
+
return { status: 500, error: err.message };
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Assign a role to a user. Requires admin privileges.
|
|
186
|
+
*
|
|
187
|
+
* Validates that both role and type are provided and that the type is one of
|
|
188
|
+
* superadmin, admin, or member.
|
|
189
|
+
*
|
|
190
|
+
* @param input.id — the user's unique identifier
|
|
191
|
+
* @param input.role — the role name to assign
|
|
192
|
+
* @param input.type — the role type (superadmin, admin, or member)
|
|
193
|
+
* @returns `{ status: 201, data: UserRole }` on success
|
|
194
|
+
*/
|
|
195
|
+
async function addUserRole(input) {
|
|
196
|
+
try {
|
|
197
|
+
if (!input.role || !input.type) {
|
|
198
|
+
return { status: 400, error: 'role and type are required' };
|
|
199
|
+
}
|
|
200
|
+
if (!userService.isValidRoleType(input.type)) {
|
|
201
|
+
return { status: 400, error: 'type must be superadmin, admin, or member' };
|
|
202
|
+
}
|
|
203
|
+
const result = await userService.addUserRole(input.id, input.role, input.type);
|
|
204
|
+
return { status: 201, data: result };
|
|
205
|
+
}
|
|
206
|
+
catch (err) {
|
|
207
|
+
return { status: 500, error: err.message };
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Remove a role from a user. Requires admin privileges.
|
|
212
|
+
*
|
|
213
|
+
* @param input.id — the user's unique identifier
|
|
214
|
+
* @param input.role — the role name to remove
|
|
215
|
+
* @returns `{ status: 200, data: { removed: true } }` on success, or `{ status: 404 }` if role not found
|
|
216
|
+
*/
|
|
217
|
+
async function removeUserRole(input) {
|
|
218
|
+
try {
|
|
219
|
+
const removed = await userService.removeUserRole(input.id, input.role);
|
|
220
|
+
if (!removed) {
|
|
221
|
+
return { status: 404, error: 'Role not found' };
|
|
222
|
+
}
|
|
223
|
+
return { status: 200, data: { removed: true } };
|
|
224
|
+
}
|
|
225
|
+
catch (err) {
|
|
226
|
+
return { status: 500, error: err.message };
|
|
227
|
+
}
|
|
228
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { LTApiResult, LTApiAuth } from '../types/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Create a new workflow set and kick off the LLM-powered planner.
|
|
4
|
+
*
|
|
5
|
+
* Persists the workflow set record, then starts an async planner workflow
|
|
6
|
+
* that generates the plan from the specification. Requires at least one
|
|
7
|
+
* LLM API key (OPENAI_API_KEY or ANTHROPIC_API_KEY) to be configured.
|
|
8
|
+
* Returns 409 if a workflow set with the same name already exists.
|
|
9
|
+
*
|
|
10
|
+
* @param input.name — unique name for the workflow set (required)
|
|
11
|
+
* @param input.description — optional description of the workflow set
|
|
12
|
+
* @param input.specification — free-text specification the planner uses to generate workflows (required)
|
|
13
|
+
* @param auth — authenticated user context; userId is forwarded to the planner
|
|
14
|
+
* @returns `{ status: 201, data: { ...set, source_workflow_id, planner_workflow_id } }` the created set with planner IDs
|
|
15
|
+
*/
|
|
16
|
+
export declare function createWorkflowSet(input: {
|
|
17
|
+
name: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
specification: string;
|
|
20
|
+
}, auth?: LTApiAuth): Promise<LTApiResult>;
|
|
21
|
+
/**
|
|
22
|
+
* List workflow sets with optional filtering and pagination.
|
|
23
|
+
*
|
|
24
|
+
* @param input.status — filter by workflow set status
|
|
25
|
+
* @param input.search — free-text search term to match against set names or descriptions
|
|
26
|
+
* @param input.limit — maximum number of results to return
|
|
27
|
+
* @param input.offset — number of results to skip for pagination
|
|
28
|
+
* @returns `{ status: 200, data: WorkflowSet[] }` paginated list of workflow sets
|
|
29
|
+
*/
|
|
30
|
+
export declare function listWorkflowSets(input: {
|
|
31
|
+
status?: string;
|
|
32
|
+
search?: string;
|
|
33
|
+
limit?: number;
|
|
34
|
+
offset?: number;
|
|
35
|
+
}): Promise<LTApiResult>;
|
|
36
|
+
/**
|
|
37
|
+
* Retrieve a single workflow set by ID.
|
|
38
|
+
*
|
|
39
|
+
* @param input.id — unique identifier of the workflow set
|
|
40
|
+
* @returns `{ status: 200, data: WorkflowSet }` the workflow set record, or 404 if not found
|
|
41
|
+
*/
|
|
42
|
+
export declare function getWorkflowSet(input: {
|
|
43
|
+
id: string;
|
|
44
|
+
}): Promise<LTApiResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Replace the plan and optional namespaces on a workflow set.
|
|
47
|
+
*
|
|
48
|
+
* @param input.id — unique identifier of the workflow set to update
|
|
49
|
+
* @param input.plan — array of plan entries (required, must be an array)
|
|
50
|
+
* @param input.namespaces — optional array of namespace definitions associated with the plan
|
|
51
|
+
* @returns `{ status: 200, data: WorkflowSet }` the updated workflow set, or 404 if not found
|
|
52
|
+
*/
|
|
53
|
+
export declare function updateWorkflowSetPlanApi(input: {
|
|
54
|
+
id: string;
|
|
55
|
+
plan: any[];
|
|
56
|
+
namespaces?: any[];
|
|
57
|
+
}): Promise<LTApiResult>;
|
|
58
|
+
/**
|
|
59
|
+
* Transition a workflow set from "planned" to "building" status.
|
|
60
|
+
*
|
|
61
|
+
* Returns 409 if the set is not currently in "planned" status.
|
|
62
|
+
*
|
|
63
|
+
* @param input.id — unique identifier of the workflow set to build
|
|
64
|
+
* @returns `{ status: 200, data: { status: 'building', id } }` confirmation the build has started
|
|
65
|
+
*/
|
|
66
|
+
export declare function buildWorkflowSet(input: {
|
|
67
|
+
id: string;
|
|
68
|
+
}): Promise<LTApiResult>;
|
|
69
|
+
/**
|
|
70
|
+
* Transition a workflow set to "deploying" status.
|
|
71
|
+
*
|
|
72
|
+
* @param input.id — unique identifier of the workflow set to deploy
|
|
73
|
+
* @returns `{ status: 200, data: { status: 'deploying', id } }` confirmation the deploy has started
|
|
74
|
+
*/
|
|
75
|
+
export declare function deployWorkflowSet(input: {
|
|
76
|
+
id: string;
|
|
77
|
+
}): Promise<LTApiResult>;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createWorkflowSet = createWorkflowSet;
|
|
4
|
+
exports.listWorkflowSets = listWorkflowSets;
|
|
5
|
+
exports.getWorkflowSet = getWorkflowSet;
|
|
6
|
+
exports.updateWorkflowSetPlanApi = updateWorkflowSetPlanApi;
|
|
7
|
+
exports.buildWorkflowSet = buildWorkflowSet;
|
|
8
|
+
exports.deployWorkflowSet = deployWorkflowSet;
|
|
9
|
+
const workflow_sets_1 = require("../services/workflow-sets");
|
|
10
|
+
const insight_1 = require("../services/insight");
|
|
11
|
+
/**
|
|
12
|
+
* Create a new workflow set and kick off the LLM-powered planner.
|
|
13
|
+
*
|
|
14
|
+
* Persists the workflow set record, then starts an async planner workflow
|
|
15
|
+
* that generates the plan from the specification. Requires at least one
|
|
16
|
+
* LLM API key (OPENAI_API_KEY or ANTHROPIC_API_KEY) to be configured.
|
|
17
|
+
* Returns 409 if a workflow set with the same name already exists.
|
|
18
|
+
*
|
|
19
|
+
* @param input.name — unique name for the workflow set (required)
|
|
20
|
+
* @param input.description — optional description of the workflow set
|
|
21
|
+
* @param input.specification — free-text specification the planner uses to generate workflows (required)
|
|
22
|
+
* @param auth — authenticated user context; userId is forwarded to the planner
|
|
23
|
+
* @returns `{ status: 201, data: { ...set, source_workflow_id, planner_workflow_id } }` the created set with planner IDs
|
|
24
|
+
*/
|
|
25
|
+
async function createWorkflowSet(input, auth) {
|
|
26
|
+
try {
|
|
27
|
+
if (!input.specification || typeof input.specification !== 'string') {
|
|
28
|
+
return { status: 400, error: 'specification is required' };
|
|
29
|
+
}
|
|
30
|
+
if (!input.name || typeof input.name !== 'string') {
|
|
31
|
+
return { status: 400, error: 'name is required' };
|
|
32
|
+
}
|
|
33
|
+
if (!process.env.OPENAI_API_KEY && !process.env.ANTHROPIC_API_KEY) {
|
|
34
|
+
return { status: 503, error: 'Workflow planner requires an LLM API key' };
|
|
35
|
+
}
|
|
36
|
+
const set = await (0, workflow_sets_1.createWorkflowSet)({
|
|
37
|
+
name: input.name,
|
|
38
|
+
description: input.description,
|
|
39
|
+
specification: input.specification,
|
|
40
|
+
});
|
|
41
|
+
const plannerResult = await (0, insight_1.startWorkflowPlanner)({
|
|
42
|
+
specification: input.specification,
|
|
43
|
+
setId: set.id,
|
|
44
|
+
wait: false,
|
|
45
|
+
userId: auth?.userId,
|
|
46
|
+
});
|
|
47
|
+
await (0, workflow_sets_1.updateWorkflowSetSourceWorkflow)(set.id, plannerResult.workflow_id);
|
|
48
|
+
return {
|
|
49
|
+
status: 201,
|
|
50
|
+
data: {
|
|
51
|
+
...set,
|
|
52
|
+
source_workflow_id: plannerResult.workflow_id,
|
|
53
|
+
planner_workflow_id: plannerResult.workflow_id,
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
if (err.code === '23505') {
|
|
59
|
+
return { status: 409, error: 'A workflow set with this name already exists' };
|
|
60
|
+
}
|
|
61
|
+
return { status: 500, error: err.message };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* List workflow sets with optional filtering and pagination.
|
|
66
|
+
*
|
|
67
|
+
* @param input.status — filter by workflow set status
|
|
68
|
+
* @param input.search — free-text search term to match against set names or descriptions
|
|
69
|
+
* @param input.limit — maximum number of results to return
|
|
70
|
+
* @param input.offset — number of results to skip for pagination
|
|
71
|
+
* @returns `{ status: 200, data: WorkflowSet[] }` paginated list of workflow sets
|
|
72
|
+
*/
|
|
73
|
+
async function listWorkflowSets(input) {
|
|
74
|
+
try {
|
|
75
|
+
const result = await (0, workflow_sets_1.listWorkflowSets)({
|
|
76
|
+
status: input.status,
|
|
77
|
+
search: input.search,
|
|
78
|
+
limit: input.limit,
|
|
79
|
+
offset: input.offset,
|
|
80
|
+
});
|
|
81
|
+
return { status: 200, data: result };
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
return { status: 500, error: err.message };
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Retrieve a single workflow set by ID.
|
|
89
|
+
*
|
|
90
|
+
* @param input.id — unique identifier of the workflow set
|
|
91
|
+
* @returns `{ status: 200, data: WorkflowSet }` the workflow set record, or 404 if not found
|
|
92
|
+
*/
|
|
93
|
+
async function getWorkflowSet(input) {
|
|
94
|
+
try {
|
|
95
|
+
const set = await (0, workflow_sets_1.getWorkflowSet)(input.id);
|
|
96
|
+
if (!set) {
|
|
97
|
+
return { status: 404, error: 'Workflow set not found' };
|
|
98
|
+
}
|
|
99
|
+
return { status: 200, data: set };
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
return { status: 500, error: err.message };
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Replace the plan and optional namespaces on a workflow set.
|
|
107
|
+
*
|
|
108
|
+
* @param input.id — unique identifier of the workflow set to update
|
|
109
|
+
* @param input.plan — array of plan entries (required, must be an array)
|
|
110
|
+
* @param input.namespaces — optional array of namespace definitions associated with the plan
|
|
111
|
+
* @returns `{ status: 200, data: WorkflowSet }` the updated workflow set, or 404 if not found
|
|
112
|
+
*/
|
|
113
|
+
async function updateWorkflowSetPlanApi(input) {
|
|
114
|
+
try {
|
|
115
|
+
if (!Array.isArray(input.plan)) {
|
|
116
|
+
return { status: 400, error: 'plan must be an array' };
|
|
117
|
+
}
|
|
118
|
+
const updated = await (0, workflow_sets_1.updateWorkflowSetPlan)(input.id, input.plan, input.namespaces || []);
|
|
119
|
+
if (!updated) {
|
|
120
|
+
return { status: 404, error: 'Workflow set not found' };
|
|
121
|
+
}
|
|
122
|
+
return { status: 200, data: updated };
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
return { status: 500, error: err.message };
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Transition a workflow set from "planned" to "building" status.
|
|
130
|
+
*
|
|
131
|
+
* Returns 409 if the set is not currently in "planned" status.
|
|
132
|
+
*
|
|
133
|
+
* @param input.id — unique identifier of the workflow set to build
|
|
134
|
+
* @returns `{ status: 200, data: { status: 'building', id } }` confirmation the build has started
|
|
135
|
+
*/
|
|
136
|
+
async function buildWorkflowSet(input) {
|
|
137
|
+
try {
|
|
138
|
+
const set = await (0, workflow_sets_1.getWorkflowSet)(input.id);
|
|
139
|
+
if (!set) {
|
|
140
|
+
return { status: 404, error: 'Workflow set not found' };
|
|
141
|
+
}
|
|
142
|
+
if (set.status !== 'planned') {
|
|
143
|
+
return { status: 409, error: `Cannot build set in '${set.status}' status` };
|
|
144
|
+
}
|
|
145
|
+
await (0, workflow_sets_1.updateWorkflowSetStatus)(input.id, 'building');
|
|
146
|
+
return { status: 200, data: { status: 'building', id: input.id } };
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
return { status: 500, error: err.message };
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Transition a workflow set to "deploying" status.
|
|
154
|
+
*
|
|
155
|
+
* @param input.id — unique identifier of the workflow set to deploy
|
|
156
|
+
* @returns `{ status: 200, data: { status: 'deploying', id } }` confirmation the deploy has started
|
|
157
|
+
*/
|
|
158
|
+
async function deployWorkflowSet(input) {
|
|
159
|
+
try {
|
|
160
|
+
const set = await (0, workflow_sets_1.getWorkflowSet)(input.id);
|
|
161
|
+
if (!set) {
|
|
162
|
+
return { status: 404, error: 'Workflow set not found' };
|
|
163
|
+
}
|
|
164
|
+
await (0, workflow_sets_1.updateWorkflowSetStatus)(input.id, 'deploying');
|
|
165
|
+
return { status: 200, data: { status: 'deploying', id: input.id } };
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
return { status: 500, error: err.message };
|
|
169
|
+
}
|
|
170
|
+
}
|
|
@@ -0,0 +1,158 @@
|
|
|
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>;
|
|
68
|
+
/**
|
|
69
|
+
* List active workflow workers with their registration status.
|
|
70
|
+
*
|
|
71
|
+
* @param input.include_system — include system workflows (default: false)
|
|
72
|
+
* @returns `{ status: 200, data: { workers: [{ name, task_queue, registered, system }] } }`
|
|
73
|
+
*/
|
|
74
|
+
export declare function listWorkers(input: {
|
|
75
|
+
include_system?: boolean;
|
|
76
|
+
}): Promise<LTApiResult>;
|
|
77
|
+
/**
|
|
78
|
+
* Discover all known workflow types from workers, history, and config.
|
|
79
|
+
*
|
|
80
|
+
* Merges three sources: active in-memory workers, historical entities
|
|
81
|
+
* from the durable jobs table, and registered workflow configs. Returns
|
|
82
|
+
* a unified list with status flags for each type.
|
|
83
|
+
*
|
|
84
|
+
* @param input.include_system — include system workflows (default: false)
|
|
85
|
+
* @returns `{ status: 200, data: { workflows: [{ workflow_type, task_queue, registered, active, invocable, ... }] } }`
|
|
86
|
+
*/
|
|
87
|
+
export declare function listDiscoveredWorkflows(input: {
|
|
88
|
+
include_system?: boolean;
|
|
89
|
+
}): Promise<LTApiResult>;
|
|
90
|
+
/**
|
|
91
|
+
* List all cron-scheduled workflows and their active state.
|
|
92
|
+
*
|
|
93
|
+
* @returns `{ status: 200, data: { schedules: [{ workflow_type, cron_schedule, active, ... }] } }`
|
|
94
|
+
*/
|
|
95
|
+
export declare function getCronStatus(): Promise<LTApiResult>;
|
|
96
|
+
/**
|
|
97
|
+
* List all registered workflow configurations.
|
|
98
|
+
*
|
|
99
|
+
* @returns `{ status: 200, data: { workflows: LTWorkflowConfig[] } }`
|
|
100
|
+
*/
|
|
101
|
+
export declare function listWorkflowConfigs(): Promise<LTApiResult>;
|
|
102
|
+
/**
|
|
103
|
+
* Get a single workflow configuration by type.
|
|
104
|
+
*
|
|
105
|
+
* @param input.type — workflow type name (e.g. `"reviewContent"`)
|
|
106
|
+
* @returns `{ status: 200, data: <config> }` or 404
|
|
107
|
+
*/
|
|
108
|
+
export declare function getWorkflowConfig(input: {
|
|
109
|
+
type: string;
|
|
110
|
+
}): Promise<LTApiResult>;
|
|
111
|
+
/**
|
|
112
|
+
* Create or replace a workflow configuration.
|
|
113
|
+
*
|
|
114
|
+
* Invalidates the config cache and restarts the cron schedule if one
|
|
115
|
+
* is defined. Idempotent — safe to call repeatedly with the same input.
|
|
116
|
+
*
|
|
117
|
+
* @param input.type — workflow type name
|
|
118
|
+
* @param input.invocable — whether the workflow can be started via the API
|
|
119
|
+
* @param input.task_queue — HotMesh task queue
|
|
120
|
+
* @param input.default_role — default escalation role
|
|
121
|
+
* @param input.description — human-readable description
|
|
122
|
+
* @param input.execute_as — service account for proxy invocation
|
|
123
|
+
* @param input.roles — roles that can resolve escalations
|
|
124
|
+
* @param input.invocation_roles — roles that can invoke this workflow
|
|
125
|
+
* @param input.consumes — workflow types whose data this workflow consumes
|
|
126
|
+
* @param input.tool_tags — MCP tool tags for discovery
|
|
127
|
+
* @param input.envelope_schema — JSON Schema for envelope.data validation
|
|
128
|
+
* @param input.resolver_schema — JSON Schema for resolver payload validation
|
|
129
|
+
* @param input.cron_schedule — cron expression for scheduled execution
|
|
130
|
+
* @returns `{ status: 200, data: <saved config> }`
|
|
131
|
+
*/
|
|
132
|
+
export declare function upsertWorkflowConfig(input: {
|
|
133
|
+
type: string;
|
|
134
|
+
invocable?: boolean;
|
|
135
|
+
task_queue?: string | null;
|
|
136
|
+
default_role?: string;
|
|
137
|
+
description?: string | null;
|
|
138
|
+
execute_as?: string | null;
|
|
139
|
+
roles?: string[];
|
|
140
|
+
invocation_roles?: string[];
|
|
141
|
+
consumes?: string[];
|
|
142
|
+
tool_tags?: string[];
|
|
143
|
+
envelope_schema?: any;
|
|
144
|
+
resolver_schema?: any;
|
|
145
|
+
cron_schedule?: string | null;
|
|
146
|
+
}): Promise<LTApiResult>;
|
|
147
|
+
/**
|
|
148
|
+
* Delete a workflow configuration.
|
|
149
|
+
*
|
|
150
|
+
* Removes the config record and invalidates the cache. Active workers
|
|
151
|
+
* continue running — this only removes the config/interceptor binding.
|
|
152
|
+
*
|
|
153
|
+
* @param input.type — workflow type name
|
|
154
|
+
* @returns `{ status: 200, data: { deleted: true, workflow_type } }` or 404
|
|
155
|
+
*/
|
|
156
|
+
export declare function deleteWorkflowConfig(input: {
|
|
157
|
+
type: string;
|
|
158
|
+
}): Promise<LTApiResult>;
|