@hotmeshio/long-tail 0.1.13 → 0.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. package/README.md +15 -0
  2. package/build/api/escalations/bulk.d.ts +78 -0
  3. package/build/api/escalations/bulk.js +279 -0
  4. package/build/api/escalations/claim.d.ts +30 -0
  5. package/build/api/escalations/claim.js +121 -0
  6. package/build/api/escalations/create.d.ts +29 -0
  7. package/build/api/escalations/create.js +101 -0
  8. package/build/api/escalations/helpers.d.ts +10 -0
  9. package/build/api/escalations/helpers.js +80 -0
  10. package/build/api/escalations/index.d.ts +6 -0
  11. package/build/api/escalations/index.js +26 -0
  12. package/build/api/escalations/list.d.ts +75 -0
  13. package/build/api/escalations/list.js +170 -0
  14. package/build/api/escalations/resolve.d.ts +18 -0
  15. package/build/api/escalations/resolve.js +243 -0
  16. package/build/api/escalations/single.d.ts +37 -0
  17. package/build/api/escalations/single.js +123 -0
  18. package/build/api/files.d.ts +16 -0
  19. package/build/api/files.js +61 -0
  20. package/build/api/knowledge.d.ts +36 -0
  21. package/build/api/knowledge.js +112 -0
  22. package/build/api/mcp/index.d.ts +2 -0
  23. package/build/api/mcp/index.js +16 -0
  24. package/build/api/{mcp.d.ts → mcp/servers.d.ts} +1 -33
  25. package/build/api/{mcp.js → mcp/servers.js} +4 -65
  26. package/build/api/mcp/tools.d.ts +33 -0
  27. package/build/api/mcp/tools.js +64 -0
  28. package/build/api/mcp-runs.d.ts +2 -0
  29. package/build/api/mcp-runs.js +2 -0
  30. package/build/api/settings.js +9 -1
  31. package/build/api/workflow-sets.d.ts +11 -0
  32. package/build/api/workflow-sets.js +62 -0
  33. package/build/api/workflows/config.d.ts +64 -0
  34. package/build/api/workflows/config.js +142 -0
  35. package/build/api/workflows/discovery.d.ts +29 -0
  36. package/build/api/workflows/discovery.js +153 -0
  37. package/build/api/workflows/index.d.ts +3 -0
  38. package/build/api/workflows/index.js +18 -0
  39. package/build/api/workflows/invocation.d.ts +67 -0
  40. package/build/api/workflows/invocation.js +188 -0
  41. package/build/api/yaml-workflows/cron.d.ts +39 -0
  42. package/build/api/yaml-workflows/cron.js +127 -0
  43. package/build/api/{yaml-workflows.d.ts → yaml-workflows/crud.d.ts} +22 -137
  44. package/build/api/{yaml-workflows.js → yaml-workflows/crud.js} +86 -358
  45. package/build/api/yaml-workflows/deploy.d.ts +71 -0
  46. package/build/api/yaml-workflows/deploy.js +223 -0
  47. package/build/api/yaml-workflows/helpers.d.ts +2 -0
  48. package/build/api/yaml-workflows/helpers.js +8 -0
  49. package/build/api/yaml-workflows/index.d.ts +4 -0
  50. package/build/api/yaml-workflows/index.js +27 -0
  51. package/build/api/yaml-workflows/versions.d.ts +43 -0
  52. package/build/api/yaml-workflows/versions.js +124 -0
  53. package/build/bin/ltc.d.ts +2 -0
  54. package/build/bin/ltc.js +220 -0
  55. package/build/examples/seed-data.d.ts +55 -0
  56. package/build/examples/seed-data.js +161 -0
  57. package/build/examples/seed.js +7 -164
  58. package/build/lib/cli/auth.d.ts +23 -0
  59. package/build/lib/cli/auth.js +167 -0
  60. package/build/lib/cli/client.d.ts +6 -0
  61. package/build/lib/cli/client.js +31 -0
  62. package/build/lib/cli/commands/escalations.d.ts +19 -0
  63. package/build/lib/cli/commands/escalations.js +69 -0
  64. package/build/lib/cli/commands/knowledge.d.ts +18 -0
  65. package/build/lib/cli/commands/knowledge.js +87 -0
  66. package/build/lib/cli/commands/mcp.d.ts +8 -0
  67. package/build/lib/cli/commands/mcp.js +33 -0
  68. package/build/lib/cli/commands/pipelines.d.ts +16 -0
  69. package/build/lib/cli/commands/pipelines.js +67 -0
  70. package/build/lib/cli/commands/status.d.ts +1 -0
  71. package/build/lib/cli/commands/status.js +28 -0
  72. package/build/lib/cli/commands/users.d.ts +7 -0
  73. package/build/lib/cli/commands/users.js +25 -0
  74. package/build/lib/cli/commands/workflows.d.ts +16 -0
  75. package/build/lib/cli/commands/workflows.js +104 -0
  76. package/build/lib/cli/compile.d.ts +2 -0
  77. package/build/lib/cli/compile.js +165 -0
  78. package/build/lib/cli/format.d.ts +23 -0
  79. package/build/lib/cli/format.js +94 -0
  80. package/build/lib/cli/init.d.ts +1 -0
  81. package/build/lib/cli/init.js +61 -0
  82. package/build/lib/cli/output.d.ts +27 -0
  83. package/build/lib/cli/output.js +126 -0
  84. package/build/lib/cli/scanner.d.ts +10 -0
  85. package/build/lib/cli/scanner.js +164 -0
  86. package/build/lib/cli/types.d.ts +16 -0
  87. package/build/lib/cli/types.js +2 -0
  88. package/build/lib/logger/index.d.ts +0 -9
  89. package/build/lib/logger/index.js +9 -4
  90. package/build/lib/storage/index.js +2 -2
  91. package/build/lib/storage/local.d.ts +15 -0
  92. package/build/lib/storage/local.js +63 -0
  93. package/build/lib/storage/mime.d.ts +4 -0
  94. package/build/lib/storage/mime.js +31 -0
  95. package/build/lib/storage/s3.d.ts +16 -0
  96. package/build/lib/storage/s3.js +70 -0
  97. package/build/lib/storage/types.d.ts +18 -0
  98. package/build/modules/utils.d.ts +73 -0
  99. package/build/modules/utils.js +84 -0
  100. package/build/routes/file-browser.d.ts +2 -0
  101. package/build/routes/file-browser.js +126 -0
  102. package/build/routes/files.js +25 -17
  103. package/build/routes/index.js +4 -0
  104. package/build/routes/knowledge.d.ts +2 -0
  105. package/build/routes/knowledge.js +141 -0
  106. package/build/routes/mcp-runs.js +2 -0
  107. package/build/routes/workflow-sets.js +9 -0
  108. package/build/routes/yaml-workflows/crud.js +9 -0
  109. package/build/routes/yaml-workflows/deployment.js +8 -0
  110. package/build/sdk/index.d.ts +17 -0
  111. package/build/sdk/index.js +19 -0
  112. package/build/services/insight/index.d.ts +13 -0
  113. package/build/services/insight/index.js +4 -7
  114. package/build/services/insight/prompts.d.ts +1 -1
  115. package/build/services/insight/prompts.js +1 -1
  116. package/build/services/mcp/client/connection-dispatch.d.ts +18 -0
  117. package/build/services/mcp/client/connection-dispatch.js +78 -0
  118. package/build/services/mcp/client/connection-lifecycle.d.ts +48 -0
  119. package/build/services/mcp/client/connection-lifecycle.js +296 -0
  120. package/build/services/mcp/client/connection-test.d.ts +10 -0
  121. package/build/services/mcp/client/connection-test.js +49 -0
  122. package/build/services/mcp/client/connection.d.ts +3 -68
  123. package/build/services/mcp/client/connection.js +15 -393
  124. package/build/services/mcp/server-lifecycle.d.ts +27 -0
  125. package/build/services/mcp/server-lifecycle.js +49 -0
  126. package/build/services/mcp/server-tools.d.ts +13 -0
  127. package/build/services/mcp/server-tools.js +287 -0
  128. package/build/services/mcp/server.d.ts +2 -26
  129. package/build/services/mcp/server.js +7 -315
  130. package/build/services/mcp-runs/queries.d.ts +2 -0
  131. package/build/services/mcp-runs/queries.js +11 -1
  132. package/build/services/mcp-runs/sql.d.ts +1 -1
  133. package/build/services/mcp-runs/sql.js +2 -2
  134. package/build/services/workflow-sets/db.d.ts +1 -0
  135. package/build/services/workflow-sets/db.js +6 -0
  136. package/build/services/workflow-sets/index.d.ts +1 -1
  137. package/build/services/workflow-sets/index.js +2 -1
  138. package/build/services/workflow-sets/sql.d.ts +1 -0
  139. package/build/services/workflow-sets/sql.js +6 -1
  140. package/build/services/yaml-workflow/builder-regenerate.d.ts +25 -0
  141. package/build/services/yaml-workflow/builder-regenerate.js +111 -0
  142. package/build/services/yaml-workflow/db-versions.d.ts +17 -0
  143. package/build/services/yaml-workflow/db-versions.js +76 -0
  144. package/build/services/yaml-workflow/db.d.ts +14 -12
  145. package/build/services/yaml-workflow/db.js +32 -70
  146. package/build/services/yaml-workflow/deployer-helpers.js +48 -17
  147. package/build/services/yaml-workflow/durable-compiler/index.d.ts +22 -0
  148. package/build/services/yaml-workflow/durable-compiler/index.js +168 -0
  149. package/build/services/yaml-workflow/durable-compiler/parser.d.ts +12 -0
  150. package/build/services/yaml-workflow/durable-compiler/parser.js +110 -0
  151. package/build/services/yaml-workflow/durable-compiler/prompts.d.ts +18 -0
  152. package/build/services/yaml-workflow/durable-compiler/prompts.js +570 -0
  153. package/build/services/yaml-workflow/durable-compiler/types.d.ts +51 -0
  154. package/build/services/yaml-workflow/durable-compiler/types.js +5 -0
  155. package/build/services/yaml-workflow/generator.js +4 -4
  156. package/build/services/yaml-workflow/pipeline/build/dag-assembly.d.ts +17 -0
  157. package/build/services/yaml-workflow/pipeline/build/dag-assembly.js +192 -0
  158. package/build/services/yaml-workflow/pipeline/build/dag.d.ts +4 -13
  159. package/build/services/yaml-workflow/pipeline/build/dag.js +9 -185
  160. package/build/services/yaml-workflow/pipeline/build/index.d.ts +2 -1
  161. package/build/services/yaml-workflow/pipeline/build/index.js +3 -2
  162. package/build/services/yaml-workflow/pipeline/build/utils.d.ts +0 -2
  163. package/build/services/yaml-workflow/pipeline/build/utils.js +0 -8
  164. package/build/services/yaml-workflow/pipeline/prompt-templates.d.ts +10 -0
  165. package/build/services/yaml-workflow/pipeline/prompt-templates.js +270 -0
  166. package/build/services/yaml-workflow/pipeline/prompts.d.ts +3 -6
  167. package/build/services/yaml-workflow/pipeline/prompts.js +8 -263
  168. package/build/services/yaml-workflow/sql.d.ts +2 -1
  169. package/build/services/yaml-workflow/sql.js +10 -3
  170. package/build/start/workers.js +6 -5
  171. package/build/system/activities/file-storage.d.ts +4 -0
  172. package/build/system/activities/file-storage.js +7 -1
  173. package/build/system/activities/knowledge.d.ts +23 -0
  174. package/build/system/activities/knowledge.js +50 -10
  175. package/build/system/activities/schema-exchange.d.ts +50 -0
  176. package/build/system/activities/schema-exchange.js +210 -0
  177. package/build/system/activities/sql.d.ts +4 -1
  178. package/build/system/activities/sql.js +37 -2
  179. package/build/system/index.js +1 -0
  180. package/build/system/mcp-servers/file-storage.js +3 -1
  181. package/build/system/mcp-servers/human-queue-schemas.d.ts +91 -0
  182. package/build/system/mcp-servers/human-queue-schemas.js +42 -0
  183. package/build/system/mcp-servers/human-queue.d.ts +2 -6
  184. package/build/system/mcp-servers/human-queue.js +9 -51
  185. package/build/system/mcp-servers/knowledge.js +69 -6
  186. package/build/system/mcp-servers/schema-exchange.d.ts +4 -0
  187. package/build/system/mcp-servers/schema-exchange.js +93 -0
  188. package/build/system/mcp-servers/workflow-compiler.js +54 -0
  189. package/build/system/seed/server-definitions.d.ts +112 -1
  190. package/build/system/seed/server-definitions.js +37 -0
  191. package/build/system/seed/tool-manifests-data.d.ts +87 -0
  192. package/build/system/seed/tool-manifests-data.js +37 -1
  193. package/build/system/seed/tool-manifests-knowledge.d.ts +9 -1
  194. package/build/system/seed/tool-manifests-knowledge.js +6 -5
  195. package/build/system/workflows/mcp-triage/activities-proxy.d.ts +21 -0
  196. package/build/system/workflows/mcp-triage/activities-proxy.js +70 -0
  197. package/build/system/workflows/mcp-triage/index.js +17 -75
  198. package/build/system/workflows/mcp-workflow-builder/prompts.d.ts +1 -1
  199. package/build/system/workflows/mcp-workflow-builder/prompts.js +21 -20
  200. package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +2 -1
  201. package/build/system/workflows/mcp-workflow-planner/activities/persist.js +4 -3
  202. package/build/system/workflows/mcp-workflow-planner/index.js +41 -5
  203. package/build/system/workflows/mcp-workflow-planner/prompts.d.ts +1 -1
  204. package/build/system/workflows/mcp-workflow-planner/prompts.js +3 -3
  205. package/build/tsconfig.tsbuildinfo +1 -1
  206. package/dashboard/dist/assets/{AdminDashboard-DUrSBQOl.js → AdminDashboard-NLryl1_B.js} +2 -2
  207. package/dashboard/dist/assets/{AdminDashboard-DUrSBQOl.js.map → AdminDashboard-NLryl1_B.js.map} +1 -1
  208. package/dashboard/dist/assets/AvailableEscalationsPage-6vexlrk3.js +2 -0
  209. package/dashboard/dist/assets/AvailableEscalationsPage-6vexlrk3.js.map +1 -0
  210. package/dashboard/dist/assets/{BotPicker-Cg5iNEkm.js → BotPicker-DWhn0tr1.js} +2 -2
  211. package/dashboard/dist/assets/{BotPicker-Cg5iNEkm.js.map → BotPicker-DWhn0tr1.js.map} +1 -1
  212. package/dashboard/dist/assets/{CollapsibleSection-Kd9UIyeU.js → CollapsibleSection-CgYgQiOc.js} +2 -2
  213. package/dashboard/dist/assets/{CollapsibleSection-Kd9UIyeU.js.map → CollapsibleSection-CgYgQiOc.js.map} +1 -1
  214. package/dashboard/dist/assets/{ConfirmDeleteModal-DZMgmlof.js → ConfirmDeleteModal-DCKAPXD3.js} +2 -2
  215. package/dashboard/dist/assets/{ConfirmDeleteModal-DZMgmlof.js.map → ConfirmDeleteModal-DCKAPXD3.js.map} +1 -1
  216. package/dashboard/dist/assets/{CopyableId-cPFTRm8q.js → CopyableId-DXkaAOYk.js} +2 -2
  217. package/dashboard/dist/assets/{CopyableId-cPFTRm8q.js.map → CopyableId-DXkaAOYk.js.map} +1 -1
  218. package/dashboard/dist/assets/CredentialsPage-B361BOfU.js +2 -0
  219. package/dashboard/dist/assets/{CredentialsPage-DJablIbs.js.map → CredentialsPage-B361BOfU.js.map} +1 -1
  220. package/dashboard/dist/assets/{CustomDurationPicker-NgIP6YDW.js → CustomDurationPicker-D2G1ldiF.js} +2 -2
  221. package/dashboard/dist/assets/{CustomDurationPicker-NgIP6YDW.js.map → CustomDurationPicker-D2G1ldiF.js.map} +1 -1
  222. package/dashboard/dist/assets/{DataTable-CTRhTAfT.js → DataTable-DXSUbA26.js} +2 -2
  223. package/dashboard/dist/assets/{DataTable-CTRhTAfT.js.map → DataTable-DXSUbA26.js.map} +1 -1
  224. package/dashboard/dist/assets/{ElapsedCell-HcSJ_MMs.js → ElapsedCell-CQGqkXP_.js} +2 -2
  225. package/dashboard/dist/assets/{ElapsedCell-HcSJ_MMs.js.map → ElapsedCell-CQGqkXP_.js.map} +1 -1
  226. package/dashboard/dist/assets/{EmptyState-joNbd4gg.js → EmptyState-Dep92Wkg.js} +2 -2
  227. package/dashboard/dist/assets/{EmptyState-joNbd4gg.js.map → EmptyState-Dep92Wkg.js.map} +1 -1
  228. package/dashboard/dist/assets/{EscalationsOverview-DpXDnQux.js → EscalationsOverview-DVEFVjs7.js} +2 -2
  229. package/dashboard/dist/assets/{EscalationsOverview-DpXDnQux.js.map → EscalationsOverview-DVEFVjs7.js.map} +1 -1
  230. package/dashboard/dist/assets/{EventTable-CYem3v8n.js → EventTable-BMJAPkMi.js} +2 -2
  231. package/dashboard/dist/assets/{EventTable-CYem3v8n.js.map → EventTable-BMJAPkMi.js.map} +1 -1
  232. package/dashboard/dist/assets/{FilterBar-BiO8SOzc.js → FilterBar-DbVbCzH2.js} +2 -2
  233. package/dashboard/dist/assets/{FilterBar-BiO8SOzc.js.map → FilterBar-DbVbCzH2.js.map} +1 -1
  234. package/dashboard/dist/assets/{ListToolbar-6yRDh2e9.js → ListToolbar-0XNuXj0M.js} +2 -2
  235. package/dashboard/dist/assets/{ListToolbar-6yRDh2e9.js.map → ListToolbar-0XNuXj0M.js.map} +1 -1
  236. package/dashboard/dist/assets/{McpOverview-CUgSxkQe.js → McpOverview-CeYnCzBN.js} +2 -2
  237. package/dashboard/dist/assets/{McpOverview-CUgSxkQe.js.map → McpOverview-CeYnCzBN.js.map} +1 -1
  238. package/dashboard/dist/assets/McpQueryDetailPage-t3qW3QNa.js +5 -0
  239. package/dashboard/dist/assets/McpQueryDetailPage-t3qW3QNa.js.map +1 -0
  240. package/dashboard/dist/assets/McpQueryPage-CfUcdzaj.js +2 -0
  241. package/dashboard/dist/assets/{McpQueryPage-lV6kfDG5.js.map → McpQueryPage-CfUcdzaj.js.map} +1 -1
  242. package/dashboard/dist/assets/McpRunDetailPage-CZtodW_Z.js +2 -0
  243. package/dashboard/dist/assets/McpRunDetailPage-CZtodW_Z.js.map +1 -0
  244. package/dashboard/dist/assets/McpRunsPage-Dzgq7HGt.js +2 -0
  245. package/dashboard/dist/assets/McpRunsPage-Dzgq7HGt.js.map +1 -0
  246. package/dashboard/dist/assets/{Modal-BuTvD0pz.js → Modal-yyhUeKoA.js} +2 -2
  247. package/dashboard/dist/assets/{Modal-BuTvD0pz.js.map → Modal-yyhUeKoA.js.map} +1 -1
  248. package/dashboard/dist/assets/OperatorDashboard-Ceh7OQtZ.js +2 -0
  249. package/dashboard/dist/assets/{OperatorDashboard-C9SSV96T.js.map → OperatorDashboard-Ceh7OQtZ.js.map} +1 -1
  250. package/dashboard/dist/assets/{PageHeader-BcTVF9ul.js → PageHeader-CZ9a8cpr.js} +2 -2
  251. package/dashboard/dist/assets/{PageHeader-BcTVF9ul.js.map → PageHeader-CZ9a8cpr.js.map} +1 -1
  252. package/dashboard/dist/assets/{PageHeaderWithStats-BI7JG5x6.js → PageHeaderWithStats-BJuNs5NM.js} +2 -2
  253. package/dashboard/dist/assets/{PageHeaderWithStats-BI7JG5x6.js.map → PageHeaderWithStats-BJuNs5NM.js.map} +1 -1
  254. package/dashboard/dist/assets/{PriorityBadge-DqVaOU65.js → PriorityBadge-BrPikMFy.js} +2 -2
  255. package/dashboard/dist/assets/{PriorityBadge-DqVaOU65.js.map → PriorityBadge-BrPikMFy.js.map} +1 -1
  256. package/dashboard/dist/assets/{ProcessDetailPage-hFMhf9qa.js → ProcessDetailPage-2miaYd8G.js} +2 -2
  257. package/dashboard/dist/assets/{ProcessDetailPage-hFMhf9qa.js.map → ProcessDetailPage-2miaYd8G.js.map} +1 -1
  258. package/dashboard/dist/assets/{ProcessesListPage-ByVoBCQ3.js → ProcessesListPage-DqpRDqjk.js} +2 -2
  259. package/dashboard/dist/assets/{ProcessesListPage-ByVoBCQ3.js.map → ProcessesListPage-DqpRDqjk.js.map} +1 -1
  260. package/dashboard/dist/assets/{RolePill-D9ZIkYiu.js → RolePill-DxbJMfJu.js} +2 -2
  261. package/dashboard/dist/assets/{RolePill-D9ZIkYiu.js.map → RolePill-DxbJMfJu.js.map} +1 -1
  262. package/dashboard/dist/assets/{RolesPage-SMedMuqa.js → RolesPage-CYHRo21-.js} +2 -2
  263. package/dashboard/dist/assets/{RolesPage-SMedMuqa.js.map → RolesPage-CYHRo21-.js.map} +1 -1
  264. package/dashboard/dist/assets/{RowActions-yDhwwDbU.js → RowActions-DurFwIwe.js} +2 -2
  265. package/dashboard/dist/assets/{RowActions-yDhwwDbU.js.map → RowActions-DurFwIwe.js.map} +1 -1
  266. package/dashboard/dist/assets/RunAsSelector-CNKraP6u.js +2 -0
  267. package/dashboard/dist/assets/RunAsSelector-CNKraP6u.js.map +1 -0
  268. package/dashboard/dist/assets/{StatCard-BrBnQFxh.js → StatCard-CKplpK3w.js} +2 -2
  269. package/dashboard/dist/assets/{StatCard-BrBnQFxh.js.map → StatCard-CKplpK3w.js.map} +1 -1
  270. package/dashboard/dist/assets/{StatusBadge-xgb-lZku.js → StatusBadge-Dm0V1dNN.js} +2 -2
  271. package/dashboard/dist/assets/{StatusBadge-xgb-lZku.js.map → StatusBadge-Dm0V1dNN.js.map} +1 -1
  272. package/dashboard/dist/assets/{StepIndicator-B9ps2SvM.js → StepIndicator-Dicx0WTZ.js} +2 -2
  273. package/dashboard/dist/assets/{StepIndicator-B9ps2SvM.js.map → StepIndicator-Dicx0WTZ.js.map} +1 -1
  274. package/dashboard/dist/assets/{StickyPagination-DTIjBKN3.js → StickyPagination-B2jYvU3-.js} +2 -2
  275. package/dashboard/dist/assets/{StickyPagination-DTIjBKN3.js.map → StickyPagination-B2jYvU3-.js.map} +1 -1
  276. package/dashboard/dist/assets/SwimlaneTimeline-ClwumkT1.js +2 -0
  277. package/dashboard/dist/assets/SwimlaneTimeline-ClwumkT1.js.map +1 -0
  278. package/dashboard/dist/assets/{TagInput-CdNUuqk4.js → TagInput-CypDZ6Kl.js} +2 -2
  279. package/dashboard/dist/assets/{TagInput-CdNUuqk4.js.map → TagInput-CypDZ6Kl.js.map} +1 -1
  280. package/dashboard/dist/assets/{TaskDetailPage-C-nzaNea.js → TaskDetailPage-DooDNJGT.js} +2 -2
  281. package/dashboard/dist/assets/{TaskDetailPage-C-nzaNea.js.map → TaskDetailPage-DooDNJGT.js.map} +1 -1
  282. package/dashboard/dist/assets/{TaskQueuePill-Lvr2-NzS.js → TaskQueuePill-C1hZ-j31.js} +2 -2
  283. package/dashboard/dist/assets/{TaskQueuePill-Lvr2-NzS.js.map → TaskQueuePill-C1hZ-j31.js.map} +1 -1
  284. package/dashboard/dist/assets/{TasksListPage-DSUmD84y.js → TasksListPage-D7CdkAeg.js} +2 -2
  285. package/dashboard/dist/assets/{TasksListPage-DSUmD84y.js.map → TasksListPage-D7CdkAeg.js.map} +1 -1
  286. package/dashboard/dist/assets/{TimeAgo-BZdLdrIh.js → TimeAgo-B5LXB2aj.js} +2 -2
  287. package/dashboard/dist/assets/{TimeAgo-BZdLdrIh.js.map → TimeAgo-B5LXB2aj.js.map} +1 -1
  288. package/dashboard/dist/assets/{TimestampCell-QX_0i5FK.js → TimestampCell-Crb9b0Gw.js} +2 -2
  289. package/dashboard/dist/assets/{TimestampCell-QX_0i5FK.js.map → TimestampCell-Crb9b0Gw.js.map} +1 -1
  290. package/dashboard/dist/assets/{UserName-DyZMXcBm.js → UserName-OPg-nkRa.js} +2 -2
  291. package/dashboard/dist/assets/{UserName-DyZMXcBm.js.map → UserName-OPg-nkRa.js.map} +1 -1
  292. package/dashboard/dist/assets/{WorkflowExecutionPage-DjVxfZaF.js → WorkflowExecutionPage-CcLVrs9b.js} +2 -2
  293. package/dashboard/dist/assets/{WorkflowExecutionPage-DjVxfZaF.js.map → WorkflowExecutionPage-CcLVrs9b.js.map} +1 -1
  294. package/dashboard/dist/assets/WorkflowPill-CCV4MMj7.js +2 -0
  295. package/dashboard/dist/assets/WorkflowPill-CCV4MMj7.js.map +1 -0
  296. package/dashboard/dist/assets/{WorkflowsDashboard-DZjuiFZ0.js → WorkflowsDashboard-DB1SncBi.js} +2 -2
  297. package/dashboard/dist/assets/{WorkflowsDashboard-DZjuiFZ0.js.map → WorkflowsDashboard-DB1SncBi.js.map} +1 -1
  298. package/dashboard/dist/assets/{WorkflowsOverview-CLnLRpOu.js → WorkflowsOverview-DvShiYJV.js} +2 -2
  299. package/dashboard/dist/assets/{WorkflowsOverview-CLnLRpOu.js.map → WorkflowsOverview-DvShiYJV.js.map} +1 -1
  300. package/dashboard/dist/assets/YamlWorkflowsPage-DCBoMeGI.js +2 -0
  301. package/dashboard/dist/assets/YamlWorkflowsPage-DCBoMeGI.js.map +1 -0
  302. package/dashboard/dist/assets/{bots-DIM6lBoY.js → bots-Dqos20NE.js} +2 -2
  303. package/dashboard/dist/assets/{bots-DIM6lBoY.js.map → bots-Dqos20NE.js.map} +1 -1
  304. package/dashboard/dist/assets/{escalation-JOTuOqjq.js → escalation-A0CsbvNV.js} +2 -2
  305. package/dashboard/dist/assets/{escalation-JOTuOqjq.js.map → escalation-A0CsbvNV.js.map} +1 -1
  306. package/dashboard/dist/assets/escalation-columns-BpBJN6k4.js +2 -0
  307. package/dashboard/dist/assets/{escalation-columns-Cyg58nkg.js.map → escalation-columns-BpBJN6k4.js.map} +1 -1
  308. package/dashboard/dist/assets/{helpers-B1BDxBZd.js → helpers-CmznCuAx.js} +2 -2
  309. package/dashboard/dist/assets/{helpers-B1BDxBZd.js.map → helpers-CmznCuAx.js.map} +1 -1
  310. package/dashboard/dist/assets/index-BIeYV5QK.js +2 -0
  311. package/dashboard/dist/assets/index-BIeYV5QK.js.map +1 -0
  312. package/dashboard/dist/assets/index-BYwD3kHN.js +5 -0
  313. package/dashboard/dist/assets/index-BYwD3kHN.js.map +1 -0
  314. package/dashboard/dist/assets/index-C5TUqJu0.css +1 -0
  315. package/dashboard/dist/assets/index-C8-UaN4N.js +2 -0
  316. package/dashboard/dist/assets/{index-Cg5nfiYX.js.map → index-C8-UaN4N.js.map} +1 -1
  317. package/dashboard/dist/assets/index-CAj5LT9H.js +15 -0
  318. package/dashboard/dist/assets/index-CAj5LT9H.js.map +1 -0
  319. package/dashboard/dist/assets/index-CjxHCVxl.js +2 -0
  320. package/dashboard/dist/assets/{index-Cf60K3x9.js.map → index-CjxHCVxl.js.map} +1 -1
  321. package/dashboard/dist/assets/index-Cr0Rqsj7.js +2 -0
  322. package/dashboard/dist/assets/index-Cr0Rqsj7.js.map +1 -0
  323. package/dashboard/dist/assets/index-DZHNte4o.js +2 -0
  324. package/dashboard/dist/assets/{index-Di12t56M.js.map → index-DZHNte4o.js.map} +1 -1
  325. package/dashboard/dist/assets/{index-Ds0JoXS2.js → index-VnYkWW8r.js} +2 -2
  326. package/dashboard/dist/assets/{index-Ds0JoXS2.js.map → index-VnYkWW8r.js.map} +1 -1
  327. package/dashboard/dist/assets/{index-BcR6PfpY.js → index-XGOmZ117.js} +2 -2
  328. package/dashboard/dist/assets/{index-BcR6PfpY.js.map → index-XGOmZ117.js.map} +1 -1
  329. package/dashboard/dist/assets/index-ZjOUzWhc.js +2 -0
  330. package/dashboard/dist/assets/index-ZjOUzWhc.js.map +1 -0
  331. package/dashboard/dist/assets/{index-BYZX9tOb.js → index-puKKZ5l8.js} +77 -77
  332. package/dashboard/dist/assets/index-puKKZ5l8.js.map +1 -0
  333. package/dashboard/dist/assets/{index-BizfauqT.js → index-t5frSddy.js} +4 -4
  334. package/dashboard/dist/assets/{index-BizfauqT.js.map → index-t5frSddy.js.map} +1 -1
  335. package/dashboard/dist/assets/{mcp-B_xbczAt.js → mcp-DrWymhSu.js} +2 -2
  336. package/dashboard/dist/assets/{mcp-B_xbczAt.js.map → mcp-DrWymhSu.js.map} +1 -1
  337. package/dashboard/dist/assets/mcp-query-BhUxVEMS.js +2 -0
  338. package/dashboard/dist/assets/mcp-query-BhUxVEMS.js.map +1 -0
  339. package/dashboard/dist/assets/mcp-runs-DUfz4mLd.js +2 -0
  340. package/dashboard/dist/assets/mcp-runs-DUfz4mLd.js.map +1 -0
  341. package/dashboard/dist/assets/{namespaces-C3WtdO_9.js → namespaces-Cm6AY5sh.js} +2 -2
  342. package/dashboard/dist/assets/{namespaces-C3WtdO_9.js.map → namespaces-Cm6AY5sh.js.map} +1 -1
  343. package/dashboard/dist/assets/{roles-BDAsPpZG.js → roles-2v1Kc7BJ.js} +2 -2
  344. package/dashboard/dist/assets/{roles-BDAsPpZG.js.map → roles-2v1Kc7BJ.js.map} +1 -1
  345. package/dashboard/dist/assets/{settings-Ife_UwAp.js → settings-DTQNp6tH.js} +2 -2
  346. package/dashboard/dist/assets/{settings-Ife_UwAp.js.map → settings-DTQNp6tH.js.map} +1 -1
  347. package/dashboard/dist/assets/{tasks-BquNDHDI.js → tasks-CS1rgG1s.js} +2 -2
  348. package/dashboard/dist/assets/{tasks-BquNDHDI.js.map → tasks-CS1rgG1s.js.map} +1 -1
  349. package/dashboard/dist/assets/useEventHooks-BjXX8x3a.js +2 -0
  350. package/dashboard/dist/assets/{useEventHooks-anv_B2Yy.js.map → useEventHooks-BjXX8x3a.js.map} +1 -1
  351. package/dashboard/dist/assets/useFilterParams-CGRYFw_A.js +2 -0
  352. package/dashboard/dist/assets/useFilterParams-CGRYFw_A.js.map +1 -0
  353. package/dashboard/dist/assets/useYamlActivityEvents-BeR-nVWQ.js +2 -0
  354. package/dashboard/dist/assets/useYamlActivityEvents-BeR-nVWQ.js.map +1 -0
  355. package/dashboard/dist/assets/{users-CFcxB4v6.js → users-DYsdQ7Md.js} +2 -2
  356. package/dashboard/dist/assets/{users-CFcxB4v6.js.map → users-DYsdQ7Md.js.map} +1 -1
  357. package/dashboard/dist/assets/{vendor-icons-T4r2DSPD.js → vendor-icons-CWl44VA6.js} +132 -82
  358. package/dashboard/dist/assets/vendor-icons-CWl44VA6.js.map +1 -0
  359. package/dashboard/dist/assets/{workflows-CeRci9z3.js → workflows-2QAXh3UD.js} +2 -2
  360. package/dashboard/dist/assets/{workflows-CeRci9z3.js.map → workflows-2QAXh3UD.js.map} +1 -1
  361. package/dashboard/dist/assets/yaml-workflows-sx8-UEE3.js +2 -0
  362. package/dashboard/dist/assets/yaml-workflows-sx8-UEE3.js.map +1 -0
  363. package/dashboard/dist/index.html +3 -3
  364. package/docs/api/http/file-browser.md +101 -0
  365. package/docs/api/http/knowledge.md +203 -0
  366. package/docs/api/http/settings.md +6 -4
  367. package/docs/api/sdk/files.md +68 -0
  368. package/docs/api/sdk/knowledge.md +126 -0
  369. package/docs/api/sdk/settings.md +3 -2
  370. package/docs/cli.md +171 -0
  371. package/docs/compilation.md +16 -0
  372. package/docs/compiler.md +311 -0
  373. package/docs/events.md +19 -0
  374. package/docs/schema-exchange.md +173 -0
  375. package/docs/self-test.md +106 -0
  376. package/docs/workflows.md +19 -0
  377. package/package.json +15 -2
  378. package/build/api/escalations.d.ts +0 -271
  379. package/build/api/escalations.js +0 -932
  380. package/build/api/workflows.d.ts +0 -158
  381. package/build/api/workflows.js +0 -414
  382. package/dashboard/dist/assets/AvailableEscalationsPage-Dbd1qUK_.js +0 -2
  383. package/dashboard/dist/assets/AvailableEscalationsPage-Dbd1qUK_.js.map +0 -1
  384. package/dashboard/dist/assets/CredentialsPage-DJablIbs.js +0 -2
  385. package/dashboard/dist/assets/McpQueryDetailPage-BWbinTM_.js +0 -5
  386. package/dashboard/dist/assets/McpQueryDetailPage-BWbinTM_.js.map +0 -1
  387. package/dashboard/dist/assets/McpQueryPage-lV6kfDG5.js +0 -2
  388. package/dashboard/dist/assets/McpRunDetailPage-D6gaxH3_.js +0 -2
  389. package/dashboard/dist/assets/McpRunDetailPage-D6gaxH3_.js.map +0 -1
  390. package/dashboard/dist/assets/McpRunsPage-DKvTklh9.js +0 -2
  391. package/dashboard/dist/assets/McpRunsPage-DKvTklh9.js.map +0 -1
  392. package/dashboard/dist/assets/OperatorDashboard-C9SSV96T.js +0 -2
  393. package/dashboard/dist/assets/SwimlaneTimeline-RK4Yu66z.js +0 -2
  394. package/dashboard/dist/assets/SwimlaneTimeline-RK4Yu66z.js.map +0 -1
  395. package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js +0 -2
  396. package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js.map +0 -1
  397. package/dashboard/dist/assets/YamlWorkflowsPage-VjdhnLmO.js +0 -2
  398. package/dashboard/dist/assets/YamlWorkflowsPage-VjdhnLmO.js.map +0 -1
  399. package/dashboard/dist/assets/escalation-columns-Cyg58nkg.js +0 -2
  400. package/dashboard/dist/assets/helpers-BCix9c_m.js +0 -2
  401. package/dashboard/dist/assets/helpers-BCix9c_m.js.map +0 -1
  402. package/dashboard/dist/assets/index-BUK3qR-1.js +0 -2
  403. package/dashboard/dist/assets/index-BUK3qR-1.js.map +0 -1
  404. package/dashboard/dist/assets/index-BYZX9tOb.js.map +0 -1
  405. package/dashboard/dist/assets/index-Cf60K3x9.js +0 -2
  406. package/dashboard/dist/assets/index-Cg5nfiYX.js +0 -2
  407. package/dashboard/dist/assets/index-D1wVX50Z.js +0 -15
  408. package/dashboard/dist/assets/index-D1wVX50Z.js.map +0 -1
  409. package/dashboard/dist/assets/index-DDYFpi4l.js +0 -5
  410. package/dashboard/dist/assets/index-DDYFpi4l.js.map +0 -1
  411. package/dashboard/dist/assets/index-DcIKW-cZ.css +0 -1
  412. package/dashboard/dist/assets/index-Di12t56M.js +0 -2
  413. package/dashboard/dist/assets/mcp-query-B8-P_QoG.js +0 -2
  414. package/dashboard/dist/assets/mcp-query-B8-P_QoG.js.map +0 -1
  415. package/dashboard/dist/assets/mcp-runs-CWeZinoF.js +0 -2
  416. package/dashboard/dist/assets/mcp-runs-CWeZinoF.js.map +0 -1
  417. package/dashboard/dist/assets/useEventHooks-anv_B2Yy.js +0 -2
  418. package/dashboard/dist/assets/useFilterParams-BUyLHcx_.js +0 -2
  419. package/dashboard/dist/assets/useFilterParams-BUyLHcx_.js.map +0 -1
  420. package/dashboard/dist/assets/useYamlActivityEvents-DN-PTgVx.js +0 -2
  421. package/dashboard/dist/assets/useYamlActivityEvents-DN-PTgVx.js.map +0 -1
  422. package/dashboard/dist/assets/vendor-icons-T4r2DSPD.js.map +0 -1
  423. package/dashboard/dist/assets/yaml-workflows-DLwd2BOX.js +0 -2
  424. package/dashboard/dist/assets/yaml-workflows-DLwd2BOX.js.map +0 -1
@@ -0,0 +1,80 @@
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.getVisibleRoles = getVisibleRoles;
37
+ exports.validateIds = validateIds;
38
+ exports.checkBulkPermission = checkBulkPermission;
39
+ exports.publishBulkClaimEvents = publishBulkClaimEvents;
40
+ const escalationService = __importStar(require("../../services/escalation"));
41
+ const userService = __importStar(require("../../services/user"));
42
+ const publish_1 = require("../../lib/events/publish");
43
+ // ── Private helpers ────────────────────────────────────────────────────────
44
+ async function getVisibleRoles(userId) {
45
+ const isSuperAdminUser = await userService.isSuperAdmin(userId);
46
+ if (isSuperAdminUser)
47
+ return undefined;
48
+ const userRoles = await userService.getUserRoles(userId);
49
+ return userRoles.map((r) => r.role);
50
+ }
51
+ function validateIds(ids) {
52
+ return Array.isArray(ids) && ids.length > 0;
53
+ }
54
+ async function checkBulkPermission(userId, ids) {
55
+ const isSuperAdminUser = await userService.isSuperAdmin(userId);
56
+ if (isSuperAdminUser)
57
+ return { allowed: true };
58
+ const roles = await escalationService.getEscalationRoles(ids);
59
+ for (const role of roles) {
60
+ const canManage = await userService.isGroupAdmin(userId, role);
61
+ if (!canManage) {
62
+ return { allowed: false, status: 403, error: `Insufficient permissions for role "${role}"` };
63
+ }
64
+ }
65
+ return { allowed: true };
66
+ }
67
+ function publishBulkClaimEvents(ids, assignedTo) {
68
+ for (const id of ids) {
69
+ (0, publish_1.publishEscalationEvent)({
70
+ type: 'escalation.claimed',
71
+ source: 'api',
72
+ workflowId: '',
73
+ workflowName: '',
74
+ taskQueue: '',
75
+ escalationId: id,
76
+ status: 'claimed',
77
+ data: { assigned_to: assignedTo, bulk: true },
78
+ });
79
+ }
80
+ }
@@ -0,0 +1,6 @@
1
+ export { createEscalation } from './create';
2
+ export { listEscalations, listAvailableEscalations, listDistinctTypes, getEscalationStats } from './list';
3
+ export { getEscalation, getEscalationsByWorkflowId, escalateToRole } from './single';
4
+ export { claimEscalation, releaseEscalation } from './claim';
5
+ export { releaseExpiredClaims, updatePriority, bulkClaim, bulkAssign, bulkEscalate, bulkTriage } from './bulk';
6
+ export { resolveEscalation } from './resolve';
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveEscalation = exports.bulkTriage = exports.bulkEscalate = exports.bulkAssign = exports.bulkClaim = exports.updatePriority = exports.releaseExpiredClaims = exports.releaseEscalation = exports.claimEscalation = exports.escalateToRole = exports.getEscalationsByWorkflowId = exports.getEscalation = exports.getEscalationStats = exports.listDistinctTypes = exports.listAvailableEscalations = exports.listEscalations = exports.createEscalation = void 0;
4
+ var create_1 = require("./create");
5
+ Object.defineProperty(exports, "createEscalation", { enumerable: true, get: function () { return create_1.createEscalation; } });
6
+ var list_1 = require("./list");
7
+ Object.defineProperty(exports, "listEscalations", { enumerable: true, get: function () { return list_1.listEscalations; } });
8
+ Object.defineProperty(exports, "listAvailableEscalations", { enumerable: true, get: function () { return list_1.listAvailableEscalations; } });
9
+ Object.defineProperty(exports, "listDistinctTypes", { enumerable: true, get: function () { return list_1.listDistinctTypes; } });
10
+ Object.defineProperty(exports, "getEscalationStats", { enumerable: true, get: function () { return list_1.getEscalationStats; } });
11
+ var single_1 = require("./single");
12
+ Object.defineProperty(exports, "getEscalation", { enumerable: true, get: function () { return single_1.getEscalation; } });
13
+ Object.defineProperty(exports, "getEscalationsByWorkflowId", { enumerable: true, get: function () { return single_1.getEscalationsByWorkflowId; } });
14
+ Object.defineProperty(exports, "escalateToRole", { enumerable: true, get: function () { return single_1.escalateToRole; } });
15
+ var claim_1 = require("./claim");
16
+ Object.defineProperty(exports, "claimEscalation", { enumerable: true, get: function () { return claim_1.claimEscalation; } });
17
+ Object.defineProperty(exports, "releaseEscalation", { enumerable: true, get: function () { return claim_1.releaseEscalation; } });
18
+ var bulk_1 = require("./bulk");
19
+ Object.defineProperty(exports, "releaseExpiredClaims", { enumerable: true, get: function () { return bulk_1.releaseExpiredClaims; } });
20
+ Object.defineProperty(exports, "updatePriority", { enumerable: true, get: function () { return bulk_1.updatePriority; } });
21
+ Object.defineProperty(exports, "bulkClaim", { enumerable: true, get: function () { return bulk_1.bulkClaim; } });
22
+ Object.defineProperty(exports, "bulkAssign", { enumerable: true, get: function () { return bulk_1.bulkAssign; } });
23
+ Object.defineProperty(exports, "bulkEscalate", { enumerable: true, get: function () { return bulk_1.bulkEscalate; } });
24
+ Object.defineProperty(exports, "bulkTriage", { enumerable: true, get: function () { return bulk_1.bulkTriage; } });
25
+ var resolve_1 = require("./resolve");
26
+ Object.defineProperty(exports, "resolveEscalation", { enumerable: true, get: function () { return resolve_1.resolveEscalation; } });
@@ -0,0 +1,75 @@
1
+ import type { LTApiResult, LTApiAuth } from '../../types/sdk';
2
+ /**
3
+ * List escalations with optional filters.
4
+ *
5
+ * Results are scoped to the authenticated user's roles unless the user
6
+ * is a superadmin (who sees all roles).
7
+ *
8
+ * @param input.status — filter by `pending`, `resolved`, or `cancelled`
9
+ * @param input.role — filter by assigned role
10
+ * @param input.type — filter by workflow type
11
+ * @param input.subtype — filter by subtype
12
+ * @param input.assigned_to — filter by assigned user ID
13
+ * @param input.priority — filter by priority (1–4)
14
+ * @param input.limit — max results (default: 50)
15
+ * @param input.offset — pagination offset
16
+ * @param input.sort_by — column to sort by (e.g. `created_at`, `priority`)
17
+ * @param input.order — `asc` or `desc`
18
+ * @param auth — authenticated user context (required for role scoping)
19
+ * @returns `{ status: 200, data: { escalations, total } }`
20
+ */
21
+ export declare function listEscalations(input: {
22
+ status?: string;
23
+ role?: string;
24
+ type?: string;
25
+ subtype?: string;
26
+ assigned_to?: string;
27
+ priority?: number;
28
+ limit?: number;
29
+ offset?: number;
30
+ sort_by?: string;
31
+ order?: string;
32
+ }, auth: LTApiAuth): Promise<LTApiResult>;
33
+ /**
34
+ * List escalations available for claim (pending and not actively claimed).
35
+ *
36
+ * Similar to `listEscalations` but excludes escalations with active claims.
37
+ * Scoped to the authenticated user's roles.
38
+ *
39
+ * @param input.role — filter by role
40
+ * @param input.type — filter by workflow type
41
+ * @param input.subtype — filter by subtype
42
+ * @param input.priority — filter by priority (1–4)
43
+ * @param input.limit — max results (default: 50)
44
+ * @param input.offset — pagination offset
45
+ * @param input.sort_by — column to sort by
46
+ * @param input.order — `asc` or `desc`
47
+ * @param auth — authenticated user context
48
+ * @returns `{ status: 200, data: { escalations, total } }`
49
+ */
50
+ export declare function listAvailableEscalations(input: {
51
+ role?: string;
52
+ type?: string;
53
+ subtype?: string;
54
+ priority?: number;
55
+ limit?: number;
56
+ offset?: number;
57
+ sort_by?: string;
58
+ order?: string;
59
+ }, auth: LTApiAuth): Promise<LTApiResult>;
60
+ /**
61
+ * List all distinct escalation type values.
62
+ *
63
+ * @returns `{ status: 200, data: { types: string[] } }`
64
+ */
65
+ export declare function listDistinctTypes(): Promise<LTApiResult>;
66
+ /**
67
+ * Get aggregate escalation statistics scoped to the user's roles.
68
+ *
69
+ * @param input.period — time window (`1h`, `24h`, `7d`, `30d`)
70
+ * @param auth — authenticated user context
71
+ * @returns `{ status: 200, data: { pending, claimed, created, resolved, by_role, by_type } }`
72
+ */
73
+ export declare function getEscalationStats(input: {
74
+ period?: string;
75
+ }, auth: LTApiAuth): Promise<LTApiResult>;
@@ -0,0 +1,170 @@
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.listEscalations = listEscalations;
37
+ exports.listAvailableEscalations = listAvailableEscalations;
38
+ exports.listDistinctTypes = listDistinctTypes;
39
+ exports.getEscalationStats = getEscalationStats;
40
+ const escalationService = __importStar(require("../../services/escalation"));
41
+ const helpers_1 = require("./helpers");
42
+ // ── List routes ────────────────────────────────────────────────────────────
43
+ /**
44
+ * List escalations with optional filters.
45
+ *
46
+ * Results are scoped to the authenticated user's roles unless the user
47
+ * is a superadmin (who sees all roles).
48
+ *
49
+ * @param input.status — filter by `pending`, `resolved`, or `cancelled`
50
+ * @param input.role — filter by assigned role
51
+ * @param input.type — filter by workflow type
52
+ * @param input.subtype — filter by subtype
53
+ * @param input.assigned_to — filter by assigned user ID
54
+ * @param input.priority — filter by priority (1–4)
55
+ * @param input.limit — max results (default: 50)
56
+ * @param input.offset — pagination offset
57
+ * @param input.sort_by — column to sort by (e.g. `created_at`, `priority`)
58
+ * @param input.order — `asc` or `desc`
59
+ * @param auth — authenticated user context (required for role scoping)
60
+ * @returns `{ status: 200, data: { escalations, total } }`
61
+ */
62
+ async function listEscalations(input, auth) {
63
+ try {
64
+ const visibleRoles = await (0, helpers_1.getVisibleRoles)(auth.userId);
65
+ if (visibleRoles && visibleRoles.length === 0) {
66
+ return { status: 200, data: { escalations: [], total: 0 } };
67
+ }
68
+ const result = await escalationService.listEscalations({
69
+ status: input.status,
70
+ role: input.role,
71
+ type: input.type,
72
+ subtype: input.subtype,
73
+ assigned_to: input.assigned_to,
74
+ priority: input.priority,
75
+ limit: input.limit,
76
+ offset: input.offset,
77
+ sort_by: input.sort_by,
78
+ order: input.order,
79
+ visibleRoles,
80
+ });
81
+ return { status: 200, data: result };
82
+ }
83
+ catch (err) {
84
+ return { status: 500, error: err.message };
85
+ }
86
+ }
87
+ /**
88
+ * List escalations available for claim (pending and not actively claimed).
89
+ *
90
+ * Similar to `listEscalations` but excludes escalations with active claims.
91
+ * Scoped to the authenticated user's roles.
92
+ *
93
+ * @param input.role — filter by role
94
+ * @param input.type — filter by workflow type
95
+ * @param input.subtype — filter by subtype
96
+ * @param input.priority — filter by priority (1–4)
97
+ * @param input.limit — max results (default: 50)
98
+ * @param input.offset — pagination offset
99
+ * @param input.sort_by — column to sort by
100
+ * @param input.order — `asc` or `desc`
101
+ * @param auth — authenticated user context
102
+ * @returns `{ status: 200, data: { escalations, total } }`
103
+ */
104
+ async function listAvailableEscalations(input, auth) {
105
+ try {
106
+ const visibleRoles = await (0, helpers_1.getVisibleRoles)(auth.userId);
107
+ if (visibleRoles && visibleRoles.length === 0) {
108
+ return { status: 200, data: { escalations: [], total: 0 } };
109
+ }
110
+ const result = await escalationService.listAvailableEscalations({
111
+ role: input.role,
112
+ type: input.type,
113
+ subtype: input.subtype,
114
+ priority: input.priority,
115
+ limit: input.limit,
116
+ offset: input.offset,
117
+ sort_by: input.sort_by,
118
+ order: input.order,
119
+ visibleRoles,
120
+ });
121
+ return { status: 200, data: result };
122
+ }
123
+ catch (err) {
124
+ return { status: 500, error: err.message };
125
+ }
126
+ }
127
+ /**
128
+ * List all distinct escalation type values.
129
+ *
130
+ * @returns `{ status: 200, data: { types: string[] } }`
131
+ */
132
+ async function listDistinctTypes() {
133
+ try {
134
+ const types = await escalationService.listDistinctTypes();
135
+ return { status: 200, data: { types } };
136
+ }
137
+ catch (err) {
138
+ return { status: 500, error: err.message };
139
+ }
140
+ }
141
+ /**
142
+ * Get aggregate escalation statistics scoped to the user's roles.
143
+ *
144
+ * @param input.period — time window (`1h`, `24h`, `7d`, `30d`)
145
+ * @param auth — authenticated user context
146
+ * @returns `{ status: 200, data: { pending, claimed, created, resolved, by_role, by_type } }`
147
+ */
148
+ async function getEscalationStats(input, auth) {
149
+ try {
150
+ const visibleRoles = await (0, helpers_1.getVisibleRoles)(auth.userId);
151
+ if (visibleRoles && visibleRoles.length === 0) {
152
+ return {
153
+ status: 200,
154
+ data: {
155
+ pending: 0,
156
+ claimed: 0,
157
+ created: 0,
158
+ resolved: 0,
159
+ by_role: [],
160
+ by_type: [],
161
+ },
162
+ };
163
+ }
164
+ const stats = await escalationService.getEscalationStats(visibleRoles, input.period);
165
+ return { status: 200, data: stats };
166
+ }
167
+ catch (err) {
168
+ return { status: 500, error: err.message };
169
+ }
170
+ }
@@ -0,0 +1,18 @@
1
+ import type { LTApiResult, LTApiAuth } from '../../types/sdk';
2
+ /**
3
+ * Resolve a pending escalation with a human-provided payload.
4
+ *
5
+ * Handles multiple resolution paths:
6
+ * 1. **Condition signal** — lightweight `conditionLT` signal via metadata.signal_id
7
+ * 2. **Signal-routed** — full signal_routing via YAML engine or Durable handle
8
+ * 3. **Strategy triage** — escalation strategy redirects to a triage workflow
9
+ * 4. **Notification-only** — no workflow_type; acknowledge and close
10
+ * 5. **Re-run** — restart the original workflow with resolver data injected
11
+ *
12
+ * Password fields in the resolver payload are replaced with ephemeral
13
+ * tokens (15-minute TTL) so plaintext never enters the signal store.
14
+ */
15
+ export declare function resolveEscalation(input: {
16
+ id: string;
17
+ resolverPayload: Record<string, any>;
18
+ }, _auth: LTApiAuth): Promise<LTApiResult>;
@@ -0,0 +1,243 @@
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.resolveEscalation = resolveEscalation;
37
+ const escalationService = __importStar(require("../../services/escalation"));
38
+ const taskService = __importStar(require("../../services/task"));
39
+ const publish_1 = require("../../lib/events/publish");
40
+ const escalation_strategy_1 = require("../../services/escalation-strategy");
41
+ const ephemeral_1 = require("../../services/iam/ephemeral");
42
+ const deployer_1 = require("../../services/yaml-workflow/deployer");
43
+ const workers_1 = require("../../workers");
44
+ const defaults_1 = require("../../modules/defaults");
45
+ // ── Orchestrator ─────────────────────────────────────────────────────────
46
+ /**
47
+ * Resolve a pending escalation with a human-provided payload.
48
+ *
49
+ * Handles multiple resolution paths:
50
+ * 1. **Condition signal** — lightweight `conditionLT` signal via metadata.signal_id
51
+ * 2. **Signal-routed** — full signal_routing via YAML engine or Durable handle
52
+ * 3. **Strategy triage** — escalation strategy redirects to a triage workflow
53
+ * 4. **Notification-only** — no workflow_type; acknowledge and close
54
+ * 5. **Re-run** — restart the original workflow with resolver data injected
55
+ *
56
+ * Password fields in the resolver payload are replaced with ephemeral
57
+ * tokens (15-minute TTL) so plaintext never enters the signal store.
58
+ */
59
+ async function resolveEscalation(input, _auth) {
60
+ try {
61
+ const { id, resolverPayload } = input;
62
+ if (!resolverPayload) {
63
+ return { status: 400, error: 'resolverPayload is required' };
64
+ }
65
+ const escalation = await escalationService.getEscalation(id);
66
+ if (!escalation)
67
+ return { status: 404, error: 'Escalation not found' };
68
+ if (escalation.status !== 'pending')
69
+ return { status: 409, error: 'Escalation not available for resolution' };
70
+ // Path A: conditionLT signal
71
+ const metadataSignalId = escalation.metadata?.signal_id;
72
+ if (metadataSignalId && escalation.workflow_id && escalation.task_queue && escalation.workflow_type) {
73
+ return resolveViaConditionSignal(escalation, resolverPayload);
74
+ }
75
+ // Path B: waitFor signal routing
76
+ const signalRouting = escalation.metadata?.signal_routing;
77
+ if (signalRouting?.signalId) {
78
+ return resolveViaSignalRouting(escalation, resolverPayload);
79
+ }
80
+ // Path C: escalation strategy may redirect to triage
81
+ const envelope = await reconstructEnvelope(escalation);
82
+ const strategy = escalation_strategy_1.escalationStrategyRegistry.current;
83
+ if (strategy) {
84
+ const directive = await strategy.onResolution({ escalation, resolverPayload, envelope });
85
+ if (directive.action === 'triage') {
86
+ return resolveViaTriage(escalation, resolverPayload, directive.triageEnvelope);
87
+ }
88
+ }
89
+ // Path D: notification-only — no workflow to restart
90
+ if (!escalation.workflow_type || !escalation.task_queue) {
91
+ await escalationService.resolveEscalation(escalation.id, resolverPayload);
92
+ return { status: 200, data: { acknowledged: true, escalationId: escalation.id } };
93
+ }
94
+ // Path E: standard re-run
95
+ return resolveViaRerun(escalation, envelope, resolverPayload);
96
+ }
97
+ catch (err) {
98
+ return { status: 500, error: err.message };
99
+ }
100
+ }
101
+ // ── Resolution paths ─────────────────────────────────────────────────────
102
+ /** Path A: lightweight conditionLT signal — inject $escalation_id and signal the running workflow. */
103
+ async function resolveViaConditionSignal(escalation, resolverPayload) {
104
+ const signalId = escalation.metadata.signal_id;
105
+ const client = (0, workers_1.createClient)();
106
+ const handle = await client.workflow.getHandle(escalation.task_queue, escalation.workflow_type, escalation.workflow_id);
107
+ await handle.signal(signalId, { ...resolverPayload, $escalation_id: escalation.id });
108
+ publishResolvedEvent(escalation);
109
+ return signaledResult(escalation, escalation.workflow_id);
110
+ }
111
+ /** Path B: waitFor signal escalation — signal via YAML engine or Durable handle. */
112
+ async function resolveViaSignalRouting(escalation, resolverPayload) {
113
+ const signalRouting = escalation.metadata.signal_routing;
114
+ const signalPayload = await redactPasswords(resolverPayload, escalation.metadata?.form_schema);
115
+ if (signalRouting.engine === 'yaml' && signalRouting.hookTopic && signalRouting.appId) {
116
+ const engine = await (0, deployer_1.getEngine)(signalRouting.appId);
117
+ await engine.signal(signalRouting.hookTopic, {
118
+ ...signalPayload,
119
+ escalationId: escalation.id,
120
+ job_id: signalRouting.jobId,
121
+ });
122
+ }
123
+ else if (signalRouting.workflowId) {
124
+ const client = (0, workers_1.createClient)();
125
+ const handle = await client.workflow.getHandle(signalRouting.taskQueue, signalRouting.workflowType, signalRouting.workflowId);
126
+ await handle.signal(signalRouting.signalId, signalPayload);
127
+ }
128
+ // YAML workflows resolve transactionally inside the workflow; only resolve here for Durable
129
+ if (signalRouting.engine !== 'yaml') {
130
+ await escalationService.resolveEscalation(escalation.id, resolverPayload);
131
+ }
132
+ publishResolvedEvent(escalation, {
133
+ workflowId: escalation.workflow_id || signalRouting.workflowId,
134
+ workflowName: escalation.workflow_type || signalRouting.workflowType,
135
+ taskQueue: escalation.task_queue || signalRouting.taskQueue || signalRouting.appId,
136
+ status: signalRouting.engine === 'yaml' ? 'signaled' : 'resolved',
137
+ });
138
+ return signaledResult(escalation, signalRouting.workflowId || signalRouting.appId);
139
+ }
140
+ /** Path C: escalation strategy directed triage — start a triage workflow. */
141
+ async function resolveViaTriage(escalation, resolverPayload, triageEnvelope) {
142
+ const triageWorkflowId = `triage-${escalation.id}-${Date.now()}`;
143
+ const client = (0, workers_1.createClient)();
144
+ await taskService.createTask({
145
+ workflow_id: triageWorkflowId,
146
+ workflow_type: 'mcpTriageRouter',
147
+ lt_type: 'mcpTriage',
148
+ task_queue: 'long-tail-system',
149
+ signal_id: `lt-triage-${triageWorkflowId}`,
150
+ parent_workflow_id: triageWorkflowId,
151
+ origin_id: escalation.origin_id || triageWorkflowId,
152
+ parent_id: escalation.parent_id ?? undefined,
153
+ envelope: JSON.stringify(triageEnvelope),
154
+ });
155
+ await client.workflow.start({
156
+ workflowName: 'mcpTriageRouter',
157
+ args: [triageEnvelope],
158
+ taskQueue: 'long-tail-system',
159
+ workflowId: triageWorkflowId,
160
+ expire: defaults_1.JOB_EXPIRE_SECS,
161
+ entity: 'mcpTriageRouter',
162
+ });
163
+ await escalationService.resolveEscalation(escalation.id, {
164
+ ...resolverPayload,
165
+ _lt: { ...resolverPayload._lt, triaged: true, triageWorkflowId },
166
+ });
167
+ publishResolvedEvent(escalation);
168
+ return {
169
+ status: 200,
170
+ data: { started: true, escalationId: escalation.id, workflowId: triageWorkflowId, triage: true },
171
+ };
172
+ }
173
+ /** Path E: standard re-run — inject resolver data and restart the original workflow. */
174
+ async function resolveViaRerun(escalation, envelope, resolverPayload) {
175
+ envelope.resolver = resolverPayload;
176
+ envelope.lt = { ...envelope.lt, escalationId: escalation.id };
177
+ const newWorkflowId = `rerun-${escalation.id}-${Date.now()}`;
178
+ const client = (0, workers_1.createClient)();
179
+ await client.workflow.start({
180
+ workflowName: escalation.workflow_type,
181
+ args: [envelope],
182
+ taskQueue: escalation.task_queue,
183
+ workflowId: newWorkflowId,
184
+ expire: 180,
185
+ });
186
+ publishResolvedEvent(escalation);
187
+ return {
188
+ status: 200,
189
+ data: { started: true, escalationId: escalation.id, workflowId: newWorkflowId },
190
+ };
191
+ }
192
+ // ── Shared helpers ───────────────────────────────────────────────────────
193
+ function publishResolvedEvent(escalation, overrides) {
194
+ (0, publish_1.publishEscalationEvent)({
195
+ type: 'escalation.resolved',
196
+ source: 'api',
197
+ workflowId: overrides?.workflowId || escalation.workflow_id || '',
198
+ workflowName: overrides?.workflowName || escalation.workflow_type || '',
199
+ taskQueue: overrides?.taskQueue || escalation.task_queue || '',
200
+ taskId: escalation.task_id,
201
+ escalationId: escalation.id,
202
+ originId: escalation.origin_id ?? undefined,
203
+ status: overrides?.status || 'resolved',
204
+ });
205
+ }
206
+ function signaledResult(escalation, workflowId) {
207
+ return {
208
+ status: 200,
209
+ data: { signaled: true, escalationId: escalation.id, workflowId },
210
+ };
211
+ }
212
+ /** Replace password fields with ephemeral tokens so plaintext never enters the signal store. */
213
+ async function redactPasswords(payload, formSchema) {
214
+ if (!formSchema?.properties)
215
+ return payload;
216
+ const redacted = { ...payload };
217
+ for (const [key, def] of Object.entries(formSchema.properties)) {
218
+ if (def?.format === 'password' && typeof redacted[key] === 'string') {
219
+ const uuid = await (0, ephemeral_1.storeEphemeral)(redacted[key], { ttlSeconds: 900, label: key });
220
+ redacted[key] = (0, ephemeral_1.formatEphemeralToken)(uuid, key);
221
+ }
222
+ }
223
+ return redacted;
224
+ }
225
+ /** Reconstruct the original envelope from the escalation record or its task. */
226
+ async function reconstructEnvelope(escalation) {
227
+ if (escalation.envelope) {
228
+ try {
229
+ return JSON.parse(escalation.envelope);
230
+ }
231
+ catch { /* use empty */ }
232
+ }
233
+ else if (escalation.task_id) {
234
+ const task = await taskService.getTask(escalation.task_id);
235
+ if (task?.envelope) {
236
+ try {
237
+ return JSON.parse(task.envelope);
238
+ }
239
+ catch { /* use empty */ }
240
+ }
241
+ }
242
+ return {};
243
+ }
@@ -0,0 +1,37 @@
1
+ import type { LTApiResult, LTApiAuth } from '../../types/sdk';
2
+ /**
3
+ * Get a single escalation by ID.
4
+ *
5
+ * Non-superadmin users must hold the escalation's assigned role.
6
+ *
7
+ * @param input.id — escalation UUID
8
+ * @param auth — authenticated user context
9
+ * @returns `{ status: 200, data: <escalation record> }` or 403/404
10
+ */
11
+ export declare function getEscalation(input: {
12
+ id: string;
13
+ }, auth: LTApiAuth): Promise<LTApiResult>;
14
+ /**
15
+ * List all escalations for a given workflow ID.
16
+ *
17
+ * @param input.workflowId — HotMesh workflow ID
18
+ * @returns `{ status: 200, data: { escalations } }`
19
+ */
20
+ export declare function getEscalationsByWorkflowId(input: {
21
+ workflowId: string;
22
+ }): Promise<LTApiResult>;
23
+ /**
24
+ * Route a pending escalation to a different role.
25
+ *
26
+ * The user must be authorized to escalate from the current role to the
27
+ * target role (checked via escalation chain configuration).
28
+ *
29
+ * @param input.id — escalation UUID
30
+ * @param input.targetRole — destination role
31
+ * @param auth — authenticated user context
32
+ * @returns `{ status: 200, data: <updated escalation> }` or 403/404/409
33
+ */
34
+ export declare function escalateToRole(input: {
35
+ id: string;
36
+ targetRole: string;
37
+ }, auth: LTApiAuth): Promise<LTApiResult>;