@hotmeshio/long-tail 0.1.7 → 0.1.9
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 +3 -1
- package/build/api/auth.d.ts +11 -0
- package/build/api/auth.js +11 -0
- package/build/api/bot-accounts.d.ts +87 -0
- package/build/api/bot-accounts.js +87 -0
- package/build/api/controlplane.d.ts +48 -0
- package/build/api/controlplane.js +48 -0
- package/build/api/dba.d.ts +27 -0
- package/build/api/dba.js +27 -0
- package/build/api/escalations.d.ts +201 -0
- package/build/api/escalations.js +276 -5
- package/build/api/exports.d.ts +58 -0
- package/build/api/exports.js +58 -0
- package/build/api/insight.d.ts +57 -0
- package/build/api/insight.js +57 -0
- package/build/api/maintenance.d.ts +15 -0
- package/build/api/maintenance.js +15 -0
- package/build/api/mcp-runs.d.ts +27 -0
- package/build/api/mcp-runs.js +27 -0
- package/build/api/mcp.d.ts +108 -0
- package/build/api/mcp.js +108 -0
- package/build/api/namespaces.d.ts +13 -0
- package/build/api/namespaces.js +13 -0
- package/build/api/roles.d.ts +63 -0
- package/build/api/roles.js +63 -5
- package/build/api/settings.d.ts +8 -0
- package/build/api/settings.js +8 -0
- package/build/api/tasks.d.ts +68 -1
- package/build/api/tasks.js +92 -0
- package/build/api/users.d.ts +71 -0
- package/build/api/users.js +71 -5
- package/build/api/workflow-sets.d.ts +51 -0
- package/build/api/workflow-sets.js +51 -0
- package/build/api/workflows.d.ts +110 -0
- package/build/api/workflows.js +117 -1
- package/build/api/yaml-workflows.d.ts +195 -0
- package/build/api/yaml-workflows.js +195 -0
- package/build/examples/seed.js +18 -0
- package/build/examples/types/envelopes.d.ts +35 -0
- package/build/examples/types/index.d.ts +1 -1
- package/build/examples/workers.js +10 -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/examples/workflows/basic-signal/activities.d.ts +17 -0
- package/build/examples/workflows/basic-signal/activities.js +18 -0
- package/build/examples/workflows/basic-signal/index.d.ts +17 -0
- package/build/examples/workflows/basic-signal/index.js +116 -0
- package/build/index.d.ts +1 -0
- package/build/index.js +4 -1
- package/build/lib/db/schemas/002_seed.sql +9 -1
- package/build/modules/ltconfig.d.ts +8 -1
- package/build/modules/ltconfig.js +12 -2
- package/build/routes/escalations/list.js +22 -0
- package/build/routes/tasks.js +23 -0
- package/build/routes/workflows/invocation.js +16 -10
- package/build/sdk/index.d.ts +26 -0
- package/build/sdk/index.js +2 -0
- package/build/services/interceptor/index.js +9 -3
- package/build/services/orchestrator/condition.d.ts +34 -0
- package/build/services/orchestrator/condition.js +92 -0
- package/build/services/workflow-invocation.d.ts +16 -3
- package/build/services/workflow-invocation.js +15 -7
- package/build/start/index.d.ts +24 -0
- package/build/start/index.js +24 -0
- package/build/start/workers.d.ts +6 -8
- package/build/start/workers.js +25 -2
- package/build/system/mcp-servers/admin/workflows.js +5 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/envelope.d.ts +7 -0
- package/build/types/sdk.d.ts +2 -0
- package/build/types/startup.d.ts +29 -2
- package/dashboard/dist/assets/{AdminDashboard-DRjkRSjJ.js → AdminDashboard-DUrSBQOl.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-DRjkRSjJ.js.map → AdminDashboard-DUrSBQOl.js.map} +1 -1
- package/dashboard/dist/assets/{AvailableEscalationsPage-CnivX4Tz.js → AvailableEscalationsPage-Dbd1qUK_.js} +2 -2
- package/dashboard/dist/assets/{AvailableEscalationsPage-CnivX4Tz.js.map → AvailableEscalationsPage-Dbd1qUK_.js.map} +1 -1
- package/dashboard/dist/assets/{BotPicker-DwwaBhTH.js → BotPicker-Cg5iNEkm.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-DwwaBhTH.js.map → BotPicker-Cg5iNEkm.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-DQpaVA0M.js → CollapsibleSection-Kd9UIyeU.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-DQpaVA0M.js.map → CollapsibleSection-Kd9UIyeU.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-B7JoDNvt.js → ConfirmDeleteModal-DZMgmlof.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-B7JoDNvt.js.map → ConfirmDeleteModal-DZMgmlof.js.map} +1 -1
- package/dashboard/dist/assets/{CopyableId-AqoZayBG.js → CopyableId-cPFTRm8q.js} +2 -2
- package/dashboard/dist/assets/{CopyableId-AqoZayBG.js.map → CopyableId-cPFTRm8q.js.map} +1 -1
- package/dashboard/dist/assets/{CredentialsPage-qGw1kQzi.js → CredentialsPage-DJablIbs.js} +2 -2
- package/dashboard/dist/assets/{CredentialsPage-qGw1kQzi.js.map → CredentialsPage-DJablIbs.js.map} +1 -1
- package/dashboard/dist/assets/{CustomDurationPicker-D1HUQcd0.js → CustomDurationPicker-NgIP6YDW.js} +2 -2
- package/dashboard/dist/assets/{CustomDurationPicker-D1HUQcd0.js.map → CustomDurationPicker-NgIP6YDW.js.map} +1 -1
- package/dashboard/dist/assets/{DataTable-DKvSKoVG.js → DataTable-CTRhTAfT.js} +2 -2
- package/dashboard/dist/assets/{DataTable-DKvSKoVG.js.map → DataTable-CTRhTAfT.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-B0yrReGQ.js → ElapsedCell-HcSJ_MMs.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-B0yrReGQ.js.map → ElapsedCell-HcSJ_MMs.js.map} +1 -1
- package/dashboard/dist/assets/{EmptyState-X0fIzYID.js → EmptyState-joNbd4gg.js} +2 -2
- package/dashboard/dist/assets/{EmptyState-X0fIzYID.js.map → EmptyState-joNbd4gg.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-BQAT9W7r.js → EscalationsOverview-DpXDnQux.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-BQAT9W7r.js.map → EscalationsOverview-DpXDnQux.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-CX1KNLhZ.js → EventTable-CYem3v8n.js} +2 -2
- package/dashboard/dist/assets/{EventTable-CX1KNLhZ.js.map → EventTable-CYem3v8n.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-DMTvuQy-.js → FilterBar-BiO8SOzc.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-DMTvuQy-.js.map → FilterBar-BiO8SOzc.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-DTOSxoEy.js → ListToolbar-6yRDh2e9.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-DTOSxoEy.js.map → ListToolbar-6yRDh2e9.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-BaKTIWrG.js → McpOverview-CUgSxkQe.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-BaKTIWrG.js.map → McpOverview-CUgSxkQe.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryDetailPage-CC08T5k8.js → McpQueryDetailPage-BWbinTM_.js} +2 -2
- package/dashboard/dist/assets/{McpQueryDetailPage-CC08T5k8.js.map → McpQueryDetailPage-BWbinTM_.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryPage-CVfF9dYg.js → McpQueryPage-lV6kfDG5.js} +2 -2
- package/dashboard/dist/assets/{McpQueryPage-CVfF9dYg.js.map → McpQueryPage-lV6kfDG5.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunDetailPage-CKs1RWeV.js → McpRunDetailPage-D6gaxH3_.js} +2 -2
- package/dashboard/dist/assets/{McpRunDetailPage-CKs1RWeV.js.map → McpRunDetailPage-D6gaxH3_.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-CcPD_tY1.js → McpRunsPage-DKvTklh9.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-CcPD_tY1.js.map → McpRunsPage-DKvTklh9.js.map} +1 -1
- package/dashboard/dist/assets/{Modal-_2AbWxJT.js → Modal-BuTvD0pz.js} +2 -2
- package/dashboard/dist/assets/{Modal-_2AbWxJT.js.map → Modal-BuTvD0pz.js.map} +1 -1
- package/dashboard/dist/assets/{OperatorDashboard-BGiRaRDr.js → OperatorDashboard-C9SSV96T.js} +2 -2
- package/dashboard/dist/assets/{OperatorDashboard-BGiRaRDr.js.map → OperatorDashboard-C9SSV96T.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeader-DVr5Qyzm.js → PageHeader-BcTVF9ul.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-DVr5Qyzm.js.map → PageHeader-BcTVF9ul.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-D0KRASML.js → PageHeaderWithStats-BI7JG5x6.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-D0KRASML.js.map → PageHeaderWithStats-BI7JG5x6.js.map} +1 -1
- package/dashboard/dist/assets/{PriorityBadge-Bx2559OU.js → PriorityBadge-DqVaOU65.js} +2 -2
- package/dashboard/dist/assets/{PriorityBadge-Bx2559OU.js.map → PriorityBadge-DqVaOU65.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessDetailPage-69I--sry.js → ProcessDetailPage-hFMhf9qa.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-69I--sry.js.map → ProcessDetailPage-hFMhf9qa.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-BDpUbua2.js → ProcessesListPage-ByVoBCQ3.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-BDpUbua2.js.map → ProcessesListPage-ByVoBCQ3.js.map} +1 -1
- package/dashboard/dist/assets/{RolePill-CcAqEaSt.js → RolePill-D9ZIkYiu.js} +2 -2
- package/dashboard/dist/assets/{RolePill-CcAqEaSt.js.map → RolePill-D9ZIkYiu.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-Cl23Hjet.js → RolesPage-SMedMuqa.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-Cl23Hjet.js.map → RolesPage-SMedMuqa.js.map} +1 -1
- package/dashboard/dist/assets/{RowActions-B4mqIt3Z.js → RowActions-yDhwwDbU.js} +2 -2
- package/dashboard/dist/assets/{RowActions-B4mqIt3Z.js.map → RowActions-yDhwwDbU.js.map} +1 -1
- package/dashboard/dist/assets/{StatCard-Cz_2OjAZ.js → StatCard-BrBnQFxh.js} +2 -2
- package/dashboard/dist/assets/{StatCard-Cz_2OjAZ.js.map → StatCard-BrBnQFxh.js.map} +1 -1
- package/dashboard/dist/assets/{StatusBadge-Wi2FJZsn.js → StatusBadge-xgb-lZku.js} +2 -2
- package/dashboard/dist/assets/{StatusBadge-Wi2FJZsn.js.map → StatusBadge-xgb-lZku.js.map} +1 -1
- package/dashboard/dist/assets/{StepIndicator-PW5NRDMb.js → StepIndicator-B9ps2SvM.js} +2 -2
- package/dashboard/dist/assets/{StepIndicator-PW5NRDMb.js.map → StepIndicator-B9ps2SvM.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-Bl2Uzz65.js → StickyPagination-DTIjBKN3.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-Bl2Uzz65.js.map → StickyPagination-DTIjBKN3.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-CUPqMd0z.js → SwimlaneTimeline-RK4Yu66z.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-CUPqMd0z.js.map → SwimlaneTimeline-RK4Yu66z.js.map} +1 -1
- package/dashboard/dist/assets/{TagInput-BLtf86Ly.js → TagInput-CdNUuqk4.js} +2 -2
- package/dashboard/dist/assets/{TagInput-BLtf86Ly.js.map → TagInput-CdNUuqk4.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-BXJFX74D.js → TaskDetailPage-C-nzaNea.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-BXJFX74D.js.map → TaskDetailPage-C-nzaNea.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-CWYj3xKe.js → TaskQueuePill-Lvr2-NzS.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-CWYj3xKe.js.map → TaskQueuePill-Lvr2-NzS.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-C3cX94Mw.js → TasksListPage-DSUmD84y.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-C3cX94Mw.js.map → TasksListPage-DSUmD84y.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-B_5yDDHV.js → TimeAgo-BZdLdrIh.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-B_5yDDHV.js.map → TimeAgo-BZdLdrIh.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-DRX724uU.js → TimestampCell-QX_0i5FK.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-DRX724uU.js.map → TimestampCell-QX_0i5FK.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-Ca8FA469.js → UserName-DyZMXcBm.js} +2 -2
- package/dashboard/dist/assets/{UserName-Ca8FA469.js.map → UserName-DyZMXcBm.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-BBYWEV2P.js → WorkflowExecutionPage-DjVxfZaF.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-BBYWEV2P.js.map → WorkflowExecutionPage-DjVxfZaF.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js +2 -0
- package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js.map +1 -0
- package/dashboard/dist/assets/WorkflowsDashboard-DZjuiFZ0.js +2 -0
- package/dashboard/dist/assets/WorkflowsDashboard-DZjuiFZ0.js.map +1 -0
- package/dashboard/dist/assets/{WorkflowsOverview-03IRrDLg.js → WorkflowsOverview-CLnLRpOu.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-03IRrDLg.js.map → WorkflowsOverview-CLnLRpOu.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowsPage-DC2cLxVi.js → YamlWorkflowsPage-VjdhnLmO.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowsPage-DC2cLxVi.js.map → YamlWorkflowsPage-VjdhnLmO.js.map} +1 -1
- package/dashboard/dist/assets/{bots-DZEXcgiJ.js → bots-DIM6lBoY.js} +2 -2
- package/dashboard/dist/assets/{bots-DZEXcgiJ.js.map → bots-DIM6lBoY.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-Cw48lNaF.js → escalation-JOTuOqjq.js} +2 -2
- package/dashboard/dist/assets/{escalation-Cw48lNaF.js.map → escalation-JOTuOqjq.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-NINpo3qf.js → escalation-columns-Cyg58nkg.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-NINpo3qf.js.map → escalation-columns-Cyg58nkg.js.map} +1 -1
- package/dashboard/dist/assets/{helpers-fk_qr729.js → helpers-B1BDxBZd.js} +2 -2
- package/dashboard/dist/assets/{helpers-fk_qr729.js.map → helpers-B1BDxBZd.js.map} +1 -1
- package/dashboard/dist/assets/{helpers-Cuu3xKfr.js → helpers-BCix9c_m.js} +2 -2
- package/dashboard/dist/assets/{helpers-Cuu3xKfr.js.map → helpers-BCix9c_m.js.map} +1 -1
- package/dashboard/dist/assets/{index-Dj-z-x8M.js → index-BUK3qR-1.js} +2 -2
- package/dashboard/dist/assets/{index-Dj-z-x8M.js.map → index-BUK3qR-1.js.map} +1 -1
- package/dashboard/dist/assets/{index-BwN3KP_L.js → index-BYZX9tOb.js} +8 -8
- package/dashboard/dist/assets/index-BYZX9tOb.js.map +1 -0
- package/dashboard/dist/assets/{index-BIG3KooI.js → index-BcR6PfpY.js} +2 -2
- package/dashboard/dist/assets/{index-BIG3KooI.js.map → index-BcR6PfpY.js.map} +1 -1
- package/dashboard/dist/assets/index-BizfauqT.js +6 -0
- package/dashboard/dist/assets/index-BizfauqT.js.map +1 -0
- package/dashboard/dist/assets/{index-aRvL-dXp.js → index-Cf60K3x9.js} +2 -2
- package/dashboard/dist/assets/{index-aRvL-dXp.js.map → index-Cf60K3x9.js.map} +1 -1
- package/dashboard/dist/assets/{index-b03HlbnH.js → index-Cg5nfiYX.js} +2 -2
- package/dashboard/dist/assets/{index-b03HlbnH.js.map → index-Cg5nfiYX.js.map} +1 -1
- package/dashboard/dist/assets/index-D1wVX50Z.js +15 -0
- package/dashboard/dist/assets/index-D1wVX50Z.js.map +1 -0
- package/dashboard/dist/assets/{index-DwRytW9O.js → index-DDYFpi4l.js} +4 -4
- package/dashboard/dist/assets/index-DDYFpi4l.js.map +1 -0
- package/dashboard/dist/assets/{index-B98ipWxE.js → index-Di12t56M.js} +2 -2
- package/dashboard/dist/assets/{index-B98ipWxE.js.map → index-Di12t56M.js.map} +1 -1
- package/dashboard/dist/assets/{index-CORHB0WC.js → index-Ds0JoXS2.js} +2 -2
- package/dashboard/dist/assets/{index-CORHB0WC.js.map → index-Ds0JoXS2.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-BZoFryNc.js → mcp-B_xbczAt.js} +2 -2
- package/dashboard/dist/assets/{mcp-BZoFryNc.js.map → mcp-B_xbczAt.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-wiw1kwm8.js → mcp-query-B8-P_QoG.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-wiw1kwm8.js.map → mcp-query-B8-P_QoG.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-runs-BaEKnf5v.js → mcp-runs-CWeZinoF.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-BaEKnf5v.js.map → mcp-runs-CWeZinoF.js.map} +1 -1
- package/dashboard/dist/assets/{namespaces-BwnZI4_A.js → namespaces-C3WtdO_9.js} +2 -2
- package/dashboard/dist/assets/{namespaces-BwnZI4_A.js.map → namespaces-C3WtdO_9.js.map} +1 -1
- package/dashboard/dist/assets/{roles-Bgn1K8zU.js → roles-BDAsPpZG.js} +2 -2
- package/dashboard/dist/assets/{roles-Bgn1K8zU.js.map → roles-BDAsPpZG.js.map} +1 -1
- package/dashboard/dist/assets/{settings-CizYiutL.js → settings-Ife_UwAp.js} +2 -2
- package/dashboard/dist/assets/{settings-CizYiutL.js.map → settings-Ife_UwAp.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-Bmte_hc4.js → tasks-BquNDHDI.js} +2 -2
- package/dashboard/dist/assets/{tasks-Bmte_hc4.js.map → tasks-BquNDHDI.js.map} +1 -1
- package/dashboard/dist/assets/{useEventHooks-CUCxpiI2.js → useEventHooks-anv_B2Yy.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-CUCxpiI2.js.map → useEventHooks-anv_B2Yy.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-Cum02Ej9.js → useYamlActivityEvents-DN-PTgVx.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-Cum02Ej9.js.map → useYamlActivityEvents-DN-PTgVx.js.map} +1 -1
- package/dashboard/dist/assets/{users-NSDgTt-z.js → users-CFcxB4v6.js} +2 -2
- package/dashboard/dist/assets/{users-NSDgTt-z.js.map → users-CFcxB4v6.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-D1DdudfH.js → vendor-icons-T4r2DSPD.js} +2 -2
- package/dashboard/dist/assets/{vendor-icons-D1DdudfH.js.map → vendor-icons-T4r2DSPD.js.map} +1 -1
- package/dashboard/dist/assets/{workflows-k0XRdGXx.js → workflows-CeRci9z3.js} +2 -2
- package/dashboard/dist/assets/{workflows-k0XRdGXx.js.map → workflows-CeRci9z3.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-DAre8I78.js → yaml-workflows-DLwd2BOX.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-DAre8I78.js.map → yaml-workflows-DLwd2BOX.js.map} +1 -1
- package/dashboard/dist/index.html +2 -2
- package/docs/api/{escalations.md → http/escalations.md} +99 -0
- package/docs/api/{tasks.md → http/tasks.md} +47 -0
- 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 +511 -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 +159 -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/package.json +1 -1
- package/dashboard/dist/assets/WorkflowPill-BXifAuLi.js +0 -2
- package/dashboard/dist/assets/WorkflowPill-BXifAuLi.js.map +0 -1
- package/dashboard/dist/assets/WorkflowsDashboard-Drl3juz9.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard-Drl3juz9.js.map +0 -1
- package/dashboard/dist/assets/index-BwN3KP_L.js.map +0 -1
- package/dashboard/dist/assets/index-Bxe8h1x4.js +0 -17
- package/dashboard/dist/assets/index-Bxe8h1x4.js.map +0 -1
- package/dashboard/dist/assets/index-CNI7k7oB.js +0 -6
- package/dashboard/dist/assets/index-CNI7k7oB.js.map +0 -1
- package/dashboard/dist/assets/index-DwRytW9O.js.map +0 -1
- package/docs/epic-integration.md +0 -224
- package/docs/workflow-builder.md +0 -371
- /package/docs/api/{dba.md → http/dba.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/{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
package/build/api/mcp.js
CHANGED
|
@@ -46,6 +46,17 @@ exports.listMcpServerTools = listMcpServerTools;
|
|
|
46
46
|
exports.callMcpTool = callMcpTool;
|
|
47
47
|
const mcpDbService = __importStar(require("../services/mcp/db"));
|
|
48
48
|
const mcp_1 = require("../services/mcp");
|
|
49
|
+
/**
|
|
50
|
+
* List registered MCP servers with optional filtering and pagination.
|
|
51
|
+
*
|
|
52
|
+
* @param input.status — filter by server status (e.g. 'active', 'inactive')
|
|
53
|
+
* @param input.auto_connect — filter by auto-connect setting
|
|
54
|
+
* @param input.search — free-text search across server names and descriptions
|
|
55
|
+
* @param input.tags — filter to servers matching any of these tags
|
|
56
|
+
* @param input.limit — maximum number of results to return
|
|
57
|
+
* @param input.offset — pagination offset
|
|
58
|
+
* @returns `{ status: 200, data: { ... } }` paginated list of MCP server records
|
|
59
|
+
*/
|
|
49
60
|
async function listMcpServers(input) {
|
|
50
61
|
try {
|
|
51
62
|
const result = await mcpDbService.listMcpServers(input);
|
|
@@ -55,6 +66,22 @@ async function listMcpServers(input) {
|
|
|
55
66
|
return { status: 500, error: err.message };
|
|
56
67
|
}
|
|
57
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Register a new MCP server.
|
|
71
|
+
*
|
|
72
|
+
* Returns 409 if a server with the same name already exists.
|
|
73
|
+
*
|
|
74
|
+
* @param input.name — unique display name for the server (required)
|
|
75
|
+
* @param input.description — optional human-readable description
|
|
76
|
+
* @param input.transport_type — transport protocol, e.g. 'sse', 'stdio' (required)
|
|
77
|
+
* @param input.transport_config — transport-specific connection settings (required)
|
|
78
|
+
* @param input.auto_connect — whether to connect automatically on startup
|
|
79
|
+
* @param input.metadata — arbitrary key-value metadata
|
|
80
|
+
* @param input.tags — tags for categorization and filtering
|
|
81
|
+
* @param input.compile_hints — optional hints used during tool compilation
|
|
82
|
+
* @param input.credential_providers — OAuth/credential provider identifiers required by this server
|
|
83
|
+
* @returns `{ status: 201, data: { ... } }` the created MCP server record
|
|
84
|
+
*/
|
|
58
85
|
async function createMcpServer(input) {
|
|
59
86
|
try {
|
|
60
87
|
if (!input.name || !input.transport_type || !input.transport_config) {
|
|
@@ -70,6 +97,17 @@ async function createMcpServer(input) {
|
|
|
70
97
|
return { status: 500, error: err.message };
|
|
71
98
|
}
|
|
72
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Test connectivity to an MCP server without persisting it.
|
|
102
|
+
*
|
|
103
|
+
* Attempts to establish a connection using the provided transport
|
|
104
|
+
* configuration and returns the result. On failure, returns a
|
|
105
|
+
* successful (200) response with `success: false` and the error message.
|
|
106
|
+
*
|
|
107
|
+
* @param input.transport_type — transport protocol to test (required)
|
|
108
|
+
* @param input.transport_config — transport-specific connection settings (required)
|
|
109
|
+
* @returns `{ status: 200, data: { success, error?, tools } }` connection test result
|
|
110
|
+
*/
|
|
73
111
|
async function testConnection(input) {
|
|
74
112
|
try {
|
|
75
113
|
if (!input.transport_type || !input.transport_config) {
|
|
@@ -83,6 +121,12 @@ async function testConnection(input) {
|
|
|
83
121
|
return { status: 200, data: { success: false, error: err.message, tools: [] } };
|
|
84
122
|
}
|
|
85
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Retrieve a single MCP server by ID.
|
|
126
|
+
*
|
|
127
|
+
* @param input.id — the MCP server identifier
|
|
128
|
+
* @returns `{ status: 200, data: { ... } }` the MCP server record, or 404 if not found
|
|
129
|
+
*/
|
|
86
130
|
async function getMcpServer(input) {
|
|
87
131
|
try {
|
|
88
132
|
const server = await mcpDbService.getMcpServer(input.id);
|
|
@@ -95,6 +139,15 @@ async function getMcpServer(input) {
|
|
|
95
139
|
return { status: 500, error: err.message };
|
|
96
140
|
}
|
|
97
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Update fields on an existing MCP server.
|
|
144
|
+
*
|
|
145
|
+
* Accepts any subset of mutable server fields alongside the required ID.
|
|
146
|
+
*
|
|
147
|
+
* @param input.id — the MCP server identifier (required)
|
|
148
|
+
* @param input.[key] — any mutable server field to update (name, description, transport_config, etc.)
|
|
149
|
+
* @returns `{ status: 200, data: { ... } }` the updated server record, or 404 if not found
|
|
150
|
+
*/
|
|
98
151
|
async function updateMcpServer(input) {
|
|
99
152
|
try {
|
|
100
153
|
const { id, ...fields } = input;
|
|
@@ -108,6 +161,12 @@ async function updateMcpServer(input) {
|
|
|
108
161
|
return { status: 500, error: err.message };
|
|
109
162
|
}
|
|
110
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* Delete an MCP server by ID.
|
|
166
|
+
*
|
|
167
|
+
* @param input.id — the MCP server identifier
|
|
168
|
+
* @returns `{ status: 200, data: { deleted: true } }` on success, or 404 if not found
|
|
169
|
+
*/
|
|
111
170
|
async function deleteMcpServer(input) {
|
|
112
171
|
try {
|
|
113
172
|
const deleted = await mcpDbService.deleteMcpServer(input.id);
|
|
@@ -120,6 +179,14 @@ async function deleteMcpServer(input) {
|
|
|
120
179
|
return { status: 500, error: err.message };
|
|
121
180
|
}
|
|
122
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* Establish a live connection to a registered MCP server.
|
|
184
|
+
*
|
|
185
|
+
* Requires the MCP adapter to be registered in the registry.
|
|
186
|
+
*
|
|
187
|
+
* @param input.id — the MCP server identifier to connect
|
|
188
|
+
* @returns `{ status: 200, data: { connected, serverId } }` confirmation of the connection
|
|
189
|
+
*/
|
|
123
190
|
async function connectMcpServer(input) {
|
|
124
191
|
try {
|
|
125
192
|
const adapter = mcp_1.mcpRegistry.current;
|
|
@@ -133,6 +200,14 @@ async function connectMcpServer(input) {
|
|
|
133
200
|
return { status: 500, error: err.message };
|
|
134
201
|
}
|
|
135
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* Disconnect a live MCP server connection.
|
|
205
|
+
*
|
|
206
|
+
* Requires the MCP adapter to be registered in the registry.
|
|
207
|
+
*
|
|
208
|
+
* @param input.id — the MCP server identifier to disconnect
|
|
209
|
+
* @returns `{ status: 200, data: { disconnected, serverId } }` confirmation of the disconnection
|
|
210
|
+
*/
|
|
136
211
|
async function disconnectMcpServer(input) {
|
|
137
212
|
try {
|
|
138
213
|
const adapter = mcp_1.mcpRegistry.current;
|
|
@@ -146,6 +221,16 @@ async function disconnectMcpServer(input) {
|
|
|
146
221
|
return { status: 500, error: err.message };
|
|
147
222
|
}
|
|
148
223
|
}
|
|
224
|
+
/**
|
|
225
|
+
* Check which credential providers are registered vs missing for an MCP server.
|
|
226
|
+
*
|
|
227
|
+
* Resolves each credential provider required by the server against the
|
|
228
|
+
* authenticated user's stored credentials.
|
|
229
|
+
*
|
|
230
|
+
* @param input.id — the MCP server identifier
|
|
231
|
+
* @param auth — authenticated user context used to resolve credentials
|
|
232
|
+
* @returns `{ status: 200, data: { required, registered, missing } }` credential status arrays
|
|
233
|
+
*/
|
|
149
234
|
async function getCredentialStatus(input, auth) {
|
|
150
235
|
try {
|
|
151
236
|
const server = await mcpDbService.getMcpServer(input.id);
|
|
@@ -174,6 +259,14 @@ async function getCredentialStatus(input, auth) {
|
|
|
174
259
|
return { status: 500, error: err.message };
|
|
175
260
|
}
|
|
176
261
|
}
|
|
262
|
+
/**
|
|
263
|
+
* List all tools exposed by a connected MCP server.
|
|
264
|
+
*
|
|
265
|
+
* Requires the MCP adapter to be registered and the server to be connected.
|
|
266
|
+
*
|
|
267
|
+
* @param input.id — the MCP server identifier
|
|
268
|
+
* @returns `{ status: 200, data: { tools } }` array of tool descriptors
|
|
269
|
+
*/
|
|
177
270
|
async function listMcpServerTools(input) {
|
|
178
271
|
try {
|
|
179
272
|
const adapter = mcp_1.mcpRegistry.current;
|
|
@@ -187,6 +280,21 @@ async function listMcpServerTools(input) {
|
|
|
187
280
|
return { status: 500, error: err.message };
|
|
188
281
|
}
|
|
189
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* Invoke a specific tool on a connected MCP server.
|
|
285
|
+
*
|
|
286
|
+
* Passes the tool arguments and an optional auth context (derived from
|
|
287
|
+
* `execute_as` or the authenticated user) to the MCP adapter. Returns
|
|
288
|
+
* 422 with `missing_credential` if the tool requires a credential the
|
|
289
|
+
* user has not registered.
|
|
290
|
+
*
|
|
291
|
+
* @param input.id — the MCP server identifier
|
|
292
|
+
* @param input.toolName — name of the tool to invoke
|
|
293
|
+
* @param input.arguments — key-value arguments to pass to the tool
|
|
294
|
+
* @param input.execute_as — optional user ID to impersonate for the tool call
|
|
295
|
+
* @param auth — authenticated user context
|
|
296
|
+
* @returns `{ status: 200, data: { result } }` the tool execution result
|
|
297
|
+
*/
|
|
190
298
|
async function callMcpTool(input, auth) {
|
|
191
299
|
try {
|
|
192
300
|
const adapter = mcp_1.mcpRegistry.current;
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import type { LTApiResult } from '../types/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* List all registered namespaces.
|
|
4
|
+
*
|
|
5
|
+
* @returns `{ status: 200, data: { namespaces: LTNamespace[] } }`
|
|
6
|
+
*/
|
|
2
7
|
export declare function listNamespaces(): Promise<LTApiResult>;
|
|
8
|
+
/**
|
|
9
|
+
* Register a new namespace.
|
|
10
|
+
*
|
|
11
|
+
* @param input.name — unique namespace identifier
|
|
12
|
+
* @param input.description — human-readable description
|
|
13
|
+
* @param input.metadata — arbitrary key-value metadata
|
|
14
|
+
* @returns `{ status: 200, data: <namespace record> }`
|
|
15
|
+
*/
|
|
3
16
|
export declare function registerNamespace(input: {
|
|
4
17
|
name: string;
|
|
5
18
|
description?: string;
|
package/build/api/namespaces.js
CHANGED
|
@@ -36,6 +36,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.listNamespaces = listNamespaces;
|
|
37
37
|
exports.registerNamespace = registerNamespace;
|
|
38
38
|
const namespaceService = __importStar(require("../services/namespace"));
|
|
39
|
+
/**
|
|
40
|
+
* List all registered namespaces.
|
|
41
|
+
*
|
|
42
|
+
* @returns `{ status: 200, data: { namespaces: LTNamespace[] } }`
|
|
43
|
+
*/
|
|
39
44
|
async function listNamespaces() {
|
|
40
45
|
try {
|
|
41
46
|
const namespaces = await namespaceService.listNamespaces();
|
|
@@ -45,6 +50,14 @@ async function listNamespaces() {
|
|
|
45
50
|
return { status: 500, error: err.message };
|
|
46
51
|
}
|
|
47
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Register a new namespace.
|
|
55
|
+
*
|
|
56
|
+
* @param input.name — unique namespace identifier
|
|
57
|
+
* @param input.description — human-readable description
|
|
58
|
+
* @param input.metadata — arbitrary key-value metadata
|
|
59
|
+
* @returns `{ status: 200, data: <namespace record> }`
|
|
60
|
+
*/
|
|
48
61
|
async function registerNamespace(input) {
|
|
49
62
|
try {
|
|
50
63
|
const { name, description, metadata } = input;
|
package/build/api/roles.d.ts
CHANGED
|
@@ -1,25 +1,88 @@
|
|
|
1
1
|
import type { LTApiResult } from '../types/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* List all distinct role names in the system.
|
|
4
|
+
*
|
|
5
|
+
* @returns `{ status: 200, data: { roles: string[] } }` on success
|
|
6
|
+
*/
|
|
2
7
|
export declare function listRoles(): Promise<LTApiResult>;
|
|
8
|
+
/**
|
|
9
|
+
* List all roles with their full details (member counts, escalation chains, etc.).
|
|
10
|
+
*
|
|
11
|
+
* @returns `{ status: 200, data: { roles: RoleDetail[] } }` on success
|
|
12
|
+
*/
|
|
3
13
|
export declare function listRolesWithDetails(): Promise<LTApiResult>;
|
|
14
|
+
/**
|
|
15
|
+
* Create a new role. Requires admin privileges.
|
|
16
|
+
*
|
|
17
|
+
* The role name is trimmed, lowercased, and validated against the pattern
|
|
18
|
+
* `^[a-z][a-z0-9_-]*$` (must start with a letter, then lowercase alphanumerics,
|
|
19
|
+
* hyphens, or underscores).
|
|
20
|
+
*
|
|
21
|
+
* @param input.role — the role name to create
|
|
22
|
+
* @returns `{ status: 201, data: { role: string } }` on success
|
|
23
|
+
*/
|
|
4
24
|
export declare function createRole(input: {
|
|
5
25
|
role: string;
|
|
6
26
|
}): Promise<LTApiResult>;
|
|
27
|
+
/**
|
|
28
|
+
* Retrieve all escalation chains across all roles.
|
|
29
|
+
*
|
|
30
|
+
* @returns `{ status: 200, data: { chains: EscalationChain[] } }` on success
|
|
31
|
+
*/
|
|
7
32
|
export declare function getEscalationChains(): Promise<LTApiResult>;
|
|
33
|
+
/**
|
|
34
|
+
* Add an escalation chain link from one role to another. Requires admin privileges.
|
|
35
|
+
*
|
|
36
|
+
* @param input.source_role — the role that escalates from
|
|
37
|
+
* @param input.target_role — the role that receives the escalation
|
|
38
|
+
* @returns `{ status: 201, data: { source_role, target_role } }` on success
|
|
39
|
+
*/
|
|
8
40
|
export declare function addEscalationChain(input: {
|
|
9
41
|
source_role: string;
|
|
10
42
|
target_role: string;
|
|
11
43
|
}): Promise<LTApiResult>;
|
|
44
|
+
/**
|
|
45
|
+
* Remove an escalation chain link between two roles. Requires admin privileges.
|
|
46
|
+
*
|
|
47
|
+
* @param input.source_role — the role that escalates from
|
|
48
|
+
* @param input.target_role — the role that receives the escalation
|
|
49
|
+
* @returns `{ status: 200, data: { removed: true } }` on success, or `{ status: 404 }` if not found
|
|
50
|
+
*/
|
|
12
51
|
export declare function removeEscalationChain(input: {
|
|
13
52
|
source_role: string;
|
|
14
53
|
target_role: string;
|
|
15
54
|
}): Promise<LTApiResult>;
|
|
55
|
+
/**
|
|
56
|
+
* Get all escalation target roles for a given source role.
|
|
57
|
+
*
|
|
58
|
+
* @param input.role — the source role to look up escalation targets for
|
|
59
|
+
* @returns `{ status: 200, data: { targets: string[] } }` on success
|
|
60
|
+
*/
|
|
16
61
|
export declare function getEscalationTargets(input: {
|
|
17
62
|
role: string;
|
|
18
63
|
}): Promise<LTApiResult>;
|
|
64
|
+
/**
|
|
65
|
+
* Replace all escalation targets for a role with a new set. Requires admin privileges.
|
|
66
|
+
*
|
|
67
|
+
* Removes all existing escalation links from the source role and creates new
|
|
68
|
+
* ones for each target in the provided array.
|
|
69
|
+
*
|
|
70
|
+
* @param input.role — the source role whose targets are being replaced
|
|
71
|
+
* @param input.targets — array of target role names to set as the new escalation targets
|
|
72
|
+
* @returns `{ status: 200, data: { role, targets } }` on success
|
|
73
|
+
*/
|
|
19
74
|
export declare function replaceEscalationTargets(input: {
|
|
20
75
|
role: string;
|
|
21
76
|
targets: string[];
|
|
22
77
|
}): Promise<LTApiResult>;
|
|
78
|
+
/**
|
|
79
|
+
* Delete a role from the system. Requires admin privileges.
|
|
80
|
+
*
|
|
81
|
+
* Returns 409 if the role cannot be deleted (e.g., still assigned to users).
|
|
82
|
+
*
|
|
83
|
+
* @param input.role — the role name to delete
|
|
84
|
+
* @returns `{ status: 200, data: { deleted: true } }` on success, or `{ status: 409 }` if deletion blocked
|
|
85
|
+
*/
|
|
23
86
|
export declare function deleteRole(input: {
|
|
24
87
|
role: string;
|
|
25
88
|
}): Promise<LTApiResult>;
|
package/build/api/roles.js
CHANGED
|
@@ -43,6 +43,11 @@ exports.getEscalationTargets = getEscalationTargets;
|
|
|
43
43
|
exports.replaceEscalationTargets = replaceEscalationTargets;
|
|
44
44
|
exports.deleteRole = deleteRole;
|
|
45
45
|
const roleService = __importStar(require("../services/role"));
|
|
46
|
+
/**
|
|
47
|
+
* List all distinct role names in the system.
|
|
48
|
+
*
|
|
49
|
+
* @returns `{ status: 200, data: { roles: string[] } }` on success
|
|
50
|
+
*/
|
|
46
51
|
async function listRoles() {
|
|
47
52
|
try {
|
|
48
53
|
const roles = await roleService.listDistinctRoles();
|
|
@@ -52,6 +57,11 @@ async function listRoles() {
|
|
|
52
57
|
return { status: 500, error: err.message };
|
|
53
58
|
}
|
|
54
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* List all roles with their full details (member counts, escalation chains, etc.).
|
|
62
|
+
*
|
|
63
|
+
* @returns `{ status: 200, data: { roles: RoleDetail[] } }` on success
|
|
64
|
+
*/
|
|
55
65
|
async function listRolesWithDetails() {
|
|
56
66
|
try {
|
|
57
67
|
const roles = await roleService.listRolesWithDetails();
|
|
@@ -61,7 +71,16 @@ async function listRolesWithDetails() {
|
|
|
61
71
|
return { status: 500, error: err.message };
|
|
62
72
|
}
|
|
63
73
|
}
|
|
64
|
-
|
|
74
|
+
/**
|
|
75
|
+
* Create a new role. Requires admin privileges.
|
|
76
|
+
*
|
|
77
|
+
* The role name is trimmed, lowercased, and validated against the pattern
|
|
78
|
+
* `^[a-z][a-z0-9_-]*$` (must start with a letter, then lowercase alphanumerics,
|
|
79
|
+
* hyphens, or underscores).
|
|
80
|
+
*
|
|
81
|
+
* @param input.role — the role name to create
|
|
82
|
+
* @returns `{ status: 201, data: { role: string } }` on success
|
|
83
|
+
*/
|
|
65
84
|
async function createRole(input) {
|
|
66
85
|
try {
|
|
67
86
|
if (!input.role || typeof input.role !== 'string' || !input.role.trim()) {
|
|
@@ -81,6 +100,11 @@ async function createRole(input) {
|
|
|
81
100
|
return { status: 500, error: err.message };
|
|
82
101
|
}
|
|
83
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Retrieve all escalation chains across all roles.
|
|
105
|
+
*
|
|
106
|
+
* @returns `{ status: 200, data: { chains: EscalationChain[] } }` on success
|
|
107
|
+
*/
|
|
84
108
|
async function getEscalationChains() {
|
|
85
109
|
try {
|
|
86
110
|
const chains = await roleService.getAllEscalationChains();
|
|
@@ -90,7 +114,13 @@ async function getEscalationChains() {
|
|
|
90
114
|
return { status: 500, error: err.message };
|
|
91
115
|
}
|
|
92
116
|
}
|
|
93
|
-
|
|
117
|
+
/**
|
|
118
|
+
* Add an escalation chain link from one role to another. Requires admin privileges.
|
|
119
|
+
*
|
|
120
|
+
* @param input.source_role — the role that escalates from
|
|
121
|
+
* @param input.target_role — the role that receives the escalation
|
|
122
|
+
* @returns `{ status: 201, data: { source_role, target_role } }` on success
|
|
123
|
+
*/
|
|
94
124
|
async function addEscalationChain(input) {
|
|
95
125
|
try {
|
|
96
126
|
if (!input.source_role || !input.target_role) {
|
|
@@ -106,7 +136,13 @@ async function addEscalationChain(input) {
|
|
|
106
136
|
return { status: 500, error: err.message };
|
|
107
137
|
}
|
|
108
138
|
}
|
|
109
|
-
|
|
139
|
+
/**
|
|
140
|
+
* Remove an escalation chain link between two roles. Requires admin privileges.
|
|
141
|
+
*
|
|
142
|
+
* @param input.source_role — the role that escalates from
|
|
143
|
+
* @param input.target_role — the role that receives the escalation
|
|
144
|
+
* @returns `{ status: 200, data: { removed: true } }` on success, or `{ status: 404 }` if not found
|
|
145
|
+
*/
|
|
110
146
|
async function removeEscalationChain(input) {
|
|
111
147
|
try {
|
|
112
148
|
if (!input.source_role || !input.target_role) {
|
|
@@ -122,6 +158,12 @@ async function removeEscalationChain(input) {
|
|
|
122
158
|
return { status: 500, error: err.message };
|
|
123
159
|
}
|
|
124
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* Get all escalation target roles for a given source role.
|
|
163
|
+
*
|
|
164
|
+
* @param input.role — the source role to look up escalation targets for
|
|
165
|
+
* @returns `{ status: 200, data: { targets: string[] } }` on success
|
|
166
|
+
*/
|
|
125
167
|
async function getEscalationTargets(input) {
|
|
126
168
|
try {
|
|
127
169
|
const targets = await roleService.getEscalationTargets(input.role);
|
|
@@ -131,7 +173,16 @@ async function getEscalationTargets(input) {
|
|
|
131
173
|
return { status: 500, error: err.message };
|
|
132
174
|
}
|
|
133
175
|
}
|
|
134
|
-
|
|
176
|
+
/**
|
|
177
|
+
* Replace all escalation targets for a role with a new set. Requires admin privileges.
|
|
178
|
+
*
|
|
179
|
+
* Removes all existing escalation links from the source role and creates new
|
|
180
|
+
* ones for each target in the provided array.
|
|
181
|
+
*
|
|
182
|
+
* @param input.role — the source role whose targets are being replaced
|
|
183
|
+
* @param input.targets — array of target role names to set as the new escalation targets
|
|
184
|
+
* @returns `{ status: 200, data: { role, targets } }` on success
|
|
185
|
+
*/
|
|
135
186
|
async function replaceEscalationTargets(input) {
|
|
136
187
|
try {
|
|
137
188
|
if (!Array.isArray(input.targets)) {
|
|
@@ -144,7 +195,14 @@ async function replaceEscalationTargets(input) {
|
|
|
144
195
|
return { status: 500, error: err.message };
|
|
145
196
|
}
|
|
146
197
|
}
|
|
147
|
-
|
|
198
|
+
/**
|
|
199
|
+
* Delete a role from the system. Requires admin privileges.
|
|
200
|
+
*
|
|
201
|
+
* Returns 409 if the role cannot be deleted (e.g., still assigned to users).
|
|
202
|
+
*
|
|
203
|
+
* @param input.role — the role name to delete
|
|
204
|
+
* @returns `{ status: 200, data: { deleted: true } }` on success, or `{ status: 409 }` if deletion blocked
|
|
205
|
+
*/
|
|
148
206
|
async function deleteRole(input) {
|
|
149
207
|
try {
|
|
150
208
|
const result = await roleService.deleteRole(input.role);
|
package/build/api/settings.d.ts
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
1
|
import type { LTApiResult } from '../types/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Return platform settings for the current deployment.
|
|
4
|
+
*
|
|
5
|
+
* Includes telemetry configuration (trace URL), escalation claim duration
|
|
6
|
+
* options, and event transport details (socket.io, NATS, or none).
|
|
7
|
+
*
|
|
8
|
+
* @returns `{ status: 200, data: { telemetry, escalation, events } }`
|
|
9
|
+
*/
|
|
2
10
|
export declare function getSettings(): Promise<LTApiResult>;
|
package/build/api/settings.js
CHANGED
|
@@ -6,6 +6,14 @@ const events_1 = require("../lib/events");
|
|
|
6
6
|
const nats_1 = require("../lib/events/nats");
|
|
7
7
|
const socketio_1 = require("../lib/events/socketio");
|
|
8
8
|
const defaults_1 = require("../modules/defaults");
|
|
9
|
+
/**
|
|
10
|
+
* Return platform settings for the current deployment.
|
|
11
|
+
*
|
|
12
|
+
* Includes telemetry configuration (trace URL), escalation claim duration
|
|
13
|
+
* options, and event transport details (socket.io, NATS, or none).
|
|
14
|
+
*
|
|
15
|
+
* @returns `{ status: 200, data: { telemetry, escalation, events } }`
|
|
16
|
+
*/
|
|
9
17
|
async function getSettings() {
|
|
10
18
|
try {
|
|
11
19
|
const hasSocketIO = !!events_1.eventRegistry.getAdapter(socketio_1.SocketIOEventAdapter);
|
package/build/api/tasks.d.ts
CHANGED
|
@@ -1,4 +1,43 @@
|
|
|
1
|
-
import type { LTApiResult } from '../types/sdk';
|
|
1
|
+
import type { LTApiResult, LTApiAuth } from '../types/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Create a task record.
|
|
4
|
+
*
|
|
5
|
+
* Tasks represent workflow executions tracked by the LT interceptor.
|
|
6
|
+
* Required fields: `workflow_id`, `workflow_type`, `lt_type`,
|
|
7
|
+
* `signal_id`, `parent_workflow_id`, and `envelope`.
|
|
8
|
+
*
|
|
9
|
+
* @returns `{ status: 201, data: <task record> }`
|
|
10
|
+
*/
|
|
11
|
+
export declare function createTask(input: {
|
|
12
|
+
workflow_id: string;
|
|
13
|
+
workflow_type: string;
|
|
14
|
+
lt_type: string;
|
|
15
|
+
task_queue?: string;
|
|
16
|
+
signal_id: string;
|
|
17
|
+
parent_workflow_id: string;
|
|
18
|
+
origin_id?: string;
|
|
19
|
+
parent_id?: string;
|
|
20
|
+
envelope?: string;
|
|
21
|
+
metadata?: Record<string, any>;
|
|
22
|
+
priority?: number;
|
|
23
|
+
trace_id?: string;
|
|
24
|
+
span_id?: string;
|
|
25
|
+
}, auth: LTApiAuth): Promise<LTApiResult>;
|
|
26
|
+
/**
|
|
27
|
+
* List tasks with optional filters.
|
|
28
|
+
*
|
|
29
|
+
* Tasks represent workflow executions tracked by the LT interceptor.
|
|
30
|
+
*
|
|
31
|
+
* @param input.status — filter by `pending` or `completed`
|
|
32
|
+
* @param input.lt_type — filter by interceptor classification
|
|
33
|
+
* @param input.workflow_type — filter by workflow function name
|
|
34
|
+
* @param input.workflow_id — filter by HotMesh workflow ID
|
|
35
|
+
* @param input.parent_workflow_id — filter by parent orchestrator ID
|
|
36
|
+
* @param input.origin_id — filter by root process origin ID
|
|
37
|
+
* @param input.limit — max results (default: 50)
|
|
38
|
+
* @param input.offset — pagination offset (default: 0)
|
|
39
|
+
* @returns `{ status: 200, data: { tasks, total } }`
|
|
40
|
+
*/
|
|
2
41
|
export declare function listTasks(input: {
|
|
3
42
|
status?: string;
|
|
4
43
|
lt_type?: string;
|
|
@@ -9,9 +48,25 @@ export declare function listTasks(input: {
|
|
|
9
48
|
limit?: number;
|
|
10
49
|
offset?: number;
|
|
11
50
|
}): Promise<LTApiResult>;
|
|
51
|
+
/**
|
|
52
|
+
* Return aggregate process statistics.
|
|
53
|
+
*
|
|
54
|
+
* @param input.period — time window (`1h`, `24h`, `7d`, `30d`)
|
|
55
|
+
* @returns `{ status: 200, data: <process stats> }`
|
|
56
|
+
*/
|
|
12
57
|
export declare function getProcessStats(input: {
|
|
13
58
|
period?: string;
|
|
14
59
|
}): Promise<LTApiResult>;
|
|
60
|
+
/**
|
|
61
|
+
* List processes (grouped by origin_id) with optional filters.
|
|
62
|
+
*
|
|
63
|
+
* @param input.limit — max results (default: 50)
|
|
64
|
+
* @param input.offset — pagination offset
|
|
65
|
+
* @param input.workflow_type — filter by workflow type
|
|
66
|
+
* @param input.status — filter by status
|
|
67
|
+
* @param input.search — full-text search across process fields
|
|
68
|
+
* @returns `{ status: 200, data: { processes, total } }`
|
|
69
|
+
*/
|
|
15
70
|
export declare function listProcesses(input: {
|
|
16
71
|
limit?: number;
|
|
17
72
|
offset?: number;
|
|
@@ -19,9 +74,21 @@ export declare function listProcesses(input: {
|
|
|
19
74
|
status?: string;
|
|
20
75
|
search?: string;
|
|
21
76
|
}): Promise<LTApiResult>;
|
|
77
|
+
/**
|
|
78
|
+
* Get a single process with all its tasks and escalations.
|
|
79
|
+
*
|
|
80
|
+
* @param input.originId — root process origin ID
|
|
81
|
+
* @returns `{ status: 200, data: { origin_id, tasks, escalations } }`
|
|
82
|
+
*/
|
|
22
83
|
export declare function getProcess(input: {
|
|
23
84
|
originId: string;
|
|
24
85
|
}): Promise<LTApiResult>;
|
|
86
|
+
/**
|
|
87
|
+
* Get a single task by ID.
|
|
88
|
+
*
|
|
89
|
+
* @param input.id — task UUID
|
|
90
|
+
* @returns `{ status: 200, data: <task record> }` or 404
|
|
91
|
+
*/
|
|
25
92
|
export declare function getTask(input: {
|
|
26
93
|
id: string;
|
|
27
94
|
}): Promise<LTApiResult>;
|
package/build/api/tasks.js
CHANGED
|
@@ -33,6 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.createTask = createTask;
|
|
36
37
|
exports.listTasks = listTasks;
|
|
37
38
|
exports.getProcessStats = getProcessStats;
|
|
38
39
|
exports.listProcesses = listProcesses;
|
|
@@ -40,6 +41,69 @@ exports.getProcess = getProcess;
|
|
|
40
41
|
exports.getTask = getTask;
|
|
41
42
|
const taskService = __importStar(require("../services/task"));
|
|
42
43
|
const escalationService = __importStar(require("../services/escalation"));
|
|
44
|
+
/**
|
|
45
|
+
* Create a task record.
|
|
46
|
+
*
|
|
47
|
+
* Tasks represent workflow executions tracked by the LT interceptor.
|
|
48
|
+
* Required fields: `workflow_id`, `workflow_type`, `lt_type`,
|
|
49
|
+
* `signal_id`, `parent_workflow_id`, and `envelope`.
|
|
50
|
+
*
|
|
51
|
+
* @returns `{ status: 201, data: <task record> }`
|
|
52
|
+
*/
|
|
53
|
+
async function createTask(input, auth) {
|
|
54
|
+
try {
|
|
55
|
+
const { workflow_id, workflow_type, lt_type, signal_id, parent_workflow_id } = input;
|
|
56
|
+
if (!workflow_id || typeof workflow_id !== 'string') {
|
|
57
|
+
return { status: 400, error: 'workflow_id is required' };
|
|
58
|
+
}
|
|
59
|
+
if (!workflow_type || typeof workflow_type !== 'string') {
|
|
60
|
+
return { status: 400, error: 'workflow_type is required' };
|
|
61
|
+
}
|
|
62
|
+
if (!lt_type || typeof lt_type !== 'string') {
|
|
63
|
+
return { status: 400, error: 'lt_type is required' };
|
|
64
|
+
}
|
|
65
|
+
if (!signal_id || typeof signal_id !== 'string') {
|
|
66
|
+
return { status: 400, error: 'signal_id is required' };
|
|
67
|
+
}
|
|
68
|
+
if (!parent_workflow_id || typeof parent_workflow_id !== 'string') {
|
|
69
|
+
return { status: 400, error: 'parent_workflow_id is required' };
|
|
70
|
+
}
|
|
71
|
+
const task = await taskService.createTask({
|
|
72
|
+
workflow_id,
|
|
73
|
+
workflow_type,
|
|
74
|
+
lt_type,
|
|
75
|
+
task_queue: input.task_queue,
|
|
76
|
+
signal_id,
|
|
77
|
+
parent_workflow_id,
|
|
78
|
+
origin_id: input.origin_id,
|
|
79
|
+
parent_id: input.parent_id,
|
|
80
|
+
envelope: input.envelope ?? '{}',
|
|
81
|
+
metadata: input.metadata,
|
|
82
|
+
priority: input.priority,
|
|
83
|
+
trace_id: input.trace_id,
|
|
84
|
+
span_id: input.span_id,
|
|
85
|
+
});
|
|
86
|
+
return { status: 201, data: task };
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
return { status: 500, error: err.message };
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* List tasks with optional filters.
|
|
94
|
+
*
|
|
95
|
+
* Tasks represent workflow executions tracked by the LT interceptor.
|
|
96
|
+
*
|
|
97
|
+
* @param input.status — filter by `pending` or `completed`
|
|
98
|
+
* @param input.lt_type — filter by interceptor classification
|
|
99
|
+
* @param input.workflow_type — filter by workflow function name
|
|
100
|
+
* @param input.workflow_id — filter by HotMesh workflow ID
|
|
101
|
+
* @param input.parent_workflow_id — filter by parent orchestrator ID
|
|
102
|
+
* @param input.origin_id — filter by root process origin ID
|
|
103
|
+
* @param input.limit — max results (default: 50)
|
|
104
|
+
* @param input.offset — pagination offset (default: 0)
|
|
105
|
+
* @returns `{ status: 200, data: { tasks, total } }`
|
|
106
|
+
*/
|
|
43
107
|
async function listTasks(input) {
|
|
44
108
|
try {
|
|
45
109
|
const result = await taskService.listTasks(input);
|
|
@@ -49,6 +113,12 @@ async function listTasks(input) {
|
|
|
49
113
|
return { status: 500, error: err.message };
|
|
50
114
|
}
|
|
51
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Return aggregate process statistics.
|
|
118
|
+
*
|
|
119
|
+
* @param input.period — time window (`1h`, `24h`, `7d`, `30d`)
|
|
120
|
+
* @returns `{ status: 200, data: <process stats> }`
|
|
121
|
+
*/
|
|
52
122
|
async function getProcessStats(input) {
|
|
53
123
|
try {
|
|
54
124
|
const stats = await taskService.getProcessStats(input.period);
|
|
@@ -58,6 +128,16 @@ async function getProcessStats(input) {
|
|
|
58
128
|
return { status: 500, error: err.message };
|
|
59
129
|
}
|
|
60
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* List processes (grouped by origin_id) with optional filters.
|
|
133
|
+
*
|
|
134
|
+
* @param input.limit — max results (default: 50)
|
|
135
|
+
* @param input.offset — pagination offset
|
|
136
|
+
* @param input.workflow_type — filter by workflow type
|
|
137
|
+
* @param input.status — filter by status
|
|
138
|
+
* @param input.search — full-text search across process fields
|
|
139
|
+
* @returns `{ status: 200, data: { processes, total } }`
|
|
140
|
+
*/
|
|
61
141
|
async function listProcesses(input) {
|
|
62
142
|
try {
|
|
63
143
|
const result = await taskService.listProcesses(input);
|
|
@@ -67,6 +147,12 @@ async function listProcesses(input) {
|
|
|
67
147
|
return { status: 500, error: err.message };
|
|
68
148
|
}
|
|
69
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Get a single process with all its tasks and escalations.
|
|
152
|
+
*
|
|
153
|
+
* @param input.originId — root process origin ID
|
|
154
|
+
* @returns `{ status: 200, data: { origin_id, tasks, escalations } }`
|
|
155
|
+
*/
|
|
70
156
|
async function getProcess(input) {
|
|
71
157
|
try {
|
|
72
158
|
const [tasks, escalations] = await Promise.all([
|
|
@@ -82,6 +168,12 @@ async function getProcess(input) {
|
|
|
82
168
|
return { status: 500, error: err.message };
|
|
83
169
|
}
|
|
84
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* Get a single task by ID.
|
|
173
|
+
*
|
|
174
|
+
* @param input.id — task UUID
|
|
175
|
+
* @returns `{ status: 200, data: <task record> }` or 404
|
|
176
|
+
*/
|
|
85
177
|
async function getTask(input) {
|
|
86
178
|
try {
|
|
87
179
|
const task = await taskService.getTask(input.id);
|