@hotmeshio/long-tail 0.1.5 → 0.1.7

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 (431) hide show
  1. package/README.md +78 -8
  2. package/build/api/auth.d.ts +5 -0
  3. package/build/api/auth.js +42 -0
  4. package/build/api/bot-accounts.d.ts +50 -0
  5. package/build/api/bot-accounts.js +215 -0
  6. package/build/api/controlplane.d.ts +20 -0
  7. package/build/api/controlplane.js +110 -0
  8. package/build/api/dba.d.ts +15 -0
  9. package/build/api/dba.js +68 -0
  10. package/build/api/escalations.d.ts +70 -0
  11. package/build/api/escalations.js +656 -0
  12. package/build/api/exports.d.ts +32 -0
  13. package/build/api/exports.js +146 -0
  14. package/build/api/index.d.ts +18 -0
  15. package/build/api/index.js +54 -0
  16. package/build/api/insight.d.ts +29 -0
  17. package/build/api/insight.js +90 -0
  18. package/build/api/maintenance.d.ts +7 -0
  19. package/build/api/maintenance.js +28 -0
  20. package/build/api/mcp-runs.d.ts +16 -0
  21. package/build/api/mcp-runs.js +62 -0
  22. package/build/api/mcp.d.ts +52 -0
  23. package/build/api/mcp.js +212 -0
  24. package/build/api/namespaces.d.ts +7 -0
  25. package/build/{routes/escalations/helpers.js → api/namespaces.js} +24 -12
  26. package/build/api/roles.d.ts +25 -0
  27. package/build/api/roles.js +159 -0
  28. package/build/api/settings.d.ts +2 -0
  29. package/build/api/settings.js +35 -0
  30. package/build/api/tasks.d.ts +27 -0
  31. package/build/api/tasks.js +96 -0
  32. package/build/api/users.d.ts +44 -0
  33. package/build/api/users.js +162 -0
  34. package/build/api/workflow-sets.d.ts +26 -0
  35. package/build/api/workflow-sets.js +119 -0
  36. package/build/api/workflows.d.ts +48 -0
  37. package/build/api/workflows.js +298 -0
  38. package/build/api/yaml-workflows.d.ts +87 -0
  39. package/build/api/yaml-workflows.js +556 -0
  40. package/build/index.d.ts +4 -0
  41. package/build/index.js +6 -1
  42. package/build/lib/db/migrate.js +3 -6
  43. package/{lib → build/lib}/db/schemas/001_schema.sql +3 -0
  44. package/build/lib/db/schemas/004_workflow_sets.sql +29 -0
  45. package/build/lib/db/schemas/005_unique_graph_topic.sql +7 -0
  46. package/{lib → build/lib}/db/schemas/011_system_workflow_configs.sql +14 -0
  47. package/build/lib/db/schemas/016_streamable_http.sql +7 -0
  48. package/build/lib/events/callback.d.ts +41 -0
  49. package/build/lib/events/callback.js +98 -0
  50. package/build/modules/config.js +1 -1
  51. package/build/routes/auth.js +37 -36
  52. package/build/routes/bot-accounts.js +34 -164
  53. package/build/routes/controlplane.js +20 -60
  54. package/build/routes/dba.js +18 -28
  55. package/build/routes/docs.js +25 -7
  56. package/build/routes/escalations/bulk.js +17 -192
  57. package/build/routes/escalations/list.js +29 -75
  58. package/build/routes/escalations/resolve.js +3 -193
  59. package/build/routes/escalations/single.js +13 -122
  60. package/build/routes/exports.js +44 -95
  61. package/build/routes/index.js +2 -0
  62. package/build/routes/insight.js +61 -40
  63. package/build/routes/maintenance.js +41 -17
  64. package/build/routes/mcp-runs.js +52 -60
  65. package/build/routes/mcp.js +55 -161
  66. package/build/routes/namespaces.js +9 -20
  67. package/build/routes/roles.js +23 -97
  68. package/build/routes/settings.js +37 -25
  69. package/build/routes/tasks.js +28 -64
  70. package/build/routes/users.js +24 -113
  71. package/build/routes/workflow-sets.d.ts +2 -0
  72. package/build/routes/workflow-sets.js +98 -0
  73. package/build/routes/workflows/config.js +23 -57
  74. package/build/routes/workflows/discovery.js +11 -85
  75. package/build/routes/workflows/invocation.js +16 -84
  76. package/build/routes/yaml-workflows/cron.d.ts +2 -0
  77. package/build/routes/yaml-workflows/cron.js +68 -0
  78. package/build/routes/yaml-workflows/crud.js +38 -193
  79. package/build/routes/yaml-workflows/deployment.js +15 -140
  80. package/build/routes/yaml-workflows/index.js +4 -1
  81. package/build/routes/yaml-workflows/versions.js +20 -58
  82. package/build/sdk/index.d.ts +327 -0
  83. package/build/sdk/index.js +298 -0
  84. package/build/services/controlplane/index.d.ts +1 -2
  85. package/build/services/controlplane/index.js +3 -3
  86. package/build/services/controlplane/sql.d.ts +2 -2
  87. package/build/services/controlplane/sql.js +4 -5
  88. package/build/services/controlplane/types.d.ts +1 -0
  89. package/build/services/cron/index.d.ts +17 -0
  90. package/build/services/cron/index.js +94 -1
  91. package/build/services/export/index.js +6 -1
  92. package/build/services/hotmesh-utils.js +2 -4
  93. package/build/services/insight/index.d.ts +18 -0
  94. package/build/services/insight/index.js +60 -0
  95. package/build/services/mcp/client/connection.d.ts +9 -0
  96. package/build/services/mcp/client/connection.js +49 -1
  97. package/build/services/mcp/client/tools.js +13 -1
  98. package/build/services/mcp/db-server/schemas.d.ts +2 -2
  99. package/build/services/mcp/db.d.ts +1 -1
  100. package/build/services/mcp/db.js +10 -0
  101. package/build/services/mcp/playwright-server/schemas.d.ts +4 -4
  102. package/build/services/mcp/sql.d.ts +1 -1
  103. package/build/services/mcp/sql.js +2 -2
  104. package/build/services/mcp/types.d.ts +3 -1
  105. package/build/services/mcp-runs/sql.js +1 -1
  106. package/build/services/workflow-sets/db.d.ts +16 -0
  107. package/build/services/workflow-sets/db.js +78 -0
  108. package/build/services/workflow-sets/index.d.ts +1 -0
  109. package/build/services/workflow-sets/index.js +11 -0
  110. package/build/services/workflow-sets/sql.d.ts +6 -0
  111. package/build/services/workflow-sets/sql.js +24 -0
  112. package/build/services/yaml-workflow/db-utils.d.ts +1 -0
  113. package/build/services/yaml-workflow/db-utils.js +4 -0
  114. package/build/services/yaml-workflow/db.d.ts +8 -0
  115. package/build/services/yaml-workflow/db.js +41 -0
  116. package/build/services/yaml-workflow/invoke.d.ts +19 -0
  117. package/build/services/yaml-workflow/invoke.js +80 -0
  118. package/build/services/yaml-workflow/pipeline/build/dag.js +1 -1
  119. package/build/services/yaml-workflow/pipeline/build/wiring.d.ts +1 -1
  120. package/build/services/yaml-workflow/pipeline/build/wiring.js +102 -2
  121. package/build/services/yaml-workflow/pipeline/prompts.d.ts +1 -1
  122. package/build/services/yaml-workflow/pipeline/prompts.js +44 -1
  123. package/build/services/yaml-workflow/sql.d.ts +5 -1
  124. package/build/services/yaml-workflow/sql.js +23 -3
  125. package/build/services/yaml-workflow/types.d.ts +16 -1
  126. package/build/services/yaml-workflow/workers/callbacks.js +16 -2
  127. package/build/services/yaml-workflow/workers/register.js +36 -1
  128. package/build/start/adapters.js +4 -0
  129. package/build/system/index.js +12 -0
  130. package/build/system/mcp-servers/admin/schemas.d.ts +12 -12
  131. package/build/system/mcp-servers/db-query/schemas.d.ts +2 -2
  132. package/build/system/mcp-servers/knowledge.js +1 -1
  133. package/build/system/mcp-servers/playwright/schemas.d.ts +18 -18
  134. package/build/system/mcp-servers/playwright-cli/schemas.d.ts +34 -34
  135. package/build/system/mcp-servers/playwright-cli/tools-capture.js +5 -1
  136. package/build/system/mcp-servers/vision.js +54 -17
  137. package/build/system/seed/server-definitions.d.ts +7 -0
  138. package/build/system/seed/server-definitions.js +6 -2
  139. package/build/system/seed/tool-manifests-workflows.d.ts +7 -0
  140. package/build/system/seed/tool-manifests-workflows.js +10 -3
  141. package/build/system/workflows/mcp-workflow-builder/activities/caches.d.ts +5 -0
  142. package/build/system/workflows/mcp-workflow-builder/activities/caches.js +8 -0
  143. package/build/system/workflows/mcp-workflow-builder/activities/index.d.ts +2 -0
  144. package/build/system/workflows/mcp-workflow-builder/activities/index.js +8 -0
  145. package/build/system/workflows/mcp-workflow-builder/activities/llm.d.ts +2 -0
  146. package/build/system/workflows/mcp-workflow-builder/activities/llm.js +25 -0
  147. package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.d.ts +11 -0
  148. package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.js +34 -0
  149. package/build/system/workflows/mcp-workflow-builder/index.d.ts +16 -0
  150. package/build/system/workflows/mcp-workflow-builder/index.js +253 -0
  151. package/build/system/workflows/mcp-workflow-builder/prompts.d.ts +8 -0
  152. package/build/system/workflows/mcp-workflow-builder/prompts.js +316 -0
  153. package/build/system/workflows/mcp-workflow-planner/activities/analyze.d.ts +11 -0
  154. package/build/system/workflows/mcp-workflow-planner/activities/analyze.js +36 -0
  155. package/build/system/workflows/mcp-workflow-planner/activities/index.d.ts +3 -0
  156. package/build/system/workflows/mcp-workflow-planner/activities/index.js +12 -0
  157. package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +19 -0
  158. package/build/system/workflows/mcp-workflow-planner/activities/persist.js +55 -0
  159. package/build/system/workflows/mcp-workflow-planner/activities/plan.d.ts +10 -0
  160. package/build/system/workflows/mcp-workflow-planner/activities/plan.js +43 -0
  161. package/build/system/workflows/mcp-workflow-planner/index.d.ts +7 -0
  162. package/build/system/workflows/mcp-workflow-planner/index.js +152 -0
  163. package/build/system/workflows/mcp-workflow-planner/prompts.d.ts +7 -0
  164. package/build/system/workflows/mcp-workflow-planner/prompts.js +77 -0
  165. package/build/system/workflows/shared/tool-loader.js +3 -0
  166. package/build/tsconfig.tsbuildinfo +1 -1
  167. package/build/types/index.d.ts +1 -0
  168. package/build/types/mcp.d.ts +4 -3
  169. package/build/types/sdk.d.ts +27 -0
  170. package/build/types/sdk.js +2 -0
  171. package/build/types/workflow-set.d.ts +44 -0
  172. package/build/types/workflow-set.js +5 -0
  173. package/build/types/yaml-workflow.d.ts +6 -2
  174. package/dashboard/dist/assets/AdminDashboard-DRjkRSjJ.js +2 -0
  175. package/dashboard/dist/assets/{AdminDashboard-CTyAMUJR.js.map → AdminDashboard-DRjkRSjJ.js.map} +1 -1
  176. package/dashboard/dist/assets/AvailableEscalationsPage-CnivX4Tz.js +2 -0
  177. package/dashboard/dist/assets/AvailableEscalationsPage-CnivX4Tz.js.map +1 -0
  178. package/dashboard/dist/assets/BotPicker-DwwaBhTH.js +2 -0
  179. package/dashboard/dist/assets/{BotPicker-C51nKFEu.js.map → BotPicker-DwwaBhTH.js.map} +1 -1
  180. package/dashboard/dist/assets/{CollapsibleSection-BSyfd8uL.js → CollapsibleSection-DQpaVA0M.js} +2 -2
  181. package/dashboard/dist/assets/{CollapsibleSection-BSyfd8uL.js.map → CollapsibleSection-DQpaVA0M.js.map} +1 -1
  182. package/dashboard/dist/assets/{ConfirmDeleteModal-CBdhia5T.js → ConfirmDeleteModal-B7JoDNvt.js} +2 -2
  183. package/dashboard/dist/assets/{ConfirmDeleteModal-CBdhia5T.js.map → ConfirmDeleteModal-B7JoDNvt.js.map} +1 -1
  184. package/dashboard/dist/assets/{CopyableId-dGlewBCS.js → CopyableId-AqoZayBG.js} +2 -2
  185. package/dashboard/dist/assets/{CopyableId-dGlewBCS.js.map → CopyableId-AqoZayBG.js.map} +1 -1
  186. package/dashboard/dist/assets/CredentialsPage-qGw1kQzi.js +2 -0
  187. package/dashboard/dist/assets/CredentialsPage-qGw1kQzi.js.map +1 -0
  188. package/dashboard/dist/assets/{CustomDurationPicker-BataWFj8.js → CustomDurationPicker-D1HUQcd0.js} +2 -2
  189. package/dashboard/dist/assets/{CustomDurationPicker-BataWFj8.js.map → CustomDurationPicker-D1HUQcd0.js.map} +1 -1
  190. package/dashboard/dist/assets/{DataTable-B3uf5CCo.js → DataTable-DKvSKoVG.js} +2 -2
  191. package/dashboard/dist/assets/{DataTable-B3uf5CCo.js.map → DataTable-DKvSKoVG.js.map} +1 -1
  192. package/dashboard/dist/assets/{ElapsedCell-G5oSwTpT.js → ElapsedCell-B0yrReGQ.js} +2 -2
  193. package/dashboard/dist/assets/{ElapsedCell-G5oSwTpT.js.map → ElapsedCell-B0yrReGQ.js.map} +1 -1
  194. package/dashboard/dist/assets/{EmptyState-BChBJNGS.js → EmptyState-X0fIzYID.js} +2 -2
  195. package/dashboard/dist/assets/{EmptyState-BChBJNGS.js.map → EmptyState-X0fIzYID.js.map} +1 -1
  196. package/dashboard/dist/assets/{EscalationsOverview-CxUv8xjG.js → EscalationsOverview-BQAT9W7r.js} +2 -2
  197. package/dashboard/dist/assets/{EscalationsOverview-CxUv8xjG.js.map → EscalationsOverview-BQAT9W7r.js.map} +1 -1
  198. package/dashboard/dist/assets/{EventTable-CVt8B0BZ.js → EventTable-CX1KNLhZ.js} +2 -2
  199. package/dashboard/dist/assets/{EventTable-CVt8B0BZ.js.map → EventTable-CX1KNLhZ.js.map} +1 -1
  200. package/dashboard/dist/assets/{FilterBar-CShf0oe7.js → FilterBar-DMTvuQy-.js} +2 -2
  201. package/dashboard/dist/assets/{FilterBar-CShf0oe7.js.map → FilterBar-DMTvuQy-.js.map} +1 -1
  202. package/dashboard/dist/assets/ListToolbar-DTOSxoEy.js +2 -0
  203. package/dashboard/dist/assets/ListToolbar-DTOSxoEy.js.map +1 -0
  204. package/dashboard/dist/assets/{McpOverview-CbaZRnJl.js → McpOverview-BaKTIWrG.js} +2 -2
  205. package/dashboard/dist/assets/{McpOverview-CbaZRnJl.js.map → McpOverview-BaKTIWrG.js.map} +1 -1
  206. package/dashboard/dist/assets/McpQueryDetailPage-CC08T5k8.js +5 -0
  207. package/dashboard/dist/assets/McpQueryDetailPage-CC08T5k8.js.map +1 -0
  208. package/dashboard/dist/assets/McpQueryPage-CVfF9dYg.js +2 -0
  209. package/dashboard/dist/assets/McpQueryPage-CVfF9dYg.js.map +1 -0
  210. package/dashboard/dist/assets/McpRunDetailPage-CKs1RWeV.js +2 -0
  211. package/dashboard/dist/assets/McpRunDetailPage-CKs1RWeV.js.map +1 -0
  212. package/dashboard/dist/assets/McpRunsPage-CcPD_tY1.js +2 -0
  213. package/dashboard/dist/assets/McpRunsPage-CcPD_tY1.js.map +1 -0
  214. package/dashboard/dist/assets/{Modal-CI5RBPOQ.js → Modal-_2AbWxJT.js} +2 -2
  215. package/dashboard/dist/assets/{Modal-CI5RBPOQ.js.map → Modal-_2AbWxJT.js.map} +1 -1
  216. package/dashboard/dist/assets/OperatorDashboard-BGiRaRDr.js +2 -0
  217. package/dashboard/dist/assets/OperatorDashboard-BGiRaRDr.js.map +1 -0
  218. package/dashboard/dist/assets/{PageHeader-SMD9qtOO.js → PageHeader-DVr5Qyzm.js} +2 -2
  219. package/dashboard/dist/assets/{PageHeader-SMD9qtOO.js.map → PageHeader-DVr5Qyzm.js.map} +1 -1
  220. package/dashboard/dist/assets/{PageHeaderWithStats-TikLQsTp.js → PageHeaderWithStats-D0KRASML.js} +2 -2
  221. package/dashboard/dist/assets/{PageHeaderWithStats-TikLQsTp.js.map → PageHeaderWithStats-D0KRASML.js.map} +1 -1
  222. package/dashboard/dist/assets/{PriorityBadge-CQ0EsLTA.js → PriorityBadge-Bx2559OU.js} +2 -2
  223. package/dashboard/dist/assets/{PriorityBadge-CQ0EsLTA.js.map → PriorityBadge-Bx2559OU.js.map} +1 -1
  224. package/dashboard/dist/assets/ProcessDetailPage-69I--sry.js +2 -0
  225. package/dashboard/dist/assets/ProcessDetailPage-69I--sry.js.map +1 -0
  226. package/dashboard/dist/assets/ProcessesListPage-BDpUbua2.js +2 -0
  227. package/dashboard/dist/assets/ProcessesListPage-BDpUbua2.js.map +1 -0
  228. package/dashboard/dist/assets/{RolePill-Crj4TH5p.js → RolePill-CcAqEaSt.js} +2 -2
  229. package/dashboard/dist/assets/{RolePill-Crj4TH5p.js.map → RolePill-CcAqEaSt.js.map} +1 -1
  230. package/dashboard/dist/assets/{RolesPage-C_RInUwS.js → RolesPage-Cl23Hjet.js} +2 -2
  231. package/dashboard/dist/assets/{RolesPage-C_RInUwS.js.map → RolesPage-Cl23Hjet.js.map} +1 -1
  232. package/dashboard/dist/assets/{RowActions-Cp5HyK_w.js → RowActions-B4mqIt3Z.js} +2 -2
  233. package/dashboard/dist/assets/{RowActions-Cp5HyK_w.js.map → RowActions-B4mqIt3Z.js.map} +1 -1
  234. package/dashboard/dist/assets/{StatCard-BKZLSgNV.js → StatCard-Cz_2OjAZ.js} +2 -2
  235. package/dashboard/dist/assets/{StatCard-BKZLSgNV.js.map → StatCard-Cz_2OjAZ.js.map} +1 -1
  236. package/dashboard/dist/assets/{StatusBadge-BYNGGZK5.js → StatusBadge-Wi2FJZsn.js} +2 -2
  237. package/dashboard/dist/assets/{StatusBadge-BYNGGZK5.js.map → StatusBadge-Wi2FJZsn.js.map} +1 -1
  238. package/dashboard/dist/assets/StepIndicator-PW5NRDMb.js +2 -0
  239. package/dashboard/dist/assets/StepIndicator-PW5NRDMb.js.map +1 -0
  240. package/dashboard/dist/assets/{StickyPagination-CTosgiU2.js → StickyPagination-Bl2Uzz65.js} +2 -2
  241. package/dashboard/dist/assets/{StickyPagination-CTosgiU2.js.map → StickyPagination-Bl2Uzz65.js.map} +1 -1
  242. package/dashboard/dist/assets/{SwimlaneTimeline-ylG5Ps1s.js → SwimlaneTimeline-CUPqMd0z.js} +2 -2
  243. package/dashboard/dist/assets/{SwimlaneTimeline-ylG5Ps1s.js.map → SwimlaneTimeline-CUPqMd0z.js.map} +1 -1
  244. package/dashboard/dist/assets/TagInput-BLtf86Ly.js +2 -0
  245. package/dashboard/dist/assets/TagInput-BLtf86Ly.js.map +1 -0
  246. package/dashboard/dist/assets/{TaskDetailPage-C9pDGdD2.js → TaskDetailPage-BXJFX74D.js} +2 -2
  247. package/dashboard/dist/assets/{TaskDetailPage-C9pDGdD2.js.map → TaskDetailPage-BXJFX74D.js.map} +1 -1
  248. package/dashboard/dist/assets/{TaskQueuePill-BtJbZTT0.js → TaskQueuePill-CWYj3xKe.js} +2 -2
  249. package/dashboard/dist/assets/{TaskQueuePill-BtJbZTT0.js.map → TaskQueuePill-CWYj3xKe.js.map} +1 -1
  250. package/dashboard/dist/assets/{TasksListPage-DtFLUEhg.js → TasksListPage-C3cX94Mw.js} +2 -2
  251. package/dashboard/dist/assets/{TasksListPage-DtFLUEhg.js.map → TasksListPage-C3cX94Mw.js.map} +1 -1
  252. package/dashboard/dist/assets/{TimeAgo-WuM6xImZ.js → TimeAgo-B_5yDDHV.js} +2 -2
  253. package/dashboard/dist/assets/{TimeAgo-WuM6xImZ.js.map → TimeAgo-B_5yDDHV.js.map} +1 -1
  254. package/dashboard/dist/assets/{TimestampCell-IVL_-Upy.js → TimestampCell-DRX724uU.js} +2 -2
  255. package/dashboard/dist/assets/{TimestampCell-IVL_-Upy.js.map → TimestampCell-DRX724uU.js.map} +1 -1
  256. package/dashboard/dist/assets/{UserName-DU9qeg13.js → UserName-Ca8FA469.js} +2 -2
  257. package/dashboard/dist/assets/{UserName-DU9qeg13.js.map → UserName-Ca8FA469.js.map} +1 -1
  258. package/dashboard/dist/assets/WorkflowExecutionPage-BBYWEV2P.js +2 -0
  259. package/dashboard/dist/assets/WorkflowExecutionPage-BBYWEV2P.js.map +1 -0
  260. package/dashboard/dist/assets/WorkflowPill-BXifAuLi.js +2 -0
  261. package/dashboard/dist/assets/{WorkflowPill-Diw8iWBP.js.map → WorkflowPill-BXifAuLi.js.map} +1 -1
  262. package/dashboard/dist/assets/WorkflowsDashboard-Drl3juz9.js +2 -0
  263. package/dashboard/dist/assets/WorkflowsDashboard-Drl3juz9.js.map +1 -0
  264. package/dashboard/dist/assets/{WorkflowsOverview-CPuvA4t3.js → WorkflowsOverview-03IRrDLg.js} +2 -2
  265. package/dashboard/dist/assets/{WorkflowsOverview-CPuvA4t3.js.map → WorkflowsOverview-03IRrDLg.js.map} +1 -1
  266. package/dashboard/dist/assets/YamlWorkflowsPage-DC2cLxVi.js +2 -0
  267. package/dashboard/dist/assets/YamlWorkflowsPage-DC2cLxVi.js.map +1 -0
  268. package/dashboard/dist/assets/{bots-BPiZXf2h.js → bots-DZEXcgiJ.js} +2 -2
  269. package/dashboard/dist/assets/{bots-BPiZXf2h.js.map → bots-DZEXcgiJ.js.map} +1 -1
  270. package/dashboard/dist/assets/{escalation-DTY_OKRh.js → escalation-Cw48lNaF.js} +2 -2
  271. package/dashboard/dist/assets/{escalation-DTY_OKRh.js.map → escalation-Cw48lNaF.js.map} +1 -1
  272. package/dashboard/dist/assets/{escalation-columns-C91fHSkp.js → escalation-columns-NINpo3qf.js} +2 -2
  273. package/dashboard/dist/assets/{escalation-columns-C91fHSkp.js.map → escalation-columns-NINpo3qf.js.map} +1 -1
  274. package/dashboard/dist/assets/helpers-Cuu3xKfr.js +2 -0
  275. package/dashboard/dist/assets/helpers-Cuu3xKfr.js.map +1 -0
  276. package/dashboard/dist/assets/helpers-fk_qr729.js +2 -0
  277. package/dashboard/dist/assets/helpers-fk_qr729.js.map +1 -0
  278. package/dashboard/dist/assets/index-B98ipWxE.js +2 -0
  279. package/dashboard/dist/assets/{index-CDWOfCmi.js.map → index-B98ipWxE.js.map} +1 -1
  280. package/dashboard/dist/assets/{index-D_qEAYrg.js → index-BIG3KooI.js} +2 -2
  281. package/dashboard/dist/assets/{index-D_qEAYrg.js.map → index-BIG3KooI.js.map} +1 -1
  282. package/dashboard/dist/assets/{index-DSzSoku1.js → index-BwN3KP_L.js} +91 -93
  283. package/dashboard/dist/assets/index-BwN3KP_L.js.map +1 -0
  284. package/dashboard/dist/assets/index-Bxe8h1x4.js +17 -0
  285. package/dashboard/dist/assets/index-Bxe8h1x4.js.map +1 -0
  286. package/dashboard/dist/assets/index-CNI7k7oB.js +6 -0
  287. package/dashboard/dist/assets/index-CNI7k7oB.js.map +1 -0
  288. package/dashboard/dist/assets/index-CORHB0WC.js +2 -0
  289. package/dashboard/dist/assets/index-CORHB0WC.js.map +1 -0
  290. package/dashboard/dist/assets/index-DcIKW-cZ.css +1 -0
  291. package/dashboard/dist/assets/index-Dj-z-x8M.js +2 -0
  292. package/dashboard/dist/assets/index-Dj-z-x8M.js.map +1 -0
  293. package/dashboard/dist/assets/index-DwRytW9O.js +5 -0
  294. package/dashboard/dist/assets/index-DwRytW9O.js.map +1 -0
  295. package/dashboard/dist/assets/index-aRvL-dXp.js +2 -0
  296. package/dashboard/dist/assets/index-aRvL-dXp.js.map +1 -0
  297. package/dashboard/dist/assets/index-b03HlbnH.js +2 -0
  298. package/dashboard/dist/assets/{index-BtOwLI0K.js.map → index-b03HlbnH.js.map} +1 -1
  299. package/dashboard/dist/assets/mcp-BZoFryNc.js +2 -0
  300. package/dashboard/dist/assets/mcp-BZoFryNc.js.map +1 -0
  301. package/dashboard/dist/assets/mcp-query-wiw1kwm8.js +2 -0
  302. package/dashboard/dist/assets/mcp-query-wiw1kwm8.js.map +1 -0
  303. package/dashboard/dist/assets/{mcp-runs-DmXYJD19.js → mcp-runs-BaEKnf5v.js} +2 -2
  304. package/dashboard/dist/assets/{mcp-runs-DmXYJD19.js.map → mcp-runs-BaEKnf5v.js.map} +1 -1
  305. package/dashboard/dist/assets/{namespaces-DoGa7jc7.js → namespaces-BwnZI4_A.js} +2 -2
  306. package/dashboard/dist/assets/{namespaces-DoGa7jc7.js.map → namespaces-BwnZI4_A.js.map} +1 -1
  307. package/dashboard/dist/assets/{roles-wCdQ2Z7k.js → roles-Bgn1K8zU.js} +2 -2
  308. package/dashboard/dist/assets/{roles-wCdQ2Z7k.js.map → roles-Bgn1K8zU.js.map} +1 -1
  309. package/dashboard/dist/assets/{settings-DDe_L7JT.js → settings-CizYiutL.js} +2 -2
  310. package/dashboard/dist/assets/{settings-DDe_L7JT.js.map → settings-CizYiutL.js.map} +1 -1
  311. package/dashboard/dist/assets/{tasks-3Hih8Bt7.js → tasks-Bmte_hc4.js} +2 -2
  312. package/dashboard/dist/assets/{tasks-3Hih8Bt7.js.map → tasks-Bmte_hc4.js.map} +1 -1
  313. package/dashboard/dist/assets/useEventHooks-CUCxpiI2.js +2 -0
  314. package/dashboard/dist/assets/useEventHooks-CUCxpiI2.js.map +1 -0
  315. package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js +2 -0
  316. package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js.map +1 -0
  317. package/dashboard/dist/assets/{useYamlActivityEvents-B5dHec6Y.js → useYamlActivityEvents-Cum02Ej9.js} +2 -2
  318. package/dashboard/dist/assets/useYamlActivityEvents-Cum02Ej9.js.map +1 -0
  319. package/dashboard/dist/assets/{users-BTagPmGW.js → users-NSDgTt-z.js} +2 -2
  320. package/dashboard/dist/assets/{users-BTagPmGW.js.map → users-NSDgTt-z.js.map} +1 -1
  321. package/dashboard/dist/assets/{vendor-icons-DCLlGYO9.js → vendor-icons-D1DdudfH.js} +141 -66
  322. package/dashboard/dist/assets/vendor-icons-D1DdudfH.js.map +1 -0
  323. package/dashboard/dist/assets/{workflows-B20dR3NE.js → workflows-k0XRdGXx.js} +2 -2
  324. package/dashboard/dist/assets/{workflows-B20dR3NE.js.map → workflows-k0XRdGXx.js.map} +1 -1
  325. package/dashboard/dist/assets/yaml-workflows-DAre8I78.js +2 -0
  326. package/dashboard/dist/assets/yaml-workflows-DAre8I78.js.map +1 -0
  327. package/dashboard/dist/index.html +3 -3
  328. package/docs/api/mcp-servers.md +60 -2
  329. package/docs/architecture.md +3 -3
  330. package/docs/dashboard.md +1 -1
  331. package/docs/epic-integration.md +224 -0
  332. package/docs/escalation-strategies.md +2 -3
  333. package/docs/events.md +28 -0
  334. package/docs/mcp.md +301 -31
  335. package/docs/sdk.md +177 -0
  336. package/docs/story.md +157 -0
  337. package/docs/workflow-builder.md +371 -0
  338. package/package.json +5 -4
  339. package/build/routes/escalations/helpers.d.ts +0 -5
  340. package/build/routes/resolve.d.ts +0 -9
  341. package/build/routes/resolve.js +0 -19
  342. package/build/routes/yaml-workflows/helpers.d.ts +0 -2
  343. package/build/routes/yaml-workflows/helpers.js +0 -8
  344. package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js +0 -2
  345. package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js +0 -2
  346. package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js.map +0 -1
  347. package/dashboard/dist/assets/BotPicker-C51nKFEu.js +0 -2
  348. package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js +0 -2
  349. package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js.map +0 -1
  350. package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js +0 -5
  351. package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js.map +0 -1
  352. package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js +0 -2
  353. package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js.map +0 -1
  354. package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js +0 -2
  355. package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js.map +0 -1
  356. package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js +0 -2
  357. package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js.map +0 -1
  358. package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js +0 -2
  359. package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js.map +0 -1
  360. package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js +0 -2
  361. package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js.map +0 -1
  362. package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js +0 -2
  363. package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js.map +0 -1
  364. package/dashboard/dist/assets/RefreshButton-BcQDObrv.js +0 -2
  365. package/dashboard/dist/assets/RefreshButton-BcQDObrv.js.map +0 -1
  366. package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js +0 -2
  367. package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js.map +0 -1
  368. package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js +0 -2
  369. package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js.map +0 -1
  370. package/dashboard/dist/assets/WorkflowPill-Diw8iWBP.js +0 -2
  371. package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js +0 -2
  372. package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js.map +0 -1
  373. package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js +0 -2
  374. package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js.map +0 -1
  375. package/dashboard/dist/assets/helpers-DBUZ9pnG.js +0 -2
  376. package/dashboard/dist/assets/helpers-DBUZ9pnG.js.map +0 -1
  377. package/dashboard/dist/assets/index-BOeA-gfK.js +0 -17
  378. package/dashboard/dist/assets/index-BOeA-gfK.js.map +0 -1
  379. package/dashboard/dist/assets/index-BZ6K_kmL.js +0 -3
  380. package/dashboard/dist/assets/index-BZ6K_kmL.js.map +0 -1
  381. package/dashboard/dist/assets/index-Bpm0yeoi.js +0 -2
  382. package/dashboard/dist/assets/index-Bpm0yeoi.js.map +0 -1
  383. package/dashboard/dist/assets/index-BtOwLI0K.js +0 -2
  384. package/dashboard/dist/assets/index-CBF3ZvRZ.js +0 -6
  385. package/dashboard/dist/assets/index-CBF3ZvRZ.js.map +0 -1
  386. package/dashboard/dist/assets/index-CDWOfCmi.js +0 -2
  387. package/dashboard/dist/assets/index-Ce6sL__n.js +0 -2
  388. package/dashboard/dist/assets/index-Ce6sL__n.js.map +0 -1
  389. package/dashboard/dist/assets/index-DSzSoku1.js.map +0 -1
  390. package/dashboard/dist/assets/index-gCy9XX3W.css +0 -1
  391. package/dashboard/dist/assets/mcp-BzVpaaKF.js +0 -2
  392. package/dashboard/dist/assets/mcp-BzVpaaKF.js.map +0 -1
  393. package/dashboard/dist/assets/mcp-query-wTuxTTCV.js +0 -2
  394. package/dashboard/dist/assets/mcp-query-wTuxTTCV.js.map +0 -1
  395. package/dashboard/dist/assets/useNatsEvents-DeGKHFTX.js +0 -2
  396. package/dashboard/dist/assets/useNatsEvents-DeGKHFTX.js.map +0 -1
  397. package/dashboard/dist/assets/useYamlActivityEvents-B5dHec6Y.js.map +0 -1
  398. package/dashboard/dist/assets/vendor-icons-DCLlGYO9.js.map +0 -1
  399. package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js +0 -2
  400. package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js.map +0 -1
  401. package/docs/img/01-login.png +0 -0
  402. package/docs/img/02-dashboard-home.png +0 -0
  403. package/docs/img/03-processes-list.png +0 -0
  404. package/docs/img/04-escalations-list.png +0 -0
  405. package/docs/img/05-mcp-servers.png +0 -0
  406. package/docs/img/06-mcp-pipelines.png +0 -0
  407. package/docs/img/07-workflows-list.png +0 -0
  408. package/docs/img/compilation/01-query-submit.png +0 -0
  409. package/docs/img/compilation/02-mcp-servers.png +0 -0
  410. package/docs/img/compilation/03-query-completed.png +0 -0
  411. package/docs/img/compilation/04-wizard-original.png +0 -0
  412. package/docs/img/compilation/05-wizard-timeline.png +0 -0
  413. package/docs/img/compilation/06-wizard-profile.png +0 -0
  414. package/docs/img/compilation/07-wizard-deploy.png +0 -0
  415. package/docs/img/compilation/08-wizard-test-modal.png +0 -0
  416. package/docs/img/compilation/09-wizard-test-compare.png +0 -0
  417. package/docs/img/compilation/10-wizard-verify.png +0 -0
  418. package/lib/db/README.md +0 -8
  419. /package/{lib → build/lib}/db/schemas/002_seed.sql +0 -0
  420. /package/{lib → build/lib}/db/schemas/003_workflow_discovery.sql +0 -0
  421. /package/{lib → build/lib}/db/schemas/004_query_router.sql +0 -0
  422. /package/{lib → build/lib}/db/schemas/005_triage_router.sql +0 -0
  423. /package/{lib → build/lib}/db/schemas/006_oauth.sql +0 -0
  424. /package/{lib → build/lib}/db/schemas/007_security.sql +0 -0
  425. /package/{lib → build/lib}/db/schemas/008_bot_accounts.sql +0 -0
  426. /package/{lib → build/lib}/db/schemas/009_audit_trail.sql +0 -0
  427. /package/{lib → build/lib}/db/schemas/010_credential_providers.sql +0 -0
  428. /package/{lib → build/lib}/db/schemas/012_drop_modality.sql +0 -0
  429. /package/{lib → build/lib}/db/schemas/013_execute_as.sql +0 -0
  430. /package/{lib → build/lib}/db/schemas/014_ephemeral_credentials.sql +0 -0
  431. /package/{lib → build/lib}/db/schemas/015_knowledge.sql +0 -0
@@ -13,25 +13,25 @@ export declare const loginAndCaptureSchema: z.ZodObject<{
13
13
  }, "strip", z.ZodTypeAny, {
14
14
  password: string;
15
15
  url: string;
16
- username_selector: string;
17
- password_selector: string;
18
16
  username: string;
19
17
  submit_selector: string;
18
+ username_selector: string;
19
+ password_selector: string;
20
+ screenshot_path?: string | undefined;
20
21
  timeout?: number | undefined;
21
22
  full_page?: boolean | undefined;
22
23
  wait_after_login?: string | undefined;
23
- screenshot_path?: string | undefined;
24
24
  }, {
25
25
  password: string;
26
26
  url: string;
27
- username_selector: string;
28
- password_selector: string;
29
27
  username: string;
30
28
  submit_selector: string;
29
+ username_selector: string;
30
+ password_selector: string;
31
+ screenshot_path?: string | undefined;
31
32
  timeout?: number | undefined;
32
33
  full_page?: boolean | undefined;
33
34
  wait_after_login?: string | undefined;
34
- screenshot_path?: string | undefined;
35
35
  }>;
36
36
  export declare const capturePageSchema: z.ZodObject<{
37
37
  url: z.ZodString;
@@ -44,22 +44,22 @@ export declare const capturePageSchema: z.ZodObject<{
44
44
  timeout: z.ZodOptional<z.ZodNumber>;
45
45
  }, "strip", z.ZodTypeAny, {
46
46
  url: string;
47
- timeout?: number | undefined;
48
47
  page_id?: string | undefined;
48
+ screenshot_path?: string | undefined;
49
49
  wait_until?: "load" | "domcontentloaded" | "networkidle" | undefined;
50
+ timeout?: number | undefined;
51
+ wait_ms?: number | undefined;
50
52
  full_page?: boolean | undefined;
51
- screenshot_path?: string | undefined;
52
53
  wait_for_selector?: string | undefined;
53
- wait_ms?: number | undefined;
54
54
  }, {
55
55
  url: string;
56
- timeout?: number | undefined;
57
56
  page_id?: string | undefined;
57
+ screenshot_path?: string | undefined;
58
58
  wait_until?: "load" | "domcontentloaded" | "networkidle" | undefined;
59
+ timeout?: number | undefined;
60
+ wait_ms?: number | undefined;
59
61
  full_page?: boolean | undefined;
60
- screenshot_path?: string | undefined;
61
62
  wait_for_selector?: string | undefined;
62
- wait_ms?: number | undefined;
63
63
  }>;
64
64
  export declare const captureAuthenticatedPagesSchema: z.ZodObject<{
65
65
  login: z.ZodObject<{
@@ -74,19 +74,19 @@ export declare const captureAuthenticatedPagesSchema: z.ZodObject<{
74
74
  }, "strip", z.ZodTypeAny, {
75
75
  password: string;
76
76
  url: string;
77
- username_selector: string;
78
- password_selector: string;
79
77
  username: string;
80
78
  submit_selector: string;
79
+ username_selector: string;
80
+ password_selector: string;
81
81
  timeout?: number | undefined;
82
82
  wait_after_login?: string | undefined;
83
83
  }, {
84
84
  password: string;
85
85
  url: string;
86
- username_selector: string;
87
- password_selector: string;
88
86
  username: string;
89
87
  submit_selector: string;
88
+ username_selector: string;
89
+ password_selector: string;
90
90
  timeout?: number | undefined;
91
91
  wait_after_login?: string | undefined;
92
92
  }>;
@@ -99,51 +99,51 @@ export declare const captureAuthenticatedPagesSchema: z.ZodObject<{
99
99
  }, "strip", z.ZodTypeAny, {
100
100
  url: string;
101
101
  screenshot_path: string;
102
+ wait_ms?: number | undefined;
102
103
  full_page?: boolean | undefined;
103
104
  wait_for_selector?: string | undefined;
104
- wait_ms?: number | undefined;
105
105
  }, {
106
106
  url: string;
107
107
  screenshot_path: string;
108
+ wait_ms?: number | undefined;
108
109
  full_page?: boolean | undefined;
109
110
  wait_for_selector?: string | undefined;
110
- wait_ms?: number | undefined;
111
111
  }>, "many">;
112
112
  }, "strip", z.ZodTypeAny, {
113
113
  login: {
114
114
  password: string;
115
115
  url: string;
116
- username_selector: string;
117
- password_selector: string;
118
116
  username: string;
119
117
  submit_selector: string;
118
+ username_selector: string;
119
+ password_selector: string;
120
120
  timeout?: number | undefined;
121
121
  wait_after_login?: string | undefined;
122
122
  };
123
123
  pages: {
124
124
  url: string;
125
125
  screenshot_path: string;
126
+ wait_ms?: number | undefined;
126
127
  full_page?: boolean | undefined;
127
128
  wait_for_selector?: string | undefined;
128
- wait_ms?: number | undefined;
129
129
  }[];
130
130
  }, {
131
131
  login: {
132
132
  password: string;
133
133
  url: string;
134
- username_selector: string;
135
- password_selector: string;
136
134
  username: string;
137
135
  submit_selector: string;
136
+ username_selector: string;
137
+ password_selector: string;
138
138
  timeout?: number | undefined;
139
139
  wait_after_login?: string | undefined;
140
140
  };
141
141
  pages: {
142
142
  url: string;
143
143
  screenshot_path: string;
144
+ wait_ms?: number | undefined;
144
145
  full_page?: boolean | undefined;
145
146
  wait_for_selector?: string | undefined;
146
- wait_ms?: number | undefined;
147
147
  }[];
148
148
  }>;
149
149
  export declare const extractContentSchema: z.ZodObject<{
@@ -157,25 +157,25 @@ export declare const extractContentSchema: z.ZodObject<{
157
157
  wait_ms: z.ZodOptional<z.ZodNumber>;
158
158
  timeout: z.ZodOptional<z.ZodNumber>;
159
159
  }, "strip", z.ZodTypeAny, {
160
- url?: string | undefined;
161
- timeout?: number | undefined;
162
160
  page_id?: string | undefined;
161
+ url?: string | undefined;
163
162
  selector?: string | undefined;
164
- script?: string | undefined;
165
- wait_for_selector?: string | undefined;
163
+ timeout?: number | undefined;
166
164
  wait_ms?: number | undefined;
167
165
  extract_links?: boolean | undefined;
168
166
  extract_metadata?: boolean | undefined;
167
+ script?: string | undefined;
168
+ wait_for_selector?: string | undefined;
169
169
  }, {
170
- url?: string | undefined;
171
- timeout?: number | undefined;
172
170
  page_id?: string | undefined;
171
+ url?: string | undefined;
173
172
  selector?: string | undefined;
174
- script?: string | undefined;
175
- wait_for_selector?: string | undefined;
173
+ timeout?: number | undefined;
176
174
  wait_ms?: number | undefined;
177
175
  extract_links?: boolean | undefined;
178
176
  extract_metadata?: boolean | undefined;
177
+ script?: string | undefined;
178
+ wait_for_selector?: string | undefined;
179
179
  }>;
180
180
  export declare const submitFormSchema: z.ZodObject<{
181
181
  url: z.ZodString;
@@ -201,9 +201,9 @@ export declare const submitFormSchema: z.ZodObject<{
201
201
  value: string;
202
202
  selector: string;
203
203
  }[];
204
+ screenshot_path?: string | undefined;
204
205
  timeout?: number | undefined;
205
206
  full_page?: boolean | undefined;
206
- screenshot_path?: string | undefined;
207
207
  wait_after_submit?: string | undefined;
208
208
  }, {
209
209
  url: string;
@@ -212,8 +212,8 @@ export declare const submitFormSchema: z.ZodObject<{
212
212
  value: string;
213
213
  selector: string;
214
214
  }[];
215
+ screenshot_path?: string | undefined;
215
216
  timeout?: number | undefined;
216
217
  full_page?: boolean | undefined;
217
- screenshot_path?: string | undefined;
218
218
  wait_after_submit?: string | undefined;
219
219
  }>;
@@ -84,7 +84,7 @@ function registerCaptureTools(srv) {
84
84
  await page.waitForTimeout(args.wait_ms ?? 2000);
85
85
  }
86
86
  // Auto-derive screenshot path from URL if not provided
87
- const screenshotPath = args.screenshot_path || (() => {
87
+ let screenshotPath = args.screenshot_path || (() => {
88
88
  try {
89
89
  const urlPath = new URL(args.url).pathname;
90
90
  const slug = urlPath === '/' ? 'home' : urlPath.replace(/^\/+|\/+$/g, '').replace(/\//g, '-');
@@ -94,6 +94,10 @@ function registerCaptureTools(srv) {
94
94
  return `screenshots/capture-${Date.now()}.png`;
95
95
  }
96
96
  })();
97
+ // Ensure file extension — storage backends require mime type
98
+ if (!path.extname(screenshotPath)) {
99
+ screenshotPath += '.png';
100
+ }
97
101
  const screenshot = await (0, helpers_1.saveScreenshot)(page, screenshotPath, args.full_page ?? true);
98
102
  return {
99
103
  content: [{
@@ -32,12 +32,16 @@ var __importStar = (this && this.__importStar) || (function () {
32
32
  return result;
33
33
  };
34
34
  })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
35
38
  Object.defineProperty(exports, "__esModule", { value: true });
36
39
  exports.createVisionServer = createVisionServer;
37
40
  exports.stopVisionServer = stopVisionServer;
38
41
  const path = __importStar(require("path"));
39
42
  const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
40
43
  const zod_1 = require("zod");
44
+ const sharp_1 = __importDefault(require("sharp"));
41
45
  const llm_1 = require("../../services/llm");
42
46
  const defaults_1 = require("../../modules/defaults");
43
47
  const logger_1 = require("../../lib/logger");
@@ -47,6 +51,8 @@ const MIME_MAP = {
47
51
  '.png': 'image/png', '.jpg': 'image/jpeg', '.jpeg': 'image/jpeg',
48
52
  '.gif': 'image/gif', '.webp': 'image/webp', '.svg': 'image/svg+xml',
49
53
  };
54
+ /** Max dimension for LLM vision APIs (Anthropic limit is 8000px). */
55
+ const MAX_IMAGE_DIMENSION = 7680;
50
56
  const analyzeImageSchema = zod_1.z.object({
51
57
  image: zod_1.z.string().describe('Image source: a storage path (e.g. "amazon_initial.png"), ' +
52
58
  'a data URI (data:image/png;base64,...), or an https:// URL.'),
@@ -77,10 +83,25 @@ async function resolveImageContent(image) {
77
83
  const storagePath = image.replace(/^file:\/\//, '');
78
84
  const backend = (0, storage_1.getStorageBackend)();
79
85
  const { data } = await backend.read(storagePath);
80
- const ext = path.extname(storagePath).toLowerCase();
81
- const mime = MIME_MAP[ext] || 'image/png';
82
- const base64 = data.toString('base64');
83
- return { type: 'image_url', image_url: { url: `data:${mime};base64,${base64}` } };
86
+ // Downscale if any dimension exceeds the LLM vision limit
87
+ let imageBuffer = data;
88
+ let outputMime = MIME_MAP[path.extname(storagePath).toLowerCase()] || 'image/png';
89
+ try {
90
+ const meta = await (0, sharp_1.default)(data).metadata();
91
+ if (meta.width && meta.height && (meta.width > MAX_IMAGE_DIMENSION || meta.height > MAX_IMAGE_DIMENSION)) {
92
+ logger_1.loggerRegistry.info(`[lt-mcp:vision] resizing ${meta.width}x${meta.height} -> fit ${MAX_IMAGE_DIMENSION}px`);
93
+ imageBuffer = await (0, sharp_1.default)(data)
94
+ .resize({ width: MAX_IMAGE_DIMENSION, height: MAX_IMAGE_DIMENSION, fit: 'inside' })
95
+ .png()
96
+ .toBuffer();
97
+ outputMime = 'image/png';
98
+ }
99
+ }
100
+ catch (err) {
101
+ logger_1.loggerRegistry.warn(`[lt-mcp:vision] could not check/resize image: ${err.message}`);
102
+ }
103
+ const base64 = imageBuffer.toString('base64');
104
+ return { type: 'image_url', image_url: { url: `data:${outputMime};base64,${base64}` } };
84
105
  }
85
106
  function registerTools(srv) {
86
107
  // ── analyze_image ───────────────────────────────────────────────
@@ -106,19 +127,35 @@ function registerTools(srv) {
106
127
  const systemPrompt = args.prompt
107
128
  ? `${vision_prompts_1.ANALYZE_IMAGE_PROMPT}\n\nAdditional guidance: ${args.prompt}`
108
129
  : vision_prompts_1.ANALYZE_IMAGE_PROMPT;
109
- const response = await (0, llm_1.callLLM)({
110
- model: defaults_1.LLM_MODEL_SECONDARY,
111
- messages: [
112
- { role: 'system', content: systemPrompt },
113
- {
114
- role: 'user',
115
- content: [await resolveImageContent(args.image)],
116
- },
117
- ],
118
- max_tokens: defaults_1.LLM_MAX_TOKENS_VISION,
119
- temperature: 0,
120
- });
130
+ let response;
131
+ try {
132
+ const imageContent = await resolveImageContent(args.image || args.image_path);
133
+ response = await (0, llm_1.callLLM)({
134
+ model: defaults_1.LLM_MODEL_SECONDARY,
135
+ messages: [
136
+ { role: 'system', content: systemPrompt },
137
+ { role: 'user', content: [imageContent] },
138
+ ],
139
+ max_tokens: defaults_1.LLM_MAX_TOKENS_VISION,
140
+ temperature: 0,
141
+ });
142
+ }
143
+ catch (err) {
144
+ logger_1.loggerRegistry.error(`[lt-mcp:vision] analyze_image failed: ${err.message}`);
145
+ return {
146
+ content: [{
147
+ type: 'text',
148
+ text: JSON.stringify({
149
+ error: err.message,
150
+ description: null,
151
+ text_content: null,
152
+ objects: [],
153
+ }),
154
+ }],
155
+ };
156
+ }
121
157
  const raw = response.content || '';
158
+ logger_1.loggerRegistry.info(`[lt-mcp:vision] analyze_image response length: ${raw.length}`);
122
159
  try {
123
160
  const cleaned = raw.replace(/^```json\n?|\n?```$/g, '').trim();
124
161
  const parsed = JSON.parse(cleaned);
@@ -173,7 +210,7 @@ function registerTools(srv) {
173
210
  { role: 'system', content: systemPrompt },
174
211
  {
175
212
  role: 'user',
176
- content: [await resolveImageContent(args.image)],
213
+ content: [await resolveImageContent(args.image || args.image_path)],
177
214
  },
178
215
  ],
179
216
  max_tokens: defaults_1.LLM_MAX_TOKENS_VISION,
@@ -1180,10 +1180,12 @@ export declare const SEED_MCP_SERVERS: ({
1180
1180
  prompt: {
1181
1181
  type: string;
1182
1182
  description: string;
1183
+ default: string;
1183
1184
  };
1184
1185
  working_directory: {
1185
1186
  type: string;
1186
1187
  description: string;
1188
+ default: string;
1187
1189
  };
1188
1190
  allowed_tools: {
1189
1191
  type: string;
@@ -1191,14 +1193,17 @@ export declare const SEED_MCP_SERVERS: ({
1191
1193
  type: string;
1192
1194
  };
1193
1195
  description: string;
1196
+ default: string[];
1194
1197
  };
1195
1198
  max_turns: {
1196
1199
  type: string;
1197
1200
  description: string;
1201
+ default: number;
1198
1202
  };
1199
1203
  model: {
1200
1204
  type: string;
1201
1205
  description: string;
1206
+ default: string;
1202
1207
  };
1203
1208
  system_prompt: {
1204
1209
  type: string;
@@ -1207,10 +1212,12 @@ export declare const SEED_MCP_SERVERS: ({
1207
1212
  timeout_ms: {
1208
1213
  type: string;
1209
1214
  description: string;
1215
+ default: number;
1210
1216
  };
1211
1217
  credential_label: {
1212
1218
  type: string;
1213
1219
  description: string;
1220
+ default: string;
1214
1221
  };
1215
1222
  };
1216
1223
  required: string[];
@@ -51,8 +51,9 @@ exports.SEED_MCP_SERVERS = [
51
51
  tags: ['vision', 'image-analysis', 'multimodal'],
52
52
  compile_hints: [
53
53
  'Vision tools process one image at a time. When iterating over multiple images, each iteration should pass a single image URL or data URI.',
54
- 'The `image` argument accepts a storage path (e.g., "screenshot.png"), a data URI, or an https:// URL. When following a screenshot or run_script step, wire `image` from the producing step output use `last_screenshot_path` from run_script or `path` from screenshot. NEVER make `image` a trigger input when the image is produced by a prior step.',
54
+ 'The argument name is `image` (NOT `image_path`). It accepts a storage path (e.g., "screenshot.png"), a data URI, or an https:// URL. When following a screenshot or capture_page step, wire `image` from the producing step output field `path`. NEVER make `image` a trigger input when the image is produced by a prior step.',
55
55
  'Vision tools do NOT use browser sessions. Do NOT wire page_id or _handle to vision tools — they read from storage, not from the browser.',
56
+ 'analyze_image output fields: description (string), text_content (string), objects (array). The main analysis text is in `description` — NOT `analysis` or `content`.',
56
57
  ].join(' '),
57
58
  credential_providers: ['anthropic'],
58
59
  },
@@ -88,6 +89,7 @@ exports.SEED_MCP_SERVERS = [
88
89
  'capture_authenticated_pages expects a `login` object and a `pages` array. The `login` object contains nested fields (url, username, password, selectors) — flatten credentials as dynamic trigger inputs but keep the object structure in stored tool_arguments. The `pages` array should flow from a transform edge that reshapes `links` into [{url, screenshot_path, wait_ms, full_page}].',
89
90
  'For screenshot_path derivation in transforms, use the `screenshot_dir` trigger input as a dynamic prefix (not hardcoded). Derivation strategy: slugify the href, prepend screenshot_dir + "/", append ".png".',
90
91
  'When login_and_capture follows a signal hook (human input), wire the password from the hook output to the `password` argument. Wire `url` and `username` from trigger inputs.',
92
+ 'capture_page screenshot_path MUST include a file extension (e.g., .png). When deriving screenshot_path from a slug or identifier, always append ".png" using a concat derivation: { "strategy": "concat", "parts": ["{value}", ".png"] }. For date-stamped paths use: { "strategy": "concat", "parts": ["{value}", "-", "{date}", ".png"] }.',
91
93
  ].join(' '),
92
94
  credential_providers: [],
93
95
  },
@@ -181,7 +183,9 @@ exports.SEED_MCP_SERVERS = [
181
183
  tool_manifest: tool_manifests_knowledge_1.KNOWLEDGE_TOOLS,
182
184
  metadata: { builtin: true, category: 'knowledge' },
183
185
  tags: ['knowledge', 'memory', 'state', 'storage'],
184
- compile_hints: 'store_knowledge upserts by domain+key — it merges data if the entry exists. ' +
186
+ compile_hints: 'store_knowledge arguments: domain (string), key (string), data (object MUST be a JSON object, never a string), tags (optional string[]). ' +
187
+ 'The data field is a JSONB object. When storing text content, wrap it: { "description": "the text" }. NEVER pass a bare string as data. ' +
188
+ 'store_knowledge upserts by domain+key — it merges data if the entry exists. ' +
185
189
  'Use a consistent domain name across related workflows to build shared context. ' +
186
190
  'search_knowledge uses JSONB containment (@>) — the query object must be a subset of the stored data. ' +
187
191
  'append_knowledge adds to arrays without replacing existing entries — ideal for catalogs and logs. ' +
@@ -156,10 +156,12 @@ export declare const CLAUDE_CODE_TOOLS: ({
156
156
  prompt: {
157
157
  type: string;
158
158
  description: string;
159
+ default: string;
159
160
  };
160
161
  working_directory: {
161
162
  type: string;
162
163
  description: string;
164
+ default: string;
163
165
  };
164
166
  allowed_tools: {
165
167
  type: string;
@@ -167,14 +169,17 @@ export declare const CLAUDE_CODE_TOOLS: ({
167
169
  type: string;
168
170
  };
169
171
  description: string;
172
+ default: string[];
170
173
  };
171
174
  max_turns: {
172
175
  type: string;
173
176
  description: string;
177
+ default: number;
174
178
  };
175
179
  model: {
176
180
  type: string;
177
181
  description: string;
182
+ default: string;
178
183
  };
179
184
  system_prompt: {
180
185
  type: string;
@@ -183,10 +188,12 @@ export declare const CLAUDE_CODE_TOOLS: ({
183
188
  timeout_ms: {
184
189
  type: string;
185
190
  description: string;
191
+ default: number;
186
192
  };
187
193
  credential_label: {
188
194
  type: string;
189
195
  description: string;
196
+ default: string;
190
197
  };
191
198
  };
192
199
  required: string[];
@@ -91,23 +91,28 @@ exports.CLAUDE_CODE_TOOLS = [
91
91
  prompt: {
92
92
  type: 'string',
93
93
  description: 'The task prompt. Be specific and actionable.',
94
+ default: 'List the files in the current directory and describe what this project does in 2 sentences.',
94
95
  },
95
96
  working_directory: {
96
97
  type: 'string',
97
- description: 'Working directory for the task. Defaults to server cwd.',
98
+ description: 'Working directory for the task. Defaults to /app (container root).',
99
+ default: '/app',
98
100
  },
99
101
  allowed_tools: {
100
102
  type: 'array',
101
103
  items: { type: 'string' },
102
- description: 'Restrict which tools Claude Code can use (e.g., ["Read", "Grep"]).',
104
+ description: 'Restrict which tools Claude Code can use (e.g., ["Read", "Grep", "Glob", "Bash"]).',
105
+ default: ['Read', 'Glob', 'Grep', 'Bash'],
103
106
  },
104
107
  max_turns: {
105
108
  type: 'number',
106
109
  description: 'Maximum agentic turns before stopping.',
110
+ default: 5,
107
111
  },
108
112
  model: {
109
113
  type: 'string',
110
114
  description: 'Override the Claude model (e.g., "claude-sonnet-4-6").',
115
+ default: 'claude-sonnet-4-6',
111
116
  },
112
117
  system_prompt: {
113
118
  type: 'string',
@@ -116,10 +121,12 @@ exports.CLAUDE_CODE_TOOLS = [
116
121
  timeout_ms: {
117
122
  type: 'number',
118
123
  description: 'Execution timeout in ms. Default: 120000, max: 300000.',
124
+ default: 120000,
119
125
  },
120
126
  credential_label: {
121
127
  type: 'string',
122
- description: 'Label of the stored Anthropic credential to use (e.g., "subscription", "api-batch"). Default: "default".',
128
+ description: 'Label of the stored Anthropic credential to use (e.g., "subscription", "api-batch").',
129
+ default: 'default',
123
130
  },
124
131
  },
125
132
  required: ['prompt'],
@@ -0,0 +1,5 @@
1
+ import type { ToolDefinition } from '../../../../services/llm';
2
+ /** Maps qualified tool name -> MCP server name for routing calls */
3
+ export declare const toolServerMap: Map<string, string>;
4
+ /** Maps qualified tool name -> full tool definition */
5
+ export declare const toolDefCache: Map<string, ToolDefinition>;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toolDefCache = exports.toolServerMap = void 0;
4
+ // ── Tool caches (module-level, persist across proxy activity calls) ──
5
+ /** Maps qualified tool name -> MCP server name for routing calls */
6
+ exports.toolServerMap = new Map();
7
+ /** Maps qualified tool name -> full tool definition */
8
+ exports.toolDefCache = new Map();
@@ -0,0 +1,2 @@
1
+ export { loadBuilderTools, loadReferenceSection } from './tool-loader';
2
+ export { callBuilderLLM } from './llm';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.callBuilderLLM = exports.loadReferenceSection = exports.loadBuilderTools = void 0;
4
+ var tool_loader_1 = require("./tool-loader");
5
+ Object.defineProperty(exports, "loadBuilderTools", { enumerable: true, get: function () { return tool_loader_1.loadBuilderTools; } });
6
+ Object.defineProperty(exports, "loadReferenceSection", { enumerable: true, get: function () { return tool_loader_1.loadReferenceSection; } });
7
+ var llm_1 = require("./llm");
8
+ Object.defineProperty(exports, "callBuilderLLM", { enumerable: true, get: function () { return llm_1.callBuilderLLM; } });
@@ -0,0 +1,2 @@
1
+ import { type LLMResponse } from '../../../../services/llm';
2
+ export declare function callBuilderLLM(messages: any[], _toolIds?: string[]): Promise<LLMResponse>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.callBuilderLLM = callBuilderLLM;
4
+ const llm_1 = require("../../../../services/llm");
5
+ const defaults_1 = require("../../../../modules/defaults");
6
+ const logger_1 = require("../../../../lib/logger");
7
+ /**
8
+ * Call the LLM for workflow building.
9
+ *
10
+ * Uses a higher max_tokens than the shared caller because the builder
11
+ * returns complete YAML + manifest JSON (typically 2000-4000 tokens).
12
+ */
13
+ const BUILDER_MAX_TOKENS = 4096;
14
+ async function callBuilderLLM(messages, _toolIds) {
15
+ const t0 = Date.now();
16
+ const response = await (0, llm_1.callLLM)({
17
+ model: defaults_1.LLM_MODEL_PRIMARY,
18
+ messages,
19
+ temperature: 0,
20
+ max_tokens: BUILDER_MAX_TOKENS,
21
+ });
22
+ const usage = response.usage;
23
+ logger_1.loggerRegistry.info(`[workflowBuilder:callLLM] ${Date.now() - t0}ms | in=${usage?.prompt_tokens} out=${usage?.completion_tokens} total=${usage?.total_tokens} | tool_calls=${response.tool_calls?.length || 0}`);
24
+ return response;
25
+ }
@@ -0,0 +1,11 @@
1
+ export declare function loadBuilderTools(tags?: string[]): Promise<{
2
+ toolIds: string[];
3
+ inventory: string;
4
+ strategy: string;
5
+ }>;
6
+ /**
7
+ * Load a specific section from the activity-types reference file.
8
+ * Returns the markdown for the requested activity type (await, signal, interrupt).
9
+ * Returns empty string if the section or file is not found.
10
+ */
11
+ export declare function loadReferenceSection(section: 'await' | 'signal' | 'interrupt'): Promise<string>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadBuilderTools = loadBuilderTools;
4
+ exports.loadReferenceSection = loadReferenceSection;
5
+ const promises_1 = require("fs/promises");
6
+ const path_1 = require("path");
7
+ const tool_loader_1 = require("../../shared/tool-loader");
8
+ const caches_1 = require("./caches");
9
+ async function loadBuilderTools(tags) {
10
+ return (0, tool_loader_1.loadToolsFromServers)(tags, { toolServerMap: caches_1.toolServerMap, toolDefCache: caches_1.toolDefCache }, { logPrefix: 'workflowBuilder' });
11
+ }
12
+ /**
13
+ * Load a specific section from the activity-types reference file.
14
+ * Returns the markdown for the requested activity type (await, signal, interrupt).
15
+ * Returns empty string if the section or file is not found.
16
+ */
17
+ async function loadReferenceSection(section) {
18
+ try {
19
+ const refPath = (0, path_1.join)(__dirname, '..', 'reference', 'activity-types.md');
20
+ const content = await (0, promises_1.readFile)(refPath, 'utf-8');
21
+ // Extract the section between ## <name> and the next ## or end of file
22
+ const sectionHeader = `## ${section}`;
23
+ const startIdx = content.indexOf(sectionHeader);
24
+ if (startIdx === -1)
25
+ return '';
26
+ const afterHeader = content.indexOf('\n', startIdx);
27
+ const nextSection = content.indexOf('\n## ', afterHeader + 1);
28
+ const endIdx = nextSection === -1 ? content.length : nextSection;
29
+ return content.slice(startIdx, endIdx).trim();
30
+ }
31
+ catch {
32
+ return '';
33
+ }
34
+ }
@@ -0,0 +1,16 @@
1
+ import type { LTEnvelope, LTReturn } from '../../../types';
2
+ /**
3
+ * MCP Workflow Builder — constructs HotMesh YAML DAGs directly.
4
+ *
5
+ * Unlike mcpQuery (which executes tools then compiles traces), this workflow
6
+ * reasons about tool schemas and builds the YAML declaratively. The LLM
7
+ * knows HotMesh's activity types, mapping syntax, and @pipe operators.
8
+ *
9
+ * Supports conversational clarification: when the prompt is ambiguous,
10
+ * the LLM returns questions instead of YAML. The user answers, and the
11
+ * exchange continues until the LLM has enough to build.
12
+ *
13
+ * Returns the generated YAML, input schema, and activity manifest —
14
+ * ready for deployment via the existing yaml-workflow infrastructure.
15
+ */
16
+ export declare function mcpWorkflowBuilder(envelope: LTEnvelope): Promise<LTReturn>;