@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,111 @@
1
+ "use strict";
2
+ /**
3
+ * Regenerate a Plan Build workflow from its original prompt + compilation feedback.
4
+ *
5
+ * Reuses the builder's LLM call and prompt structure without spawning a full
6
+ * durable workflow. This is the fast path for "Recompile Pipeline" on Plan Build
7
+ * workflows that don't have an execution trace.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.rebuildFromPrompt = rebuildFromPrompt;
44
+ const llm_1 = require("../llm");
45
+ const defaults_1 = require("../../modules/defaults");
46
+ const logger_1 = require("../../lib/logger");
47
+ const BUILDER_MAX_TOKENS = 8192;
48
+ /**
49
+ * Rebuild a YAML workflow from a prompt with optional feedback on the prior attempt.
50
+ */
51
+ async function rebuildFromPrompt(options) {
52
+ // Load the builder's system prompt and tool inventory
53
+ const { loadBuilderTools } = await Promise.resolve().then(() => __importStar(require('../../system/workflows/mcp-workflow-builder/activities')));
54
+ const { BUILDER_SYSTEM_PROMPT, REFINE_PROMPT } = await Promise.resolve().then(() => __importStar(require('../../system/workflows/mcp-workflow-builder/prompts')));
55
+ const raw = await loadBuilderTools();
56
+ const serverSection = [
57
+ raw.strategy ? `${raw.strategy}\n` : '',
58
+ `## Available MCP Servers & Tools\n\n${raw.inventory}`,
59
+ ].filter(Boolean).join('\n');
60
+ const messages = [
61
+ { role: 'system', content: BUILDER_SYSTEM_PROMPT(serverSection) },
62
+ ];
63
+ if (options.feedback && options.priorYaml) {
64
+ messages.push({ role: 'user', content: `Build a workflow for: ${options.prompt}` });
65
+ messages.push({
66
+ role: 'assistant',
67
+ content: `Here is the prior YAML that needs fixing:\n\`\`\`yaml\n${options.priorYaml.slice(0, 3000)}\n\`\`\``,
68
+ });
69
+ messages.push({
70
+ role: 'user',
71
+ content: `${REFINE_PROMPT}\n\nExecution feedback:\n${options.feedback}`,
72
+ });
73
+ }
74
+ else {
75
+ messages.push({ role: 'user', content: `Build a workflow for: ${options.prompt}` });
76
+ }
77
+ // Call LLM with retry
78
+ for (let attempt = 0; attempt < 3; attempt++) {
79
+ const t0 = Date.now();
80
+ const response = await (0, llm_1.callLLM)({
81
+ model: defaults_1.LLM_MODEL_PRIMARY,
82
+ messages,
83
+ temperature: 0,
84
+ max_tokens: BUILDER_MAX_TOKENS,
85
+ });
86
+ logger_1.loggerRegistry.info(`[builder-regenerate] attempt=${attempt + 1} ${Date.now() - t0}ms | in=${response.usage?.prompt_tokens} out=${response.usage?.completion_tokens}`);
87
+ const content = response.content || '';
88
+ const cleaned = content.replace(/^```(?:json)?\s*/m, '').replace(/\s*```\s*$/m, '');
89
+ try {
90
+ const parsed = JSON.parse(cleaned);
91
+ if (!parsed.yaml)
92
+ throw new Error('Missing yaml in response');
93
+ return {
94
+ yaml: parsed.yaml,
95
+ inputSchema: parsed.input_schema || {},
96
+ outputSchema: parsed.output_schema || {},
97
+ activityManifest: parsed.activity_manifest || [],
98
+ tags: parsed.tags || [],
99
+ };
100
+ }
101
+ catch (err) {
102
+ logger_1.loggerRegistry.warn(`[builder-regenerate] parse failed (attempt ${attempt + 1}): ${err.message}`);
103
+ messages.push({ role: 'assistant', content });
104
+ messages.push({
105
+ role: 'user',
106
+ content: `Your response was not valid JSON. Return ONLY a JSON object with "yaml", "input_schema", "output_schema", "activity_manifest", and "tags" fields.`,
107
+ });
108
+ }
109
+ }
110
+ throw new Error('Failed to regenerate YAML after 3 attempts');
111
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Version history and cron scheduling DB operations for yaml-workflows.
3
+ *
4
+ * Extracted from db.ts to keep each file under 300 lines.
5
+ */
6
+ import type { LTYamlWorkflowRecord, LTYamlWorkflowVersionRecord, ActivityManifestEntry } from '../../types/yaml-workflow';
7
+ export declare function createVersionSnapshot(workflowId: string, version: number, yamlContent: string, activityManifest: ActivityManifestEntry[] | unknown, inputSchema: Record<string, unknown> | unknown, outputSchema: Record<string, unknown> | unknown, inputFieldMeta?: unknown, changeSummary?: string): Promise<LTYamlWorkflowVersionRecord>;
8
+ export declare function getVersionHistory(workflowId: string, limit?: number, offset?: number): Promise<{
9
+ versions: LTYamlWorkflowVersionRecord[];
10
+ total: number;
11
+ }>;
12
+ export declare function getVersionSnapshot(workflowId: string, version: number): Promise<LTYamlWorkflowVersionRecord | null>;
13
+ export declare function markContentDeployed(workflowId: string): Promise<void>;
14
+ export declare function markAppIdContentDeployed(appId: string): Promise<void>;
15
+ export declare function updateCronSchedule(id: string, cronSchedule: string, cronEnvelope: Record<string, unknown> | null, executeAs: string | null): Promise<LTYamlWorkflowRecord | null>;
16
+ export declare function clearCronSchedule(id: string): Promise<LTYamlWorkflowRecord | null>;
17
+ export declare function getCronScheduledWorkflows(): Promise<LTYamlWorkflowRecord[]>;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ /**
3
+ * Version history and cron scheduling DB operations for yaml-workflows.
4
+ *
5
+ * Extracted from db.ts to keep each file under 300 lines.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.createVersionSnapshot = createVersionSnapshot;
9
+ exports.getVersionHistory = getVersionHistory;
10
+ exports.getVersionSnapshot = getVersionSnapshot;
11
+ exports.markContentDeployed = markContentDeployed;
12
+ exports.markAppIdContentDeployed = markAppIdContentDeployed;
13
+ exports.updateCronSchedule = updateCronSchedule;
14
+ exports.clearCronSchedule = clearCronSchedule;
15
+ exports.getCronScheduledWorkflows = getCronScheduledWorkflows;
16
+ const db_1 = require("../../lib/db");
17
+ const defaults_1 = require("../../modules/defaults");
18
+ const sql_1 = require("./sql");
19
+ // -- Version history ---------------------------------------------------------
20
+ async function createVersionSnapshot(workflowId, version, yamlContent, activityManifest, inputSchema, outputSchema, inputFieldMeta, changeSummary) {
21
+ const pool = (0, db_1.getPool)();
22
+ const { rows } = await pool.query(sql_1.CREATE_VERSION_SNAPSHOT, [
23
+ workflowId, version, yamlContent,
24
+ JSON.stringify(activityManifest),
25
+ JSON.stringify(inputSchema),
26
+ JSON.stringify(outputSchema),
27
+ JSON.stringify(inputFieldMeta || []),
28
+ changeSummary || null,
29
+ ]);
30
+ return rows[0];
31
+ }
32
+ async function getVersionHistory(workflowId, limit = defaults_1.YAML_VERSION_LIMIT, offset = 0) {
33
+ const pool = (0, db_1.getPool)();
34
+ const [countResult, dataResult] = await Promise.all([
35
+ pool.query(sql_1.COUNT_VERSIONS, [workflowId]),
36
+ pool.query(sql_1.LIST_VERSIONS, [workflowId, limit, offset]),
37
+ ]);
38
+ return {
39
+ versions: dataResult.rows,
40
+ total: parseInt(countResult.rows[0].count, 10),
41
+ };
42
+ }
43
+ async function getVersionSnapshot(workflowId, version) {
44
+ const pool = (0, db_1.getPool)();
45
+ const { rows } = await pool.query(sql_1.GET_VERSION_SNAPSHOT, [workflowId, version]);
46
+ return rows[0] || null;
47
+ }
48
+ async function markContentDeployed(workflowId) {
49
+ const pool = (0, db_1.getPool)();
50
+ await pool.query(sql_1.MARK_CONTENT_DEPLOYED, [workflowId]);
51
+ }
52
+ async function markAppIdContentDeployed(appId) {
53
+ const pool = (0, db_1.getPool)();
54
+ await pool.query(sql_1.MARK_APP_ID_CONTENT_DEPLOYED, [appId]);
55
+ }
56
+ // -- Cron scheduling ---------------------------------------------------------
57
+ async function updateCronSchedule(id, cronSchedule, cronEnvelope, executeAs) {
58
+ const pool = (0, db_1.getPool)();
59
+ const { rows } = await pool.query(sql_1.UPDATE_CRON_SCHEDULE, [
60
+ id,
61
+ cronSchedule,
62
+ cronEnvelope ? JSON.stringify(cronEnvelope) : null,
63
+ executeAs,
64
+ ]);
65
+ return rows[0] || null;
66
+ }
67
+ async function clearCronSchedule(id) {
68
+ const pool = (0, db_1.getPool)();
69
+ const { rows } = await pool.query(sql_1.CLEAR_CRON_SCHEDULE, [id]);
70
+ return rows[0] || null;
71
+ }
72
+ async function getCronScheduledWorkflows() {
73
+ const pool = (0, db_1.getPool)();
74
+ const { rows } = await pool.query(sql_1.GET_CRON_SCHEDULED_WORKFLOWS);
75
+ return rows;
76
+ }
@@ -1,6 +1,7 @@
1
- import type { LTYamlWorkflowRecord, LTYamlWorkflowVersionRecord, ActivityManifestEntry } from '../../types/yaml-workflow';
1
+ import type { LTYamlWorkflowRecord } from '../../types/yaml-workflow';
2
2
  import type { CreateYamlWorkflowInput } from './types';
3
3
  export { parseVersionFromYaml, updateYamlWorkflowStatus, listYamlWorkflows, findYamlWorkflowsByTags, } from './db-utils';
4
+ export { createVersionSnapshot, getVersionHistory, getVersionSnapshot, markContentDeployed, markAppIdContentDeployed, updateCronSchedule, clearCronSchedule, getCronScheduledWorkflows, } from './db-versions';
4
5
  /**
5
6
  * Check whether a graph_topic is already in use by a non-archived workflow
6
7
  * in the same namespace. Returns the conflicting workflow name, or null.
@@ -30,18 +31,7 @@ export declare function listYamlWorkflowsByAppId(appId: string): Promise<LTYamlW
30
31
  *
31
32
  * A new namespace with no workflows returns '1'.
32
33
  * An existing namespace with one active tool at v1 returns '2' when a
33
- * second tool is added even though that second tool is "version 1" of itself.
34
+ * second tool is added -- even though that second tool is "version 1" of itself.
34
35
  */
35
36
  export declare function getNextAppVersion(appId: string): Promise<string>;
36
37
  export declare function getDistinctAppIds(): Promise<string[]>;
37
- export declare function createVersionSnapshot(workflowId: string, version: number, yamlContent: string, activityManifest: ActivityManifestEntry[] | unknown, inputSchema: Record<string, unknown> | unknown, outputSchema: Record<string, unknown> | unknown, inputFieldMeta?: unknown, changeSummary?: string): Promise<LTYamlWorkflowVersionRecord>;
38
- export declare function getVersionHistory(workflowId: string, limit?: number, offset?: number): Promise<{
39
- versions: LTYamlWorkflowVersionRecord[];
40
- total: number;
41
- }>;
42
- export declare function getVersionSnapshot(workflowId: string, version: number): Promise<LTYamlWorkflowVersionRecord | null>;
43
- export declare function markContentDeployed(workflowId: string): Promise<void>;
44
- export declare function markAppIdContentDeployed(appId: string): Promise<void>;
45
- export declare function updateCronSchedule(id: string, cronSchedule: string, cronEnvelope: Record<string, unknown> | null, executeAs: string | null): Promise<LTYamlWorkflowRecord | null>;
46
- export declare function clearCronSchedule(id: string): Promise<LTYamlWorkflowRecord | null>;
47
- export declare function getCronScheduledWorkflows(): Promise<LTYamlWorkflowRecord[]>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findYamlWorkflowsByTags = exports.listYamlWorkflows = exports.updateYamlWorkflowStatus = exports.parseVersionFromYaml = void 0;
3
+ exports.getCronScheduledWorkflows = exports.clearCronSchedule = exports.updateCronSchedule = exports.markAppIdContentDeployed = exports.markContentDeployed = exports.getVersionSnapshot = exports.getVersionHistory = exports.createVersionSnapshot = exports.findYamlWorkflowsByTags = exports.listYamlWorkflows = exports.updateYamlWorkflowStatus = exports.parseVersionFromYaml = void 0;
4
4
  exports.checkTopicConflict = checkTopicConflict;
5
5
  exports.createYamlWorkflow = createYamlWorkflow;
6
6
  exports.getYamlWorkflow = getYamlWorkflow;
@@ -13,24 +13,26 @@ exports.getActiveYamlWorkflows = getActiveYamlWorkflows;
13
13
  exports.listYamlWorkflowsByAppId = listYamlWorkflowsByAppId;
14
14
  exports.getNextAppVersion = getNextAppVersion;
15
15
  exports.getDistinctAppIds = getDistinctAppIds;
16
- exports.createVersionSnapshot = createVersionSnapshot;
17
- exports.getVersionHistory = getVersionHistory;
18
- exports.getVersionSnapshot = getVersionSnapshot;
19
- exports.markContentDeployed = markContentDeployed;
20
- exports.markAppIdContentDeployed = markAppIdContentDeployed;
21
- exports.updateCronSchedule = updateCronSchedule;
22
- exports.clearCronSchedule = clearCronSchedule;
23
- exports.getCronScheduledWorkflows = getCronScheduledWorkflows;
24
16
  const db_1 = require("../../lib/db");
25
- const defaults_1 = require("../../modules/defaults");
26
17
  const sql_1 = require("./sql");
27
18
  const db_utils_1 = require("./db-utils");
19
+ const db_versions_1 = require("./db-versions");
28
20
  // Re-export functions from db-utils
29
21
  var db_utils_2 = require("./db-utils");
30
22
  Object.defineProperty(exports, "parseVersionFromYaml", { enumerable: true, get: function () { return db_utils_2.parseVersionFromYaml; } });
31
23
  Object.defineProperty(exports, "updateYamlWorkflowStatus", { enumerable: true, get: function () { return db_utils_2.updateYamlWorkflowStatus; } });
32
24
  Object.defineProperty(exports, "listYamlWorkflows", { enumerable: true, get: function () { return db_utils_2.listYamlWorkflows; } });
33
25
  Object.defineProperty(exports, "findYamlWorkflowsByTags", { enumerable: true, get: function () { return db_utils_2.findYamlWorkflowsByTags; } });
26
+ // Re-export version history and cron scheduling from db-versions
27
+ var db_versions_2 = require("./db-versions");
28
+ Object.defineProperty(exports, "createVersionSnapshot", { enumerable: true, get: function () { return db_versions_2.createVersionSnapshot; } });
29
+ Object.defineProperty(exports, "getVersionHistory", { enumerable: true, get: function () { return db_versions_2.getVersionHistory; } });
30
+ Object.defineProperty(exports, "getVersionSnapshot", { enumerable: true, get: function () { return db_versions_2.getVersionSnapshot; } });
31
+ Object.defineProperty(exports, "markContentDeployed", { enumerable: true, get: function () { return db_versions_2.markContentDeployed; } });
32
+ Object.defineProperty(exports, "markAppIdContentDeployed", { enumerable: true, get: function () { return db_versions_2.markAppIdContentDeployed; } });
33
+ Object.defineProperty(exports, "updateCronSchedule", { enumerable: true, get: function () { return db_versions_2.updateCronSchedule; } });
34
+ Object.defineProperty(exports, "clearCronSchedule", { enumerable: true, get: function () { return db_versions_2.clearCronSchedule; } });
35
+ Object.defineProperty(exports, "getCronScheduledWorkflows", { enumerable: true, get: function () { return db_versions_2.getCronScheduledWorkflows; } });
34
36
  /**
35
37
  * Check whether a graph_topic is already in use by a non-archived workflow
36
38
  * in the same namespace. Returns the conflicting workflow name, or null.
@@ -68,7 +70,7 @@ async function createYamlWorkflow(input) {
68
70
  input.set_build_order ?? null,
69
71
  ]);
70
72
  const record = rows[0];
71
- await createVersionSnapshot(record.id, 1, record.yaml_content, input.activity_manifest || [], input.input_schema || {}, input.output_schema || {}, input.input_field_meta || [], 'Initial version');
73
+ await (0, db_versions_1.createVersionSnapshot)(record.id, 1, record.yaml_content, input.activity_manifest || [], input.input_schema || {}, input.output_schema || {}, input.input_field_meta || [], 'Initial version');
72
74
  return record;
73
75
  }
74
76
  async function getYamlWorkflow(id) {
@@ -145,7 +147,7 @@ async function updateYamlWorkflow(id, updates) {
145
147
  const { rows } = await pool.query(`UPDATE lt_yaml_workflows SET ${sets.join(', ')} WHERE id = $${idx} RETURNING *`, values);
146
148
  const record = rows[0] || null;
147
149
  if (record && yamlChanging) {
148
- await createVersionSnapshot(record.id, record.content_version, record.yaml_content, record.activity_manifest, record.input_schema, record.output_schema, record.input_field_meta);
150
+ await (0, db_versions_1.createVersionSnapshot)(record.id, record.content_version, record.yaml_content, record.activity_manifest, record.input_schema, record.output_schema, record.input_field_meta);
149
151
  }
150
152
  return record;
151
153
  }
@@ -182,7 +184,7 @@ async function listYamlWorkflowsByAppId(appId) {
182
184
  *
183
185
  * A new namespace with no workflows returns '1'.
184
186
  * An existing namespace with one active tool at v1 returns '2' when a
185
- * second tool is added even though that second tool is "version 1" of itself.
187
+ * second tool is added -- even though that second tool is "version 1" of itself.
186
188
  */
187
189
  async function getNextAppVersion(appId) {
188
190
  const pool = (0, db_1.getPool)();
@@ -195,61 +197,3 @@ async function getDistinctAppIds() {
195
197
  const { rows } = await pool.query(sql_1.GET_DISTINCT_APP_IDS);
196
198
  return rows.map((r) => r.app_id);
197
199
  }
198
- // -- Version history ---------------------------------------------------------
199
- async function createVersionSnapshot(workflowId, version, yamlContent, activityManifest, inputSchema, outputSchema, inputFieldMeta, changeSummary) {
200
- const pool = (0, db_1.getPool)();
201
- const { rows } = await pool.query(sql_1.CREATE_VERSION_SNAPSHOT, [
202
- workflowId, version, yamlContent,
203
- JSON.stringify(activityManifest),
204
- JSON.stringify(inputSchema),
205
- JSON.stringify(outputSchema),
206
- JSON.stringify(inputFieldMeta || []),
207
- changeSummary || null,
208
- ]);
209
- return rows[0];
210
- }
211
- async function getVersionHistory(workflowId, limit = defaults_1.YAML_VERSION_LIMIT, offset = 0) {
212
- const pool = (0, db_1.getPool)();
213
- const [countResult, dataResult] = await Promise.all([
214
- pool.query(sql_1.COUNT_VERSIONS, [workflowId]),
215
- pool.query(sql_1.LIST_VERSIONS, [workflowId, limit, offset]),
216
- ]);
217
- return {
218
- versions: dataResult.rows,
219
- total: parseInt(countResult.rows[0].count, 10),
220
- };
221
- }
222
- async function getVersionSnapshot(workflowId, version) {
223
- const pool = (0, db_1.getPool)();
224
- const { rows } = await pool.query(sql_1.GET_VERSION_SNAPSHOT, [workflowId, version]);
225
- return rows[0] || null;
226
- }
227
- async function markContentDeployed(workflowId) {
228
- const pool = (0, db_1.getPool)();
229
- await pool.query(sql_1.MARK_CONTENT_DEPLOYED, [workflowId]);
230
- }
231
- async function markAppIdContentDeployed(appId) {
232
- const pool = (0, db_1.getPool)();
233
- await pool.query(sql_1.MARK_APP_ID_CONTENT_DEPLOYED, [appId]);
234
- }
235
- // -- Cron scheduling ---------------------------------------------------------
236
- async function updateCronSchedule(id, cronSchedule, cronEnvelope, executeAs) {
237
- const pool = (0, db_1.getPool)();
238
- const { rows } = await pool.query(sql_1.UPDATE_CRON_SCHEDULE, [
239
- id,
240
- cronSchedule,
241
- cronEnvelope ? JSON.stringify(cronEnvelope) : null,
242
- executeAs,
243
- ]);
244
- return rows[0] || null;
245
- }
246
- async function clearCronSchedule(id) {
247
- const pool = (0, db_1.getPool)();
248
- const { rows } = await pool.query(sql_1.CLEAR_CRON_SCHEDULE, [id]);
249
- return rows[0] || null;
250
- }
251
- async function getCronScheduledWorkflows() {
252
- const pool = (0, db_1.getPool)();
253
- const { rows } = await pool.query(sql_1.GET_CRON_SCHEDULED_WORKFLOWS);
254
- return rows;
255
- }
@@ -56,27 +56,28 @@ async function buildMergedYaml(appId, version) {
56
56
  allGraphs.push(...parsed.app.graphs);
57
57
  }
58
58
  }
59
- // Pre-validate: check for duplicate activity IDs across all graphs
60
- const activityIds = new Map(); // id -> graph subscribes topic
61
- const duplicates = [];
59
+ // Resolve duplicate activity IDs across graphs by rewriting suffixes
60
+ const activityIds = new Set();
62
61
  for (const graph of allGraphs) {
63
62
  const g = graph;
64
- const topic = g.subscribes || 'unknown';
65
- if (g.activities) {
66
- for (const id of Object.keys(g.activities)) {
67
- if (activityIds.has(id)) {
68
- duplicates.push(`"${id}" in both "${activityIds.get(id)}" and "${topic}"`);
69
- }
70
- else {
71
- activityIds.set(id, topic);
72
- }
63
+ if (!g.activities)
64
+ continue;
65
+ // Check if any activity IDs collide with previously seen IDs
66
+ const ids = Object.keys(g.activities);
67
+ const hasCollision = ids.some((id) => activityIds.has(id));
68
+ if (hasCollision) {
69
+ // Rewrite all activity IDs in this graph with a unique suffix
70
+ const newSuffix = Math.random().toString(36).slice(2, 6);
71
+ const oldSuffix = extractSuffix(ids[0]);
72
+ if (oldSuffix) {
73
+ rewriteGraphSuffix(g, oldSuffix, newSuffix);
74
+ logger_1.loggerRegistry.info(`[yaml-workflow] rewrote activity suffix ${oldSuffix}→${newSuffix} in "${g.subscribes}" to resolve collision`);
73
75
  }
74
76
  }
75
- }
76
- if (duplicates.length > 0) {
77
- const msg = `Duplicate activity IDs across graphs in app "${appId}": ${duplicates.join('; ')}`;
78
- logger_1.loggerRegistry.error(`[yaml-workflow] ${msg}`);
79
- throw new Error(msg);
77
+ // Register all (possibly rewritten) activity IDs
78
+ for (const id of Object.keys(g.activities)) {
79
+ activityIds.add(id);
80
+ }
80
81
  }
81
82
  const merged = {
82
83
  app: {
@@ -87,6 +88,36 @@ async function buildMergedYaml(appId, version) {
87
88
  };
88
89
  return yaml.dump(merged, { lineWidth: defaults_1.YAML_LINE_WIDTH, noRefs: true, sortKeys: false });
89
90
  }
91
+ /** Extract the 4-char suffix from an activity ID like "trigger_x8kf" */
92
+ function extractSuffix(activityId) {
93
+ const match = activityId.match(/_([a-z0-9]{4})$/);
94
+ return match ? match[1] : null;
95
+ }
96
+ /** Rewrite all activity ID suffixes in a graph definition */
97
+ function rewriteGraphSuffix(graph, oldSuffix, newSuffix) {
98
+ const suffixPattern = new RegExp(`_${oldSuffix}\\b`, 'g');
99
+ const replace = (obj) => {
100
+ if (typeof obj === 'string')
101
+ return obj.replace(suffixPattern, `_${newSuffix}`);
102
+ if (Array.isArray(obj))
103
+ return obj.map(replace);
104
+ if (obj && typeof obj === 'object') {
105
+ const result = {};
106
+ for (const [k, v] of Object.entries(obj)) {
107
+ const newKey = k.replace(suffixPattern, `_${newSuffix}`);
108
+ result[newKey] = replace(v);
109
+ }
110
+ return result;
111
+ }
112
+ return obj;
113
+ };
114
+ if (graph.activities)
115
+ graph.activities = replace(graph.activities);
116
+ if (graph.transitions)
117
+ graph.transitions = replace(graph.transitions);
118
+ if (graph.hooks)
119
+ graph.hooks = replace(graph.hooks);
120
+ }
90
121
  /**
91
122
  * Re-run the compilation pipeline for the most recently compiled workflow
92
123
  * in the app, feeding the deployment error as context so the LLM can
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Durable-to-YAML compiler — converts procedural TypeScript workflows to YAML DAGs.
3
+ *
4
+ * This is "Path 3" for YAML DAG creation: static compilation from durable source
5
+ * code without executing the workflow. The LLM translates the procedural orchestration
6
+ * into an equivalent HotMesh YAML DAG that runs without replay overhead.
7
+ *
8
+ * Pipeline:
9
+ * 1. Read source (file or inline string)
10
+ * 2. Optionally resolve and read the activities module
11
+ * 3. Extract metadata (activity names, primitives, control flow)
12
+ * 4. Build LLM messages (system prompt + source + metadata)
13
+ * 5. Call LLM (temperature 0, retry on parse failure)
14
+ * 6. Fix known @pipe anti-patterns
15
+ * 7. Return result compatible with existing YAML workflow CRUD
16
+ */
17
+ import type { CompileDurableOptions, CompileDurableResult } from './types';
18
+ export type { CompileDurableOptions, CompileDurableResult } from './types';
19
+ /**
20
+ * Compile a durable TypeScript workflow into a HotMesh YAML DAG.
21
+ */
22
+ export declare function compileDurableToYaml(options: CompileDurableOptions): Promise<CompileDurableResult>;
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ /**
3
+ * Durable-to-YAML compiler — converts procedural TypeScript workflows to YAML DAGs.
4
+ *
5
+ * This is "Path 3" for YAML DAG creation: static compilation from durable source
6
+ * code without executing the workflow. The LLM translates the procedural orchestration
7
+ * into an equivalent HotMesh YAML DAG that runs without replay overhead.
8
+ *
9
+ * Pipeline:
10
+ * 1. Read source (file or inline string)
11
+ * 2. Optionally resolve and read the activities module
12
+ * 3. Extract metadata (activity names, primitives, control flow)
13
+ * 4. Build LLM messages (system prompt + source + metadata)
14
+ * 5. Call LLM (temperature 0, retry on parse failure)
15
+ * 6. Fix known @pipe anti-patterns
16
+ * 7. Return result compatible with existing YAML workflow CRUD
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.compileDurableToYaml = compileDurableToYaml;
20
+ const promises_1 = require("fs/promises");
21
+ const path_1 = require("path");
22
+ const llm_1 = require("../../llm");
23
+ const defaults_1 = require("../../../modules/defaults");
24
+ const logger_1 = require("../../../lib/logger");
25
+ const utils_1 = require("../../../modules/utils");
26
+ const parser_1 = require("./parser");
27
+ const prompts_1 = require("./prompts");
28
+ const MAX_COMPILE_ATTEMPTS = 3;
29
+ const COMPILER_MAX_TOKENS = 8192;
30
+ /**
31
+ * Compile a durable TypeScript workflow into a HotMesh YAML DAG.
32
+ */
33
+ async function compileDurableToYaml(options) {
34
+ const appId = options.appId || 'longtail';
35
+ const graphTopic = options.subscribes || (0, utils_1.sanitizeToolName)(options.name);
36
+ // 1. Read source
37
+ const source = options.isFilePath
38
+ ? await (0, promises_1.readFile)(options.source, 'utf-8')
39
+ : options.source;
40
+ // 2. Extract metadata
41
+ const metadata = (0, parser_1.extractDurableMetadata)(source, options.workflowName);
42
+ // 3. Optionally resolve and read activities module
43
+ let activitiesSource;
44
+ if (options.isFilePath && metadata.activityImports.length > 0) {
45
+ activitiesSource = await resolveActivitiesSource(options.source, metadata.activityImports);
46
+ }
47
+ // 4. Load activity types reference
48
+ const activityTypesRef = await loadActivityTypesReference();
49
+ // 5. Build LLM messages
50
+ const messages = [
51
+ {
52
+ role: 'system',
53
+ content: (0, prompts_1.DURABLE_COMPILER_SYSTEM_PROMPT)(activityTypesRef, metadata),
54
+ },
55
+ {
56
+ role: 'user',
57
+ content: (0, prompts_1.buildUserMessage)(source, metadata, activitiesSource),
58
+ },
59
+ ];
60
+ // 6. Call LLM with retry on parse failure
61
+ let parsed = null;
62
+ let lastError = '';
63
+ for (let attempt = 1; attempt <= MAX_COMPILE_ATTEMPTS; attempt++) {
64
+ const t0 = Date.now();
65
+ const response = await (0, llm_1.callLLM)({
66
+ model: defaults_1.LLM_MODEL_PRIMARY,
67
+ messages,
68
+ temperature: 0,
69
+ max_tokens: COMPILER_MAX_TOKENS,
70
+ });
71
+ logger_1.loggerRegistry.info(`[durable-compiler] attempt=${attempt} ${Date.now() - t0}ms | in=${response.usage?.prompt_tokens} out=${response.usage?.completion_tokens}`);
72
+ const content = response.content || '';
73
+ try {
74
+ parsed = parseJsonResponse(content);
75
+ break;
76
+ }
77
+ catch (err) {
78
+ lastError = err.message;
79
+ logger_1.loggerRegistry.warn(`[durable-compiler] JSON parse failed (attempt ${attempt}): ${lastError}`);
80
+ // Feed error back for retry
81
+ messages.push({ role: 'assistant', content });
82
+ messages.push({
83
+ role: 'user',
84
+ content: `Your response was not valid JSON. Error: ${lastError}\n\nPlease return ONLY the JSON object with no markdown fences or surrounding text.`,
85
+ });
86
+ }
87
+ }
88
+ if (!parsed) {
89
+ throw new Error(`[durable-compiler] Failed to get valid JSON after ${MAX_COMPILE_ATTEMPTS} attempts. Last error: ${lastError}`);
90
+ }
91
+ // 7. Fix known @pipe anti-patterns
92
+ let yaml = fixPipePatterns(parsed.yaml || '');
93
+ // 7b. Rewrite app.id to match the target appId
94
+ yaml = yaml.replace(/^(\s*id:\s*)(.+)$/m, `$1${appId}`);
95
+ // 8. Extract the actual subscribes topic from the YAML (LLM may choose its own)
96
+ const subscribesMatch = yaml.match(/subscribes:\s*(.+)/);
97
+ const actualTopic = subscribesMatch
98
+ ? subscribesMatch[1].trim().replace(/^['"]|['"]$/g, '')
99
+ : graphTopic;
100
+ // 9. Build result
101
+ return {
102
+ yaml,
103
+ inputSchema: parsed.input_schema || {},
104
+ outputSchema: parsed.output_schema || {},
105
+ activityManifest: parsed.activity_manifest || [],
106
+ graphTopic: actualTopic,
107
+ appId,
108
+ tags: parsed.tags || ['durable'],
109
+ inputFieldMeta: [],
110
+ category: 'durable',
111
+ };
112
+ }
113
+ /**
114
+ * Parse a JSON response from the LLM, stripping markdown fences if present.
115
+ */
116
+ function parseJsonResponse(content) {
117
+ let cleaned = content.trim();
118
+ // Strip markdown code fences
119
+ if (cleaned.startsWith('```')) {
120
+ cleaned = cleaned.replace(/^```(?:json)?\s*\n?/, '').replace(/\n?\s*```$/, '');
121
+ }
122
+ return JSON.parse(cleaned);
123
+ }
124
+ /**
125
+ * Fix known @pipe anti-patterns that LLMs consistently produce.
126
+ * Same fixes as the workflow-builder.
127
+ */
128
+ function fixPipePatterns(yaml) {
129
+ // Fix: ['{@date.toISOString}'] then [0, 10] then ['{@string.substring}']
130
+ yaml = yaml.replace(/(\['\{@date\.toISOString\}'\])\s*\n(\s*)- \[0, 10\]\s*\n(\s*)- \['\{@string\.substring\}'\]/g, "['{@date.toISOString}', 0, 10]\n$2- ['{@string.substring}']");
131
+ return yaml;
132
+ }
133
+ /**
134
+ * Load the full activity-types.md reference file.
135
+ */
136
+ async function loadActivityTypesReference() {
137
+ try {
138
+ const refPath = (0, path_1.join)(__dirname, '..', '..', '..', 'system', 'workflows', 'mcp-workflow-builder', 'reference', 'activity-types.md');
139
+ return await (0, promises_1.readFile)(refPath, 'utf-8');
140
+ }
141
+ catch {
142
+ // Fallback: return minimal reference if file not found
143
+ return '(Activity types reference not available — use trigger, worker, hook, await, cycle, signal, interrupt types as documented in HotMesh.)';
144
+ }
145
+ }
146
+ /**
147
+ * Resolve and read activities source from import paths.
148
+ * Returns combined source of all activity modules found.
149
+ */
150
+ async function resolveActivitiesSource(workflowFilePath, importPaths) {
151
+ const dir = (0, path_1.dirname)(workflowFilePath);
152
+ const sources = [];
153
+ for (const importPath of importPaths) {
154
+ // Try common extensions
155
+ const basePath = (0, path_1.resolve)(dir, importPath);
156
+ for (const ext of ['.ts', '/index.ts', '.js', '/index.js']) {
157
+ try {
158
+ const content = await (0, promises_1.readFile)(basePath + ext, 'utf-8');
159
+ sources.push(`// ${importPath}\n${content}`);
160
+ break;
161
+ }
162
+ catch {
163
+ // Try next extension
164
+ }
165
+ }
166
+ }
167
+ return sources.length > 0 ? sources.join('\n\n') : undefined;
168
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Lightweight regex-based metadata extractor for durable workflow source.
3
+ *
4
+ * Extracts structural hints (activity names, primitives, control flow)
5
+ * that ground the LLM during compilation. This is NOT a full AST parser —
6
+ * it gives the LLM better context without requiring ts-morph or the TS compiler API.
7
+ */
8
+ import type { DurableSourceMetadata } from './types';
9
+ /**
10
+ * Extract structural metadata from durable workflow TypeScript source.
11
+ */
12
+ export declare function extractDurableMetadata(source: string, workflowFunctionName: string): DurableSourceMetadata;