@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
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  // ─── Knowledge CRUD ─────────────────────────────────────────────────────────
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.APPEND_KNOWLEDGE = exports.LIST_DOMAINS = exports.DELETE_KNOWLEDGE = exports.COUNT_KNOWLEDGE_LIST = exports.LIST_KNOWLEDGE = exports.COUNT_KNOWLEDGE_SEARCH = exports.SEARCH_KNOWLEDGE = exports.GET_KNOWLEDGE = exports.UPSERT_KNOWLEDGE = void 0;
4
+ exports.APPEND_KNOWLEDGE = exports.REMOVE_KNOWLEDGE_FIELD = exports.SET_KNOWLEDGE_FIELD = exports.LIST_DOMAINS = exports.DELETE_KNOWLEDGE = exports.COUNT_KNOWLEDGE_LIST = exports.LIST_KNOWLEDGE = exports.COUNT_KNOWLEDGE_SEARCH = exports.SEARCH_KNOWLEDGE = exports.GET_KNOWLEDGE = exports.REPLACE_KNOWLEDGE = exports.UPSERT_KNOWLEDGE = void 0;
5
5
  // Upsert knowledge entry. On conflict (domain+key), merges JSONB data at
6
6
  // the top level — new keys are added, existing keys are overwritten.
7
7
  //
@@ -20,6 +20,15 @@ exports.UPSERT_KNOWLEDGE = `
20
20
  END,
21
21
  tags = ARRAY(SELECT DISTINCT unnest(lt_knowledge.tags || EXCLUDED.tags))
22
22
  RETURNING id, domain, key, (xmax = 0) AS created, updated_at`;
23
+ // Full replacement — overwrites data and tags entirely (no merge).
24
+ // Used when removing fields or tags.
25
+ exports.REPLACE_KNOWLEDGE = `
26
+ INSERT INTO lt_knowledge (domain, key, data, tags)
27
+ VALUES ($1, $2, $3, $4)
28
+ ON CONFLICT (domain, key) DO UPDATE SET
29
+ data = EXCLUDED.data,
30
+ tags = EXCLUDED.tags
31
+ RETURNING id, domain, key, (xmax = 0) AS created, updated_at`;
23
32
  exports.GET_KNOWLEDGE = `
24
33
  SELECT id, domain, key, data, tags, created_at, updated_at
25
34
  FROM lt_knowledge WHERE domain = $1 AND key = $2`;
@@ -40,6 +49,21 @@ exports.DELETE_KNOWLEDGE = `
40
49
  exports.LIST_DOMAINS = `
41
50
  SELECT domain, COUNT(*)::int AS count, MAX(updated_at) AS latest
42
51
  FROM lt_knowledge GROUP BY domain ORDER BY latest DESC`;
52
+ // Set a value at a specific JSONB path without clobbering siblings.
53
+ // Creates the entry if it doesn't exist. Uses jsonb_set for surgical updates.
54
+ exports.SET_KNOWLEDGE_FIELD = `
55
+ INSERT INTO lt_knowledge (domain, key, data, tags)
56
+ VALUES ($1, $2, $3::jsonb, $4)
57
+ ON CONFLICT (domain, key) DO UPDATE SET
58
+ data = jsonb_set(lt_knowledge.data, $5::text[], $6::jsonb, true),
59
+ tags = ARRAY(SELECT DISTINCT unnest(lt_knowledge.tags || EXCLUDED.tags))
60
+ RETURNING id, domain, key, (xmax = 0) AS created, updated_at`;
61
+ // Remove a field at a specific JSONB path. Entry survives; only the targeted path is removed.
62
+ exports.REMOVE_KNOWLEDGE_FIELD = `
63
+ UPDATE lt_knowledge
64
+ SET data = data #- $3::text[]
65
+ WHERE domain = $1 AND key = $2
66
+ RETURNING id, domain, key, updated_at`;
43
67
  exports.APPEND_KNOWLEDGE = `
44
68
  INSERT INTO lt_knowledge (domain, key, data)
45
69
  VALUES ($1, $2, $3::jsonb)
@@ -52,6 +52,8 @@ const readFileSchema = zod_1.z.object({
52
52
  const listFilesSchema = zod_1.z.object({
53
53
  directory: zod_1.z.string().optional().describe('Subdirectory to list (default: root)'),
54
54
  pattern: zod_1.z.string().optional().describe('Glob-like filter pattern (e.g., "*.json")'),
55
+ page_size: zod_1.z.number().optional().describe('Max results per page (default 100)'),
56
+ continuation_token: zod_1.z.string().optional().describe('Pagination token from a previous response'),
55
57
  });
56
58
  const deleteFileSchema = zod_1.z.object({
57
59
  path: zod_1.z.string().describe('File path relative to storage root'),
@@ -82,7 +84,7 @@ async function createFileStorageServer(options) {
82
84
  });
83
85
  instance.registerTool('list_files', {
84
86
  title: 'List Files',
85
- description: 'List files in a storage directory. Returns file paths, sizes, and modification timestamps.',
87
+ description: 'List files and directories at a storage prefix. Supports cursor-based pagination via continuation tokens. Returns file paths, sizes, timestamps, subdirectories, and a nextToken for the next page.',
86
88
  inputSchema: listFilesSchema,
87
89
  }, async (args) => {
88
90
  const result = await fileStorage.listFiles(args);
@@ -0,0 +1,91 @@
1
+ import { z } from 'zod';
2
+ export declare const escalateSchema: z.ZodObject<{
3
+ role: z.ZodString;
4
+ message: z.ZodString;
5
+ data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
6
+ type: z.ZodDefault<z.ZodOptional<z.ZodString>>;
7
+ subtype: z.ZodDefault<z.ZodOptional<z.ZodString>>;
8
+ priority: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
9
+ }, "strip", z.ZodTypeAny, {
10
+ role: string;
11
+ type: string;
12
+ message: string;
13
+ priority: number;
14
+ subtype: string;
15
+ data?: Record<string, any> | undefined;
16
+ }, {
17
+ role: string;
18
+ message: string;
19
+ data?: Record<string, any> | undefined;
20
+ type?: string | undefined;
21
+ priority?: number | undefined;
22
+ subtype?: string | undefined;
23
+ }>;
24
+ export declare const checkResolutionSchema: z.ZodObject<{
25
+ escalation_id: z.ZodString;
26
+ }, "strip", z.ZodTypeAny, {
27
+ escalation_id: string;
28
+ }, {
29
+ escalation_id: string;
30
+ }>;
31
+ export declare const getAvailableWorkSchema: z.ZodObject<{
32
+ role: z.ZodString;
33
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ role: string;
36
+ limit: number;
37
+ }, {
38
+ role: string;
39
+ limit?: number | undefined;
40
+ }>;
41
+ export declare const claimAndResolveSchema: z.ZodObject<{
42
+ escalation_id: z.ZodString;
43
+ resolver_id: z.ZodString;
44
+ payload: z.ZodRecord<z.ZodString, z.ZodAny>;
45
+ }, "strip", z.ZodTypeAny, {
46
+ escalation_id: string;
47
+ resolver_id: string;
48
+ payload: Record<string, any>;
49
+ }, {
50
+ escalation_id: string;
51
+ resolver_id: string;
52
+ payload: Record<string, any>;
53
+ }>;
54
+ export declare const resolveEscalationSchema: z.ZodObject<{
55
+ escalation_id: z.ZodString;
56
+ payload: z.ZodRecord<z.ZodString, z.ZodAny>;
57
+ }, "strip", z.ZodTypeAny, {
58
+ escalation_id: string;
59
+ payload: Record<string, any>;
60
+ }, {
61
+ escalation_id: string;
62
+ payload: Record<string, any>;
63
+ }>;
64
+ export declare const escalateAndWaitSchema: z.ZodObject<{
65
+ role: z.ZodString;
66
+ message: z.ZodString;
67
+ form_schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
68
+ data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
69
+ assigned_to: z.ZodOptional<z.ZodString>;
70
+ type: z.ZodDefault<z.ZodOptional<z.ZodString>>;
71
+ subtype: z.ZodDefault<z.ZodOptional<z.ZodString>>;
72
+ priority: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
73
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
74
+ role: z.ZodString;
75
+ message: z.ZodString;
76
+ form_schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
77
+ data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
78
+ assigned_to: z.ZodOptional<z.ZodString>;
79
+ type: z.ZodDefault<z.ZodOptional<z.ZodString>>;
80
+ subtype: z.ZodDefault<z.ZodOptional<z.ZodString>>;
81
+ priority: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
82
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
83
+ role: z.ZodString;
84
+ message: z.ZodString;
85
+ form_schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
86
+ data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
87
+ assigned_to: z.ZodOptional<z.ZodString>;
88
+ type: z.ZodDefault<z.ZodOptional<z.ZodString>>;
89
+ subtype: z.ZodDefault<z.ZodOptional<z.ZodString>>;
90
+ priority: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
91
+ }, z.ZodTypeAny, "passthrough">>;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.escalateAndWaitSchema = exports.resolveEscalationSchema = exports.claimAndResolveSchema = exports.getAvailableWorkSchema = exports.checkResolutionSchema = exports.escalateSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ // ── Schemas (extracted to break TS2589 deep-instantiation in registerTool generics) ──
6
+ exports.escalateSchema = zod_1.z.object({
7
+ role: zod_1.z.string().describe('Target role for the escalation (e.g., "reviewer")'),
8
+ message: zod_1.z.string().describe('Description of what needs human review'),
9
+ data: zod_1.z.record(zod_1.z.any()).optional().describe('Contextual data for the reviewer'),
10
+ type: zod_1.z.string().optional().default('mcp').describe('Escalation type classification'),
11
+ subtype: zod_1.z.string().optional().default('tool_call').describe('Escalation subtype'),
12
+ priority: zod_1.z.number().min(1).max(4).optional().default(2)
13
+ .describe('Priority: 1 (highest) to 4 (lowest)'),
14
+ });
15
+ exports.checkResolutionSchema = zod_1.z.object({
16
+ escalation_id: zod_1.z.string().describe('The escalation ID to check'),
17
+ });
18
+ exports.getAvailableWorkSchema = zod_1.z.object({
19
+ role: zod_1.z.string().describe('Role to filter by'),
20
+ limit: zod_1.z.number().optional().default(10).describe('Max results to return'),
21
+ });
22
+ exports.claimAndResolveSchema = zod_1.z.object({
23
+ escalation_id: zod_1.z.string().describe('The escalation ID to claim and resolve'),
24
+ resolver_id: zod_1.z.string().describe('Identifier for who/what is resolving'),
25
+ payload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload data'),
26
+ });
27
+ exports.resolveEscalationSchema = zod_1.z.object({
28
+ escalation_id: zod_1.z.string().describe('The escalation ID to resolve'),
29
+ payload: zod_1.z.record(zod_1.z.any()).describe('Resolution payload data'),
30
+ });
31
+ exports.escalateAndWaitSchema = zod_1.z.object({
32
+ role: zod_1.z.string().describe('Target role for the escalation (e.g., "reviewer")'),
33
+ message: zod_1.z.string().describe('Description of what input is needed from the human'),
34
+ form_schema: zod_1.z.record(zod_1.z.any()).optional()
35
+ .describe('JSON Schema for the resolver form. Use format:"password" for sensitive fields.'),
36
+ data: zod_1.z.record(zod_1.z.any()).optional().describe('Contextual data for the reviewer'),
37
+ assigned_to: zod_1.z.string().optional().describe('Auto-assign to a specific user'),
38
+ type: zod_1.z.string().optional().default('mcp').describe('Escalation type classification'),
39
+ subtype: zod_1.z.string().optional().default('wait_for_human').describe('Escalation subtype'),
40
+ priority: zod_1.z.number().min(1).max(4).optional().default(1)
41
+ .describe('Priority: 1 (highest) to 4 (lowest)'),
42
+ }).passthrough();
@@ -16,11 +16,7 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
16
16
  export declare function createHumanQueueServer(options?: {
17
17
  name?: string;
18
18
  }): Promise<McpServer>;
19
- /**
20
- * Get the current MCP server instance.
21
- */
19
+ /** Get the current MCP server instance. */
22
20
  export declare function getServer(): McpServer | null;
23
- /**
24
- * Stop the MCP server and release resources.
25
- */
21
+ /** Stop the MCP server and release resources. */
26
22
  export declare function stopServer(): Promise<void>;
@@ -38,48 +38,10 @@ exports.getServer = getServer;
38
38
  exports.stopServer = stopServer;
39
39
  const crypto = __importStar(require("crypto"));
40
40
  const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
41
- const zod_1 = require("zod");
42
41
  const logger_1 = require("../../lib/logger");
43
42
  const escalationService = __importStar(require("../../services/escalation"));
43
+ const human_queue_schemas_1 = require("./human-queue-schemas");
44
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
45
  /**
84
46
  * Create the Long Tail Human Queue MCP server.
85
47
  *
@@ -103,7 +65,7 @@ async function createHumanQueueServer(options) {
103
65
  server.registerTool('escalate_to_human', {
104
66
  title: 'Escalate to Human',
105
67
  description: 'Create a new escalation for human review. Returns the escalation ID.',
106
- inputSchema: escalateSchema,
68
+ inputSchema: human_queue_schemas_1.escalateSchema,
107
69
  }, async (args) => {
108
70
  const escalation = await escalationService.createEscalation({
109
71
  type: args.type || 'mcp',
@@ -130,7 +92,7 @@ async function createHumanQueueServer(options) {
130
92
  server.registerTool('check_resolution', {
131
93
  title: 'Check Escalation Resolution',
132
94
  description: 'Check the status of an escalation. Returns status and resolver payload if resolved.',
133
- inputSchema: checkResolutionSchema,
95
+ inputSchema: human_queue_schemas_1.checkResolutionSchema,
134
96
  }, async (args) => {
135
97
  const escalation = await escalationService.getEscalation(args.escalation_id);
136
98
  if (!escalation) {
@@ -163,7 +125,7 @@ async function createHumanQueueServer(options) {
163
125
  server.registerTool('get_available_work', {
164
126
  title: 'Get Available Work',
165
127
  description: 'List available escalations for a role. Returns pending, unassigned escalations.',
166
- inputSchema: getAvailableWorkSchema,
128
+ inputSchema: human_queue_schemas_1.getAvailableWorkSchema,
167
129
  }, async (args) => {
168
130
  const { escalations } = await escalationService.listAvailableEscalations({
169
131
  role: args.role,
@@ -189,7 +151,7 @@ async function createHumanQueueServer(options) {
189
151
  server.registerTool('claim_and_resolve', {
190
152
  title: 'Claim and Resolve',
191
153
  description: 'Claim an escalation and immediately resolve it with a payload. Atomic operation.',
192
- inputSchema: claimAndResolveSchema,
154
+ inputSchema: human_queue_schemas_1.claimAndResolveSchema,
193
155
  }, async (args) => {
194
156
  const claimed = await escalationService.claimEscalation(args.escalation_id, args.resolver_id, 5);
195
157
  if (!claimed) {
@@ -226,7 +188,7 @@ async function createHumanQueueServer(options) {
226
188
  server.registerTool('resolve_escalation', {
227
189
  title: 'Resolve Escalation',
228
190
  description: 'Resolve an already-claimed escalation with a payload. Use when the claim happened externally (e.g. via API).',
229
- inputSchema: resolveEscalationSchema,
191
+ inputSchema: human_queue_schemas_1.resolveEscalationSchema,
230
192
  }, async (args) => {
231
193
  const resolved = await escalationService.resolveEscalation(args.escalation_id, args.payload);
232
194
  if (!resolved) {
@@ -255,7 +217,7 @@ async function createHumanQueueServer(options) {
255
217
  description: 'Create an escalation and pause the workflow until a human responds. ' +
256
218
  'Returns a signal ID that the workflow uses to wait. ' +
257
219
  'Preferred over escalate_to_human + check_resolution polling.',
258
- inputSchema: escalateAndWaitSchema,
220
+ inputSchema: human_queue_schemas_1.escalateAndWaitSchema,
259
221
  }, async (args) => {
260
222
  const signalId = `wait-for-human-${crypto.randomUUID()}`;
261
223
  // YAML workflows inject _yaml_signal_routing to override Durable's signalId-based routing
@@ -300,15 +262,11 @@ async function createHumanQueueServer(options) {
300
262
  logger_1.loggerRegistry.info(`[lt-mcp:server] ${name} ready (5 tools registered)`);
301
263
  return server;
302
264
  }
303
- /**
304
- * Get the current MCP server instance.
305
- */
265
+ /** Get the current MCP server instance. */
306
266
  function getServer() {
307
267
  return server;
308
268
  }
309
- /**
310
- * Stop the MCP server and release resources.
311
- */
269
+ /** Stop the MCP server and release resources. */
312
270
  async function stopServer() {
313
271
  if (server) {
314
272
  await server.close();
@@ -39,10 +39,10 @@ const zod_1 = require("zod");
39
39
  const logger_1 = require("../../lib/logger");
40
40
  const knowledge = __importStar(require("../activities/knowledge"));
41
41
  const storeSchema = zod_1.z.object({
42
- domain: zod_1.z.string().describe('Top level of a 3-level hierarchy (domain > key > field). Groups related entries by namespace (e.g. "screenshots", "config", "analysis").'),
43
- key: zod_1.z.string().describe('Second level. Unique identifier within a domain (e.g. "homepage", "user_profile"). Multiple fields accumulate under the same domain+key.'),
44
- field: zod_1.z.string().optional().describe('Third level (leaf). Names a specific field within the domain+key entry (e.g. "url", "analysis", "score"). When provided, data is stored as { [field]: data } and merged into the existing entry. Calls with the same domain+key+field overwrite that field; different fields accumulate additively. Omit to pass data as a full object.'),
45
- data: zod_1.z.any().describe('The value to store. When field is provided, this can be any type (string, number, boolean, object, array). When field is omitted, this must be a JSON object whose keys become the fields.'),
42
+ domain: zod_1.z.string().describe('Namespace grouping related entries (e.g. "screenshots", "config", "analysis").'),
43
+ key: zod_1.z.string().describe('Unique identifier within the domain (e.g. "google", "user_profile").'),
44
+ field: zod_1.z.string().optional().describe('RECOMMENDED. Names a specific field to set within the entry (e.g. "2026-05-09", "url", "score"). Using field is additive — it merges into existing data without clobbering other fields. Without field, the entire data object is merged at the top level, which can overwrite existing fields with the same keys. Always use field when adding to an entry that may already have data.'),
45
+ data: zod_1.z.any().describe('The value to store. When field is provided, this can be any type (string, number, boolean, object, array) and is stored as { [field]: data }. When field is omitted, data must be a JSON object whose keys merge into existing data.'),
46
46
  tags: zod_1.z.array(zod_1.z.string()).optional().describe('Categorization tags (unioned on upsert)'),
47
47
  });
48
48
  const getSchema = zod_1.z.object({
@@ -54,9 +54,11 @@ const searchSchema = zod_1.z.object({
54
54
  query: zod_1.z.record(zod_1.z.any()).describe('JSONB containment query (e.g. {"type":"screenshot"})'),
55
55
  tags: zod_1.z.array(zod_1.z.string()).optional().describe('Filter by tags (any match)'),
56
56
  limit: zod_1.z.number().optional().describe('Max results (default 50, max 200)'),
57
+ offset: zod_1.z.number().optional().describe('Pagination offset'),
57
58
  });
58
59
  const listSchema = zod_1.z.object({
59
60
  domain: zod_1.z.string().describe('Knowledge domain'),
61
+ search: zod_1.z.string().optional().describe('Search by key name or tag (partial match)'),
60
62
  tags: zod_1.z.array(zod_1.z.string()).optional().describe('Filter by tags (any match)'),
61
63
  limit: zod_1.z.number().optional().describe('Max results (default 50, max 200)'),
62
64
  offset: zod_1.z.number().optional().describe('Pagination offset'),
@@ -65,6 +67,18 @@ const deleteSchema = zod_1.z.object({
65
67
  domain: zod_1.z.string().describe('Knowledge domain'),
66
68
  key: zod_1.z.string().describe('Document key to delete'),
67
69
  });
70
+ const setFieldSchema = zod_1.z.object({
71
+ domain: zod_1.z.string().describe('Knowledge domain'),
72
+ key: zod_1.z.string().describe('Document key'),
73
+ path: zod_1.z.string().describe('Dot-notation path to the field (e.g. "google.holiday", "config.retries"). Sets the value at this exact path without overwriting sibling fields.'),
74
+ value: zod_1.z.any().refine((v) => v !== undefined, 'value is required').describe('Value to set — any JSON type (string, number, boolean, object, array)'),
75
+ tags: zod_1.z.array(zod_1.z.string()).optional().describe('Tags to union with existing tags'),
76
+ });
77
+ const removeFieldSchema = zod_1.z.object({
78
+ domain: zod_1.z.string().describe('Knowledge domain'),
79
+ key: zod_1.z.string().describe('Document key'),
80
+ path: zod_1.z.string().describe('Dot-notation path to remove (e.g. "google.legacy_data", "temp.cache")'),
81
+ });
68
82
  const appendSchema = zod_1.z.object({
69
83
  domain: zod_1.z.string().describe('Knowledge domain'),
70
84
  key: zod_1.z.string().describe('Document key'),
@@ -74,11 +88,11 @@ const appendSchema = zod_1.z.object({
74
88
  function registerTools(server) {
75
89
  server.registerTool('store_knowledge', {
76
90
  title: 'Store Knowledge',
77
- description: 'Store a value in a 3-level additive hierarchy: domain > key > field. ' +
78
- 'Upserts by domain+key fields accumulate across calls. ' +
79
- 'If all three (domain+key+field) match, that field is overwritten. ' +
80
- 'When field is provided, data can be any type (string, number, etc.). ' +
81
- 'When field is omitted, data must be an object whose keys become the fields.',
91
+ description: 'Store a value in the knowledge base using a 3-level hierarchy: domain > key > field. ' +
92
+ 'IMPORTANT: Always use the field parameter when adding data to an existing entry — ' +
93
+ 'it merges additively without clobbering other fields. Without field, top-level keys ' +
94
+ 'in data overwrite existing keys with the same name. ' +
95
+ 'Example: domain="screenshots", key="google", field="2026-05-10", data="description text".',
82
96
  inputSchema: storeSchema,
83
97
  }, async (args) => {
84
98
  // When field is provided, wrap the data value as { [field]: data }
@@ -156,6 +170,26 @@ function registerTools(server) {
156
170
  const result = await knowledge.appendKnowledge(args);
157
171
  return { content: [{ type: 'text', text: JSON.stringify(result) }] };
158
172
  });
173
+ server.registerTool('set_knowledge_field', {
174
+ title: 'Set Knowledge Field',
175
+ description: 'RECOMMENDED for updating existing entries. Set a value at a specific path within a knowledge entry ' +
176
+ 'without overwriting sibling fields. Use dot-notation for nested paths (e.g. "google.holiday" sets ' +
177
+ 'data.google.holiday while preserving data.google.description). Creates the entry if it does not exist. ' +
178
+ 'Use this instead of store_knowledge when the entry may already have data you want to preserve.',
179
+ inputSchema: setFieldSchema,
180
+ }, async (args) => {
181
+ const result = await knowledge.setKnowledgeField(args);
182
+ return { content: [{ type: 'text', text: JSON.stringify(result) }] };
183
+ });
184
+ server.registerTool('remove_knowledge_field', {
185
+ title: 'Remove Knowledge Field',
186
+ description: 'Remove a specific field from a knowledge entry by dot-path. The entry survives — only the targeted ' +
187
+ 'path is deleted. Use this for intentional cleanup of obsolete or incorrect fields.',
188
+ inputSchema: removeFieldSchema,
189
+ }, async (args) => {
190
+ const result = await knowledge.removeKnowledgeField(args);
191
+ return { content: [{ type: 'text', text: JSON.stringify(result) }] };
192
+ });
159
193
  }
160
194
  async function createKnowledgeServer(options) {
161
195
  const name = options?.name || 'long-tail-knowledge';
@@ -40,6 +40,7 @@ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
40
40
  const zod_1 = require("zod");
41
41
  const logger_1 = require("../../lib/logger");
42
42
  const yamlGenerator = __importStar(require("../../services/yaml-workflow/generator"));
43
+ const durable_compiler_1 = require("../../services/yaml-workflow/durable-compiler");
43
44
  const yamlDb = __importStar(require("../../services/yaml-workflow/db"));
44
45
  const yamlDeployer = __importStar(require("../../services/yaml-workflow/deployer"));
45
46
  const yamlWorkers = __importStar(require("../../services/yaml-workflow/workers"));
@@ -65,6 +66,13 @@ const listSchema = zod_1.z.object({
65
66
  offset: zod_1.z.number().int().min(0).optional().default(0)
66
67
  .describe('Pagination offset'),
67
68
  });
69
+ const compileDurableSchema = zod_1.z.object({
70
+ source: zod_1.z.string().describe('TypeScript source code of the durable workflow function (inline source, not a file path)'),
71
+ workflow_name: zod_1.z.string().describe('Name of the exported workflow function to compile (e.g., "assemblyLine", "basicSignal")'),
72
+ yaml_name: zod_1.z.string().describe('Name for the generated YAML workflow (becomes graph topic)'),
73
+ description: zod_1.z.string().optional().describe('Optional description of what the workflow does'),
74
+ app_id: zod_1.z.string().optional().describe('Target namespace (defaults to "longtail")'),
75
+ });
68
76
  /**
69
77
  * Create the Workflow Compiler MCP server.
70
78
  *
@@ -216,6 +224,52 @@ async function createWorkflowCompilerServer(options) {
216
224
  }],
217
225
  };
218
226
  });
227
+ // ── compile_durable_to_yaml ────────────────────────────────────────
228
+ server.registerTool('compile_durable_to_yaml', {
229
+ title: 'Compile Durable Workflow to YAML',
230
+ description: 'Convert a procedural durable TypeScript workflow (Temporal-like API) into an equivalent ' +
231
+ 'HotMesh YAML DAG. The generated YAML runs without replay overhead and achieves the same ' +
232
+ 'orchestration behavior. Handles proxyActivities, sleep, condition/signal, escalation, ' +
233
+ 'startChild composition, parallel execution, and loop patterns.',
234
+ inputSchema: compileDurableSchema,
235
+ }, async (args) => {
236
+ const result = await (0, durable_compiler_1.compileDurableToYaml)({
237
+ source: args.source,
238
+ isFilePath: false,
239
+ workflowName: args.workflow_name,
240
+ name: args.yaml_name,
241
+ description: args.description,
242
+ appId: args.app_id,
243
+ });
244
+ const record = await yamlDb.createYamlWorkflow({
245
+ name: args.yaml_name,
246
+ description: args.description,
247
+ app_id: result.appId,
248
+ yaml_content: result.yaml,
249
+ graph_topic: result.graphTopic,
250
+ input_schema: result.inputSchema,
251
+ output_schema: result.outputSchema,
252
+ activity_manifest: result.activityManifest,
253
+ tags: result.tags,
254
+ source_workflow_type: 'durable',
255
+ original_prompt: args.description,
256
+ category: result.category,
257
+ metadata: { durable_source: args.source },
258
+ });
259
+ return {
260
+ content: [{
261
+ type: 'text',
262
+ text: JSON.stringify({
263
+ yaml_workflow_id: record.id,
264
+ app_id: record.app_id,
265
+ graph_topic: result.graphTopic,
266
+ activity_count: result.activityManifest.filter((a) => a.type === 'worker').length,
267
+ input_schema: result.inputSchema,
268
+ yaml_preview: result.yaml.slice(0, 500),
269
+ }),
270
+ }],
271
+ };
272
+ });
219
273
  logger_1.loggerRegistry.info(`[lt-mcp] workflow compiler server created: ${name}`);
220
274
  return server;
221
275
  }
@@ -0,0 +1,21 @@
1
+ import type { TriageResponseDeps } from './types';
2
+ declare const getUpstreamTasks: (originId: string) => Promise<import("../../..").LTTaskRecord[]>, getEscalationHistory: (originId: string) => Promise<import("../../..").LTEscalationRecord[]>, getToolTags: (workflowType: string) => Promise<string[]>, loadTriageTools: (tags?: string[] | undefined) => Promise<{
3
+ toolIds: string[];
4
+ inventory: string;
5
+ strategy: string;
6
+ }>, callTriageTool: (qualifiedName: string, args: Record<string, any>) => Promise<any>, callTriageLLM: (messages: any[], toolIds?: string[] | undefined) => Promise<import("../../../services/llm").LLMResponse>;
7
+ declare const ltEnrichEscalationRouting: (input: {
8
+ escalationId: string;
9
+ signalRouting: {
10
+ taskQueue: string;
11
+ workflowType: string;
12
+ workflowId: string;
13
+ signalId: string;
14
+ };
15
+ taskId?: string;
16
+ claimForUserId?: string;
17
+ }) => Promise<void>;
18
+ export declare const MAX_TOOL_ROUNDS: number;
19
+ /** Proxied activity refs passed to response handlers */
20
+ export declare const responseDeps: TriageResponseDeps;
21
+ export { getUpstreamTasks, getEscalationHistory, getToolTags, loadTriageTools, callTriageTool, callTriageLLM, ltEnrichEscalationRouting, };
@@ -0,0 +1,70 @@
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.ltEnrichEscalationRouting = exports.callTriageLLM = exports.callTriageTool = exports.loadTriageTools = exports.getToolTags = exports.getEscalationHistory = exports.getUpstreamTasks = exports.responseDeps = exports.MAX_TOOL_ROUNDS = void 0;
37
+ const hotmesh_1 = require("@hotmeshio/hotmesh");
38
+ const defaults_1 = require("../../../modules/defaults");
39
+ const activities = __importStar(require("../../activities/triage"));
40
+ const interceptorActivities = __importStar(require("../../../services/interceptor/activities"));
41
+ const { getUpstreamTasks, getEscalationHistory, getToolTags, loadTriageTools, callTriageTool, callTriageLLM, notifyEngineering, } = hotmesh_1.Durable.workflow.proxyActivities({
42
+ activities,
43
+ retry: {
44
+ maximumAttempts: 3,
45
+ backoffCoefficient: 2,
46
+ maximumInterval: '10 seconds',
47
+ },
48
+ });
49
+ exports.getUpstreamTasks = getUpstreamTasks;
50
+ exports.getEscalationHistory = getEscalationHistory;
51
+ exports.getToolTags = getToolTags;
52
+ exports.loadTriageTools = loadTriageTools;
53
+ exports.callTriageTool = callTriageTool;
54
+ exports.callTriageLLM = callTriageLLM;
55
+ const { ltCreateEscalation, ltCreateTask, ltGetTask, ltGetWorkflowConfig, ltStartWorkflow, ltEnrichEscalationRouting, } = hotmesh_1.Durable.workflow.proxyActivities({
56
+ activities: interceptorActivities,
57
+ taskQueue: 'lt-interceptor',
58
+ retry: { maximumAttempts: 3 },
59
+ });
60
+ exports.ltEnrichEscalationRouting = ltEnrichEscalationRouting;
61
+ exports.MAX_TOOL_ROUNDS = defaults_1.TOOL_ROUNDS_TRIAGE;
62
+ /** Proxied activity refs passed to response handlers */
63
+ exports.responseDeps = {
64
+ ltCreateEscalation,
65
+ ltCreateTask,
66
+ ltGetTask,
67
+ ltGetWorkflowConfig,
68
+ ltStartWorkflow,
69
+ notifyEngineering,
70
+ };