@hotmeshio/long-tail 0.4.17 → 0.4.19

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 (354) hide show
  1. package/README.md +0 -2
  2. package/build/adapters/express.js +4 -0
  3. package/build/api/auth-sso.d.ts +12 -0
  4. package/build/api/auth-sso.js +54 -0
  5. package/build/api/escalations/bulk.js +2 -2
  6. package/build/api/escalations/claim.js +3 -13
  7. package/build/api/escalations/create.js +3 -2
  8. package/build/api/escalations/helpers.d.ts +1 -0
  9. package/build/api/escalations/helpers.js +6 -4
  10. package/build/api/escalations/list.d.ts +1 -0
  11. package/build/api/escalations/list.js +1 -0
  12. package/build/api/escalations/metadata.js +4 -4
  13. package/build/api/escalations/single.js +3 -2
  14. package/build/api/settings.js +6 -1
  15. package/build/api/topics.d.ts +9 -0
  16. package/build/api/topics.js +31 -2
  17. package/build/lib/events/index.d.ts +1 -0
  18. package/build/lib/events/index.js +4 -0
  19. package/build/lib/events/nats.d.ts +5 -0
  20. package/build/lib/events/nats.js +9 -0
  21. package/build/lib/events/publish.d.ts +12 -9
  22. package/build/lib/events/publish.js +27 -17
  23. package/build/modules/auth.d.ts +7 -0
  24. package/build/modules/auth.js +104 -2
  25. package/build/modules/sso.d.ts +6 -0
  26. package/build/modules/sso.js +20 -0
  27. package/build/routes/auth-sso.d.ts +2 -0
  28. package/build/routes/auth-sso.js +51 -0
  29. package/build/routes/bot-accounts.js +1 -1
  30. package/build/routes/controlplane.js +6 -6
  31. package/build/routes/escalations/list.js +1 -0
  32. package/build/routes/index.js +2 -0
  33. package/build/routes/mcp-endpoint.d.ts +17 -0
  34. package/build/routes/mcp-endpoint.js +70 -0
  35. package/build/routes/nats-credentials.js +1 -1
  36. package/build/routes/roles.js +5 -5
  37. package/build/routes/topics.js +2 -0
  38. package/build/routes/users.js +31 -5
  39. package/build/sdk/index.d.ts +1 -0
  40. package/build/services/agent/input-mapper.js +17 -1
  41. package/build/services/escalation/crud.js +14 -1
  42. package/build/services/escalation/queries.d.ts +1 -0
  43. package/build/services/escalation/queries.js +7 -0
  44. package/build/services/mcp/exposure.d.ts +15 -0
  45. package/build/services/mcp/exposure.js +18 -0
  46. package/build/services/mcp/external-server.d.ts +15 -0
  47. package/build/services/mcp/external-server.js +125 -0
  48. package/build/services/mcp/seed-service-account.d.ts +11 -0
  49. package/build/services/mcp/seed-service-account.js +77 -0
  50. package/build/services/role/index.d.ts +1 -1
  51. package/build/services/role/index.js +2 -2
  52. package/build/services/topics/system-topics.js +29 -25
  53. package/build/services/user/index.d.ts +1 -1
  54. package/build/services/user/index.js +2 -1
  55. package/build/services/user/rbac.d.ts +11 -0
  56. package/build/services/user/rbac.js +17 -0
  57. package/build/services/user/sso-provision.d.ts +19 -0
  58. package/build/services/user/sso-provision.js +62 -0
  59. package/build/services/workflow-invocation.js +5 -3
  60. package/build/start/config.js +6 -0
  61. package/build/start/server.js +2 -0
  62. package/build/start/workers.js +15 -0
  63. package/build/system/index.js +53 -35
  64. package/build/system/mcp-servers/admin/agent-subscriptions.d.ts +5 -0
  65. package/build/system/mcp-servers/admin/agent-subscriptions.js +78 -0
  66. package/build/system/mcp-servers/admin/agents.d.ts +5 -0
  67. package/build/system/mcp-servers/admin/agents.js +103 -0
  68. package/build/system/mcp-servers/admin/bot-accounts.d.ts +5 -0
  69. package/build/system/mcp-servers/admin/bot-accounts.js +126 -0
  70. package/build/system/mcp-servers/admin/controlplane.d.ts +5 -0
  71. package/build/system/mcp-servers/admin/controlplane.js +107 -0
  72. package/build/system/mcp-servers/admin/escalations.js +88 -0
  73. package/build/system/mcp-servers/admin/exports.d.ts +5 -0
  74. package/build/system/mcp-servers/admin/exports.js +101 -0
  75. package/build/system/mcp-servers/admin/index.d.ts +16 -8
  76. package/build/system/mcp-servers/admin/index.js +36 -21
  77. package/build/system/mcp-servers/admin/pipelines.d.ts +5 -0
  78. package/build/system/mcp-servers/admin/pipelines.js +96 -0
  79. package/build/system/mcp-servers/admin/schemas.d.ts +614 -6
  80. package/build/system/mcp-servers/admin/schemas.js +239 -1
  81. package/build/system/mcp-servers/admin/settings.d.ts +5 -0
  82. package/build/system/mcp-servers/admin/settings.js +53 -0
  83. package/build/system/mcp-servers/admin/topics.d.ts +5 -0
  84. package/build/system/mcp-servers/admin/topics.js +101 -0
  85. package/build/system/seed/tool-manifests-admin.d.ts +5077 -188
  86. package/build/system/seed/tool-manifests-admin.js +79 -30
  87. package/build/system/seed/tool-manifests-data.d.ts +20 -0
  88. package/build/system/seed/tool-manifests-data.js +24 -6
  89. package/build/system/seed/tool-manifests-escalation.d.ts +5 -0
  90. package/build/system/seed/tool-manifests-escalation.js +5 -0
  91. package/build/system/seed/tool-manifests-events.d.ts +4 -0
  92. package/build/system/seed/tool-manifests-events.js +4 -0
  93. package/build/system/seed/tool-manifests-knowledge.d.ts +6 -0
  94. package/build/system/seed/tool-manifests-knowledge.js +7 -0
  95. package/build/system/seed/tool-manifests-workflows.d.ts +8 -0
  96. package/build/system/seed/tool-manifests-workflows.js +8 -0
  97. package/build/tsconfig.tsbuildinfo +1 -1
  98. package/build/types/auth.d.ts +71 -0
  99. package/build/types/events.d.ts +17 -6
  100. package/build/types/index.d.ts +1 -1
  101. package/build/types/startup.d.ts +22 -1
  102. package/dashboard/dist/assets/{AdminDashboard-Cfo0mwL2.js → AdminDashboard-BwUGcCxQ.js} +2 -2
  103. package/dashboard/dist/assets/{AdminDashboard-Cfo0mwL2.js.map → AdminDashboard-BwUGcCxQ.js.map} +1 -1
  104. package/dashboard/dist/assets/AgentConfigPage-DgrYzLwq.js +16 -0
  105. package/dashboard/dist/assets/AgentConfigPage-DgrYzLwq.js.map +1 -0
  106. package/dashboard/dist/assets/{AgentDetailPage-3mZA7SOb.js → AgentDetailPage-XJpl7wfJ.js} +4 -4
  107. package/dashboard/dist/assets/AgentDetailPage-XJpl7wfJ.js.map +1 -0
  108. package/dashboard/dist/assets/{AgentsPage-CTVocfBb.js → AgentsPage-CGpVG6r8.js} +2 -2
  109. package/dashboard/dist/assets/{AgentsPage-CTVocfBb.js.map → AgentsPage-CGpVG6r8.js.map} +1 -1
  110. package/dashboard/dist/assets/AvailableEscalationsPage-DR1e0TQZ.js +2 -0
  111. package/dashboard/dist/assets/{AvailableEscalationsPage-CA9x9o5s.js.map → AvailableEscalationsPage-DR1e0TQZ.js.map} +1 -1
  112. package/dashboard/dist/assets/BotPicker-BKtjl6IL.js +2 -0
  113. package/dashboard/dist/assets/{BotPicker-BQp_Vs73.js.map → BotPicker-BKtjl6IL.js.map} +1 -1
  114. package/dashboard/dist/assets/{CapabilitiesPage-wpVtkGeU.js → CapabilitiesPage-kCB8fyOj.js} +2 -2
  115. package/dashboard/dist/assets/{CapabilitiesPage-wpVtkGeU.js.map → CapabilitiesPage-kCB8fyOj.js.map} +1 -1
  116. package/dashboard/dist/assets/{CollapsibleSection-2eZMMZiG.js → CollapsibleSection-C3tU61hB.js} +2 -2
  117. package/dashboard/dist/assets/{CollapsibleSection-2eZMMZiG.js.map → CollapsibleSection-C3tU61hB.js.map} +1 -1
  118. package/dashboard/dist/assets/{CredentialsPage-DJGLssm0.js → CredentialsPage-Dt4nJs_B.js} +2 -2
  119. package/dashboard/dist/assets/{CredentialsPage-DJGLssm0.js.map → CredentialsPage-Dt4nJs_B.js.map} +1 -1
  120. package/dashboard/dist/assets/CronLabel-BdE6mHyA.js +2 -0
  121. package/dashboard/dist/assets/CronLabel-BdE6mHyA.js.map +1 -0
  122. package/dashboard/dist/assets/{CustomDurationPicker-DbyqfK35.js → CustomDurationPicker-B_Yxfb-u.js} +2 -2
  123. package/dashboard/dist/assets/{CustomDurationPicker-DbyqfK35.js.map → CustomDurationPicker-B_Yxfb-u.js.map} +1 -1
  124. package/dashboard/dist/assets/{DropZone-BkfRoUcm.js → DropZone-CptiQ0wc.js} +2 -2
  125. package/dashboard/dist/assets/{DropZone-BkfRoUcm.js.map → DropZone-CptiQ0wc.js.map} +1 -1
  126. package/dashboard/dist/assets/ElapsedCell-tcGx5PFI.js +2 -0
  127. package/dashboard/dist/assets/{ElapsedCell-BPYm8RA7.js.map → ElapsedCell-tcGx5PFI.js.map} +1 -1
  128. package/dashboard/dist/assets/{EscalationsOverview-kYGHfnLf.js → EscalationsOverview-1KO5dXzk.js} +2 -2
  129. package/dashboard/dist/assets/{EscalationsOverview-kYGHfnLf.js.map → EscalationsOverview-1KO5dXzk.js.map} +1 -1
  130. package/dashboard/dist/assets/{EventTable-DSDzJMer.js → EventTable-DnpsQ6Ew.js} +2 -2
  131. package/dashboard/dist/assets/{EventTable-DSDzJMer.js.map → EventTable-DnpsQ6Ew.js.map} +1 -1
  132. package/dashboard/dist/assets/HomePage-B2Jgo1J1.js +2 -0
  133. package/dashboard/dist/assets/HomePage-B2Jgo1J1.js.map +1 -0
  134. package/dashboard/dist/assets/ListToolbar-jrVba7QN.js +2 -0
  135. package/dashboard/dist/assets/{ListToolbar-DEef1_-T.js.map → ListToolbar-jrVba7QN.js.map} +1 -1
  136. package/dashboard/dist/assets/{McpOverview-CZFW5qMb.js → McpOverview-BzyxJyc9.js} +2 -2
  137. package/dashboard/dist/assets/{McpOverview-CZFW5qMb.js.map → McpOverview-BzyxJyc9.js.map} +1 -1
  138. package/dashboard/dist/assets/{McpQueryDetailPage-q9xH-QRo.js → McpQueryDetailPage-DXNseeKl.js} +2 -2
  139. package/dashboard/dist/assets/{McpQueryDetailPage-q9xH-QRo.js.map → McpQueryDetailPage-DXNseeKl.js.map} +1 -1
  140. package/dashboard/dist/assets/{McpQueryPage-D14466yi.js → McpQueryPage-WZfTY43_.js} +2 -2
  141. package/dashboard/dist/assets/{McpQueryPage-D14466yi.js.map → McpQueryPage-WZfTY43_.js.map} +1 -1
  142. package/dashboard/dist/assets/McpRunDetailPage-DKZp-p7S.js +2 -0
  143. package/dashboard/dist/assets/McpRunDetailPage-DKZp-p7S.js.map +1 -0
  144. package/dashboard/dist/assets/McpRunsPage-SXyiwc0d.js +2 -0
  145. package/dashboard/dist/assets/{McpRunsPage-aZg057y3.js.map → McpRunsPage-SXyiwc0d.js.map} +1 -1
  146. package/dashboard/dist/assets/OperatorDashboard-Cy7ySMXj.js +2 -0
  147. package/dashboard/dist/assets/OperatorDashboard-Cy7ySMXj.js.map +1 -0
  148. package/dashboard/dist/assets/{PageHeader-CR6TpJG_.js → PageHeader-BuJpMxyu.js} +2 -2
  149. package/dashboard/dist/assets/{PageHeader-CR6TpJG_.js.map → PageHeader-BuJpMxyu.js.map} +1 -1
  150. package/dashboard/dist/assets/{PageHeaderWithStats-CRcQEAO1.js → PageHeaderWithStats-yD_PTbOl.js} +2 -2
  151. package/dashboard/dist/assets/{PageHeaderWithStats-CRcQEAO1.js.map → PageHeaderWithStats-yD_PTbOl.js.map} +1 -1
  152. package/dashboard/dist/assets/{ProcessDetailPage-DyzNjwu8.js → ProcessDetailPage-DYIfvWyc.js} +2 -2
  153. package/dashboard/dist/assets/{ProcessDetailPage-DyzNjwu8.js.map → ProcessDetailPage-DYIfvWyc.js.map} +1 -1
  154. package/dashboard/dist/assets/{ProcessesListPage-CT_3b5Wt.js → ProcessesListPage-DR1RGaMl.js} +2 -2
  155. package/dashboard/dist/assets/{ProcessesListPage-CT_3b5Wt.js.map → ProcessesListPage-DR1RGaMl.js.map} +1 -1
  156. package/dashboard/dist/assets/{RolePill-BC54Vn-U.js → RolePill-SasQKc_B.js} +2 -2
  157. package/dashboard/dist/assets/{RolePill-BC54Vn-U.js.map → RolePill-SasQKc_B.js.map} +1 -1
  158. package/dashboard/dist/assets/{RolesPage-CpRJq-sg.js → RolesPage-pMERxj15.js} +2 -2
  159. package/dashboard/dist/assets/{RolesPage-CpRJq-sg.js.map → RolesPage-pMERxj15.js.map} +1 -1
  160. package/dashboard/dist/assets/{RunAsSelector-C20rdNsC.js → RunAsSelector-B-ksMoEj.js} +2 -2
  161. package/dashboard/dist/assets/{RunAsSelector-C20rdNsC.js.map → RunAsSelector-B-ksMoEj.js.map} +1 -1
  162. package/dashboard/dist/assets/ServerName-CHspudaC.js +2 -0
  163. package/dashboard/dist/assets/{ServerName-Q6okiv4f.js.map → ServerName-CHspudaC.js.map} +1 -1
  164. package/dashboard/dist/assets/{SwimlaneTimeline-CbFaU4bq.js → SwimlaneTimeline-Cr_K5qpu.js} +2 -2
  165. package/dashboard/dist/assets/{SwimlaneTimeline-CbFaU4bq.js.map → SwimlaneTimeline-Cr_K5qpu.js.map} +1 -1
  166. package/dashboard/dist/assets/{TagInput-D6l1SPWd.js → TagInput-DvF3j8MA.js} +2 -2
  167. package/dashboard/dist/assets/{TagInput-D6l1SPWd.js.map → TagInput-DvF3j8MA.js.map} +1 -1
  168. package/dashboard/dist/assets/{TaskDetailPage-22cJsFmM.js → TaskDetailPage-BO5p7AEe.js} +2 -2
  169. package/dashboard/dist/assets/{TaskDetailPage-22cJsFmM.js.map → TaskDetailPage-BO5p7AEe.js.map} +1 -1
  170. package/dashboard/dist/assets/{TaskQueuePill-iDBVCEQQ.js → TaskQueuePill-BCQrS2oK.js} +2 -2
  171. package/dashboard/dist/assets/{TaskQueuePill-iDBVCEQQ.js.map → TaskQueuePill-BCQrS2oK.js.map} +1 -1
  172. package/dashboard/dist/assets/{TasksListPage-BDmaUIKu.js → TasksListPage-BRg-uFtF.js} +2 -2
  173. package/dashboard/dist/assets/{TasksListPage-BDmaUIKu.js.map → TasksListPage-BRg-uFtF.js.map} +1 -1
  174. package/dashboard/dist/assets/{TimeAgo-7wqEp87-.js → TimeAgo-BSzN6rAH.js} +2 -2
  175. package/dashboard/dist/assets/{TimeAgo-7wqEp87-.js.map → TimeAgo-BSzN6rAH.js.map} +1 -1
  176. package/dashboard/dist/assets/{TimestampCell-BBCf8zsN.js → TimestampCell-DL6zMNEQ.js} +2 -2
  177. package/dashboard/dist/assets/{TimestampCell-BBCf8zsN.js.map → TimestampCell-DL6zMNEQ.js.map} +1 -1
  178. package/dashboard/dist/assets/{ToolPill-HcRTggHo.js → ToolPill-1aTqYtzp.js} +2 -2
  179. package/dashboard/dist/assets/{ToolPill-HcRTggHo.js.map → ToolPill-1aTqYtzp.js.map} +1 -1
  180. package/dashboard/dist/assets/{ToolTestPanel-Dosq1cqG.js → ToolTestPanel-fLzNp79U.js} +2 -2
  181. package/dashboard/dist/assets/{ToolTestPanel-Dosq1cqG.js.map → ToolTestPanel-fLzNp79U.js.map} +1 -1
  182. package/dashboard/dist/assets/TopicDetailPage-D7gCsPKB.js +9 -0
  183. package/dashboard/dist/assets/TopicDetailPage-D7gCsPKB.js.map +1 -0
  184. package/dashboard/dist/assets/{TopicsPage-tVPdz-k0.js → TopicsPage-B3Aa8Haz.js} +2 -2
  185. package/dashboard/dist/assets/{TopicsPage-tVPdz-k0.js.map → TopicsPage-B3Aa8Haz.js.map} +1 -1
  186. package/dashboard/dist/assets/{UserName-DX7IBjFn.js → UserName-BjHIJWgh.js} +2 -2
  187. package/dashboard/dist/assets/{UserName-DX7IBjFn.js.map → UserName-BjHIJWgh.js.map} +1 -1
  188. package/dashboard/dist/assets/{WorkflowExecutionPage-BjC0j9_L.js → WorkflowExecutionPage-BQ7AYlQA.js} +2 -2
  189. package/dashboard/dist/assets/{WorkflowExecutionPage-BjC0j9_L.js.map → WorkflowExecutionPage-BQ7AYlQA.js.map} +1 -1
  190. package/dashboard/dist/assets/{WorkflowPill-54px0YiY.js → WorkflowPill-Z-zHRKOK.js} +2 -2
  191. package/dashboard/dist/assets/{WorkflowPill-54px0YiY.js.map → WorkflowPill-Z-zHRKOK.js.map} +1 -1
  192. package/dashboard/dist/assets/WorkflowsDashboard-D-G8Xudz.js +2 -0
  193. package/dashboard/dist/assets/WorkflowsDashboard-D-G8Xudz.js.map +1 -0
  194. package/dashboard/dist/assets/{WorkflowsOverview-DaJRDkNy.js → WorkflowsOverview-B4DUcVxs.js} +2 -2
  195. package/dashboard/dist/assets/{WorkflowsOverview-DaJRDkNy.js.map → WorkflowsOverview-B4DUcVxs.js.map} +1 -1
  196. package/dashboard/dist/assets/{YamlWorkflowsPage-CkpQaUmz.js → YamlWorkflowsPage-CnTNOku0.js} +2 -2
  197. package/dashboard/dist/assets/{YamlWorkflowsPage-CkpQaUmz.js.map → YamlWorkflowsPage-CnTNOku0.js.map} +1 -1
  198. package/dashboard/dist/assets/{agents-B-P5MlEx.js → agents-CkvQDr9b.js} +2 -2
  199. package/dashboard/dist/assets/{agents-B-P5MlEx.js.map → agents-CkvQDr9b.js.map} +1 -1
  200. package/dashboard/dist/assets/{bots-CZz9iVys.js → bots-CzuMCVgU.js} +2 -2
  201. package/dashboard/dist/assets/{bots-CZz9iVys.js.map → bots-CzuMCVgU.js.map} +1 -1
  202. package/dashboard/dist/assets/{capabilities-DrZ8Vw_v.js → capabilities-CbGmS0ty.js} +2 -2
  203. package/dashboard/dist/assets/{capabilities-DrZ8Vw_v.js.map → capabilities-CbGmS0ty.js.map} +1 -1
  204. package/dashboard/dist/assets/{controlplane-cj-1c-1C.js → controlplane-DGvwkuYx.js} +2 -2
  205. package/dashboard/dist/assets/{controlplane-cj-1c-1C.js.map → controlplane-DGvwkuYx.js.map} +1 -1
  206. package/dashboard/dist/assets/{escalation-BEVFyQnE.js → escalation-B7ysVToF.js} +2 -2
  207. package/dashboard/dist/assets/{escalation-BEVFyQnE.js.map → escalation-B7ysVToF.js.map} +1 -1
  208. package/dashboard/dist/assets/{escalation-columns-Beox3TXH.js → escalation-columns-CHQEJU1j.js} +2 -2
  209. package/dashboard/dist/assets/{escalation-columns-Beox3TXH.js.map → escalation-columns-CHQEJU1j.js.map} +1 -1
  210. package/dashboard/dist/assets/{helpers-B4gzNq9h.js → helpers-BFOjXa4r.js} +2 -2
  211. package/dashboard/dist/assets/{helpers-B4gzNq9h.js.map → helpers-BFOjXa4r.js.map} +1 -1
  212. package/dashboard/dist/assets/index-B9_1AZaG.js +2 -0
  213. package/dashboard/dist/assets/{index-3n5VREXN.js.map → index-B9_1AZaG.js.map} +1 -1
  214. package/dashboard/dist/assets/{index-BCQ65lNu.js → index-BFaDxPxA.js} +2 -2
  215. package/dashboard/dist/assets/{index-BCQ65lNu.js.map → index-BFaDxPxA.js.map} +1 -1
  216. package/dashboard/dist/assets/index-BduDiGcw.js +15 -0
  217. package/dashboard/dist/assets/{index-UtAfnStw.js.map → index-BduDiGcw.js.map} +1 -1
  218. package/dashboard/dist/assets/{index-Bh-PnP17.js → index-BeLphL59.js} +2 -2
  219. package/dashboard/dist/assets/{index-Bh-PnP17.js.map → index-BeLphL59.js.map} +1 -1
  220. package/dashboard/dist/assets/index-C--SEsU7.css +1 -0
  221. package/dashboard/dist/assets/{index-_DfbFHXk.js → index-CRiBkHPb.js} +2 -2
  222. package/dashboard/dist/assets/{index-_DfbFHXk.js.map → index-CRiBkHPb.js.map} +1 -1
  223. package/dashboard/dist/assets/{index-DdKbIZNE.js → index-CbrMW-gM.js} +2 -2
  224. package/dashboard/dist/assets/{index-DdKbIZNE.js.map → index-CbrMW-gM.js.map} +1 -1
  225. package/dashboard/dist/assets/{index-aJRDh4zW.js → index-CvOGgvzP.js} +2 -2
  226. package/dashboard/dist/assets/{index-aJRDh4zW.js.map → index-CvOGgvzP.js.map} +1 -1
  227. package/dashboard/dist/assets/{index-D1MywQ2z.js → index-DDlrQeTj.js} +2 -2
  228. package/dashboard/dist/assets/{index-D1MywQ2z.js.map → index-DDlrQeTj.js.map} +1 -1
  229. package/dashboard/dist/assets/{index-BYXiz05a.js → index-DQHmfTPo.js} +2 -2
  230. package/dashboard/dist/assets/{index-BYXiz05a.js.map → index-DQHmfTPo.js.map} +1 -1
  231. package/dashboard/dist/assets/{index-BpN31nuC.js → index-_BRA9uFL.js} +25 -25
  232. package/dashboard/dist/assets/index-_BRA9uFL.js.map +1 -0
  233. package/dashboard/dist/assets/index-a98qWLB-.js +2 -0
  234. package/dashboard/dist/assets/index-a98qWLB-.js.map +1 -0
  235. package/dashboard/dist/assets/index-l_8R6U4r.js +6 -0
  236. package/dashboard/dist/assets/index-l_8R6U4r.js.map +1 -0
  237. package/dashboard/dist/assets/{index-D4KGadbW.js → index-v0OQpgXS.js} +2 -2
  238. package/dashboard/dist/assets/{index-D4KGadbW.js.map → index-v0OQpgXS.js.map} +1 -1
  239. package/dashboard/dist/assets/{knowledge-DhtKWMON.js → knowledge-BlF8UMrk.js} +2 -2
  240. package/dashboard/dist/assets/{knowledge-DhtKWMON.js.map → knowledge-BlF8UMrk.js.map} +1 -1
  241. package/dashboard/dist/assets/{mcp-BXN7-wGF.js → mcp-MtXuky8q.js} +2 -2
  242. package/dashboard/dist/assets/{mcp-BXN7-wGF.js.map → mcp-MtXuky8q.js.map} +1 -1
  243. package/dashboard/dist/assets/{mcp-query-BIJP4mQJ.js → mcp-query-DQ-J1Q0K.js} +2 -2
  244. package/dashboard/dist/assets/{mcp-query-BIJP4mQJ.js.map → mcp-query-DQ-J1Q0K.js.map} +1 -1
  245. package/dashboard/dist/assets/{namespaces-ne_yDQZX.js → namespaces-DtsT_GoV.js} +2 -2
  246. package/dashboard/dist/assets/{namespaces-ne_yDQZX.js.map → namespaces-DtsT_GoV.js.map} +1 -1
  247. package/dashboard/dist/assets/{pipelines-Bcz62DoS.js → pipelines-BjlCm9VH.js} +2 -2
  248. package/dashboard/dist/assets/{pipelines-Bcz62DoS.js.map → pipelines-BjlCm9VH.js.map} +1 -1
  249. package/dashboard/dist/assets/{roles-De2CzGCy.js → roles-D-LhJ82d.js} +2 -2
  250. package/dashboard/dist/assets/{roles-De2CzGCy.js.map → roles-D-LhJ82d.js.map} +1 -1
  251. package/dashboard/dist/assets/{tasks-4yL5EfxI.js → tasks-BrP_8uEN.js} +2 -2
  252. package/dashboard/dist/assets/{tasks-4yL5EfxI.js.map → tasks-BrP_8uEN.js.map} +1 -1
  253. package/dashboard/dist/assets/topics-DUk-zX5D.js +2 -0
  254. package/dashboard/dist/assets/{topics-DDKHpRwP.js.map → topics-DUk-zX5D.js.map} +1 -1
  255. package/dashboard/dist/assets/useEventHooks-XNNzwADV.js +2 -0
  256. package/dashboard/dist/assets/useEventHooks-XNNzwADV.js.map +1 -0
  257. package/dashboard/dist/assets/{useYamlActivityEvents-Dv6GhDkh.js → useYamlActivityEvents-DANQ5jIY.js} +2 -2
  258. package/dashboard/dist/assets/{useYamlActivityEvents-Dv6GhDkh.js.map → useYamlActivityEvents-DANQ5jIY.js.map} +1 -1
  259. package/dashboard/dist/assets/{users-pSMWP58G.js → users-vj0JgOkA.js} +2 -2
  260. package/dashboard/dist/assets/{users-pSMWP58G.js.map → users-vj0JgOkA.js.map} +1 -1
  261. package/dashboard/dist/assets/{vendor-icons-CrrAvF2g.js → vendor-icons-Doy0g69_.js} +116 -111
  262. package/dashboard/dist/assets/vendor-icons-Doy0g69_.js.map +1 -0
  263. package/dashboard/dist/assets/{workflows-COYPOe2I.js → workflows-CmqgGPzI.js} +2 -2
  264. package/dashboard/dist/assets/{workflows-COYPOe2I.js.map → workflows-CmqgGPzI.js.map} +1 -1
  265. package/dashboard/dist/assets/{yaml-workflows-1dF3ig6u.js → yaml-workflows-DNFyjBXH.js} +2 -2
  266. package/dashboard/dist/assets/{yaml-workflows-1dF3ig6u.js.map → yaml-workflows-DNFyjBXH.js.map} +1 -1
  267. package/dashboard/dist/index.html +3 -3
  268. package/docs/api/http/controlplane.md +1 -1
  269. package/docs/api/http/mcp-endpoint.md +133 -0
  270. package/docs/api/http/roles.md +46 -0
  271. package/docs/api/http/service-accounts.md +15 -0
  272. package/docs/api/http/settings.md +6 -0
  273. package/docs/api/mcp/admin.md +1187 -0
  274. package/docs/api/mcp/claude-code.md +47 -0
  275. package/docs/api/mcp/docs.md +54 -0
  276. package/docs/api/mcp/events.md +80 -0
  277. package/docs/api/mcp/file-storage.md +76 -0
  278. package/docs/api/mcp/http-fetch.md +64 -0
  279. package/docs/api/mcp/human-queue.md +101 -0
  280. package/docs/api/mcp/index.md +52 -0
  281. package/docs/api/mcp/knowledge.md +125 -0
  282. package/docs/api/mcp/oauth.md +62 -0
  283. package/docs/api/mcp/schema-exchange.md +56 -0
  284. package/docs/api/mcp/translation.md +28 -0
  285. package/docs/api/mcp/vision.md +46 -0
  286. package/docs/api/sdk/settings.md +3 -1
  287. package/docs/auth.md +109 -0
  288. package/docs/dashboard.md +1 -1
  289. package/package.json +1 -1
  290. package/build/system/mcp-servers/playwright/browser-lifecycle.d.ts +0 -26
  291. package/build/system/mcp-servers/playwright/browser-lifecycle.js +0 -125
  292. package/build/system/mcp-servers/playwright/index.d.ts +0 -25
  293. package/build/system/mcp-servers/playwright/index.js +0 -42
  294. package/build/system/mcp-servers/playwright/schemas.d.ts +0 -394
  295. package/build/system/mcp-servers/playwright/schemas.js +0 -90
  296. package/build/system/mcp-servers/playwright/tools-atomic.d.ts +0 -2
  297. package/build/system/mcp-servers/playwright/tools-atomic.js +0 -9
  298. package/build/system/mcp-servers/playwright/tools-navigation.d.ts +0 -2
  299. package/build/system/mcp-servers/playwright/tools-navigation.js +0 -153
  300. package/build/system/mcp-servers/playwright/tools-page-interaction.d.ts +0 -2
  301. package/build/system/mcp-servers/playwright/tools-page-interaction.js +0 -162
  302. package/build/system/mcp-servers/playwright/tools-run-script.d.ts +0 -2
  303. package/build/system/mcp-servers/playwright/tools-run-script.js +0 -207
  304. package/build/system/mcp-servers/playwright/types.d.ts +0 -8
  305. package/build/system/mcp-servers/playwright/types.js +0 -30
  306. package/build/system/mcp-servers/playwright/vision-helper.d.ts +0 -12
  307. package/build/system/mcp-servers/playwright/vision-helper.js +0 -81
  308. package/build/system/mcp-servers/playwright-cli/helpers.d.ts +0 -11
  309. package/build/system/mcp-servers/playwright-cli/helpers.js +0 -20
  310. package/build/system/mcp-servers/playwright-cli/index.d.ts +0 -4
  311. package/build/system/mcp-servers/playwright-cli/index.js +0 -15
  312. package/build/system/mcp-servers/playwright-cli/schemas.d.ts +0 -219
  313. package/build/system/mcp-servers/playwright-cli/schemas.js +0 -75
  314. package/build/system/mcp-servers/playwright-cli/tools-auth.d.ts +0 -2
  315. package/build/system/mcp-servers/playwright-cli/tools-auth.js +0 -183
  316. package/build/system/mcp-servers/playwright-cli/tools-capture.d.ts +0 -2
  317. package/build/system/mcp-servers/playwright-cli/tools-capture.js +0 -273
  318. package/build/system/seed/tool-manifests-browser.d.ts +0 -577
  319. package/build/system/seed/tool-manifests-browser.js +0 -158
  320. package/dashboard/dist/assets/AgentConfigPage-DBtvb2x5.js +0 -16
  321. package/dashboard/dist/assets/AgentConfigPage-DBtvb2x5.js.map +0 -1
  322. package/dashboard/dist/assets/AgentDetailPage-3mZA7SOb.js.map +0 -1
  323. package/dashboard/dist/assets/AvailableEscalationsPage-CA9x9o5s.js +0 -2
  324. package/dashboard/dist/assets/BotPicker-BQp_Vs73.js +0 -2
  325. package/dashboard/dist/assets/CronLabel-DY8VdTS9.js +0 -2
  326. package/dashboard/dist/assets/CronLabel-DY8VdTS9.js.map +0 -1
  327. package/dashboard/dist/assets/ElapsedCell-BPYm8RA7.js +0 -2
  328. package/dashboard/dist/assets/EventTopicPill-CCWCs07y.js +0 -2
  329. package/dashboard/dist/assets/EventTopicPill-CCWCs07y.js.map +0 -1
  330. package/dashboard/dist/assets/HomePage-CwRebzmO.js +0 -2
  331. package/dashboard/dist/assets/HomePage-CwRebzmO.js.map +0 -1
  332. package/dashboard/dist/assets/ListToolbar-DEef1_-T.js +0 -2
  333. package/dashboard/dist/assets/McpRunDetailPage-X0sfRFTk.js +0 -2
  334. package/dashboard/dist/assets/McpRunDetailPage-X0sfRFTk.js.map +0 -1
  335. package/dashboard/dist/assets/McpRunsPage-aZg057y3.js +0 -2
  336. package/dashboard/dist/assets/OperatorDashboard-iZEHnndU.js +0 -2
  337. package/dashboard/dist/assets/OperatorDashboard-iZEHnndU.js.map +0 -1
  338. package/dashboard/dist/assets/ServerName-Q6okiv4f.js +0 -2
  339. package/dashboard/dist/assets/TopicDetailPage-DW97-YHQ.js +0 -9
  340. package/dashboard/dist/assets/TopicDetailPage-DW97-YHQ.js.map +0 -1
  341. package/dashboard/dist/assets/WorkflowsDashboard-eCH4gpAk.js +0 -2
  342. package/dashboard/dist/assets/WorkflowsDashboard-eCH4gpAk.js.map +0 -1
  343. package/dashboard/dist/assets/index-3n5VREXN.js +0 -2
  344. package/dashboard/dist/assets/index-BAXzN-QB.js +0 -6
  345. package/dashboard/dist/assets/index-BAXzN-QB.js.map +0 -1
  346. package/dashboard/dist/assets/index-BpN31nuC.js.map +0 -1
  347. package/dashboard/dist/assets/index-C37LMzJa.css +0 -1
  348. package/dashboard/dist/assets/index-C5dHozmW.js +0 -2
  349. package/dashboard/dist/assets/index-C5dHozmW.js.map +0 -1
  350. package/dashboard/dist/assets/index-UtAfnStw.js +0 -15
  351. package/dashboard/dist/assets/topics-DDKHpRwP.js +0 -2
  352. package/dashboard/dist/assets/useEventHooks-NzIyvoGY.js +0 -2
  353. package/dashboard/dist/assets/useEventHooks-NzIyvoGY.js.map +0 -1
  354. package/dashboard/dist/assets/vendor-icons-CrrAvF2g.js.map +0 -1
@@ -1,162 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerPageInteractionTools = registerPageInteractionTools;
4
- const browser_lifecycle_1 = require("./browser-lifecycle");
5
- const schemas_1 = require("./schemas");
6
- function registerPageInteractionTools(srv) {
7
- // ── click ────────────────────────────────────────────────
8
- srv.registerTool('click', {
9
- title: 'Click Element',
10
- description: 'Click an element on the page by CSS selector. Accepts _handle for cross-activity access.',
11
- inputSchema: schemas_1.clickSchema,
12
- }, async (args) => {
13
- try {
14
- const { page, pageId } = await (0, browser_lifecycle_1.resolvePage)(args);
15
- await page.click(args.selector, { timeout: 10_000 });
16
- await page.waitForTimeout(500);
17
- return {
18
- content: [{
19
- type: 'text',
20
- text: JSON.stringify({
21
- clicked: args.selector,
22
- url: page.url(),
23
- title: await page.title(),
24
- _handle: (0, browser_lifecycle_1.buildHandle)(pageId),
25
- }),
26
- }],
27
- };
28
- }
29
- catch (err) {
30
- if (err.code) {
31
- return { content: [{ type: 'text', text: JSON.stringify({ error: err.message, code: err.code }) }], isError: true };
32
- }
33
- throw err;
34
- }
35
- });
36
- // ── fill ─────────────────────────────────────────────────
37
- srv.registerTool('fill', {
38
- title: 'Fill Input',
39
- description: 'Type a value into an input field. Accepts _handle for cross-activity access.',
40
- inputSchema: schemas_1.fillSchema,
41
- }, async (args) => {
42
- try {
43
- const { page, pageId } = await (0, browser_lifecycle_1.resolvePage)(args);
44
- await page.fill(args.selector, args.value, { timeout: 10_000 });
45
- return {
46
- content: [{
47
- type: 'text',
48
- text: JSON.stringify({
49
- filled: args.selector,
50
- value: args.value,
51
- _handle: (0, browser_lifecycle_1.buildHandle)(pageId),
52
- }),
53
- }],
54
- };
55
- }
56
- catch (err) {
57
- if (err.code) {
58
- return { content: [{ type: 'text', text: JSON.stringify({ error: err.message, code: err.code }) }], isError: true };
59
- }
60
- throw err;
61
- }
62
- });
63
- // ── wait_for ─────────────────────────────────────────────
64
- srv.registerTool('wait_for', {
65
- title: 'Wait for Element',
66
- description: 'Wait for an element to appear. Accepts _handle for cross-activity access.',
67
- inputSchema: schemas_1.waitForSchema,
68
- }, async (args) => {
69
- try {
70
- const { page, pageId } = await (0, browser_lifecycle_1.resolvePage)(args);
71
- await page.waitForSelector(args.selector, {
72
- timeout: args.timeout ?? 10_000,
73
- });
74
- return {
75
- content: [{
76
- type: 'text',
77
- text: JSON.stringify({
78
- found: args.selector,
79
- _handle: (0, browser_lifecycle_1.buildHandle)(pageId),
80
- }),
81
- }],
82
- };
83
- }
84
- catch (err) {
85
- if (err.code) {
86
- return { content: [{ type: 'text', text: JSON.stringify({ error: err.message, code: err.code }) }], isError: true };
87
- }
88
- throw err;
89
- }
90
- });
91
- // ── evaluate ─────────────────────────────────────────────
92
- srv.registerTool('evaluate', {
93
- title: 'Run JavaScript',
94
- description: 'Evaluate JavaScript in the page context. Accepts _handle for cross-activity access.',
95
- inputSchema: schemas_1.evaluateSchema,
96
- }, async (args) => {
97
- try {
98
- const { page, pageId } = await (0, browser_lifecycle_1.resolvePage)(args);
99
- const result = await page.evaluate(args.script);
100
- return {
101
- content: [{
102
- type: 'text',
103
- text: JSON.stringify({
104
- result,
105
- _handle: (0, browser_lifecycle_1.buildHandle)(pageId),
106
- }),
107
- }],
108
- };
109
- }
110
- catch (err) {
111
- if (err.code) {
112
- return { content: [{ type: 'text', text: JSON.stringify({ error: err.message, code: err.code }) }], isError: true };
113
- }
114
- throw err;
115
- }
116
- });
117
- // ── list_pages ───────────────────────────────────────────
118
- srv.registerTool('list_pages', {
119
- title: 'List Open Pages',
120
- description: 'List all open browser pages with their IDs, URLs, and titles.',
121
- inputSchema: schemas_1.listPagesSchema,
122
- }, async (_args) => {
123
- const result = [];
124
- for (const [id, page] of browser_lifecycle_1.pages) {
125
- result.push({
126
- page_id: id,
127
- url: page.url(),
128
- title: await page.title(),
129
- });
130
- }
131
- return {
132
- content: [{
133
- type: 'text',
134
- text: JSON.stringify({ pages: result, count: result.length }),
135
- }],
136
- };
137
- });
138
- // ── close_page ───────────────────────────────────────────
139
- srv.registerTool('close_page', {
140
- title: 'Close Page',
141
- description: 'Close a browser page by its ID. Accepts _handle for cross-activity access.',
142
- inputSchema: schemas_1.closePageSchema,
143
- }, async (args) => {
144
- try {
145
- const { page, pageId } = await (0, browser_lifecycle_1.resolvePage)(args);
146
- await page.close();
147
- browser_lifecycle_1.pages.delete(pageId);
148
- return {
149
- content: [{
150
- type: 'text',
151
- text: JSON.stringify({ closed: pageId }),
152
- }],
153
- };
154
- }
155
- catch (err) {
156
- if (err.code) {
157
- return { content: [{ type: 'text', text: JSON.stringify({ error: err.message, code: err.code }) }], isError: true };
158
- }
159
- throw err;
160
- }
161
- });
162
- }
@@ -1,2 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- export declare function registerRunScript(srv: McpServer): void;
@@ -1,207 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerRunScript = registerRunScript;
4
- const logger_1 = require("../../../lib/logger");
5
- const storage_1 = require("../../../lib/storage");
6
- const types_1 = require("./types");
7
- const browser_lifecycle_1 = require("./browser-lifecycle");
8
- const schemas_1 = require("./schemas");
9
- const vision_helper_1 = require("./vision-helper");
10
- function registerRunScript(srv) {
11
- srv.registerTool('run_script', {
12
- title: 'Run Browser Script',
13
- description: 'Execute a multi-step browser script (navigate, screenshot, click, fill, etc.) ' +
14
- 'in a single call. All steps share one page — no cross-activity session issues. ' +
15
- 'Preferred for deterministic YAML workflows.',
16
- inputSchema: schemas_1.runScriptSchema,
17
- }, async (args) => {
18
- let page;
19
- let pageId;
20
- // Reuse existing page via _handle, or create a new one on first navigate
21
- if (args._handle) {
22
- try {
23
- ({ page, pageId } = await (0, browser_lifecycle_1.resolvePage)(args));
24
- }
25
- catch {
26
- // If handle resolution fails, we'll create a new page on first navigate
27
- page = null;
28
- pageId = '';
29
- }
30
- }
31
- else {
32
- page = null;
33
- pageId = '';
34
- }
35
- const stepResults = [];
36
- for (let i = 0; i < args.steps.length; i++) {
37
- const step = args.steps[i];
38
- // Navigate: reuse existing page to preserve session (cookies, localStorage, SPA state).
39
- // Only create a new page on the first navigate.
40
- if (step.action === 'navigate') {
41
- if (!step.url) {
42
- return {
43
- content: [{ type: 'text', text: JSON.stringify({
44
- error: `Step ${i}: navigate requires url`,
45
- code: types_1.RESOURCE_NOT_FOUND,
46
- }) }],
47
- isError: true,
48
- };
49
- }
50
- if (!page) {
51
- const b = await (0, browser_lifecycle_1.ensureBrowser)();
52
- page = await b.newPage();
53
- pageId = (0, browser_lifecycle_1.allocatePageId)();
54
- browser_lifecycle_1.pages.set(pageId, page);
55
- }
56
- await page.goto(step.url, {
57
- waitUntil: step.wait_until || 'load',
58
- timeout: 30_000,
59
- });
60
- stepResults.push({
61
- step: i,
62
- action: 'navigate',
63
- result: { url: step.url, title: await page.title() },
64
- });
65
- continue;
66
- }
67
- // All other actions require a page
68
- if (!page) {
69
- return {
70
- content: [{ type: 'text', text: JSON.stringify({
71
- error: `Step ${i}: no page available. Start with a navigate step or provide a _handle.`,
72
- code: types_1.SESSION_NOT_FOUND,
73
- }) }],
74
- isError: true,
75
- };
76
- }
77
- switch (step.action) {
78
- case 'screenshot': {
79
- if (!step.path) {
80
- return {
81
- content: [{ type: 'text', text: JSON.stringify({
82
- error: `Step ${i}: screenshot requires path`,
83
- code: types_1.RESOURCE_NOT_FOUND,
84
- }) }],
85
- isError: true,
86
- };
87
- }
88
- const ssBackend = (0, storage_1.getStorageBackend)();
89
- const ssLocalPath = await ssBackend.getLocalPath(step.path);
90
- if (step.selector) {
91
- const el = await page.$(step.selector);
92
- if (!el) {
93
- stepResults.push({ step: i, action: 'screenshot', result: { error: `Element not found: ${step.selector}`, code: types_1.RESOURCE_NOT_FOUND } });
94
- continue;
95
- }
96
- await el.screenshot({ path: ssLocalPath });
97
- }
98
- else {
99
- await page.screenshot({ path: ssLocalPath, fullPage: step.full_page ?? false });
100
- }
101
- const { size: ssSize } = await ssBackend.commitLocalPath(step.path, ssLocalPath);
102
- logger_1.loggerRegistry.info(`[lt-mcp:playwright] screenshot saved: ${step.path} (${ssSize} bytes)`);
103
- const ssResult = { path: step.path, size_bytes: ssSize, url: page.url() };
104
- if (step.describe) {
105
- try {
106
- ssResult.description = await (0, vision_helper_1.analyzeScreenshot)(step.path);
107
- }
108
- catch (err) {
109
- ssResult.description = null;
110
- ssResult.describe_error = err.message;
111
- }
112
- }
113
- stepResults.push({ step: i, action: 'screenshot', result: ssResult });
114
- break;
115
- }
116
- case 'click': {
117
- if (!step.selector) {
118
- return {
119
- content: [{ type: 'text', text: JSON.stringify({ error: `Step ${i}: click requires selector`, code: types_1.RESOURCE_NOT_FOUND }) }],
120
- isError: true,
121
- };
122
- }
123
- await page.click(step.selector, { timeout: 10_000 });
124
- await page.waitForTimeout(500);
125
- stepResults.push({ step: i, action: 'click', result: { clicked: step.selector, url: page.url() } });
126
- break;
127
- }
128
- case 'fill': {
129
- if (!step.selector || step.value === undefined) {
130
- return {
131
- content: [{ type: 'text', text: JSON.stringify({ error: `Step ${i}: fill requires selector and value`, code: types_1.RESOURCE_NOT_FOUND }) }],
132
- isError: true,
133
- };
134
- }
135
- await page.fill(step.selector, step.value, { timeout: 10_000 });
136
- stepResults.push({ step: i, action: 'fill', result: { filled: step.selector, value: step.value } });
137
- break;
138
- }
139
- case 'wait_for': {
140
- if (!step.selector) {
141
- return {
142
- content: [{ type: 'text', text: JSON.stringify({ error: `Step ${i}: wait_for requires selector`, code: types_1.RESOURCE_NOT_FOUND }) }],
143
- isError: true,
144
- };
145
- }
146
- await page.waitForSelector(step.selector, { timeout: step.timeout ?? 10_000 });
147
- stepResults.push({ step: i, action: 'wait_for', result: { found: step.selector } });
148
- break;
149
- }
150
- case 'wait_for_url': {
151
- if (!step.url) {
152
- return {
153
- content: [{ type: 'text', text: JSON.stringify({ error: `Step ${i}: wait_for_url requires url`, code: types_1.RESOURCE_NOT_FOUND }) }],
154
- isError: true,
155
- };
156
- }
157
- const urlTimeout = step.timeout ?? 10_000;
158
- if (step.not) {
159
- // Wait until URL does NOT contain the pattern
160
- await page.waitForFunction((pattern) => !window.location.href.includes(pattern), step.url, { timeout: urlTimeout });
161
- }
162
- else {
163
- // Wait until URL contains the pattern
164
- await page.waitForURL(`**${step.url}**`, { timeout: urlTimeout });
165
- }
166
- stepResults.push({ step: i, action: 'wait_for_url', result: { url: page.url(), matched: !step.not } });
167
- break;
168
- }
169
- case 'wait': {
170
- const ms = step.timeout ?? 2000;
171
- await page.waitForTimeout(ms);
172
- stepResults.push({ step: i, action: 'wait', result: { waited_ms: ms } });
173
- break;
174
- }
175
- case 'evaluate': {
176
- if (!step.script) {
177
- return {
178
- content: [{ type: 'text', text: JSON.stringify({ error: `Step ${i}: evaluate requires script`, code: types_1.RESOURCE_NOT_FOUND }) }],
179
- isError: true,
180
- };
181
- }
182
- const evalResult = await page.evaluate(step.script);
183
- stepResults.push({ step: i, action: 'evaluate', result: { result: evalResult } });
184
- break;
185
- }
186
- }
187
- }
188
- // Collect screenshot paths for top-level wiring (compiler can't reach nested step results)
189
- const screenshots = stepResults
190
- .filter(s => s.action === 'screenshot' && s.result.path)
191
- .map(s => s.result.path);
192
- return {
193
- content: [{
194
- type: 'text',
195
- text: JSON.stringify({
196
- steps_completed: stepResults.length,
197
- steps: stepResults,
198
- screenshots,
199
- last_screenshot_path: screenshots.length > 0 ? screenshots[screenshots.length - 1] : null,
200
- page_id: pageId,
201
- url: page?.url?.() ?? null,
202
- _handle: pageId ? (0, browser_lifecycle_1.buildHandle)(pageId) : undefined,
203
- }),
204
- }],
205
- };
206
- });
207
- }
@@ -1,8 +0,0 @@
1
- export interface PlaywrightHandle {
2
- type: 'playwright_page';
3
- cdp_endpoint?: string;
4
- page_id: string;
5
- }
6
- export declare const SESSION_NOT_FOUND = "SESSION_NOT_FOUND";
7
- export declare const SESSION_UNREACHABLE = "SESSION_UNREACHABLE";
8
- export declare const RESOURCE_NOT_FOUND = "RESOURCE_NOT_FOUND";
@@ -1,30 +0,0 @@
1
- "use strict";
2
- // ── _handle convention ──────────────────────────────────────────────────────
3
- //
4
- // Tools that create external state (browser pages, file handles, connections)
5
- // return a `_handle` object in their result. The handle contains everything
6
- // needed to locate the resource from any container:
7
- //
8
- // _handle: {
9
- // type: "playwright_page",
10
- // cdp_endpoint: "ws://host:port/...", // CDP WebSocket (cross-container)
11
- // page_id: "page_3", // local in-memory lookup (fast path)
12
- // }
13
- //
14
- // Subsequent tools accept `_handle` and use it to reconnect:
15
- // 1. Fast path: check local `pages` Map by page_id (same container)
16
- // 2. Slow path: connect via CDP endpoint (different container / cloud)
17
- //
18
- // The YAML generator threads `_handle` automatically between sequential
19
- // activities from the same server. No hardcoded tool-pair knowledge needed.
20
- Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.RESOURCE_NOT_FOUND = exports.SESSION_UNREACHABLE = exports.SESSION_NOT_FOUND = void 0;
22
- // ── Standard error codes for stateful resource tools ────────────────────────
23
- // Any MCP server managing stateful resources should use these codes:
24
- // SESSION_NOT_FOUND — resource ID unknown (never existed or already cleaned up)
25
- // SESSION_EXPIRED — resource was closed / cleaned up
26
- // SESSION_UNREACHABLE — remote endpoint (e.g. CDP) not reachable
27
- // RESOURCE_NOT_FOUND — sub-resource (element, file) not found within session
28
- exports.SESSION_NOT_FOUND = 'SESSION_NOT_FOUND';
29
- exports.SESSION_UNREACHABLE = 'SESSION_UNREACHABLE';
30
- exports.RESOURCE_NOT_FOUND = 'RESOURCE_NOT_FOUND';
@@ -1,12 +0,0 @@
1
- /**
2
- * Shared vision analysis helper for playwright tools.
3
- *
4
- * Reads a screenshot from the storage backend and analyzes it
5
- * via the secondary vision LLM. Used by both the standalone
6
- * screenshot tool and run_script's screenshot steps.
7
- */
8
- /**
9
- * Read a screenshot from storage and analyze it via the vision LLM.
10
- * Returns the raw LLM text response (typically JSON with description, objects, etc.).
11
- */
12
- export declare function analyzeScreenshot(storagePath: string): Promise<string>;
@@ -1,81 +0,0 @@
1
- "use strict";
2
- /**
3
- * Shared vision analysis helper for playwright tools.
4
- *
5
- * Reads a screenshot from the storage backend and analyzes it
6
- * via the secondary vision LLM. Used by both the standalone
7
- * screenshot tool and run_script's screenshot steps.
8
- */
9
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- var desc = Object.getOwnPropertyDescriptor(m, k);
12
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
- desc = { enumerable: true, get: function() { return m[k]; } };
14
- }
15
- Object.defineProperty(o, k2, desc);
16
- }) : (function(o, m, k, k2) {
17
- if (k2 === undefined) k2 = k;
18
- o[k2] = m[k];
19
- }));
20
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
- Object.defineProperty(o, "default", { enumerable: true, value: v });
22
- }) : function(o, v) {
23
- o["default"] = v;
24
- });
25
- var __importStar = (this && this.__importStar) || (function () {
26
- var ownKeys = function(o) {
27
- ownKeys = Object.getOwnPropertyNames || function (o) {
28
- var ar = [];
29
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
- return ar;
31
- };
32
- return ownKeys(o);
33
- };
34
- return function (mod) {
35
- if (mod && mod.__esModule) return mod;
36
- var result = {};
37
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
- __setModuleDefault(result, mod);
39
- return result;
40
- };
41
- })();
42
- Object.defineProperty(exports, "__esModule", { value: true });
43
- exports.analyzeScreenshot = analyzeScreenshot;
44
- const path = __importStar(require("path"));
45
- const storage_1 = require("../../../lib/storage");
46
- const MIME_MAP = {
47
- '.png': 'image/png', '.jpg': 'image/jpeg', '.jpeg': 'image/jpeg',
48
- '.gif': 'image/gif', '.webp': 'image/webp',
49
- };
50
- /**
51
- * Read a screenshot from storage and analyze it via the vision LLM.
52
- * Returns the raw LLM text response (typically JSON with description, objects, etc.).
53
- */
54
- async function analyzeScreenshot(storagePath) {
55
- const { callLLM, hasLLMApiKey } = await Promise.resolve().then(() => __importStar(require('../../../services/llm')));
56
- const { LLM_MODEL_SECONDARY, LLM_MAX_TOKENS_VISION } = await Promise.resolve().then(() => __importStar(require('../../../modules/defaults')));
57
- const { ANALYZE_IMAGE_PROMPT } = await Promise.resolve().then(() => __importStar(require('../vision-prompts')));
58
- if (!hasLLMApiKey(LLM_MODEL_SECONDARY)) {
59
- return 'Vision LLM not configured — set an API key to enable screenshot analysis.';
60
- }
61
- const backend = (0, storage_1.getStorageBackend)();
62
- const { data } = await backend.read(storagePath);
63
- const base64 = data.toString('base64');
64
- const ext = path.extname(storagePath).toLowerCase();
65
- const mime = MIME_MAP[ext] || 'image/png';
66
- const response = await callLLM({
67
- model: LLM_MODEL_SECONDARY,
68
- messages: [
69
- { role: 'system', content: ANALYZE_IMAGE_PROMPT },
70
- {
71
- role: 'user',
72
- content: [
73
- { type: 'image_url', image_url: { url: `data:${mime};base64,${base64}` } },
74
- ],
75
- },
76
- ],
77
- max_tokens: LLM_MAX_TOKENS_VISION,
78
- temperature: 0,
79
- });
80
- return response.content || 'No description generated.';
81
- }
@@ -1,11 +0,0 @@
1
- export declare function saveScreenshot(page: import('playwright').Page, filePath: string, fullPage: boolean): Promise<{
2
- path: string;
3
- size_bytes: number;
4
- }>;
5
- export declare function errorResult(message: string, code: string, details?: Record<string, unknown>): {
6
- content: {
7
- type: "text";
8
- text: string;
9
- }[];
10
- isError: boolean;
11
- };
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.saveScreenshot = saveScreenshot;
4
- exports.errorResult = errorResult;
5
- const logger_1 = require("../../../lib/logger");
6
- const storage_1 = require("../../../lib/storage");
7
- async function saveScreenshot(page, filePath, fullPage) {
8
- const backend = (0, storage_1.getStorageBackend)();
9
- const localPath = await backend.getLocalPath(filePath);
10
- await page.screenshot({ path: localPath, fullPage });
11
- const { size } = await backend.commitLocalPath(filePath, localPath);
12
- logger_1.loggerRegistry.info(`[lt-mcp:playwright-cli] screenshot: ${filePath} (${size} bytes)`);
13
- return { path: filePath, size_bytes: size };
14
- }
15
- function errorResult(message, code, details) {
16
- return {
17
- content: [{ type: 'text', text: JSON.stringify({ error: message, code, ...details }) }],
18
- isError: true,
19
- };
20
- }
@@ -1,4 +0,0 @@
1
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- export declare function createPlaywrightCliServer(options?: {
3
- name?: string;
4
- }): Promise<McpServer>;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPlaywrightCliServer = createPlaywrightCliServer;
4
- const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
5
- const logger_1 = require("../../../lib/logger");
6
- const tools_auth_1 = require("./tools-auth");
7
- const tools_capture_1 = require("./tools-capture");
8
- async function createPlaywrightCliServer(options) {
9
- const name = options?.name || 'long-tail-playwright-cli';
10
- const instance = new mcp_js_1.McpServer({ name, version: '1.0.0' });
11
- (0, tools_auth_1.registerAuthTools)(instance);
12
- (0, tools_capture_1.registerCaptureTools)(instance);
13
- logger_1.loggerRegistry.info(`[lt-mcp:playwright-cli] ${name} ready (5 tools registered)`);
14
- return instance;
15
- }