@hotmeshio/long-tail 0.1.14 → 0.1.16

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 (360) 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 +3 -0
  19. package/build/api/files.js +18 -1
  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/settings.js +6 -1
  29. package/build/api/workflows/config.d.ts +64 -0
  30. package/build/api/workflows/config.js +142 -0
  31. package/build/api/workflows/discovery.d.ts +29 -0
  32. package/build/api/workflows/discovery.js +153 -0
  33. package/build/api/workflows/index.d.ts +3 -0
  34. package/build/api/workflows/index.js +18 -0
  35. package/build/api/workflows/invocation.d.ts +67 -0
  36. package/build/api/workflows/invocation.js +188 -0
  37. package/build/api/yaml-workflows/cron.d.ts +39 -0
  38. package/build/api/yaml-workflows/cron.js +127 -0
  39. package/build/api/{yaml-workflows.d.ts → yaml-workflows/crud.d.ts} +22 -146
  40. package/build/api/{yaml-workflows.js → yaml-workflows/crud.js} +99 -380
  41. package/build/api/yaml-workflows/deploy.d.ts +71 -0
  42. package/build/api/yaml-workflows/deploy.js +223 -0
  43. package/build/api/yaml-workflows/helpers.d.ts +2 -0
  44. package/build/api/yaml-workflows/helpers.js +8 -0
  45. package/build/api/yaml-workflows/index.d.ts +4 -0
  46. package/build/api/yaml-workflows/index.js +27 -0
  47. package/build/api/yaml-workflows/versions.d.ts +43 -0
  48. package/build/api/yaml-workflows/versions.js +124 -0
  49. package/build/bin/ltc.d.ts +2 -0
  50. package/build/bin/ltc.js +220 -0
  51. package/build/examples/seed-data.d.ts +55 -0
  52. package/build/examples/seed-data.js +161 -0
  53. package/build/examples/seed.js +7 -164
  54. package/build/index.d.ts +1 -1
  55. package/build/lib/cli/auth.d.ts +23 -0
  56. package/build/lib/cli/auth.js +167 -0
  57. package/build/lib/cli/client.d.ts +6 -0
  58. package/build/lib/cli/client.js +31 -0
  59. package/build/lib/cli/commands/escalations.d.ts +19 -0
  60. package/build/lib/cli/commands/escalations.js +69 -0
  61. package/build/lib/cli/commands/knowledge.d.ts +18 -0
  62. package/build/lib/cli/commands/knowledge.js +87 -0
  63. package/build/lib/cli/commands/mcp.d.ts +8 -0
  64. package/build/lib/cli/commands/mcp.js +33 -0
  65. package/build/lib/cli/commands/pipelines.d.ts +16 -0
  66. package/build/lib/cli/commands/pipelines.js +67 -0
  67. package/build/lib/cli/commands/status.d.ts +1 -0
  68. package/build/lib/cli/commands/status.js +28 -0
  69. package/build/lib/cli/commands/users.d.ts +7 -0
  70. package/build/lib/cli/commands/users.js +25 -0
  71. package/build/lib/cli/commands/workflows.d.ts +16 -0
  72. package/build/lib/cli/commands/workflows.js +104 -0
  73. package/build/lib/cli/compile.d.ts +2 -0
  74. package/build/lib/cli/compile.js +165 -0
  75. package/build/lib/cli/format.d.ts +23 -0
  76. package/build/lib/cli/format.js +94 -0
  77. package/build/lib/cli/init.d.ts +1 -0
  78. package/build/lib/cli/init.js +61 -0
  79. package/build/lib/cli/output.d.ts +27 -0
  80. package/build/lib/cli/output.js +126 -0
  81. package/build/lib/cli/scanner.d.ts +10 -0
  82. package/build/lib/cli/scanner.js +164 -0
  83. package/build/lib/cli/types.d.ts +16 -0
  84. package/build/lib/cli/types.js +2 -0
  85. package/build/lib/db/schemas/schemas/001_schema.sql +485 -0
  86. package/build/lib/db/schemas/schemas/002_seed.sql +92 -0
  87. package/build/lib/events/socketio.d.ts +12 -0
  88. package/build/lib/events/socketio.js +24 -1
  89. package/build/lib/logger/index.d.ts +0 -9
  90. package/build/lib/logger/index.js +9 -4
  91. package/build/lib/storage/index.js +2 -2
  92. package/build/routes/file-browser.js +14 -0
  93. package/build/routes/index.js +4 -0
  94. package/build/routes/knowledge.d.ts +2 -0
  95. package/build/routes/knowledge.js +141 -0
  96. package/build/routes/nats-credentials.d.ts +2 -0
  97. package/build/routes/nats-credentials.js +22 -0
  98. package/build/routes/yaml-workflows/crud.js +9 -0
  99. package/build/sdk/index.d.ts +17 -0
  100. package/build/sdk/index.js +19 -0
  101. package/build/services/mcp/client/connection-dispatch.d.ts +18 -0
  102. package/build/services/mcp/client/connection-dispatch.js +78 -0
  103. package/build/services/mcp/client/connection-lifecycle.d.ts +48 -0
  104. package/build/services/mcp/client/connection-lifecycle.js +296 -0
  105. package/build/services/mcp/client/connection-test.d.ts +10 -0
  106. package/build/services/mcp/client/connection-test.js +49 -0
  107. package/build/services/mcp/client/connection.d.ts +3 -68
  108. package/build/services/mcp/client/connection.js +15 -393
  109. package/build/services/mcp/server-lifecycle.d.ts +27 -0
  110. package/build/services/mcp/server-lifecycle.js +49 -0
  111. package/build/services/mcp/server-tools.d.ts +13 -0
  112. package/build/services/mcp/server-tools.js +287 -0
  113. package/build/services/mcp/server.d.ts +2 -26
  114. package/build/services/mcp/server.js +7 -315
  115. package/build/services/yaml-workflow/builder-regenerate.d.ts +25 -0
  116. package/build/services/yaml-workflow/builder-regenerate.js +111 -0
  117. package/build/services/yaml-workflow/db-versions.d.ts +17 -0
  118. package/build/services/yaml-workflow/db-versions.js +76 -0
  119. package/build/services/yaml-workflow/db.d.ts +3 -13
  120. package/build/services/yaml-workflow/db.js +15 -71
  121. package/build/services/yaml-workflow/deployer-helpers.js +48 -17
  122. package/build/services/yaml-workflow/durable-compiler/index.d.ts +22 -0
  123. package/build/services/yaml-workflow/durable-compiler/index.js +168 -0
  124. package/build/services/yaml-workflow/durable-compiler/parser.d.ts +12 -0
  125. package/build/services/yaml-workflow/durable-compiler/parser.js +110 -0
  126. package/build/services/yaml-workflow/durable-compiler/prompts.d.ts +18 -0
  127. package/build/services/yaml-workflow/durable-compiler/prompts.js +570 -0
  128. package/build/services/yaml-workflow/durable-compiler/types.d.ts +51 -0
  129. package/build/services/yaml-workflow/durable-compiler/types.js +5 -0
  130. package/build/services/yaml-workflow/pipeline/build/dag-assembly.d.ts +17 -0
  131. package/build/services/yaml-workflow/pipeline/build/dag-assembly.js +192 -0
  132. package/build/services/yaml-workflow/pipeline/build/dag.d.ts +4 -13
  133. package/build/services/yaml-workflow/pipeline/build/dag.js +9 -185
  134. package/build/services/yaml-workflow/pipeline/prompt-templates.d.ts +10 -0
  135. package/build/services/yaml-workflow/pipeline/prompt-templates.js +270 -0
  136. package/build/services/yaml-workflow/pipeline/prompts.d.ts +3 -6
  137. package/build/services/yaml-workflow/pipeline/prompts.js +8 -263
  138. package/build/services/yaml-workflow/workers/register.js +4 -2
  139. package/build/start/adapters.js +4 -1
  140. package/build/start/socket-auth.d.ts +13 -0
  141. package/build/start/socket-auth.js +32 -0
  142. package/build/start/workers.js +6 -5
  143. package/build/system/activities/file-storage.d.ts +4 -0
  144. package/build/system/activities/file-storage.js +7 -1
  145. package/build/system/activities/knowledge.d.ts +23 -0
  146. package/build/system/activities/knowledge.js +50 -10
  147. package/build/system/activities/sql.d.ts +3 -0
  148. package/build/system/activities/sql.js +25 -1
  149. package/build/system/mcp-servers/file-storage.js +3 -1
  150. package/build/system/mcp-servers/human-queue-schemas.d.ts +91 -0
  151. package/build/system/mcp-servers/human-queue-schemas.js +42 -0
  152. package/build/system/mcp-servers/human-queue.d.ts +2 -6
  153. package/build/system/mcp-servers/human-queue.js +9 -51
  154. package/build/system/mcp-servers/knowledge.js +43 -9
  155. package/build/system/mcp-servers/workflow-compiler.js +54 -0
  156. package/build/system/workflows/mcp-triage/activities-proxy.d.ts +21 -0
  157. package/build/system/workflows/mcp-triage/activities-proxy.js +70 -0
  158. package/build/system/workflows/mcp-triage/index.js +17 -75
  159. package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +1 -0
  160. package/build/system/workflows/mcp-workflow-planner/activities/persist.js +1 -0
  161. package/build/system/workflows/mcp-workflow-planner/index.js +2 -0
  162. package/build/tsconfig.tsbuildinfo +1 -1
  163. package/dashboard/dist/assets/{AdminDashboard-Cngijp4Q.js → AdminDashboard-Bprul9Eb.js} +2 -2
  164. package/dashboard/dist/assets/{AdminDashboard-Cngijp4Q.js.map → AdminDashboard-Bprul9Eb.js.map} +1 -1
  165. package/dashboard/dist/assets/AvailableEscalationsPage-H_z5mC10.js +2 -0
  166. package/dashboard/dist/assets/AvailableEscalationsPage-H_z5mC10.js.map +1 -0
  167. package/dashboard/dist/assets/{BotPicker-B8Uvw9Si.js → BotPicker-DcvILNUf.js} +2 -2
  168. package/dashboard/dist/assets/{BotPicker-B8Uvw9Si.js.map → BotPicker-DcvILNUf.js.map} +1 -1
  169. package/dashboard/dist/assets/{CollapsibleSection-DiFPuWOY.js → CollapsibleSection-BWPbzgEe.js} +2 -2
  170. package/dashboard/dist/assets/{CollapsibleSection-DiFPuWOY.js.map → CollapsibleSection-BWPbzgEe.js.map} +1 -1
  171. package/dashboard/dist/assets/{ConfirmDeleteModal-CpXG9uyu.js → ConfirmDeleteModal-Cy6KVLfC.js} +2 -2
  172. package/dashboard/dist/assets/{ConfirmDeleteModal-CpXG9uyu.js.map → ConfirmDeleteModal-Cy6KVLfC.js.map} +1 -1
  173. package/dashboard/dist/assets/{CopyableId-DKsTR9lK.js → CopyableId-CRED8hvk.js} +2 -2
  174. package/dashboard/dist/assets/{CopyableId-DKsTR9lK.js.map → CopyableId-CRED8hvk.js.map} +1 -1
  175. package/dashboard/dist/assets/{CredentialsPage-DlS7Kf40.js → CredentialsPage-BUdvxiE3.js} +2 -2
  176. package/dashboard/dist/assets/{CredentialsPage-DlS7Kf40.js.map → CredentialsPage-BUdvxiE3.js.map} +1 -1
  177. package/dashboard/dist/assets/{CustomDurationPicker-B-9eW3pm.js → CustomDurationPicker-eOk2EqQ5.js} +2 -2
  178. package/dashboard/dist/assets/{CustomDurationPicker-B-9eW3pm.js.map → CustomDurationPicker-eOk2EqQ5.js.map} +1 -1
  179. package/dashboard/dist/assets/{DataTable-DkOokbtL.js → DataTable-bd2PTBJd.js} +2 -2
  180. package/dashboard/dist/assets/{DataTable-DkOokbtL.js.map → DataTable-bd2PTBJd.js.map} +1 -1
  181. package/dashboard/dist/assets/{ElapsedCell-DVtHqM-5.js → ElapsedCell-BGo8vyus.js} +2 -2
  182. package/dashboard/dist/assets/{ElapsedCell-DVtHqM-5.js.map → ElapsedCell-BGo8vyus.js.map} +1 -1
  183. package/dashboard/dist/assets/{EmptyState-C7KIMIbE.js → EmptyState-BygtU-Rh.js} +2 -2
  184. package/dashboard/dist/assets/{EmptyState-C7KIMIbE.js.map → EmptyState-BygtU-Rh.js.map} +1 -1
  185. package/dashboard/dist/assets/{EscalationsOverview-BMKBlkPx.js → EscalationsOverview-DUEcN5MP.js} +2 -2
  186. package/dashboard/dist/assets/{EscalationsOverview-BMKBlkPx.js.map → EscalationsOverview-DUEcN5MP.js.map} +1 -1
  187. package/dashboard/dist/assets/{EventTable-BYZ5OVdQ.js → EventTable-CmFhswLW.js} +2 -2
  188. package/dashboard/dist/assets/{EventTable-BYZ5OVdQ.js.map → EventTable-CmFhswLW.js.map} +1 -1
  189. package/dashboard/dist/assets/{FilterBar-C5r3n6YO.js → FilterBar-BQNzsd3A.js} +2 -2
  190. package/dashboard/dist/assets/{FilterBar-C5r3n6YO.js.map → FilterBar-BQNzsd3A.js.map} +1 -1
  191. package/dashboard/dist/assets/{ListToolbar-BGUajIsW.js → ListToolbar-OWOn-HiC.js} +2 -2
  192. package/dashboard/dist/assets/{ListToolbar-BGUajIsW.js.map → ListToolbar-OWOn-HiC.js.map} +1 -1
  193. package/dashboard/dist/assets/{McpOverview-B_kJYHea.js → McpOverview-OkEzvClD.js} +2 -2
  194. package/dashboard/dist/assets/{McpOverview-B_kJYHea.js.map → McpOverview-OkEzvClD.js.map} +1 -1
  195. package/dashboard/dist/assets/McpQueryDetailPage-C6Ih5sC_.js +5 -0
  196. package/dashboard/dist/assets/McpQueryDetailPage-C6Ih5sC_.js.map +1 -0
  197. package/dashboard/dist/assets/{McpQueryPage-BgAq_bQg.js → McpQueryPage-BAuOf5TL.js} +2 -2
  198. package/dashboard/dist/assets/{McpQueryPage-BgAq_bQg.js.map → McpQueryPage-BAuOf5TL.js.map} +1 -1
  199. package/dashboard/dist/assets/{McpRunDetailPage-B8c0OszR.js → McpRunDetailPage-DMeiG4i_.js} +2 -2
  200. package/dashboard/dist/assets/{McpRunDetailPage-B8c0OszR.js.map → McpRunDetailPage-DMeiG4i_.js.map} +1 -1
  201. package/dashboard/dist/assets/{McpRunsPage-BY8C6k78.js → McpRunsPage-CG3cNJh8.js} +2 -2
  202. package/dashboard/dist/assets/{McpRunsPage-BY8C6k78.js.map → McpRunsPage-CG3cNJh8.js.map} +1 -1
  203. package/dashboard/dist/assets/{Modal-E1yRnCeW.js → Modal-Dir9Rlnx.js} +2 -2
  204. package/dashboard/dist/assets/{Modal-E1yRnCeW.js.map → Modal-Dir9Rlnx.js.map} +1 -1
  205. package/dashboard/dist/assets/{OperatorDashboard-C8MSTzey.js → OperatorDashboard-OqWC6Azy.js} +2 -2
  206. package/dashboard/dist/assets/{OperatorDashboard-C8MSTzey.js.map → OperatorDashboard-OqWC6Azy.js.map} +1 -1
  207. package/dashboard/dist/assets/{PageHeader-Cm5HBQF_.js → PageHeader-FJIemmrC.js} +2 -2
  208. package/dashboard/dist/assets/{PageHeader-Cm5HBQF_.js.map → PageHeader-FJIemmrC.js.map} +1 -1
  209. package/dashboard/dist/assets/{PageHeaderWithStats-CNmWJFSN.js → PageHeaderWithStats-Br5y9qNO.js} +2 -2
  210. package/dashboard/dist/assets/{PageHeaderWithStats-CNmWJFSN.js.map → PageHeaderWithStats-Br5y9qNO.js.map} +1 -1
  211. package/dashboard/dist/assets/{PriorityBadge-HSI4RVhs.js → PriorityBadge-C7D5d_HY.js} +2 -2
  212. package/dashboard/dist/assets/{PriorityBadge-HSI4RVhs.js.map → PriorityBadge-C7D5d_HY.js.map} +1 -1
  213. package/dashboard/dist/assets/{ProcessDetailPage-Dln8622H.js → ProcessDetailPage-DZIP6grw.js} +2 -2
  214. package/dashboard/dist/assets/{ProcessDetailPage-Dln8622H.js.map → ProcessDetailPage-DZIP6grw.js.map} +1 -1
  215. package/dashboard/dist/assets/{ProcessesListPage-bIsd9N_h.js → ProcessesListPage-BQoPYkeB.js} +2 -2
  216. package/dashboard/dist/assets/{ProcessesListPage-bIsd9N_h.js.map → ProcessesListPage-BQoPYkeB.js.map} +1 -1
  217. package/dashboard/dist/assets/{RolePill-BVUp2bF0.js → RolePill-D6nMxMvp.js} +2 -2
  218. package/dashboard/dist/assets/{RolePill-BVUp2bF0.js.map → RolePill-D6nMxMvp.js.map} +1 -1
  219. package/dashboard/dist/assets/RolesPage-CwLnJFhy.js +2 -0
  220. package/dashboard/dist/assets/{RolesPage-kH-Njt25.js.map → RolesPage-CwLnJFhy.js.map} +1 -1
  221. package/dashboard/dist/assets/{RowActions-DbUJPfaW.js → RowActions-JqgAB0p3.js} +2 -2
  222. package/dashboard/dist/assets/{RowActions-DbUJPfaW.js.map → RowActions-JqgAB0p3.js.map} +1 -1
  223. package/dashboard/dist/assets/RunAsSelector-KAlKtitB.js +2 -0
  224. package/dashboard/dist/assets/RunAsSelector-KAlKtitB.js.map +1 -0
  225. package/dashboard/dist/assets/{StatCard-Bs3JbyAz.js → StatCard-B-WLhOaH.js} +2 -2
  226. package/dashboard/dist/assets/{StatCard-Bs3JbyAz.js.map → StatCard-B-WLhOaH.js.map} +1 -1
  227. package/dashboard/dist/assets/{StatusBadge-CakDdsCw.js → StatusBadge-DVCf2ncM.js} +2 -2
  228. package/dashboard/dist/assets/{StatusBadge-CakDdsCw.js.map → StatusBadge-DVCf2ncM.js.map} +1 -1
  229. package/dashboard/dist/assets/{StepIndicator-Cd_SG_yA.js → StepIndicator-D9Xvdf18.js} +2 -2
  230. package/dashboard/dist/assets/{StepIndicator-Cd_SG_yA.js.map → StepIndicator-D9Xvdf18.js.map} +1 -1
  231. package/dashboard/dist/assets/{StickyPagination-Bz0C18nC.js → StickyPagination-CJHMzYJj.js} +2 -2
  232. package/dashboard/dist/assets/{StickyPagination-Bz0C18nC.js.map → StickyPagination-CJHMzYJj.js.map} +1 -1
  233. package/dashboard/dist/assets/SwimlaneTimeline-YiXPDyEL.js +2 -0
  234. package/dashboard/dist/assets/SwimlaneTimeline-YiXPDyEL.js.map +1 -0
  235. package/dashboard/dist/assets/{TagInput-ClFhXG-U.js → TagInput-DcPnUnSJ.js} +2 -2
  236. package/dashboard/dist/assets/{TagInput-ClFhXG-U.js.map → TagInput-DcPnUnSJ.js.map} +1 -1
  237. package/dashboard/dist/assets/{TaskDetailPage-SuMBdARt.js → TaskDetailPage-DftmYWD7.js} +2 -2
  238. package/dashboard/dist/assets/{TaskDetailPage-SuMBdARt.js.map → TaskDetailPage-DftmYWD7.js.map} +1 -1
  239. package/dashboard/dist/assets/{TaskQueuePill-lJR1JW_W.js → TaskQueuePill-BzduBqwy.js} +2 -2
  240. package/dashboard/dist/assets/{TaskQueuePill-lJR1JW_W.js.map → TaskQueuePill-BzduBqwy.js.map} +1 -1
  241. package/dashboard/dist/assets/{TasksListPage-Dkq1Vtbt.js → TasksListPage-DeewV4Gp.js} +2 -2
  242. package/dashboard/dist/assets/{TasksListPage-Dkq1Vtbt.js.map → TasksListPage-DeewV4Gp.js.map} +1 -1
  243. package/dashboard/dist/assets/{TimeAgo-DgfDZ1pl.js → TimeAgo-DJZq-e4R.js} +2 -2
  244. package/dashboard/dist/assets/{TimeAgo-DgfDZ1pl.js.map → TimeAgo-DJZq-e4R.js.map} +1 -1
  245. package/dashboard/dist/assets/{TimestampCell-MpHZ1hMD.js → TimestampCell-Dx5uwGfS.js} +2 -2
  246. package/dashboard/dist/assets/{TimestampCell-MpHZ1hMD.js.map → TimestampCell-Dx5uwGfS.js.map} +1 -1
  247. package/dashboard/dist/assets/{UserName-DqsosA4B.js → UserName-CnGk7MgL.js} +2 -2
  248. package/dashboard/dist/assets/{UserName-DqsosA4B.js.map → UserName-CnGk7MgL.js.map} +1 -1
  249. package/dashboard/dist/assets/{WorkflowExecutionPage-CVlg38C3.js → WorkflowExecutionPage-CPQ0fIwf.js} +2 -2
  250. package/dashboard/dist/assets/{WorkflowExecutionPage-CVlg38C3.js.map → WorkflowExecutionPage-CPQ0fIwf.js.map} +1 -1
  251. package/dashboard/dist/assets/{WorkflowPill-CRpZhjGR.js → WorkflowPill-BrD5d1AG.js} +2 -2
  252. package/dashboard/dist/assets/{WorkflowPill-CRpZhjGR.js.map → WorkflowPill-BrD5d1AG.js.map} +1 -1
  253. package/dashboard/dist/assets/{WorkflowsDashboard-Ugzbs8mV.js → WorkflowsDashboard-BzjhABZP.js} +2 -2
  254. package/dashboard/dist/assets/{WorkflowsDashboard-Ugzbs8mV.js.map → WorkflowsDashboard-BzjhABZP.js.map} +1 -1
  255. package/dashboard/dist/assets/{WorkflowsOverview-CIp_lTNl.js → WorkflowsOverview-lBp2E6rN.js} +2 -2
  256. package/dashboard/dist/assets/{WorkflowsOverview-CIp_lTNl.js.map → WorkflowsOverview-lBp2E6rN.js.map} +1 -1
  257. package/dashboard/dist/assets/YamlWorkflowsPage-C_MkAp2i.js +2 -0
  258. package/dashboard/dist/assets/YamlWorkflowsPage-C_MkAp2i.js.map +1 -0
  259. package/dashboard/dist/assets/{bots-DPfUpVqI.js → bots-fc_O_YIq.js} +2 -2
  260. package/dashboard/dist/assets/{bots-DPfUpVqI.js.map → bots-fc_O_YIq.js.map} +1 -1
  261. package/dashboard/dist/assets/{escalation-RrCDbMC3.js → escalation-BYhLYHBz.js} +2 -2
  262. package/dashboard/dist/assets/{escalation-RrCDbMC3.js.map → escalation-BYhLYHBz.js.map} +1 -1
  263. package/dashboard/dist/assets/{escalation-columns-CDGa9wsD.js → escalation-columns-DjJyuC1g.js} +2 -2
  264. package/dashboard/dist/assets/{escalation-columns-CDGa9wsD.js.map → escalation-columns-DjJyuC1g.js.map} +1 -1
  265. package/dashboard/dist/assets/{helpers-ZSKqdkdS.js → helpers-CQG3Rh2y.js} +2 -2
  266. package/dashboard/dist/assets/{helpers-ZSKqdkdS.js.map → helpers-CQG3Rh2y.js.map} +1 -1
  267. package/dashboard/dist/assets/{index-DX6zxr6t.js → index-2nBhR7Dg.js} +2 -2
  268. package/dashboard/dist/assets/{index-DX6zxr6t.js.map → index-2nBhR7Dg.js.map} +1 -1
  269. package/dashboard/dist/assets/index-4IUoh_hd.js +2 -0
  270. package/dashboard/dist/assets/{index-K40Qw1tk.js.map → index-4IUoh_hd.js.map} +1 -1
  271. package/dashboard/dist/assets/index-B2CqPzLK.js +2 -0
  272. package/dashboard/dist/assets/index-B2CqPzLK.js.map +1 -0
  273. package/dashboard/dist/assets/index-B78xalb4.js +2 -0
  274. package/dashboard/dist/assets/index-B78xalb4.js.map +1 -0
  275. package/dashboard/dist/assets/index-BI8r69O_.js +2 -0
  276. package/dashboard/dist/assets/{index-C90ZPzXk.js.map → index-BI8r69O_.js.map} +1 -1
  277. package/dashboard/dist/assets/index-C5TUqJu0.css +1 -0
  278. package/dashboard/dist/assets/{index-BmVCyB6C.js → index-CUqCBBZG.js} +2 -2
  279. package/dashboard/dist/assets/{index-BmVCyB6C.js.map → index-CUqCBBZG.js.map} +1 -1
  280. package/dashboard/dist/assets/index-D51PaQZY.js +2 -0
  281. package/dashboard/dist/assets/index-D51PaQZY.js.map +1 -0
  282. package/dashboard/dist/assets/{index-BbI2dzhJ.js → index-DNtXXy1o.js} +2 -2
  283. package/dashboard/dist/assets/{index-BbI2dzhJ.js.map → index-DNtXXy1o.js.map} +1 -1
  284. package/dashboard/dist/assets/{index-DNytWfSZ.js → index-DR4qQvlW.js} +2 -2
  285. package/dashboard/dist/assets/{index-DNytWfSZ.js.map → index-DR4qQvlW.js.map} +1 -1
  286. package/dashboard/dist/assets/index-Dh0PCbR-.js +15 -0
  287. package/dashboard/dist/assets/index-Dh0PCbR-.js.map +1 -0
  288. package/dashboard/dist/assets/index-KYpLvJKB.js +5 -0
  289. package/dashboard/dist/assets/index-KYpLvJKB.js.map +1 -0
  290. package/dashboard/dist/assets/{index-Cmgrk7PQ.js → index-sNrqYt0Q.js} +73 -73
  291. package/dashboard/dist/assets/index-sNrqYt0Q.js.map +1 -0
  292. package/dashboard/dist/assets/{mcp-CNE44TSp.js → mcp-D2XfRh8v.js} +2 -2
  293. package/dashboard/dist/assets/{mcp-CNE44TSp.js.map → mcp-D2XfRh8v.js.map} +1 -1
  294. package/dashboard/dist/assets/{mcp-query-RQX0uN-5.js → mcp-query-CIx_mIC7.js} +2 -2
  295. package/dashboard/dist/assets/{mcp-query-RQX0uN-5.js.map → mcp-query-CIx_mIC7.js.map} +1 -1
  296. package/dashboard/dist/assets/{mcp-runs-0w40bdz-.js → mcp-runs-C9_J4LIH.js} +2 -2
  297. package/dashboard/dist/assets/{mcp-runs-0w40bdz-.js.map → mcp-runs-C9_J4LIH.js.map} +1 -1
  298. package/dashboard/dist/assets/{namespaces-BbmdXuPp.js → namespaces-BwMljx6f.js} +2 -2
  299. package/dashboard/dist/assets/{namespaces-BbmdXuPp.js.map → namespaces-BwMljx6f.js.map} +1 -1
  300. package/dashboard/dist/assets/{roles-DoHYlhWH.js → roles-Bd_sTV6I.js} +2 -2
  301. package/dashboard/dist/assets/{roles-DoHYlhWH.js.map → roles-Bd_sTV6I.js.map} +1 -1
  302. package/dashboard/dist/assets/{settings-BAiJiCHS.js → settings-BCb8eFyA.js} +2 -2
  303. package/dashboard/dist/assets/{settings-BAiJiCHS.js.map → settings-BCb8eFyA.js.map} +1 -1
  304. package/dashboard/dist/assets/{tasks-CvroqHtm.js → tasks-Bq54qGGq.js} +2 -2
  305. package/dashboard/dist/assets/{tasks-CvroqHtm.js.map → tasks-Bq54qGGq.js.map} +1 -1
  306. package/dashboard/dist/assets/useEventHooks-BTbGf536.js +2 -0
  307. package/dashboard/dist/assets/{useEventHooks-BHMbzR_y.js.map → useEventHooks-BTbGf536.js.map} +1 -1
  308. package/dashboard/dist/assets/useYamlActivityEvents-CsYP09W5.js +2 -0
  309. package/dashboard/dist/assets/{useYamlActivityEvents-D56KV14X.js.map → useYamlActivityEvents-CsYP09W5.js.map} +1 -1
  310. package/dashboard/dist/assets/{users-CxIMy_xw.js → users-BTBhafGc.js} +2 -2
  311. package/dashboard/dist/assets/{users-CxIMy_xw.js.map → users-BTBhafGc.js.map} +1 -1
  312. package/dashboard/dist/assets/{vendor-icons-AFGxSeQS.js → vendor-icons-CWl44VA6.js} +77 -77
  313. package/dashboard/dist/assets/vendor-icons-CWl44VA6.js.map +1 -0
  314. package/dashboard/dist/assets/{workflows-yR9yais7.js → workflows-BkzA4ahe.js} +2 -2
  315. package/dashboard/dist/assets/{workflows-yR9yais7.js.map → workflows-BkzA4ahe.js.map} +1 -1
  316. package/dashboard/dist/assets/{yaml-workflows-QVF2MZ0l.js → yaml-workflows-Cs0EYp0F.js} +2 -2
  317. package/dashboard/dist/assets/{yaml-workflows-QVF2MZ0l.js.map → yaml-workflows-Cs0EYp0F.js.map} +1 -1
  318. package/dashboard/dist/index.html +3 -3
  319. package/docs/api/http/file-browser.md +101 -0
  320. package/docs/api/http/knowledge.md +203 -0
  321. package/docs/api/http/settings.md +6 -4
  322. package/docs/api/sdk/files.md +68 -0
  323. package/docs/api/sdk/knowledge.md +126 -0
  324. package/docs/api/sdk/settings.md +3 -2
  325. package/docs/cli.md +171 -0
  326. package/docs/compilation.md +16 -0
  327. package/docs/compiler.md +311 -0
  328. package/docs/events.md +19 -0
  329. package/docs/workflows.md +19 -0
  330. package/package.json +13 -2
  331. package/build/api/escalations.d.ts +0 -271
  332. package/build/api/escalations.js +0 -932
  333. package/build/api/workflows.d.ts +0 -158
  334. package/build/api/workflows.js +0 -414
  335. package/dashboard/dist/assets/AvailableEscalationsPage-CpBfGV1h.js +0 -2
  336. package/dashboard/dist/assets/AvailableEscalationsPage-CpBfGV1h.js.map +0 -1
  337. package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js +0 -5
  338. package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js.map +0 -1
  339. package/dashboard/dist/assets/RolesPage-kH-Njt25.js +0 -2
  340. package/dashboard/dist/assets/SwimlaneTimeline-Cfe-xQRX.js +0 -2
  341. package/dashboard/dist/assets/SwimlaneTimeline-Cfe-xQRX.js.map +0 -1
  342. package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js +0 -2
  343. package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js.map +0 -1
  344. package/dashboard/dist/assets/helpers-rMEcLwKs.js +0 -2
  345. package/dashboard/dist/assets/helpers-rMEcLwKs.js.map +0 -1
  346. package/dashboard/dist/assets/index-ABcJHHlN.js +0 -5
  347. package/dashboard/dist/assets/index-ABcJHHlN.js.map +0 -1
  348. package/dashboard/dist/assets/index-B91h_jZ0.js +0 -15
  349. package/dashboard/dist/assets/index-B91h_jZ0.js.map +0 -1
  350. package/dashboard/dist/assets/index-C1E5GTs9.js +0 -2
  351. package/dashboard/dist/assets/index-C1E5GTs9.js.map +0 -1
  352. package/dashboard/dist/assets/index-C90ZPzXk.js +0 -2
  353. package/dashboard/dist/assets/index-Cmgrk7PQ.js.map +0 -1
  354. package/dashboard/dist/assets/index-DeX-ezqf.css +0 -1
  355. package/dashboard/dist/assets/index-K40Qw1tk.js +0 -2
  356. package/dashboard/dist/assets/index-lCyNr5Xk.js +0 -2
  357. package/dashboard/dist/assets/index-lCyNr5Xk.js.map +0 -1
  358. package/dashboard/dist/assets/useEventHooks-BHMbzR_y.js +0 -2
  359. package/dashboard/dist/assets/useYamlActivityEvents-D56KV14X.js +0 -2
  360. package/dashboard/dist/assets/vendor-icons-AFGxSeQS.js.map +0 -1
@@ -0,0 +1,287 @@
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.registerHumanQueueTools = registerHumanQueueTools;
37
+ const crypto = __importStar(require("crypto"));
38
+ const zod_1 = require("zod");
39
+ const escalationService = __importStar(require("../escalation"));
40
+ // ── Schemas (extracted to break TS2589 deep-instantiation in registerTool generics) ──
41
+ const escalateSchema = zod_1.z.object({
42
+ role: zod_1.z.string().describe('Target role for the escalation (e.g., "reviewer")'),
43
+ message: zod_1.z.string().describe('Description of what needs human review'),
44
+ data: zod_1.z.record(zod_1.z.any()).optional().describe('Contextual data for the reviewer'),
45
+ type: zod_1.z.string().optional().default('mcp').describe('Escalation type classification'),
46
+ subtype: zod_1.z.string().optional().default('tool_call').describe('Escalation subtype'),
47
+ priority: zod_1.z.number().min(1).max(4).optional().default(2)
48
+ .describe('Priority: 1 (highest) to 4 (lowest)'),
49
+ });
50
+ const checkResolutionSchema = zod_1.z.object({
51
+ escalation_id: zod_1.z.string().describe('The escalation ID to check'),
52
+ });
53
+ const getAvailableWorkSchema = zod_1.z.object({
54
+ role: zod_1.z.string().describe('Role to filter by'),
55
+ limit: zod_1.z.number().optional().default(10).describe('Max results to return'),
56
+ });
57
+ const claimAndResolveSchema = zod_1.z.object({
58
+ escalation_id: zod_1.z.string().describe('The escalation ID to claim and resolve'),
59
+ resolver_id: zod_1.z.string().describe('Identifier for who/what is resolving'),
60
+ payload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload data'),
61
+ });
62
+ const resolveEscalationSchema = zod_1.z.object({
63
+ escalation_id: zod_1.z.string().describe('The escalation ID to resolve'),
64
+ payload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload data'),
65
+ });
66
+ const escalateAndWaitSchema = zod_1.z.object({
67
+ role: zod_1.z.string().describe('Target role for the escalation (e.g., "reviewer")'),
68
+ message: zod_1.z.string().describe('Description of what input is needed from the human'),
69
+ form_schema: zod_1.z.record(zod_1.z.any()).optional()
70
+ .describe('JSON Schema for the resolver form. Use format:"password" for sensitive fields.'),
71
+ data: zod_1.z.record(zod_1.z.any()).optional().describe('Contextual data for the reviewer'),
72
+ assigned_to: zod_1.z.string().optional().describe('Auto-assign to a specific user'),
73
+ type: zod_1.z.string().optional().default('mcp').describe('Escalation type classification'),
74
+ subtype: zod_1.z.string().optional().default('wait_for_human').describe('Escalation subtype'),
75
+ priority: zod_1.z.number().min(1).max(4).optional().default(1)
76
+ .describe('Priority: 1 (highest) to 4 (lowest)'),
77
+ }).passthrough();
78
+ /**
79
+ * Register all human queue tools on the given MCP server.
80
+ *
81
+ * Tools registered:
82
+ * - escalate_to_human -- create a new escalation (fire-and-forget)
83
+ * - check_resolution -- check escalation status
84
+ * - get_available_work -- list available escalations by role
85
+ * - claim_and_resolve -- claim + resolve in one step
86
+ * - resolve_escalation -- resolve an already-claimed escalation
87
+ * - escalate_and_wait -- create escalation and return signal for durable wait
88
+ */
89
+ function registerHumanQueueTools(server) {
90
+ // ── escalate_to_human ───────────────────────────────────────────────
91
+ server.registerTool('escalate_to_human', {
92
+ title: 'Escalate to Human',
93
+ description: 'Create a new escalation for human review. Returns the escalation ID.',
94
+ inputSchema: escalateSchema,
95
+ }, async (args) => {
96
+ const escalation = await escalationService.createEscalation({
97
+ type: args.type || 'mcp',
98
+ subtype: args.subtype || 'tool_call',
99
+ description: args.message,
100
+ priority: args.priority,
101
+ role: args.role,
102
+ envelope: JSON.stringify(args.data || {}),
103
+ metadata: { source: 'mcp_server' },
104
+ });
105
+ return {
106
+ content: [{
107
+ type: 'text',
108
+ text: JSON.stringify({
109
+ escalation_id: escalation.id,
110
+ status: escalation.status,
111
+ role: escalation.role,
112
+ created_at: escalation.created_at,
113
+ }),
114
+ }],
115
+ };
116
+ });
117
+ // ── check_resolution ────────────────────────────────────────────────
118
+ server.registerTool('check_resolution', {
119
+ title: 'Check Escalation Resolution',
120
+ description: 'Check the status of an escalation. Returns status and resolver payload if resolved.',
121
+ inputSchema: checkResolutionSchema,
122
+ }, async (args) => {
123
+ const escalation = await escalationService.getEscalation(args.escalation_id);
124
+ if (!escalation) {
125
+ return {
126
+ content: [{
127
+ type: 'text',
128
+ text: JSON.stringify({ error: 'Escalation not found' }),
129
+ }],
130
+ isError: true,
131
+ };
132
+ }
133
+ const result = {
134
+ escalation_id: escalation.id,
135
+ status: escalation.status,
136
+ };
137
+ if (escalation.status === 'resolved' && escalation.resolver_payload) {
138
+ try {
139
+ result.resolver_payload = JSON.parse(escalation.resolver_payload);
140
+ }
141
+ catch {
142
+ result.resolver_payload = escalation.resolver_payload;
143
+ }
144
+ result.resolved_at = escalation.resolved_at;
145
+ }
146
+ return {
147
+ content: [{ type: 'text', text: JSON.stringify(result) }],
148
+ };
149
+ });
150
+ // ── get_available_work ──────────────────────────────────────────────
151
+ server.registerTool('get_available_work', {
152
+ title: 'Get Available Work',
153
+ description: 'List available escalations for a role. Returns pending, unassigned escalations.',
154
+ inputSchema: getAvailableWorkSchema,
155
+ }, async (args) => {
156
+ const { escalations } = await escalationService.listAvailableEscalations({
157
+ role: args.role,
158
+ limit: args.limit,
159
+ });
160
+ const items = escalations.map((e) => ({
161
+ escalation_id: e.id,
162
+ type: e.type,
163
+ subtype: e.subtype,
164
+ description: e.description,
165
+ priority: e.priority,
166
+ role: e.role,
167
+ created_at: e.created_at,
168
+ }));
169
+ return {
170
+ content: [{
171
+ type: 'text',
172
+ text: JSON.stringify({ count: items.length, escalations: items }),
173
+ }],
174
+ };
175
+ });
176
+ // ── claim_and_resolve ───────────────────────────────────────────────
177
+ server.registerTool('claim_and_resolve', {
178
+ title: 'Claim and Resolve',
179
+ description: 'Claim an escalation and immediately resolve it with a payload. Atomic operation.',
180
+ inputSchema: claimAndResolveSchema,
181
+ }, async (args) => {
182
+ const claimed = await escalationService.claimEscalation(args.escalation_id, args.resolver_id, 5);
183
+ if (!claimed) {
184
+ return {
185
+ content: [{
186
+ type: 'text',
187
+ text: JSON.stringify({ error: 'Escalation not available for claim' }),
188
+ }],
189
+ isError: true,
190
+ };
191
+ }
192
+ const resolved = await escalationService.resolveEscalation(args.escalation_id, args.payload);
193
+ if (!resolved) {
194
+ return {
195
+ content: [{
196
+ type: 'text',
197
+ text: JSON.stringify({ error: 'Failed to resolve escalation' }),
198
+ }],
199
+ isError: true,
200
+ };
201
+ }
202
+ return {
203
+ content: [{
204
+ type: 'text',
205
+ text: JSON.stringify({
206
+ escalation_id: resolved.id,
207
+ status: resolved.status,
208
+ resolved_at: resolved.resolved_at,
209
+ }),
210
+ }],
211
+ };
212
+ });
213
+ // ── resolve_escalation ──────────────────────────────────────────────
214
+ server.registerTool('resolve_escalation', {
215
+ title: 'Resolve Escalation',
216
+ description: 'Resolve an already-claimed escalation with a payload. Use when the claim happened externally (e.g. via API).',
217
+ inputSchema: resolveEscalationSchema,
218
+ }, async (args) => {
219
+ const resolved = await escalationService.resolveEscalation(args.escalation_id, args.payload);
220
+ if (!resolved) {
221
+ return {
222
+ content: [{
223
+ type: 'text',
224
+ text: JSON.stringify({ error: 'Failed to resolve escalation' }),
225
+ }],
226
+ isError: true,
227
+ };
228
+ }
229
+ return {
230
+ content: [{
231
+ type: 'text',
232
+ text: JSON.stringify({
233
+ escalation_id: resolved.id,
234
+ status: resolved.status,
235
+ resolved_at: resolved.resolved_at,
236
+ }),
237
+ }],
238
+ };
239
+ });
240
+ // ── escalate_and_wait ──────────────────────────────────────────────
241
+ server.registerTool('escalate_and_wait', {
242
+ title: 'Escalate and Wait',
243
+ description: 'Create an escalation and pause the workflow until a human responds. ' +
244
+ 'Returns a signal ID that the workflow uses to wait. ' +
245
+ 'Preferred over escalate_to_human + check_resolution polling.',
246
+ inputSchema: escalateAndWaitSchema,
247
+ }, async (args) => {
248
+ const signalId = `wait-for-human-${crypto.randomUUID()}`;
249
+ // YAML workflows inject _yaml_signal_routing to override Durable's signalId-based routing
250
+ const yamlRouting = args._yaml_signal_routing;
251
+ const signalRouting = yamlRouting
252
+ ? { ...yamlRouting, signalId }
253
+ : { signalId };
254
+ const metadata = {
255
+ source: 'mcp_server',
256
+ signal_routing: signalRouting,
257
+ };
258
+ if (args.form_schema) {
259
+ metadata.form_schema = args.form_schema;
260
+ }
261
+ const escalation = await escalationService.createEscalation({
262
+ type: args.type || 'mcp',
263
+ subtype: args.subtype || 'wait_for_human',
264
+ description: args.message,
265
+ priority: args.priority,
266
+ role: args.role,
267
+ envelope: JSON.stringify(args.data || {}),
268
+ metadata,
269
+ workflow_type: yamlRouting?.workflowType,
270
+ workflow_id: yamlRouting?.workflowId,
271
+ task_queue: yamlRouting?.taskQueue,
272
+ });
273
+ if (args.assigned_to) {
274
+ await escalationService.claimEscalation(escalation.id, args.assigned_to, 240);
275
+ }
276
+ return {
277
+ content: [{
278
+ type: 'text',
279
+ text: JSON.stringify({
280
+ type: 'waitFor',
281
+ signalId,
282
+ escalationId: escalation.id,
283
+ }),
284
+ }],
285
+ };
286
+ });
287
+ }
@@ -1,26 +1,2 @@
1
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- /**
3
- * Create the Long Tail Human Queue MCP server.
4
- *
5
- * Registers five tools that expose the escalation API:
6
- * - escalate_to_human — create a new escalation (fire-and-forget)
7
- * - check_resolution — check escalation status
8
- * - get_available_work — list available escalations by role
9
- * - claim_and_resolve — claim + resolve in one step
10
- * - escalate_and_wait — create escalation and return signal for durable wait
11
- *
12
- * The server is created with tools registered but no transport
13
- * auto-connected. Callers connect a transport programmatically
14
- * or via the Streamable HTTP endpoint.
15
- */
16
- export declare function createHumanQueueServer(options?: {
17
- name?: string;
18
- }): Promise<McpServer>;
19
- /**
20
- * Get the current MCP server instance.
21
- */
22
- export declare function getServer(): McpServer | null;
23
- /**
24
- * Stop the MCP server and release resources.
25
- */
26
- export declare function stopServer(): Promise<void>;
1
+ export { registerHumanQueueTools } from './server-tools';
2
+ export { createHumanQueueServer, getServer, stopServer } from './server-lifecycle';
@@ -1,317 +1,9 @@
1
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
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.createHumanQueueServer = createHumanQueueServer;
37
- exports.getServer = getServer;
38
- exports.stopServer = stopServer;
39
- const crypto = __importStar(require("crypto"));
40
- const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
41
- const zod_1 = require("zod");
42
- const logger_1 = require("../../lib/logger");
43
- const escalationService = __importStar(require("../escalation"));
44
- let server = null;
45
- // ── Schemas (extracted to break TS2589 deep-instantiation in registerTool generics) ──
46
- const escalateSchema = zod_1.z.object({
47
- role: zod_1.z.string().describe('Target role for the escalation (e.g., "reviewer")'),
48
- message: zod_1.z.string().describe('Description of what needs human review'),
49
- data: zod_1.z.record(zod_1.z.any()).optional().describe('Contextual data for the reviewer'),
50
- type: zod_1.z.string().optional().default('mcp').describe('Escalation type classification'),
51
- subtype: zod_1.z.string().optional().default('tool_call').describe('Escalation subtype'),
52
- priority: zod_1.z.number().min(1).max(4).optional().default(2)
53
- .describe('Priority: 1 (highest) to 4 (lowest)'),
54
- });
55
- const checkResolutionSchema = zod_1.z.object({
56
- escalation_id: zod_1.z.string().describe('The escalation ID to check'),
57
- });
58
- const getAvailableWorkSchema = zod_1.z.object({
59
- role: zod_1.z.string().describe('Role to filter by'),
60
- limit: zod_1.z.number().optional().default(10).describe('Max results to return'),
61
- });
62
- const claimAndResolveSchema = zod_1.z.object({
63
- escalation_id: zod_1.z.string().describe('The escalation ID to claim and resolve'),
64
- resolver_id: zod_1.z.string().describe('Identifier for who/what is resolving'),
65
- payload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload data'),
66
- });
67
- const resolveEscalationSchema = zod_1.z.object({
68
- escalation_id: zod_1.z.string().describe('The escalation ID to resolve'),
69
- payload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload data'),
70
- });
71
- const escalateAndWaitSchema = zod_1.z.object({
72
- role: zod_1.z.string().describe('Target role for the escalation (e.g., "reviewer")'),
73
- message: zod_1.z.string().describe('Description of what input is needed from the human'),
74
- form_schema: zod_1.z.record(zod_1.z.any()).optional()
75
- .describe('JSON Schema for the resolver form. Use format:"password" for sensitive fields.'),
76
- data: zod_1.z.record(zod_1.z.any()).optional().describe('Contextual data for the reviewer'),
77
- assigned_to: zod_1.z.string().optional().describe('Auto-assign to a specific user'),
78
- type: zod_1.z.string().optional().default('mcp').describe('Escalation type classification'),
79
- subtype: zod_1.z.string().optional().default('wait_for_human').describe('Escalation subtype'),
80
- priority: zod_1.z.number().min(1).max(4).optional().default(1)
81
- .describe('Priority: 1 (highest) to 4 (lowest)'),
82
- }).passthrough();
83
- /**
84
- * Create the Long Tail Human Queue MCP server.
85
- *
86
- * Registers five tools that expose the escalation API:
87
- * - escalate_to_human — create a new escalation (fire-and-forget)
88
- * - check_resolution — check escalation status
89
- * - get_available_work — list available escalations by role
90
- * - claim_and_resolve — claim + resolve in one step
91
- * - escalate_and_wait — create escalation and return signal for durable wait
92
- *
93
- * The server is created with tools registered but no transport
94
- * auto-connected. Callers connect a transport programmatically
95
- * or via the Streamable HTTP endpoint.
96
- */
97
- async function createHumanQueueServer(options) {
98
- if (server)
99
- return server;
100
- const name = options?.name || 'long-tail-human-queue';
101
- server = new mcp_js_1.McpServer({ name, version: '1.0.0' });
102
- // ── escalate_to_human ───────────────────────────────────────────────
103
- server.registerTool('escalate_to_human', {
104
- title: 'Escalate to Human',
105
- description: 'Create a new escalation for human review. Returns the escalation ID.',
106
- inputSchema: escalateSchema,
107
- }, async (args) => {
108
- const escalation = await escalationService.createEscalation({
109
- type: args.type || 'mcp',
110
- subtype: args.subtype || 'tool_call',
111
- description: args.message,
112
- priority: args.priority,
113
- role: args.role,
114
- envelope: JSON.stringify(args.data || {}),
115
- metadata: { source: 'mcp_server' },
116
- });
117
- return {
118
- content: [{
119
- type: 'text',
120
- text: JSON.stringify({
121
- escalation_id: escalation.id,
122
- status: escalation.status,
123
- role: escalation.role,
124
- created_at: escalation.created_at,
125
- }),
126
- }],
127
- };
128
- });
129
- // ── check_resolution ────────────────────────────────────────────────
130
- server.registerTool('check_resolution', {
131
- title: 'Check Escalation Resolution',
132
- description: 'Check the status of an escalation. Returns status and resolver payload if resolved.',
133
- inputSchema: checkResolutionSchema,
134
- }, async (args) => {
135
- const escalation = await escalationService.getEscalation(args.escalation_id);
136
- if (!escalation) {
137
- return {
138
- content: [{
139
- type: 'text',
140
- text: JSON.stringify({ error: 'Escalation not found' }),
141
- }],
142
- isError: true,
143
- };
144
- }
145
- const result = {
146
- escalation_id: escalation.id,
147
- status: escalation.status,
148
- };
149
- if (escalation.status === 'resolved' && escalation.resolver_payload) {
150
- try {
151
- result.resolver_payload = JSON.parse(escalation.resolver_payload);
152
- }
153
- catch {
154
- result.resolver_payload = escalation.resolver_payload;
155
- }
156
- result.resolved_at = escalation.resolved_at;
157
- }
158
- return {
159
- content: [{ type: 'text', text: JSON.stringify(result) }],
160
- };
161
- });
162
- // ── get_available_work ──────────────────────────────────────────────
163
- server.registerTool('get_available_work', {
164
- title: 'Get Available Work',
165
- description: 'List available escalations for a role. Returns pending, unassigned escalations.',
166
- inputSchema: getAvailableWorkSchema,
167
- }, async (args) => {
168
- const { escalations } = await escalationService.listAvailableEscalations({
169
- role: args.role,
170
- limit: args.limit,
171
- });
172
- const items = escalations.map((e) => ({
173
- escalation_id: e.id,
174
- type: e.type,
175
- subtype: e.subtype,
176
- description: e.description,
177
- priority: e.priority,
178
- role: e.role,
179
- created_at: e.created_at,
180
- }));
181
- return {
182
- content: [{
183
- type: 'text',
184
- text: JSON.stringify({ count: items.length, escalations: items }),
185
- }],
186
- };
187
- });
188
- // ── claim_and_resolve ───────────────────────────────────────────────
189
- server.registerTool('claim_and_resolve', {
190
- title: 'Claim and Resolve',
191
- description: 'Claim an escalation and immediately resolve it with a payload. Atomic operation.',
192
- inputSchema: claimAndResolveSchema,
193
- }, async (args) => {
194
- const claimed = await escalationService.claimEscalation(args.escalation_id, args.resolver_id, 5);
195
- if (!claimed) {
196
- return {
197
- content: [{
198
- type: 'text',
199
- text: JSON.stringify({ error: 'Escalation not available for claim' }),
200
- }],
201
- isError: true,
202
- };
203
- }
204
- const resolved = await escalationService.resolveEscalation(args.escalation_id, args.payload);
205
- if (!resolved) {
206
- return {
207
- content: [{
208
- type: 'text',
209
- text: JSON.stringify({ error: 'Failed to resolve escalation' }),
210
- }],
211
- isError: true,
212
- };
213
- }
214
- return {
215
- content: [{
216
- type: 'text',
217
- text: JSON.stringify({
218
- escalation_id: resolved.id,
219
- status: resolved.status,
220
- resolved_at: resolved.resolved_at,
221
- }),
222
- }],
223
- };
224
- });
225
- // ── resolve_escalation ──────────────────────────────────────────────
226
- server.registerTool('resolve_escalation', {
227
- title: 'Resolve Escalation',
228
- description: 'Resolve an already-claimed escalation with a payload. Use when the claim happened externally (e.g. via API).',
229
- inputSchema: resolveEscalationSchema,
230
- }, async (args) => {
231
- const resolved = await escalationService.resolveEscalation(args.escalation_id, args.payload);
232
- if (!resolved) {
233
- return {
234
- content: [{
235
- type: 'text',
236
- text: JSON.stringify({ error: 'Failed to resolve escalation' }),
237
- }],
238
- isError: true,
239
- };
240
- }
241
- return {
242
- content: [{
243
- type: 'text',
244
- text: JSON.stringify({
245
- escalation_id: resolved.id,
246
- status: resolved.status,
247
- resolved_at: resolved.resolved_at,
248
- }),
249
- }],
250
- };
251
- });
252
- // ── escalate_and_wait ──────────────────────────────────────────────
253
- server.registerTool('escalate_and_wait', {
254
- title: 'Escalate and Wait',
255
- description: 'Create an escalation and pause the workflow until a human responds. ' +
256
- 'Returns a signal ID that the workflow uses to wait. ' +
257
- 'Preferred over escalate_to_human + check_resolution polling.',
258
- inputSchema: escalateAndWaitSchema,
259
- }, async (args) => {
260
- const signalId = `wait-for-human-${crypto.randomUUID()}`;
261
- // YAML workflows inject _yaml_signal_routing to override Durable's signalId-based routing
262
- const yamlRouting = args._yaml_signal_routing;
263
- const signalRouting = yamlRouting
264
- ? { ...yamlRouting, signalId }
265
- : { signalId };
266
- const metadata = {
267
- source: 'mcp_server',
268
- signal_routing: signalRouting,
269
- };
270
- if (args.form_schema) {
271
- metadata.form_schema = args.form_schema;
272
- }
273
- const escalation = await escalationService.createEscalation({
274
- type: args.type || 'mcp',
275
- subtype: args.subtype || 'wait_for_human',
276
- description: args.message,
277
- priority: args.priority,
278
- role: args.role,
279
- envelope: JSON.stringify(args.data || {}),
280
- metadata,
281
- workflow_type: yamlRouting?.workflowType,
282
- workflow_id: yamlRouting?.workflowId,
283
- task_queue: yamlRouting?.taskQueue,
284
- });
285
- if (args.assigned_to) {
286
- await escalationService.claimEscalation(escalation.id, args.assigned_to, 240);
287
- }
288
- return {
289
- content: [{
290
- type: 'text',
291
- text: JSON.stringify({
292
- type: 'waitFor',
293
- signalId,
294
- escalationId: escalation.id,
295
- }),
296
- }],
297
- };
298
- });
299
- logger_1.loggerRegistry.info(`[lt-mcp:server] ${name} ready (5 tools registered)`);
300
- return server;
301
- }
302
- /**
303
- * Get the current MCP server instance.
304
- */
305
- function getServer() {
306
- return server;
307
- }
308
- /**
309
- * Stop the MCP server and release resources.
310
- */
311
- async function stopServer() {
312
- if (server) {
313
- await server.close();
314
- server = null;
315
- logger_1.loggerRegistry.info('[lt-mcp:server] stopped');
316
- }
317
- }
3
+ exports.stopServer = exports.getServer = exports.createHumanQueueServer = exports.registerHumanQueueTools = void 0;
4
+ var server_tools_1 = require("./server-tools");
5
+ Object.defineProperty(exports, "registerHumanQueueTools", { enumerable: true, get: function () { return server_tools_1.registerHumanQueueTools; } });
6
+ var server_lifecycle_1 = require("./server-lifecycle");
7
+ Object.defineProperty(exports, "createHumanQueueServer", { enumerable: true, get: function () { return server_lifecycle_1.createHumanQueueServer; } });
8
+ Object.defineProperty(exports, "getServer", { enumerable: true, get: function () { return server_lifecycle_1.getServer; } });
9
+ Object.defineProperty(exports, "stopServer", { enumerable: true, get: function () { return server_lifecycle_1.stopServer; } });
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Regenerate a Plan Build workflow from its original prompt + compilation feedback.
3
+ *
4
+ * Reuses the builder's LLM call and prompt structure without spawning a full
5
+ * durable workflow. This is the fast path for "Recompile Pipeline" on Plan Build
6
+ * workflows that don't have an execution trace.
7
+ */
8
+ interface RebuildResult {
9
+ yaml: string;
10
+ inputSchema: Record<string, unknown>;
11
+ outputSchema: Record<string, unknown>;
12
+ activityManifest: unknown[];
13
+ tags: string[];
14
+ }
15
+ /**
16
+ * Rebuild a YAML workflow from a prompt with optional feedback on the prior attempt.
17
+ */
18
+ export declare function rebuildFromPrompt(options: {
19
+ prompt: string;
20
+ feedback?: string;
21
+ priorYaml?: string;
22
+ name: string;
23
+ appId: string;
24
+ }): Promise<RebuildResult>;
25
+ export {};