@hotmeshio/long-tail 0.1.5 → 0.1.6

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 (296) hide show
  1. package/README.md +34 -4
  2. package/build/lib/db/migrate.js +3 -6
  3. package/{lib → build/lib}/db/schemas/001_schema.sql +3 -0
  4. package/{lib → build/lib}/db/schemas/011_system_workflow_configs.sql +7 -0
  5. package/build/lib/db/schemas/016_streamable_http.sql +7 -0
  6. package/build/routes/docs.js +25 -7
  7. package/build/routes/insight.js +63 -0
  8. package/build/routes/mcp.js +23 -1
  9. package/build/routes/yaml-workflows/cron.d.ts +2 -0
  10. package/build/routes/yaml-workflows/cron.js +117 -0
  11. package/build/routes/yaml-workflows/crud.js +38 -0
  12. package/build/routes/yaml-workflows/deployment.js +9 -34
  13. package/build/routes/yaml-workflows/index.js +4 -1
  14. package/build/services/cron/index.d.ts +17 -0
  15. package/build/services/cron/index.js +94 -1
  16. package/build/services/insight/index.d.ts +11 -0
  17. package/build/services/insight/index.js +30 -0
  18. package/build/services/mcp/client/connection.d.ts +9 -0
  19. package/build/services/mcp/client/connection.js +49 -1
  20. package/build/services/mcp/db-server/schemas.d.ts +2 -2
  21. package/build/services/mcp/db.d.ts +1 -1
  22. package/build/services/mcp/db.js +10 -0
  23. package/build/services/mcp/playwright-server/schemas.d.ts +4 -4
  24. package/build/services/mcp/sql.d.ts +1 -1
  25. package/build/services/mcp/sql.js +2 -2
  26. package/build/services/mcp/types.d.ts +3 -1
  27. package/build/services/yaml-workflow/db.d.ts +3 -0
  28. package/build/services/yaml-workflow/db.js +24 -0
  29. package/build/services/yaml-workflow/invoke.d.ts +19 -0
  30. package/build/services/yaml-workflow/invoke.js +80 -0
  31. package/build/services/yaml-workflow/pipeline/build/dag.js +1 -1
  32. package/build/services/yaml-workflow/pipeline/build/wiring.d.ts +1 -1
  33. package/build/services/yaml-workflow/pipeline/build/wiring.js +89 -2
  34. package/build/services/yaml-workflow/pipeline/prompts.d.ts +1 -1
  35. package/build/services/yaml-workflow/pipeline/prompts.js +44 -1
  36. package/build/services/yaml-workflow/sql.d.ts +3 -0
  37. package/build/services/yaml-workflow/sql.js +16 -1
  38. package/build/services/yaml-workflow/types.d.ts +13 -1
  39. package/build/services/yaml-workflow/workers/callbacks.js +9 -1
  40. package/build/services/yaml-workflow/workers/register.js +29 -1
  41. package/build/system/index.js +6 -0
  42. package/build/system/mcp-servers/admin/schemas.d.ts +12 -12
  43. package/build/system/mcp-servers/db-query/schemas.d.ts +2 -2
  44. package/build/system/mcp-servers/playwright/schemas.d.ts +18 -18
  45. package/build/system/mcp-servers/playwright-cli/schemas.d.ts +34 -34
  46. package/build/system/mcp-servers/playwright-cli/tools-capture.js +5 -1
  47. package/build/system/mcp-servers/vision.js +54 -17
  48. package/build/system/seed/server-definitions.d.ts +7 -0
  49. package/build/system/seed/server-definitions.js +5 -2
  50. package/build/system/seed/tool-manifests-workflows.d.ts +7 -0
  51. package/build/system/seed/tool-manifests-workflows.js +10 -3
  52. package/build/system/workflows/mcp-workflow-builder/activities/caches.d.ts +5 -0
  53. package/build/system/workflows/mcp-workflow-builder/activities/caches.js +8 -0
  54. package/build/system/workflows/mcp-workflow-builder/activities/index.d.ts +2 -0
  55. package/build/system/workflows/mcp-workflow-builder/activities/index.js +7 -0
  56. package/build/system/workflows/mcp-workflow-builder/activities/llm.d.ts +2 -0
  57. package/build/system/workflows/mcp-workflow-builder/activities/llm.js +25 -0
  58. package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.d.ts +5 -0
  59. package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.js +8 -0
  60. package/build/system/workflows/mcp-workflow-builder/index.d.ts +16 -0
  61. package/build/system/workflows/mcp-workflow-builder/index.js +229 -0
  62. package/build/system/workflows/mcp-workflow-builder/prompts.d.ts +8 -0
  63. package/build/system/workflows/mcp-workflow-builder/prompts.js +247 -0
  64. package/build/system/workflows/shared/tool-loader.js +3 -0
  65. package/build/tsconfig.tsbuildinfo +1 -1
  66. package/build/types/mcp.d.ts +4 -3
  67. package/build/types/yaml-workflow.d.ts +6 -2
  68. package/dashboard/dist/assets/AdminDashboard-BXkKGkb5.js +2 -0
  69. package/dashboard/dist/assets/{AdminDashboard-CTyAMUJR.js.map → AdminDashboard-BXkKGkb5.js.map} +1 -1
  70. package/dashboard/dist/assets/AvailableEscalationsPage-DcH592mc.js +2 -0
  71. package/dashboard/dist/assets/AvailableEscalationsPage-DcH592mc.js.map +1 -0
  72. package/dashboard/dist/assets/BotPicker-A6LtzyuO.js +2 -0
  73. package/dashboard/dist/assets/{BotPicker-C51nKFEu.js.map → BotPicker-A6LtzyuO.js.map} +1 -1
  74. package/dashboard/dist/assets/{CollapsibleSection-BSyfd8uL.js → CollapsibleSection-C7nL2_mv.js} +2 -2
  75. package/dashboard/dist/assets/{CollapsibleSection-BSyfd8uL.js.map → CollapsibleSection-C7nL2_mv.js.map} +1 -1
  76. package/dashboard/dist/assets/{ConfirmDeleteModal-CBdhia5T.js → ConfirmDeleteModal-CWFwJrSl.js} +2 -2
  77. package/dashboard/dist/assets/{ConfirmDeleteModal-CBdhia5T.js.map → ConfirmDeleteModal-CWFwJrSl.js.map} +1 -1
  78. package/dashboard/dist/assets/{CopyableId-dGlewBCS.js → CopyableId-DbZ5c3jh.js} +2 -2
  79. package/dashboard/dist/assets/{CopyableId-dGlewBCS.js.map → CopyableId-DbZ5c3jh.js.map} +1 -1
  80. package/dashboard/dist/assets/CredentialsPage-ClWkmLPu.js +2 -0
  81. package/dashboard/dist/assets/CredentialsPage-ClWkmLPu.js.map +1 -0
  82. package/dashboard/dist/assets/{CustomDurationPicker-BataWFj8.js → CustomDurationPicker-CtH2hReF.js} +2 -2
  83. package/dashboard/dist/assets/{CustomDurationPicker-BataWFj8.js.map → CustomDurationPicker-CtH2hReF.js.map} +1 -1
  84. package/dashboard/dist/assets/{DataTable-B3uf5CCo.js → DataTable-CM5ZcpPi.js} +2 -2
  85. package/dashboard/dist/assets/{DataTable-B3uf5CCo.js.map → DataTable-CM5ZcpPi.js.map} +1 -1
  86. package/dashboard/dist/assets/{ElapsedCell-G5oSwTpT.js → ElapsedCell-CwqavyeC.js} +2 -2
  87. package/dashboard/dist/assets/{ElapsedCell-G5oSwTpT.js.map → ElapsedCell-CwqavyeC.js.map} +1 -1
  88. package/dashboard/dist/assets/{EmptyState-BChBJNGS.js → EmptyState-BBn78pmm.js} +2 -2
  89. package/dashboard/dist/assets/{EmptyState-BChBJNGS.js.map → EmptyState-BBn78pmm.js.map} +1 -1
  90. package/dashboard/dist/assets/{EscalationsOverview-CxUv8xjG.js → EscalationsOverview-BcJ2E3X7.js} +2 -2
  91. package/dashboard/dist/assets/{EscalationsOverview-CxUv8xjG.js.map → EscalationsOverview-BcJ2E3X7.js.map} +1 -1
  92. package/dashboard/dist/assets/{EventTable-CVt8B0BZ.js → EventTable-C1en_KZ0.js} +2 -2
  93. package/dashboard/dist/assets/{EventTable-CVt8B0BZ.js.map → EventTable-C1en_KZ0.js.map} +1 -1
  94. package/dashboard/dist/assets/{FilterBar-CShf0oe7.js → FilterBar-CZTlrLQT.js} +2 -2
  95. package/dashboard/dist/assets/{FilterBar-CShf0oe7.js.map → FilterBar-CZTlrLQT.js.map} +1 -1
  96. package/dashboard/dist/assets/ListToolbar-Cdbsapig.js +2 -0
  97. package/dashboard/dist/assets/ListToolbar-Cdbsapig.js.map +1 -0
  98. package/dashboard/dist/assets/{McpOverview-CbaZRnJl.js → McpOverview-CSpEJxKa.js} +2 -2
  99. package/dashboard/dist/assets/{McpOverview-CbaZRnJl.js.map → McpOverview-CSpEJxKa.js.map} +1 -1
  100. package/dashboard/dist/assets/McpQueryDetailPage-DhqEI180.js +5 -0
  101. package/dashboard/dist/assets/McpQueryDetailPage-DhqEI180.js.map +1 -0
  102. package/dashboard/dist/assets/McpQueryPage-CIiVMlqo.js +2 -0
  103. package/dashboard/dist/assets/McpQueryPage-CIiVMlqo.js.map +1 -0
  104. package/dashboard/dist/assets/McpRunDetailPage-9xdxgG4d.js +2 -0
  105. package/dashboard/dist/assets/McpRunDetailPage-9xdxgG4d.js.map +1 -0
  106. package/dashboard/dist/assets/McpRunsPage-wWLqHsd4.js +2 -0
  107. package/dashboard/dist/assets/McpRunsPage-wWLqHsd4.js.map +1 -0
  108. package/dashboard/dist/assets/{Modal-CI5RBPOQ.js → Modal-kB_P7ZOr.js} +2 -2
  109. package/dashboard/dist/assets/{Modal-CI5RBPOQ.js.map → Modal-kB_P7ZOr.js.map} +1 -1
  110. package/dashboard/dist/assets/OperatorDashboard-jc0vrgDI.js +2 -0
  111. package/dashboard/dist/assets/OperatorDashboard-jc0vrgDI.js.map +1 -0
  112. package/dashboard/dist/assets/{PageHeader-SMD9qtOO.js → PageHeader-NkOeBR05.js} +2 -2
  113. package/dashboard/dist/assets/{PageHeader-SMD9qtOO.js.map → PageHeader-NkOeBR05.js.map} +1 -1
  114. package/dashboard/dist/assets/{PageHeaderWithStats-TikLQsTp.js → PageHeaderWithStats-ywNhrmFK.js} +2 -2
  115. package/dashboard/dist/assets/{PageHeaderWithStats-TikLQsTp.js.map → PageHeaderWithStats-ywNhrmFK.js.map} +1 -1
  116. package/dashboard/dist/assets/{PriorityBadge-CQ0EsLTA.js → PriorityBadge-B2MQbSxy.js} +2 -2
  117. package/dashboard/dist/assets/{PriorityBadge-CQ0EsLTA.js.map → PriorityBadge-B2MQbSxy.js.map} +1 -1
  118. package/dashboard/dist/assets/ProcessDetailPage-B7z7IdqE.js +2 -0
  119. package/dashboard/dist/assets/ProcessDetailPage-B7z7IdqE.js.map +1 -0
  120. package/dashboard/dist/assets/ProcessesListPage-C-uHadO6.js +2 -0
  121. package/dashboard/dist/assets/ProcessesListPage-C-uHadO6.js.map +1 -0
  122. package/dashboard/dist/assets/{RolePill-Crj4TH5p.js → RolePill-C1dgC-fK.js} +2 -2
  123. package/dashboard/dist/assets/{RolePill-Crj4TH5p.js.map → RolePill-C1dgC-fK.js.map} +1 -1
  124. package/dashboard/dist/assets/{RolesPage-C_RInUwS.js → RolesPage-BSxrD1vm.js} +2 -2
  125. package/dashboard/dist/assets/{RolesPage-C_RInUwS.js.map → RolesPage-BSxrD1vm.js.map} +1 -1
  126. package/dashboard/dist/assets/{RowActions-Cp5HyK_w.js → RowActions-lYaHGI-v.js} +2 -2
  127. package/dashboard/dist/assets/{RowActions-Cp5HyK_w.js.map → RowActions-lYaHGI-v.js.map} +1 -1
  128. package/dashboard/dist/assets/RunAsSelector-CJDnyp93.js +2 -0
  129. package/dashboard/dist/assets/RunAsSelector-CJDnyp93.js.map +1 -0
  130. package/dashboard/dist/assets/{StatCard-BKZLSgNV.js → StatCard-v2TiITVr.js} +2 -2
  131. package/dashboard/dist/assets/{StatCard-BKZLSgNV.js.map → StatCard-v2TiITVr.js.map} +1 -1
  132. package/dashboard/dist/assets/{StatusBadge-BYNGGZK5.js → StatusBadge-DWlxevgG.js} +2 -2
  133. package/dashboard/dist/assets/{StatusBadge-BYNGGZK5.js.map → StatusBadge-DWlxevgG.js.map} +1 -1
  134. package/dashboard/dist/assets/StepIndicator-CRM4ft28.js +2 -0
  135. package/dashboard/dist/assets/StepIndicator-CRM4ft28.js.map +1 -0
  136. package/dashboard/dist/assets/{StickyPagination-CTosgiU2.js → StickyPagination-CF0EToEU.js} +2 -2
  137. package/dashboard/dist/assets/{StickyPagination-CTosgiU2.js.map → StickyPagination-CF0EToEU.js.map} +1 -1
  138. package/dashboard/dist/assets/{SwimlaneTimeline-ylG5Ps1s.js → SwimlaneTimeline-CNlj7fgg.js} +2 -2
  139. package/dashboard/dist/assets/{SwimlaneTimeline-ylG5Ps1s.js.map → SwimlaneTimeline-CNlj7fgg.js.map} +1 -1
  140. package/dashboard/dist/assets/TagInput-CH8qMGhC.js +2 -0
  141. package/dashboard/dist/assets/TagInput-CH8qMGhC.js.map +1 -0
  142. package/dashboard/dist/assets/{TaskDetailPage-C9pDGdD2.js → TaskDetailPage-CdWo-6mu.js} +2 -2
  143. package/dashboard/dist/assets/{TaskDetailPage-C9pDGdD2.js.map → TaskDetailPage-CdWo-6mu.js.map} +1 -1
  144. package/dashboard/dist/assets/{TaskQueuePill-BtJbZTT0.js → TaskQueuePill-BPj4ogVG.js} +2 -2
  145. package/dashboard/dist/assets/{TaskQueuePill-BtJbZTT0.js.map → TaskQueuePill-BPj4ogVG.js.map} +1 -1
  146. package/dashboard/dist/assets/{TasksListPage-DtFLUEhg.js → TasksListPage-CtRkMpKU.js} +2 -2
  147. package/dashboard/dist/assets/{TasksListPage-DtFLUEhg.js.map → TasksListPage-CtRkMpKU.js.map} +1 -1
  148. package/dashboard/dist/assets/{TimeAgo-WuM6xImZ.js → TimeAgo-Di1a3X5P.js} +2 -2
  149. package/dashboard/dist/assets/{TimeAgo-WuM6xImZ.js.map → TimeAgo-Di1a3X5P.js.map} +1 -1
  150. package/dashboard/dist/assets/{TimestampCell-IVL_-Upy.js → TimestampCell-CqrXql-S.js} +2 -2
  151. package/dashboard/dist/assets/{TimestampCell-IVL_-Upy.js.map → TimestampCell-CqrXql-S.js.map} +1 -1
  152. package/dashboard/dist/assets/{UserName-DU9qeg13.js → UserName-BUFYCnRa.js} +2 -2
  153. package/dashboard/dist/assets/{UserName-DU9qeg13.js.map → UserName-BUFYCnRa.js.map} +1 -1
  154. package/dashboard/dist/assets/WorkflowExecutionPage-25iusMml.js +2 -0
  155. package/dashboard/dist/assets/WorkflowExecutionPage-25iusMml.js.map +1 -0
  156. package/dashboard/dist/assets/{WorkflowPill-Diw8iWBP.js → WorkflowPill-DPKOcbf4.js} +2 -2
  157. package/dashboard/dist/assets/{WorkflowPill-Diw8iWBP.js.map → WorkflowPill-DPKOcbf4.js.map} +1 -1
  158. package/dashboard/dist/assets/WorkflowsDashboard-BgxslssH.js +2 -0
  159. package/dashboard/dist/assets/WorkflowsDashboard-BgxslssH.js.map +1 -0
  160. package/dashboard/dist/assets/{WorkflowsOverview-CPuvA4t3.js → WorkflowsOverview-Doe5L-Re.js} +2 -2
  161. package/dashboard/dist/assets/{WorkflowsOverview-CPuvA4t3.js.map → WorkflowsOverview-Doe5L-Re.js.map} +1 -1
  162. package/dashboard/dist/assets/YamlWorkflowsPage-BliAckJ6.js +2 -0
  163. package/dashboard/dist/assets/YamlWorkflowsPage-BliAckJ6.js.map +1 -0
  164. package/dashboard/dist/assets/{bots-BPiZXf2h.js → bots-Bi2_O1Ts.js} +2 -2
  165. package/dashboard/dist/assets/{bots-BPiZXf2h.js.map → bots-Bi2_O1Ts.js.map} +1 -1
  166. package/dashboard/dist/assets/{escalation-DTY_OKRh.js → escalation-Ck1KlLkT.js} +2 -2
  167. package/dashboard/dist/assets/{escalation-DTY_OKRh.js.map → escalation-Ck1KlLkT.js.map} +1 -1
  168. package/dashboard/dist/assets/{escalation-columns-C91fHSkp.js → escalation-columns-ohDsj2eJ.js} +2 -2
  169. package/dashboard/dist/assets/{escalation-columns-C91fHSkp.js.map → escalation-columns-ohDsj2eJ.js.map} +1 -1
  170. package/dashboard/dist/assets/helpers-BoD2SgUY.js +2 -0
  171. package/dashboard/dist/assets/helpers-BoD2SgUY.js.map +1 -0
  172. package/dashboard/dist/assets/{index-D_qEAYrg.js → index-BEtLIsML.js} +2 -2
  173. package/dashboard/dist/assets/{index-D_qEAYrg.js.map → index-BEtLIsML.js.map} +1 -1
  174. package/dashboard/dist/assets/index-Bn2xHDr8.js +5 -0
  175. package/dashboard/dist/assets/index-Bn2xHDr8.js.map +1 -0
  176. package/dashboard/dist/assets/index-BpT-6WgJ.js +2 -0
  177. package/dashboard/dist/assets/{index-BtOwLI0K.js.map → index-BpT-6WgJ.js.map} +1 -1
  178. package/dashboard/dist/assets/index-CZrJ09p-.js +2 -0
  179. package/dashboard/dist/assets/index-CZrJ09p-.js.map +1 -0
  180. package/dashboard/dist/assets/index-D3NyVADW.js +2 -0
  181. package/dashboard/dist/assets/index-D3NyVADW.js.map +1 -0
  182. package/dashboard/dist/assets/index-D7zYZOnH.js +2 -0
  183. package/dashboard/dist/assets/{index-CDWOfCmi.js.map → index-D7zYZOnH.js.map} +1 -1
  184. package/dashboard/dist/assets/index-DOkHXmyf.js +17 -0
  185. package/dashboard/dist/assets/index-DOkHXmyf.js.map +1 -0
  186. package/dashboard/dist/assets/{index-DSzSoku1.js → index-DYyLF-Qb.js} +91 -93
  187. package/dashboard/dist/assets/index-DYyLF-Qb.js.map +1 -0
  188. package/dashboard/dist/assets/index-Dk2Q51o0.js +2 -0
  189. package/dashboard/dist/assets/index-Dk2Q51o0.js.map +1 -0
  190. package/dashboard/dist/assets/index-FuohTtaM.js +6 -0
  191. package/dashboard/dist/assets/index-FuohTtaM.js.map +1 -0
  192. package/dashboard/dist/assets/index-PyCTS05D.css +1 -0
  193. package/dashboard/dist/assets/mcp-CJtYjA7A.js +2 -0
  194. package/dashboard/dist/assets/mcp-CJtYjA7A.js.map +1 -0
  195. package/dashboard/dist/assets/mcp-query-jQJQrs_7.js +2 -0
  196. package/dashboard/dist/assets/mcp-query-jQJQrs_7.js.map +1 -0
  197. package/dashboard/dist/assets/{mcp-runs-DmXYJD19.js → mcp-runs-DUWm9Z4V.js} +2 -2
  198. package/dashboard/dist/assets/{mcp-runs-DmXYJD19.js.map → mcp-runs-DUWm9Z4V.js.map} +1 -1
  199. package/dashboard/dist/assets/{namespaces-DoGa7jc7.js → namespaces-BM5P2qmL.js} +2 -2
  200. package/dashboard/dist/assets/{namespaces-DoGa7jc7.js.map → namespaces-BM5P2qmL.js.map} +1 -1
  201. package/dashboard/dist/assets/{roles-wCdQ2Z7k.js → roles-lv0shpjJ.js} +2 -2
  202. package/dashboard/dist/assets/{roles-wCdQ2Z7k.js.map → roles-lv0shpjJ.js.map} +1 -1
  203. package/dashboard/dist/assets/{settings-DDe_L7JT.js → settings-Wlq92mRo.js} +2 -2
  204. package/dashboard/dist/assets/{settings-DDe_L7JT.js.map → settings-Wlq92mRo.js.map} +1 -1
  205. package/dashboard/dist/assets/{tasks-3Hih8Bt7.js → tasks-BFGm4PuE.js} +2 -2
  206. package/dashboard/dist/assets/{tasks-3Hih8Bt7.js.map → tasks-BFGm4PuE.js.map} +1 -1
  207. package/dashboard/dist/assets/useEventHooks-DIE6ue4x.js +2 -0
  208. package/dashboard/dist/assets/useEventHooks-DIE6ue4x.js.map +1 -0
  209. package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js +2 -0
  210. package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js.map +1 -0
  211. package/dashboard/dist/assets/{useYamlActivityEvents-B5dHec6Y.js → useYamlActivityEvents-DCwSO73t.js} +2 -2
  212. package/dashboard/dist/assets/useYamlActivityEvents-DCwSO73t.js.map +1 -0
  213. package/dashboard/dist/assets/{users-BTagPmGW.js → users-tA5-K0wA.js} +2 -2
  214. package/dashboard/dist/assets/{users-BTagPmGW.js.map → users-tA5-K0wA.js.map} +1 -1
  215. package/dashboard/dist/assets/{vendor-icons-DCLlGYO9.js → vendor-icons-BiIug1SK.js} +121 -66
  216. package/dashboard/dist/assets/vendor-icons-BiIug1SK.js.map +1 -0
  217. package/dashboard/dist/assets/{workflows-B20dR3NE.js → workflows-CfLc15Wr.js} +2 -2
  218. package/dashboard/dist/assets/{workflows-B20dR3NE.js.map → workflows-CfLc15Wr.js.map} +1 -1
  219. package/dashboard/dist/assets/yaml-workflows-D7JXNqbM.js +2 -0
  220. package/dashboard/dist/assets/{yaml-workflows-CaLPMQha.js.map → yaml-workflows-D7JXNqbM.js.map} +1 -1
  221. package/dashboard/dist/index.html +3 -3
  222. package/docs/api/mcp-servers.md +60 -2
  223. package/docs/architecture.md +3 -3
  224. package/docs/dashboard.md +1 -1
  225. package/docs/escalation-strategies.md +2 -3
  226. package/docs/mcp.md +301 -31
  227. package/package.json +4 -4
  228. package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js +0 -2
  229. package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js +0 -2
  230. package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js.map +0 -1
  231. package/dashboard/dist/assets/BotPicker-C51nKFEu.js +0 -2
  232. package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js +0 -2
  233. package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js.map +0 -1
  234. package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js +0 -5
  235. package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js.map +0 -1
  236. package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js +0 -2
  237. package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js.map +0 -1
  238. package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js +0 -2
  239. package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js.map +0 -1
  240. package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js +0 -2
  241. package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js.map +0 -1
  242. package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js +0 -2
  243. package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js.map +0 -1
  244. package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js +0 -2
  245. package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js.map +0 -1
  246. package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js +0 -2
  247. package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js.map +0 -1
  248. package/dashboard/dist/assets/RefreshButton-BcQDObrv.js +0 -2
  249. package/dashboard/dist/assets/RefreshButton-BcQDObrv.js.map +0 -1
  250. package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js +0 -2
  251. package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js.map +0 -1
  252. package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js +0 -2
  253. package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js.map +0 -1
  254. package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js +0 -2
  255. package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js.map +0 -1
  256. package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js +0 -2
  257. package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js.map +0 -1
  258. package/dashboard/dist/assets/helpers-DBUZ9pnG.js +0 -2
  259. package/dashboard/dist/assets/helpers-DBUZ9pnG.js.map +0 -1
  260. package/dashboard/dist/assets/index-BOeA-gfK.js +0 -17
  261. package/dashboard/dist/assets/index-BOeA-gfK.js.map +0 -1
  262. package/dashboard/dist/assets/index-BZ6K_kmL.js +0 -3
  263. package/dashboard/dist/assets/index-BZ6K_kmL.js.map +0 -1
  264. package/dashboard/dist/assets/index-Bpm0yeoi.js +0 -2
  265. package/dashboard/dist/assets/index-Bpm0yeoi.js.map +0 -1
  266. package/dashboard/dist/assets/index-BtOwLI0K.js +0 -2
  267. package/dashboard/dist/assets/index-CBF3ZvRZ.js +0 -6
  268. package/dashboard/dist/assets/index-CBF3ZvRZ.js.map +0 -1
  269. package/dashboard/dist/assets/index-CDWOfCmi.js +0 -2
  270. package/dashboard/dist/assets/index-Ce6sL__n.js +0 -2
  271. package/dashboard/dist/assets/index-Ce6sL__n.js.map +0 -1
  272. package/dashboard/dist/assets/index-DSzSoku1.js.map +0 -1
  273. package/dashboard/dist/assets/index-gCy9XX3W.css +0 -1
  274. package/dashboard/dist/assets/mcp-BzVpaaKF.js +0 -2
  275. package/dashboard/dist/assets/mcp-BzVpaaKF.js.map +0 -1
  276. package/dashboard/dist/assets/mcp-query-wTuxTTCV.js +0 -2
  277. package/dashboard/dist/assets/mcp-query-wTuxTTCV.js.map +0 -1
  278. package/dashboard/dist/assets/useNatsEvents-DeGKHFTX.js +0 -2
  279. package/dashboard/dist/assets/useNatsEvents-DeGKHFTX.js.map +0 -1
  280. package/dashboard/dist/assets/useYamlActivityEvents-B5dHec6Y.js.map +0 -1
  281. package/dashboard/dist/assets/vendor-icons-DCLlGYO9.js.map +0 -1
  282. package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js +0 -2
  283. package/lib/db/README.md +0 -8
  284. /package/{lib → build/lib}/db/schemas/002_seed.sql +0 -0
  285. /package/{lib → build/lib}/db/schemas/003_workflow_discovery.sql +0 -0
  286. /package/{lib → build/lib}/db/schemas/004_query_router.sql +0 -0
  287. /package/{lib → build/lib}/db/schemas/005_triage_router.sql +0 -0
  288. /package/{lib → build/lib}/db/schemas/006_oauth.sql +0 -0
  289. /package/{lib → build/lib}/db/schemas/007_security.sql +0 -0
  290. /package/{lib → build/lib}/db/schemas/008_bot_accounts.sql +0 -0
  291. /package/{lib → build/lib}/db/schemas/009_audit_trail.sql +0 -0
  292. /package/{lib → build/lib}/db/schemas/010_credential_providers.sql +0 -0
  293. /package/{lib → build/lib}/db/schemas/012_drop_modality.sql +0 -0
  294. /package/{lib → build/lib}/db/schemas/013_execute_as.sql +0 -0
  295. /package/{lib → build/lib}/db/schemas/014_ephemeral_credentials.sql +0 -0
  296. /package/{lib → build/lib}/db/schemas/015_knowledge.sql +0 -0
@@ -71,29 +71,29 @@ export declare const screenshotSchema: z.ZodObject<{
71
71
  describe: z.ZodOptional<z.ZodBoolean>;
72
72
  }, "strip", z.ZodTypeAny, {
73
73
  path: string;
74
- url?: string | undefined;
75
74
  page_id?: string | undefined;
76
75
  _handle?: {
77
76
  type: "playwright_page";
78
77
  page_id: string;
79
78
  cdp_endpoint?: string | undefined;
80
79
  } | undefined;
80
+ url?: string | undefined;
81
+ selector?: string | undefined;
81
82
  wait_until?: "load" | "domcontentloaded" | "networkidle" | undefined;
82
83
  full_page?: boolean | undefined;
83
- selector?: string | undefined;
84
84
  describe?: boolean | undefined;
85
85
  }, {
86
86
  path: string;
87
- url?: string | undefined;
88
87
  page_id?: string | undefined;
89
88
  _handle?: {
90
89
  type: "playwright_page";
91
90
  page_id: string;
92
91
  cdp_endpoint?: string | undefined;
93
92
  } | undefined;
93
+ url?: string | undefined;
94
+ selector?: string | undefined;
94
95
  wait_until?: "load" | "domcontentloaded" | "networkidle" | undefined;
95
96
  full_page?: boolean | undefined;
96
- selector?: string | undefined;
97
97
  describe?: boolean | undefined;
98
98
  }>;
99
99
  export declare const clickSchema: z.ZodObject<{
@@ -184,22 +184,22 @@ export declare const waitForSchema: z.ZodObject<{
184
184
  timeout: z.ZodOptional<z.ZodNumber>;
185
185
  }, "strip", z.ZodTypeAny, {
186
186
  selector: string;
187
- timeout?: number | undefined;
188
187
  page_id?: string | undefined;
189
188
  _handle?: {
190
189
  type: "playwright_page";
191
190
  page_id: string;
192
191
  cdp_endpoint?: string | undefined;
193
192
  } | undefined;
193
+ timeout?: number | undefined;
194
194
  }, {
195
195
  selector: string;
196
- timeout?: number | undefined;
197
196
  page_id?: string | undefined;
198
197
  _handle?: {
199
198
  type: "playwright_page";
200
199
  page_id: string;
201
200
  cdp_endpoint?: string | undefined;
202
201
  } | undefined;
202
+ timeout?: number | undefined;
203
203
  }>;
204
204
  export declare const evaluateSchema: z.ZodObject<{
205
205
  _handle: z.ZodOptional<z.ZodObject<{
@@ -283,10 +283,10 @@ export declare const runScriptStepSchema: z.ZodObject<{
283
283
  not?: boolean | undefined;
284
284
  url?: string | undefined;
285
285
  path?: string | undefined;
286
- timeout?: number | undefined;
286
+ selector?: string | undefined;
287
287
  wait_until?: "load" | "domcontentloaded" | "networkidle" | undefined;
288
+ timeout?: number | undefined;
288
289
  full_page?: boolean | undefined;
289
- selector?: string | undefined;
290
290
  describe?: boolean | undefined;
291
291
  script?: string | undefined;
292
292
  }, {
@@ -295,10 +295,10 @@ export declare const runScriptStepSchema: z.ZodObject<{
295
295
  not?: boolean | undefined;
296
296
  url?: string | undefined;
297
297
  path?: string | undefined;
298
- timeout?: number | undefined;
298
+ selector?: string | undefined;
299
299
  wait_until?: "load" | "domcontentloaded" | "networkidle" | undefined;
300
+ timeout?: number | undefined;
300
301
  full_page?: boolean | undefined;
301
- selector?: string | undefined;
302
302
  describe?: boolean | undefined;
303
303
  script?: string | undefined;
304
304
  }>;
@@ -334,10 +334,10 @@ export declare const runScriptSchema: z.ZodObject<{
334
334
  not?: boolean | undefined;
335
335
  url?: string | undefined;
336
336
  path?: string | undefined;
337
- timeout?: number | undefined;
337
+ selector?: string | undefined;
338
338
  wait_until?: "load" | "domcontentloaded" | "networkidle" | undefined;
339
+ timeout?: number | undefined;
339
340
  full_page?: boolean | undefined;
340
- selector?: string | undefined;
341
341
  describe?: boolean | undefined;
342
342
  script?: string | undefined;
343
343
  }, {
@@ -346,10 +346,10 @@ export declare const runScriptSchema: z.ZodObject<{
346
346
  not?: boolean | undefined;
347
347
  url?: string | undefined;
348
348
  path?: string | undefined;
349
- timeout?: number | undefined;
349
+ selector?: string | undefined;
350
350
  wait_until?: "load" | "domcontentloaded" | "networkidle" | undefined;
351
+ timeout?: number | undefined;
351
352
  full_page?: boolean | undefined;
352
- selector?: string | undefined;
353
353
  describe?: boolean | undefined;
354
354
  script?: string | undefined;
355
355
  }>, "many">;
@@ -360,10 +360,10 @@ export declare const runScriptSchema: z.ZodObject<{
360
360
  not?: boolean | undefined;
361
361
  url?: string | undefined;
362
362
  path?: string | undefined;
363
- timeout?: number | undefined;
363
+ selector?: string | undefined;
364
364
  wait_until?: "load" | "domcontentloaded" | "networkidle" | undefined;
365
+ timeout?: number | undefined;
365
366
  full_page?: boolean | undefined;
366
- selector?: string | undefined;
367
367
  describe?: boolean | undefined;
368
368
  script?: string | undefined;
369
369
  }[];
@@ -379,10 +379,10 @@ export declare const runScriptSchema: z.ZodObject<{
379
379
  not?: boolean | undefined;
380
380
  url?: string | undefined;
381
381
  path?: string | undefined;
382
- timeout?: number | undefined;
382
+ selector?: string | undefined;
383
383
  wait_until?: "load" | "domcontentloaded" | "networkidle" | undefined;
384
+ timeout?: number | undefined;
384
385
  full_page?: boolean | undefined;
385
- selector?: string | undefined;
386
386
  describe?: boolean | undefined;
387
387
  script?: string | undefined;
388
388
  }[];
@@ -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,8 @@ 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 (the content to store — NOT "content"), data_key (optional sub-key). ' +
187
+ 'store_knowledge upserts by domain+key — it merges data if the entry exists. ' +
185
188
  'Use a consistent domain name across related workflows to build shared context. ' +
186
189
  'search_knowledge uses JSONB containment (@>) — the query object must be a subset of the stored data. ' +
187
190
  '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 } from './tool-loader';
2
+ export { callBuilderLLM } from './llm';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.callBuilderLLM = 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
+ var llm_1 = require("./llm");
7
+ 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>;