@xopcai/xopc 0.0.251 → 0.0.252

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 (329) hide show
  1. package/README.md +8 -5
  2. package/README.zh-CN.md +8 -5
  3. package/dist/browser-ext/dist/background.js +358 -768
  4. package/dist/browser-ext/manifest.json +1 -2
  5. package/dist/extensions/telegram/xopc.extension.json +1 -1
  6. package/dist/gateway/static/root/assets/{activity-store-DfBjTSo9.js → activity-store-w3eq3YpP.js} +1 -1
  7. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Bo_dmLv8.js → agent-avatar-dicebear-k039rbUz.js} +1 -1
  8. package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-kILWelNb.js → agent-defaults-settings-panel-D4J4oq8p.js} +1 -1
  9. package/dist/gateway/static/root/assets/{agents-yuUn8n-f.js → agents-Bmth_bSQ.js} +1 -1
  10. package/dist/gateway/static/root/assets/{api-zxpcJfgj.js → api-2joIfbrH.js} +1 -1
  11. package/dist/gateway/static/root/assets/{app-management-settings-panel-Cz56nrVF.js → app-management-settings-panel-ByJ4kiD0.js} +1 -1
  12. package/dist/gateway/static/root/assets/{appearance-settings-DxSws5U4.js → appearance-settings-BK2Jga-B.js} +1 -1
  13. package/dist/gateway/static/root/assets/apps-page-B3ky7cWU.js +1 -0
  14. package/dist/gateway/static/root/assets/{archive-plugin-7k15-hqo.js → archive-plugin-DMDKtYpi.js} +1 -1
  15. package/dist/gateway/static/root/assets/{attachment-load-B-SFpjd9.js → attachment-load-B764Ql3Z.js} +1 -1
  16. package/dist/gateway/static/root/assets/{automations-page-Qy36j19q.js → automations-page-D-sO8CZe.js} +1 -1
  17. package/dist/gateway/static/root/assets/automations-workspace-Ds5-_-9z.js +6 -0
  18. package/dist/gateway/static/root/assets/{binary-plugins-CPOZQt8F.js → binary-plugins-fxtzYRpv.js} +1 -1
  19. package/dist/gateway/static/root/assets/{block-editor-DhvVlIp9.js → block-editor-Bcjtvckh.js} +3 -3
  20. package/dist/gateway/static/root/assets/browser-automation-inputs-BSmnusjD.js +1 -0
  21. package/dist/gateway/static/root/assets/browser-automations-page-DC_OQIBk.js +3 -0
  22. package/dist/gateway/static/root/assets/browser-settings-page-C1FojyG6.js +3 -0
  23. package/dist/gateway/static/root/assets/capabilities-settings-panel-Bs59UCut.js +7 -0
  24. package/dist/gateway/static/root/assets/channels-settings-CM9vNmoo.js +1 -0
  25. package/dist/gateway/static/root/assets/{channels-status-swr-CX-yWwLD.js → channels-status-swr-BuWjIG_a.js} +1 -1
  26. package/dist/gateway/static/root/assets/{chat-terminal-dock-1PJoxRuV.js → chat-terminal-dock-5SevEo_I.js} +2 -2
  27. package/dist/gateway/static/root/assets/connectors-page-BPZ44D-V.js +2 -0
  28. package/dist/gateway/static/root/assets/{cron-expression-CBCc6zFA.js → cron-expression-DtsfalBM.js} +1 -1
  29. package/dist/gateway/static/root/assets/{date-picker-u8K5Kt_N.js → date-picker-tDEQV5TP.js} +1 -1
  30. package/dist/gateway/static/root/assets/{dependency-picker-y_i_cnpz.js → dependency-picker-HhNwg0Y2.js} +1 -1
  31. package/dist/gateway/static/root/assets/{desktop-pet-DyL0JxLm.js → desktop-pet-acU4Li-C.js} +1 -1
  32. package/dist/gateway/static/root/assets/{desktop-pet-settings-d2d_IsyP.js → desktop-pet-settings-R84AR0Pe.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-debug-page-DqIBKJwl.js → extension-debug-page-CrLlRkSN.js} +1 -1
  34. package/dist/gateway/static/root/assets/{extension-page-DUW1xxj2.js → extension-page-BH5lmZXE.js} +1 -1
  35. package/dist/gateway/static/root/assets/{extension-settings-page-BHY9qaNw.js → extension-settings-page-BscjNAd1.js} +1 -1
  36. package/dist/gateway/static/root/assets/{gateway-config-swr-CMNbl0FZ.js → gateway-config-swr-9HidFZUd.js} +1 -1
  37. package/dist/gateway/static/root/assets/gateway-settings-BxLcW6ij.js +1 -0
  38. package/dist/gateway/static/root/assets/{gateway-startup-retry-CR7Xg8As.js → gateway-startup-retry-DRCPXONr.js} +1 -1
  39. package/dist/gateway/static/root/assets/{heartbeat-settings-7CD9iPR7.js → heartbeat-settings-K5Zhl2rx.js} +1 -1
  40. package/dist/gateway/static/root/assets/home-page-CZAg9RBv.js +1 -0
  41. package/dist/gateway/static/root/assets/{image-generation-api-C5mn73ca.js → image-generation-api-CR6Kle8H.js} +1 -1
  42. package/dist/gateway/static/root/assets/index-D4Ykja-U.js +72 -0
  43. package/dist/gateway/static/root/assets/index-zIJ3AXgR.css +2 -0
  44. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BtlqMleF.js → keyboard-shortcuts-settings-B1QR49-7.js} +1 -1
  45. package/dist/gateway/static/root/assets/{local-app-workbench-page-BjxfkjxE.js → local-app-workbench-page-wicoV-ti.js} +2 -2
  46. package/dist/gateway/static/root/assets/{local-apps-page-B7xqQe2s.js → local-apps-page-C74It-T8.js} +1 -1
  47. package/dist/gateway/static/root/assets/{locale-store-CF4erhjB.js → locale-store-BfZGZKSs.js} +1 -1
  48. package/dist/gateway/static/root/assets/{logs-page-kACaPZKL.js → logs-page-xX-7S49A.js} +2 -2
  49. package/dist/gateway/static/root/assets/{management-settings-A432siER.js → management-settings-1kNnYL97.js} +1 -1
  50. package/dist/gateway/static/root/assets/{markdown-view-CQvzsE24.js → markdown-view-DjiwT28p.js} +2 -2
  51. package/dist/gateway/static/root/assets/{media-plugins-CpvYiauZ.js → media-plugins-B5c0AoS1.js} +1 -1
  52. package/dist/gateway/static/root/assets/messages-DaIwVWar.js +3 -0
  53. package/dist/gateway/static/root/assets/{mobile-pairing-wizard-DyjVGngO.js → mobile-pairing-wizard-CsIZqK51.js} +1 -1
  54. package/dist/gateway/static/root/assets/note-detail-panel-CfWxopl4.js +5 -0
  55. package/dist/gateway/static/root/assets/notes-page-CYN-LCHJ.js +8 -0
  56. package/dist/gateway/static/root/assets/{page-tabs-B3FKzjR6.js → page-tabs-CqJN6Ljz.js} +1 -1
  57. package/dist/gateway/static/root/assets/{preview-open-alternatives-DnjrwAHD.js → preview-open-alternatives-DqRIGxf4.js} +1 -1
  58. package/dist/gateway/static/root/assets/{product-open-page-COcr_NUJ.js → product-open-page-DE2nPE_K.js} +1 -1
  59. package/dist/gateway/static/root/assets/project-detail-page-B5G3LzDq.js +1 -0
  60. package/dist/gateway/static/root/assets/{projects-page-BzH8pjEz.js → projects-page-CuVK2mKu.js} +1 -1
  61. package/dist/gateway/static/root/assets/{registry-api-BsRBlji7.js → registry-api-Bpy8XX-5.js} +1 -1
  62. package/dist/gateway/static/root/assets/remote-access-hub-Dnd73xWt.js +1 -0
  63. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-LO4wZ_dO.js → runtime-tools-settings-panel-Bb4b74-P.js} +2 -2
  64. package/dist/gateway/static/root/assets/{schema-form-crcj4-Pm.js → schema-form-DoPU5j3J.js} +1 -1
  65. package/dist/gateway/static/root/assets/sessions-page-XL4LyKZe.js +1 -0
  66. package/dist/gateway/static/root/assets/settings-advanced-gate-0ForzDSS.js +1 -0
  67. package/dist/gateway/static/root/assets/{settings-form-section-Bl4MvTmq.js → settings-form-section-Ci-9WajJ.js} +1 -1
  68. package/dist/gateway/static/root/assets/{settings-page-DplrjZ6x.js → settings-page-CL_2F95D.js} +1 -1
  69. package/dist/gateway/static/root/assets/setup-status-panel-DVws6XZc.js +1 -0
  70. package/dist/gateway/static/root/assets/{share-preview-page-CJP1kURj.js → share-preview-page-XUA3oKQX.js} +1 -1
  71. package/dist/gateway/static/root/assets/shares-settings-BwDvcacF.js +1 -0
  72. package/dist/gateway/static/root/assets/skill-reload-api-BJjrATqE.js +1 -0
  73. package/dist/gateway/static/root/assets/{skills-page-DsjcKg9Q.js → skills-page-sXXAZDc9.js} +1 -1
  74. package/dist/gateway/static/root/assets/{skills-page.utils-D6gWBbvy.js → skills-page.utils-DD79Bl1I.js} +1 -1
  75. package/dist/gateway/static/root/assets/{system-settings-panel-_eCXfqCo.js → system-settings-panel-BEH64qBV.js} +1 -1
  76. package/dist/gateway/static/root/assets/task-detail-page-0jxMi75O.js +1 -0
  77. package/dist/gateway/static/root/assets/{theme-store-BOgkc_9D.js → theme-store-CISSxU1c.js} +1 -1
  78. package/dist/gateway/static/root/assets/{tunnel-api-W5mktxl1.js → tunnel-api-DrKDhnJm.js} +1 -1
  79. package/dist/gateway/static/root/assets/{use-autosave-Na2DYzT3.js → use-autosave-CPYePL-Q.js} +1 -1
  80. package/dist/gateway/static/root/assets/user-model-page-B6zLDfDl.js +2 -0
  81. package/dist/gateway/static/root/assets/{voice-api-key-field-OXweUxS_.js → voice-api-key-field-DKqzrCXx.js} +1 -1
  82. package/dist/gateway/static/root/assets/{voice-config-api-C-ryeIxj.js → voice-config-api-e9xWjwBX.js} +1 -1
  83. package/dist/gateway/static/root/assets/{work-discovery-overlay-BqOsO47I.js → work-discovery-overlay-kTQug6bq.js} +1 -1
  84. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-B9S_lfT1.js → workflow-run-setup-panel-m9SKj_GT.js} +2 -2
  85. package/dist/gateway/static/root/assets/workflows-page-Bcd1XqP7.js +5 -0
  86. package/dist/gateway/static/root/index.html +10 -10
  87. package/dist/package.js +1 -1
  88. package/dist/packages/gateway-contract/src/new-session.js +9 -0
  89. package/dist/src/agent/agent-manager.d.ts +2 -1
  90. package/dist/src/agent/agent-manager.js +6 -5
  91. package/dist/src/agent/background-review/run-background-review.js +1 -1
  92. package/dist/src/agent/coding/repository-instructions.js +2 -2
  93. package/dist/src/agent/coding/workspace-revision.js +2 -2
  94. package/dist/src/agent/commands/command-isolation.js +2 -2
  95. package/dist/src/agent/embedded/model-runtime.js +1 -1
  96. package/dist/src/agent/embedded/run-for-session.js +1 -1
  97. package/dist/src/agent/external-tools/composio-provider.d.ts +1 -0
  98. package/dist/src/agent/external-tools/composio-provider.js +64 -34
  99. package/dist/src/agent/external-tools/search-error.js +5 -3
  100. package/dist/src/agent/image/tool-model-config.js +1 -1
  101. package/dist/src/agent/mcp/oauth/mcp-oauth-store.js +1 -1
  102. package/dist/src/agent/service.js +4 -3
  103. package/dist/src/agent/service.types.d.ts +2 -1
  104. package/dist/src/agent/session/session-inspector.js +1 -1
  105. package/dist/src/agent/skills/hub-lock.js +1 -1
  106. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +4 -0
  107. package/dist/src/agent/tasks/task-judge-service.js +3 -3
  108. package/dist/src/agent/tool-manuals/browser.d.ts +1 -1
  109. package/dist/src/agent/tool-manuals/browser.js +15 -226
  110. package/dist/src/agent/tools/browser/tool/browser-use-tool.d.ts +4 -21
  111. package/dist/src/agent/tools/browser/tool/browser-use-tool.js +48 -165
  112. package/dist/src/agent/tools/browser/tool/schemas.d.ts +203 -16
  113. package/dist/src/agent/tools/browser/tool/schemas.js +146 -16
  114. package/dist/src/agent/tools/browser-automation-tool.d.ts +121 -0
  115. package/dist/src/agent/tools/browser-automation-tool.js +197 -0
  116. package/dist/src/agent/tools/factory.d.ts +6 -9
  117. package/dist/src/agent/tools/factory.js +28 -55
  118. package/dist/src/agent/tools/index.d.ts +2 -2
  119. package/dist/src/agent/tools/index.js +3 -3
  120. package/dist/src/agent/tools/review-workspace.js +2 -2
  121. package/dist/src/ai-assist/text-assist.js +1 -1
  122. package/dist/src/auth/credentials.js +2 -2
  123. package/dist/src/auth/oauth/xopc-cloud.js +3 -1
  124. package/dist/src/auth/profiles/store.js +1 -1
  125. package/dist/src/auth/sync-provider-auth.js +2 -2
  126. package/dist/src/automations/domain/defaults.js +1 -1
  127. package/dist/src/automations/domain/types.d.ts +5 -5
  128. package/dist/src/automations/domain/validation.d.ts +12 -12
  129. package/dist/src/automations/domain/validation.js +3 -3
  130. package/dist/src/automations/draft/automation-draft-validator.d.ts +3 -3
  131. package/dist/src/automations/draft/automation-draft-validator.js +1 -1
  132. package/dist/src/automations/service/action-executor.d.ts +1 -1
  133. package/dist/src/automations/service/action-executor.js +7 -7
  134. package/dist/src/browser/{recipes → automations}/index.d.ts +1 -0
  135. package/dist/src/browser/automations/index.js +4 -0
  136. package/dist/src/browser/automations/repository.d.ts +13 -0
  137. package/dist/src/browser/automations/repository.js +60 -0
  138. package/dist/src/browser/automations/runner.d.ts +17 -0
  139. package/dist/src/browser/automations/runner.js +173 -0
  140. package/dist/src/browser/automations/runtime-service.d.ts +6 -0
  141. package/dist/src/browser/automations/runtime-service.js +37 -0
  142. package/dist/src/browser/automations/schema.d.ts +144 -0
  143. package/dist/src/browser/automations/schema.js +135 -0
  144. package/dist/src/browser/automations/service.d.ts +146 -0
  145. package/dist/src/browser/automations/service.js +168 -0
  146. package/dist/src/browser/automations/types.d.ts +90 -0
  147. package/dist/src/browser/cache-dir-policy.d.ts +1 -1
  148. package/dist/src/browser/cache-dir-policy.js +1 -4
  149. package/dist/src/browser/drivers/browser-driver.d.ts +17 -0
  150. package/dist/src/browser/drivers/create-driver.d.ts +3 -0
  151. package/dist/src/browser/drivers/create-driver.js +84 -0
  152. package/dist/src/browser/drivers/extension-driver.d.ts +20 -0
  153. package/dist/src/browser/drivers/extension-driver.js +47 -0
  154. package/dist/src/browser/drivers/playwright-driver.d.ts +38 -0
  155. package/dist/src/browser/drivers/playwright-driver.js +406 -0
  156. package/dist/src/browser/index.d.ts +10 -15
  157. package/dist/src/browser/index.js +10 -15
  158. package/dist/src/browser/install-lock.d.ts +1 -2
  159. package/dist/src/browser/install-lock.js +3 -9
  160. package/dist/src/browser/install-progress.d.ts +1 -1
  161. package/dist/src/browser/observation/format.d.ts +2 -0
  162. package/dist/src/browser/observation/format.js +26 -0
  163. package/dist/src/browser/policy/approval-store.d.ts +17 -0
  164. package/dist/src/browser/policy/approval-store.js +62 -0
  165. package/dist/src/browser/policy/browser-policy.d.ts +3 -0
  166. package/dist/src/browser/policy/browser-policy.js +27 -0
  167. package/dist/src/browser/providers/browser-ext-install.d.ts +1 -1
  168. package/dist/src/browser/providers/browser-ext-install.js +4 -6
  169. package/dist/src/browser/providers/browser-use.js +1 -1
  170. package/dist/src/browser/providers/browserbase.js +1 -1
  171. package/dist/src/browser/providers/extension-ws-acquire.d.ts +1 -4
  172. package/dist/src/browser/providers/extension-ws-acquire.js +1 -13
  173. package/dist/src/browser/providers/extension.d.ts +3 -22
  174. package/dist/src/browser/providers/extension.js +7 -15
  175. package/dist/src/browser/providers/index.d.ts +2 -2
  176. package/dist/src/browser/providers/index.js +3 -3
  177. package/dist/src/browser/providers/types.d.ts +0 -94
  178. package/dist/src/browser/readiness.d.ts +4 -22
  179. package/dist/src/browser/readiness.js +55 -118
  180. package/dist/src/browser/runtime/browser-runtime.d.ts +30 -0
  181. package/dist/src/browser/runtime/browser-runtime.js +362 -0
  182. package/dist/src/browser/url-policy.d.ts +3 -3
  183. package/dist/src/browser/url-policy.js +7 -6
  184. package/dist/src/browser/verification/expectation.d.ts +2 -0
  185. package/dist/src/browser/verification/expectation.js +17 -0
  186. package/dist/src/cli/command-loaders.js +1 -0
  187. package/dist/src/cli/command-manifest.js +5 -1
  188. package/dist/src/cli/commands/browser-cli-helpers.d.ts +0 -6
  189. package/dist/src/cli/commands/browser-cli-helpers.js +11 -144
  190. package/dist/src/cli/commands/browser.d.ts +0 -5
  191. package/dist/src/cli/commands/browser.js +11 -152
  192. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  193. package/dist/src/cli/commands/doctor/checks/node-version.js +25 -9
  194. package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
  195. package/dist/src/cli/commands/models.js +1 -1
  196. package/dist/src/cli/commands/platform.d.ts +1 -0
  197. package/dist/src/cli/commands/platform.js +111 -0
  198. package/dist/src/config/index.js +4 -4
  199. package/dist/src/config/loader.js +10 -4
  200. package/dist/src/config/models-json.js +1 -1
  201. package/dist/src/config/schema.d.ts +131 -84
  202. package/dist/src/config/schema.js +112 -59
  203. package/dist/src/connectors/composio-sessions.js +1 -3
  204. package/dist/src/extensions/lockfile.js +1 -1
  205. package/dist/src/extensions/marketplace.js +4 -0
  206. package/dist/src/gateway/agents-admin.js +1 -1
  207. package/dist/src/gateway/file-path-classifier.js +1 -1
  208. package/dist/src/gateway/heartbeat/service.js +1 -1
  209. package/dist/src/gateway/hono/lib/config-payload.d.ts +12 -26
  210. package/dist/src/gateway/hono/lib/config-payload.js +11 -40
  211. package/dist/src/gateway/hono/routes/browser-automations.d.ts +3 -0
  212. package/dist/src/gateway/hono/routes/browser-automations.js +77 -0
  213. package/dist/src/gateway/hono/routes/browser-install.js +0 -32
  214. package/dist/src/gateway/hono/routes/browser.d.ts +0 -17
  215. package/dist/src/gateway/hono/routes/browser.js +46 -568
  216. package/dist/src/gateway/hono/routes/config-patch/misc.js +8 -1
  217. package/dist/src/gateway/hono/routes/config.js +0 -11
  218. package/dist/src/gateway/hono/routes/lazy-bundles.js +5 -5
  219. package/dist/src/gateway/hono/routes/models.js +1 -1
  220. package/dist/src/gateway/service/config-coordinator.js +1 -1
  221. package/dist/src/gateway/service.d.ts +4 -6
  222. package/dist/src/gateway/service.js +24 -27
  223. package/dist/src/heartbeat/index.js +1 -1
  224. package/dist/src/platform/client.d.ts +121 -0
  225. package/dist/src/platform/client.js +108 -0
  226. package/dist/src/platform/contracts.d.ts +194 -0
  227. package/dist/src/platform/contracts.js +150 -0
  228. package/dist/src/platform/index.d.ts +4 -0
  229. package/dist/src/platform/index.js +9 -0
  230. package/dist/src/platform/resolution.d.ts +4 -0
  231. package/dist/src/platform/resolution.js +16 -0
  232. package/dist/src/platform/worker.d.ts +6 -0
  233. package/dist/src/platform/worker.js +75 -0
  234. package/dist/src/providers/auth-runtime/resolve-auth.js +1 -1
  235. package/dist/src/providers/index.js +2 -2
  236. package/dist/src/providers/model-registry.js +1 -1
  237. package/dist/src/providers/register-runtime-providers.js +1 -1
  238. package/dist/src/providers/xopc-cloud-config.js +3 -1
  239. package/dist/src/session/session-context-for-llm.js +41 -1
  240. package/dist/src/share/hosted-session-share.js +3 -1
  241. package/dist/src/share/share-thumbnail.js +1 -1
  242. package/dist/src/storage/sqlite/migrations/153_browser_control_v2.sql +45 -0
  243. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  244. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  245. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  246. package/dist/src/storage/sqlite/schema.js +1 -1
  247. package/dist/src/storage/sqlite/schema.sql +16 -20
  248. package/dist/src/tasks/home-query-service.js +1 -1
  249. package/dist/src/tui/tui-startup-resources.js +1 -1
  250. package/dist/src/tui/tui.js +1 -1
  251. package/dist/src/tunnel/env.js +3 -1
  252. package/dist/src/work-discovery/service.js +1 -1
  253. package/dist/src/workflows/service/workflow-run-service.js +1 -1
  254. package/package.json +6 -6
  255. package/dist/gateway/static/root/assets/apps-page-BnizTdgs.js +0 -1
  256. package/dist/gateway/static/root/assets/automations-workspace-CZRKqSqY.js +0 -6
  257. package/dist/gateway/static/root/assets/browser-settings-page-pN5LbChY.js +0 -8
  258. package/dist/gateway/static/root/assets/browser-workflow-inputs-BX1-uM9L.js +0 -1
  259. package/dist/gateway/static/root/assets/browser-workflows-page-C65MI57t.js +0 -3
  260. package/dist/gateway/static/root/assets/capabilities-settings-panel-CJw2e16J.js +0 -7
  261. package/dist/gateway/static/root/assets/channels-settings-CRgjb4Ck.js +0 -1
  262. package/dist/gateway/static/root/assets/connectors-page-Dcpdy06y.js +0 -2
  263. package/dist/gateway/static/root/assets/gateway-config-api-e3BRcgDx.js +0 -1
  264. package/dist/gateway/static/root/assets/gateway-settings-Cheo0Rkc.js +0 -1
  265. package/dist/gateway/static/root/assets/home-page-DVrTRqNc.js +0 -1
  266. package/dist/gateway/static/root/assets/index-B7CX4Qob.css +0 -2
  267. package/dist/gateway/static/root/assets/index-BHrpyJ4t.js +0 -72
  268. package/dist/gateway/static/root/assets/messages-Cf5hpZE6.js +0 -3
  269. package/dist/gateway/static/root/assets/note-detail-panel-CUd8O4K7.js +0 -5
  270. package/dist/gateway/static/root/assets/notes-page-BLQwd39W.js +0 -8
  271. package/dist/gateway/static/root/assets/project-detail-page-NttW338u.js +0 -1
  272. package/dist/gateway/static/root/assets/remote-access-hub-BxpjSDnL.js +0 -1
  273. package/dist/gateway/static/root/assets/sessions-page-BLMaibOb.js +0 -1
  274. package/dist/gateway/static/root/assets/settings-advanced-gate-BRvvKhoH.js +0 -1
  275. package/dist/gateway/static/root/assets/setup-status-panel-DTOsxQC1.js +0 -1
  276. package/dist/gateway/static/root/assets/shares-settings-CemgzEi4.js +0 -1
  277. package/dist/gateway/static/root/assets/skill-reload-api-BWYanBlQ.js +0 -1
  278. package/dist/gateway/static/root/assets/task-detail-page-D0Z_K5JT.js +0 -1
  279. package/dist/gateway/static/root/assets/user-model-page-B_-SNat-.js +0 -2
  280. package/dist/gateway/static/root/assets/workflows-page-CNOT2Coo.js +0 -5
  281. package/dist/src/agent/tools/browser-recipe-tool.d.ts +0 -12
  282. package/dist/src/agent/tools/browser-recipe-tool.js +0 -113
  283. package/dist/src/browser/actions/extension-registry-bridge.d.ts +0 -5
  284. package/dist/src/browser/actions/extension-registry-bridge.js +0 -312
  285. package/dist/src/browser/actions/registry.d.ts +0 -5
  286. package/dist/src/browser/actions/registry.js +0 -741
  287. package/dist/src/browser/actions/types.d.ts +0 -65
  288. package/dist/src/browser/backend-from-config.d.ts +0 -22
  289. package/dist/src/browser/backend-from-config.js +0 -99
  290. package/dist/src/browser/browser-command-timeout.d.ts +0 -2
  291. package/dist/src/browser/browser-command-timeout.js +0 -11
  292. package/dist/src/browser/cdp-local-launcher.d.ts +0 -35
  293. package/dist/src/browser/cdp-local-launcher.js +0 -154
  294. package/dist/src/browser/cdp-supervisor.d.ts +0 -58
  295. package/dist/src/browser/cdp-supervisor.js +0 -133
  296. package/dist/src/browser/humanize.d.ts +0 -80
  297. package/dist/src/browser/humanize.js +0 -363
  298. package/dist/src/browser/manager.d.ts +0 -50
  299. package/dist/src/browser/manager.js +0 -251
  300. package/dist/src/browser/pipeline/output.d.ts +0 -35
  301. package/dist/src/browser/pipeline/output.js +0 -74
  302. package/dist/src/browser/pipeline/runner.d.ts +0 -27
  303. package/dist/src/browser/pipeline/runner.js +0 -453
  304. package/dist/src/browser/pipeline/schema.d.ts +0 -42
  305. package/dist/src/browser/pipeline/schema.js +0 -116
  306. package/dist/src/browser/pipeline/template.d.ts +0 -30
  307. package/dist/src/browser/pipeline/template.js +0 -112
  308. package/dist/src/browser/providers/cloakbrowser.d.ts +0 -83
  309. package/dist/src/browser/providers/cloakbrowser.js +0 -612
  310. package/dist/src/browser/recipes/index.js +0 -3
  311. package/dist/src/browser/recipes/repository.d.ts +0 -13
  312. package/dist/src/browser/recipes/repository.js +0 -81
  313. package/dist/src/browser/recipes/runtime-service.d.ts +0 -6
  314. package/dist/src/browser/recipes/runtime-service.js +0 -30
  315. package/dist/src/browser/recipes/service.d.ts +0 -36
  316. package/dist/src/browser/recipes/service.js +0 -186
  317. package/dist/src/browser/recipes/types.d.ts +0 -36
  318. package/dist/src/browser/schemas.d.ts +0 -53
  319. package/dist/src/browser/schemas.js +0 -68
  320. package/dist/src/browser/session-lifecycle.d.ts +0 -40
  321. package/dist/src/browser/session-lifecycle.js +0 -136
  322. package/dist/src/browser/snapshot-helpers.d.ts +0 -24
  323. package/dist/src/browser/snapshot-helpers.js +0 -70
  324. package/dist/src/browser/stealth.d.ts +0 -46
  325. package/dist/src/browser/stealth.js +0 -163
  326. package/dist/src/gateway/hono/routes/browser-workflows.d.ts +0 -3
  327. package/dist/src/gateway/hono/routes/browser-workflows.js +0 -78
  328. /package/dist/src/browser/{actions → automations}/types.js +0 -0
  329. /package/dist/src/browser/{recipes/types.js → drivers/browser-driver.js} +0 -0
@@ -1,74 +0,0 @@
1
- //#region src/browser/pipeline/output.ts
2
- function createPipelineOutput(name) {
3
- return {
4
- ok: true,
5
- name,
6
- last: void 0,
7
- outputs: [],
8
- artifacts: [],
9
- diagnostics: { warnings: [] },
10
- trace: []
11
- };
12
- }
13
- function addStepTrace(output, trace, result) {
14
- output.trace.push(trace);
15
- if (result.artifacts) output.artifacts.push(...result.artifacts);
16
- if (!result.ok) {
17
- output.ok = false;
18
- output.error = {
19
- step: trace.index,
20
- action: result.action,
21
- code: result.error?.code ?? "UNKNOWN",
22
- message: result.error?.message ?? "Step failed"
23
- };
24
- }
25
- if (result.diagnostics) {
26
- if (result.diagnostics.url) output.diagnostics.url = result.diagnostics.url;
27
- if (result.diagnostics.title) output.diagnostics.title = result.diagnostics.title;
28
- if (result.diagnostics.snapshot) output.diagnostics.snapshot = result.diagnostics.snapshot;
29
- if (result.diagnostics.screenshot) output.diagnostics.screenshot = result.diagnostics.screenshot;
30
- if (result.diagnostics.console) output.diagnostics.console = result.diagnostics.console;
31
- if (result.diagnostics.network) output.diagnostics.network = result.diagnostics.network;
32
- if (result.diagnostics.warnings) {
33
- output.diagnostics.warnings ??= [];
34
- output.diagnostics.warnings.push(...result.diagnostics.warnings);
35
- }
36
- }
37
- }
38
- function formatPipelineResult(output) {
39
- const data = {
40
- output: output.outputs.length === 0 ? output.last : output.outputs.length === 1 ? output.outputs[0] : output.outputs,
41
- last: output.last,
42
- outputs: output.outputs,
43
- trace: output.trace
44
- };
45
- if (output.ok) {
46
- const textValue = data.output;
47
- return {
48
- ok: true,
49
- action: "pipeline",
50
- text: textValue === void 0 ? `Pipeline "${output.name}" completed (${output.trace.length} steps).` : typeof textValue === "string" ? textValue : JSON.stringify(textValue, null, 2),
51
- data,
52
- artifacts: output.artifacts.length > 0 ? output.artifacts : void 0,
53
- diagnostics: output.diagnostics
54
- };
55
- }
56
- const errText = output.error ? `Pipeline "${output.name}" failed at step ${output.error.step + 1} (${output.error.action}): [${output.error.code}] ${output.error.message}` : `Pipeline "${output.name}" failed.`;
57
- return {
58
- ok: false,
59
- action: "pipeline",
60
- text: errText,
61
- data,
62
- error: output.error ? {
63
- code: output.error.code,
64
- message: output.error.message
65
- } : {
66
- code: "PIPELINE_FAILED",
67
- message: errText
68
- },
69
- artifacts: output.artifacts.length > 0 ? output.artifacts : void 0,
70
- diagnostics: output.diagnostics
71
- };
72
- }
73
- //#endregion
74
- export { addStepTrace, createPipelineOutput, formatPipelineResult };
@@ -1,27 +0,0 @@
1
- /**
2
- * Pipeline runner: deterministic browser automation DSL execution.
3
- */
4
- import type { BrowserActionContext, BrowserActionRegistry, BrowserActionResult } from '../actions/types.js';
5
- import { type PipelineDocument } from './schema.js';
6
- export interface ValidateResult {
7
- ok: boolean;
8
- document?: PipelineDocument;
9
- errors: {
10
- path: string;
11
- message: string;
12
- }[];
13
- }
14
- export interface RunBrowserPipelineOptions {
15
- dryRun?: boolean;
16
- onStep?: (event: BrowserRecipeStepEvent) => void;
17
- }
18
- export interface BrowserRecipeStepEvent {
19
- index: number;
20
- scope: string;
21
- action: string;
22
- status: 'started' | 'completed' | 'failed';
23
- elapsedMs?: number;
24
- error?: string;
25
- }
26
- export declare function validateBrowserPipeline(yamlSource: string, registry?: BrowserActionRegistry): ValidateResult;
27
- export declare function runBrowserPipeline(yamlSource: string, argOverrides: Record<string, unknown>, ctx: BrowserActionContext, registry: BrowserActionRegistry, options?: RunBrowserPipelineOptions): Promise<BrowserActionResult>;
@@ -1,453 +0,0 @@
1
- import { createLogger } from "../../utils/logger/index.js";
2
- import { init_logger } from "../../utils/logger.js";
3
- import { isTruthyValue, resolveTemplateDeep } from "./template.js";
4
- import { parseBrowserPipeline } from "./schema.js";
5
- import { addStepTrace, createPipelineOutput, formatPipelineResult } from "./output.js";
6
- import { setTimeout } from "node:timers/promises";
7
- //#region src/browser/pipeline/runner.ts
8
- /**
9
- * Pipeline runner: deterministic browser automation DSL execution.
10
- */
11
- init_logger();
12
- const log = createLogger("PipelineRunner");
13
- const CONTROL_ACTIONS = new Set([
14
- "if",
15
- "retry",
16
- "sleep",
17
- "set_var"
18
- ]);
19
- const RECIPE_ACTIONS = new Set([
20
- ...CONTROL_ACTIONS,
21
- "navigate",
22
- "snapshot",
23
- "click",
24
- "type",
25
- "scroll",
26
- "screenshot",
27
- "press",
28
- "evaluate",
29
- "wait",
30
- "wait_for_navigation",
31
- "wait_for_network_idle",
32
- "element_text",
33
- "element_attribute",
34
- "output",
35
- "assert",
36
- "select",
37
- "map",
38
- "filter",
39
- "sort",
40
- "limit"
41
- ]);
42
- function validateBrowserPipeline(yamlSource, registry) {
43
- const parseResult = parseBrowserPipeline(yamlSource);
44
- if (!parseResult.ok || !parseResult.document) return {
45
- ok: false,
46
- errors: parseResult.errors
47
- };
48
- const errors = [];
49
- validateSteps(parseResult.document.pipeline, "pipeline", registry, errors);
50
- validateSteps(parseResult.document.onError ?? [], "on_error", registry, errors);
51
- return errors.length > 0 ? {
52
- ok: false,
53
- document: parseResult.document,
54
- errors
55
- } : {
56
- ok: true,
57
- document: parseResult.document,
58
- errors: []
59
- };
60
- }
61
- function validateSteps(steps, path, registry, errors) {
62
- if (!registry) return;
63
- for (let i = 0; i < steps.length; i++) {
64
- const step = steps[i];
65
- if (!RECIPE_ACTIONS.has(step.action)) errors.push({
66
- path: `${path}[${i}]`,
67
- message: `Action is not available in Browser Recipe v1: "${step.action}"`
68
- });
69
- else if (!CONTROL_ACTIONS.has(step.action) && !registry.has(step.action)) errors.push({
70
- path: `${path}[${i}]`,
71
- message: `Unknown action: "${step.action}"`
72
- });
73
- const requiredKey = {
74
- navigate: "url",
75
- type: "text",
76
- press: "key",
77
- evaluate: "javascript",
78
- element_text: "selector",
79
- element_attribute: "selector",
80
- set_var: "name"
81
- }[step.action];
82
- if (requiredKey && !(requiredKey in step.args)) errors.push({
83
- path: `${path}[${i}].${step.action}.${requiredKey}`,
84
- message: `Required field is missing: ${requiredKey}`
85
- });
86
- if (step.action === "click" && ![
87
- "selector",
88
- "text",
89
- "role"
90
- ].some((key) => key in step.args)) errors.push({
91
- path: `${path}[${i}].click`,
92
- message: "One of selector, text, or role is required"
93
- });
94
- if (step.action === "type" && !["selector", "label"].some((key) => key in step.args)) errors.push({
95
- path: `${path}[${i}].type`,
96
- message: "One of selector or label is required"
97
- });
98
- try {
99
- if (step.action === "if") {
100
- validateSteps(normalizeNestedPipeline(step.args.then, `${path}[${i}].if.then`), `${path}[${i}].if.then`, registry, errors);
101
- validateSteps(normalizeNestedPipeline(step.args.else, `${path}[${i}].if.else`), `${path}[${i}].if.else`, registry, errors);
102
- } else if (step.action === "retry") validateSteps(normalizeNestedPipeline(step.args.pipeline, `${path}[${i}].retry.pipeline`), `${path}[${i}].retry.pipeline`, registry, errors);
103
- } catch (error) {
104
- errors.push({
105
- path: `${path}[${i}].${step.action}`,
106
- message: error instanceof Error ? error.message : String(error)
107
- });
108
- }
109
- }
110
- }
111
- function resolveArgs(doc, overrides) {
112
- const resolved = {};
113
- for (const key of Object.keys(overrides)) if (!(key in doc.args)) throw new Error(`Unknown pipeline arg: ${key}`);
114
- for (const [key, def] of Object.entries(doc.args)) {
115
- const value = key in overrides ? overrides[key] : def.default;
116
- if (value === void 0) {
117
- if (def.required) throw new Error(`Missing required arg: ${key}`);
118
- continue;
119
- }
120
- if (def.choices && !def.choices.some((choice) => Object.is(choice, value))) throw new Error(`Invalid value for arg ${key}: expected one of ${def.choices.map(String).join(", ")}`);
121
- if (def.type === "string" && typeof value !== "string") throw new Error(`Arg ${key} must be a string`);
122
- if (def.type === "number" && (typeof value !== "number" || !Number.isFinite(value))) throw new Error(`Arg ${key} must be a number`);
123
- if (def.type === "integer" && (typeof value !== "number" || !Number.isInteger(value))) throw new Error(`Arg ${key} must be an integer`);
124
- if (def.type === "boolean" && typeof value !== "boolean") throw new Error(`Arg ${key} must be a boolean`);
125
- resolved[key] = value;
126
- }
127
- return resolved;
128
- }
129
- function templateContext(runtime) {
130
- return {
131
- args: runtime.args,
132
- last: runtime.last,
133
- outputs: runtime.outputs,
134
- vars: runtime.vars,
135
- error: runtime.error
136
- };
137
- }
138
- function actionArgs(step, runtime) {
139
- return resolveTemplateDeep(step.args, templateContext(runtime));
140
- }
141
- async function executePipeline(steps, scope, runtime, actionCtx, registry, output, options) {
142
- for (let i = 0; i < steps.length; i++) {
143
- if (actionCtx.signal?.aborted) throw actionError("ABORTED", "Pipeline aborted");
144
- await executeStep(steps[i], i, scope, runtime, actionCtx, registry, output, options);
145
- }
146
- }
147
- async function executeStep(step, index, scope, runtime, actionCtx, registry, output, options) {
148
- const started = Date.now();
149
- options.onStep?.({
150
- index,
151
- scope,
152
- action: step.action,
153
- status: "started"
154
- });
155
- let result;
156
- try {
157
- result = await executeStepOnce(step, index, scope, runtime, actionCtx, registry, output, options);
158
- } catch (e) {
159
- const error = e instanceof Error ? e : new Error(String(e));
160
- result = {
161
- ok: false,
162
- action: step.action,
163
- error: {
164
- code: error.code ?? "STEP_FAILED",
165
- message: error.message
166
- }
167
- };
168
- }
169
- addStepTrace(output, {
170
- index,
171
- scope,
172
- action: step.action,
173
- ok: result.ok,
174
- elapsedMs: Date.now() - started,
175
- text: result.text?.slice(0, 500),
176
- data: result.data,
177
- error: result.error
178
- }, result);
179
- options.onStep?.({
180
- index,
181
- scope,
182
- action: step.action,
183
- status: result.ok ? "completed" : "failed",
184
- elapsedMs: Date.now() - started,
185
- error: result.error?.message
186
- });
187
- if (!result.ok) {
188
- runtime.error = result.error;
189
- throw actionError(result.error?.code ?? "STEP_FAILED", result.error?.message ?? "Step failed");
190
- }
191
- }
192
- async function executeStepOnce(step, index, scope, runtime, actionCtx, registry, output, options) {
193
- switch (step.action) {
194
- case "sleep": {
195
- const args = actionArgs(step, runtime);
196
- const ms = Number(args.ms ?? 1e3);
197
- await setTimeout(Number.isFinite(ms) ? ms : 1e3, void 0, { signal: actionCtx.signal });
198
- runtime.last = null;
199
- return {
200
- ok: true,
201
- action: "sleep",
202
- text: `Slept ${ms}ms.`,
203
- data: null
204
- };
205
- }
206
- case "set_var": {
207
- const args = actionArgs(step, runtime);
208
- const name = String(args.name ?? "");
209
- if (!name) return {
210
- ok: false,
211
- action: "set_var",
212
- error: {
213
- code: "INVALID_ARGS",
214
- message: "name is required"
215
- }
216
- };
217
- runtime.vars[name] = args.value;
218
- runtime.last = args.value;
219
- return {
220
- ok: true,
221
- action: "set_var",
222
- text: `Set var: ${name}`,
223
- data: args.value
224
- };
225
- }
226
- case "if": {
227
- const args = actionArgs(step, runtime);
228
- await executePipeline(normalizeNestedPipeline(isTruthyValue(args.condition) ? args.then : args.else, `${scope}.${index}.if`), `${scope}.${index}.if`, runtime, actionCtx, registry, output, options);
229
- return {
230
- ok: true,
231
- action: "if",
232
- text: "Conditional branch completed.",
233
- data: runtime.last
234
- };
235
- }
236
- case "retry": {
237
- const args = actionArgs(step, runtime);
238
- const times = Math.max(1, Number(args.times ?? 3));
239
- const delayMs = Math.max(0, Number(args.delay_ms ?? 250));
240
- const retrySteps = normalizeNestedPipeline(args.pipeline, `${scope}.${index}.retry`);
241
- let lastError;
242
- for (let attempt = 1; attempt <= times; attempt++) try {
243
- await executePipeline(retrySteps, `${scope}.${index}.retry.${attempt}`, runtime, actionCtx, registry, output, options);
244
- output.ok = true;
245
- output.error = void 0;
246
- return {
247
- ok: true,
248
- action: "retry",
249
- text: `Retry block completed on attempt ${attempt}.`,
250
- data: runtime.last
251
- };
252
- } catch (e) {
253
- lastError = e;
254
- output.ok = true;
255
- output.error = void 0;
256
- if (attempt < times) await setTimeout(delayMs, void 0, { signal: actionCtx.signal });
257
- }
258
- return {
259
- ok: false,
260
- action: "retry",
261
- error: {
262
- code: "RETRY_FAILED",
263
- message: lastError instanceof Error ? lastError.message : String(lastError)
264
- }
265
- };
266
- }
267
- default: return executeBrowserAction(step, runtime, actionCtx, registry);
268
- }
269
- }
270
- async function executeBrowserAction(step, runtime, actionCtx, registry) {
271
- const args = actionArgs(step, runtime);
272
- if (step.action === "navigate") {
273
- let hostname;
274
- try {
275
- hostname = new URL(String(args.url)).hostname.toLowerCase();
276
- } catch {
277
- return {
278
- ok: false,
279
- action: step.action,
280
- error: {
281
- code: "INVALID_URL",
282
- message: "navigate.url must be an absolute URL"
283
- }
284
- };
285
- }
286
- if (!runtime.doc.domains.some((domain) => hostname === domain || hostname.endsWith(`.${domain}`))) return {
287
- ok: false,
288
- action: step.action,
289
- error: {
290
- code: "DOMAIN_BLOCKED",
291
- message: `Domain is not declared by the recipe: ${hostname}`
292
- }
293
- };
294
- }
295
- actionCtx.pipeline = {
296
- args: runtime.args,
297
- last: runtime.last,
298
- outputs: runtime.outputs,
299
- vars: runtime.vars,
300
- error: runtime.error
301
- };
302
- const result = await registry.execute(step.action, actionCtx, args);
303
- if (result.ok && step.action === "navigate") {
304
- const finalUrl = result.data?.url;
305
- if (typeof finalUrl === "string") {
306
- const hostname = new URL(finalUrl).hostname.toLowerCase();
307
- if (!runtime.doc.domains.some((domain) => hostname === domain || hostname.endsWith(`.${domain}`))) return {
308
- ok: false,
309
- action: step.action,
310
- error: {
311
- code: "DOMAIN_BLOCKED",
312
- message: `Redirected to an undeclared domain: ${hostname}`
313
- }
314
- };
315
- }
316
- }
317
- if (result.ok) {
318
- if (step.action === "output") runtime.outputs.push(result.data);
319
- if (result.data !== void 0) runtime.last = result.data;
320
- }
321
- return result;
322
- }
323
- function normalizeNestedPipeline(value, path) {
324
- return (Array.isArray(value) ? value : value ? [value] : []).map((rawStep, index) => {
325
- if (!rawStep || typeof rawStep !== "object" || Array.isArray(rawStep)) throw new Error(`${path}[${index}] must be a YAML object`);
326
- const obj = rawStep;
327
- const keys = Object.keys(obj);
328
- if (keys.length !== 1) throw new Error(`${path}[${index}] must contain exactly one action`);
329
- const action = keys[0];
330
- const args = obj[action];
331
- if (args && typeof args === "object" && !Array.isArray(args)) return {
332
- action,
333
- args
334
- };
335
- throw new Error(`${path}[${index}].${action} must be an object`);
336
- });
337
- }
338
- function actionError(code, message) {
339
- const error = new Error(message);
340
- error.code = code;
341
- return error;
342
- }
343
- async function runBrowserPipeline(yamlSource, argOverrides, ctx, registry, options = {}) {
344
- let doc;
345
- try {
346
- const parsed = parseBrowserPipeline(yamlSource);
347
- if (!parsed.ok || !parsed.document) throw new Error(parsed.errors.map((error) => `${error.path}: ${error.message}`).join("\n"));
348
- doc = parsed.document;
349
- } catch (e) {
350
- const msg = e instanceof Error ? e.message : String(e);
351
- return {
352
- ok: false,
353
- action: "pipeline",
354
- error: {
355
- code: "VALIDATION_FAILED",
356
- message: msg
357
- },
358
- text: msg
359
- };
360
- }
361
- const validationErrors = [];
362
- validateSteps(doc.pipeline, "pipeline", registry, validationErrors);
363
- validateSteps(doc.onError ?? [], "on_error", registry, validationErrors);
364
- if (validationErrors.length > 0) {
365
- const msg = validationErrors.map((e) => `${e.path}: ${e.message}`).join("\n");
366
- return {
367
- ok: false,
368
- action: "pipeline",
369
- error: {
370
- code: "VALIDATION_FAILED",
371
- message: msg
372
- },
373
- text: msg
374
- };
375
- }
376
- if (options.dryRun) return {
377
- ok: true,
378
- action: "pipeline",
379
- text: `Pipeline "${doc.name}" validated successfully (${doc.pipeline.length} steps).`,
380
- data: {
381
- name: doc.name,
382
- steps: doc.pipeline.length,
383
- args: Object.keys(doc.args)
384
- }
385
- };
386
- let args;
387
- try {
388
- args = resolveArgs(doc, argOverrides);
389
- } catch (e) {
390
- const msg = e instanceof Error ? e.message : String(e);
391
- return {
392
- ok: false,
393
- action: "pipeline",
394
- error: {
395
- code: "ARG_RESOLUTION_FAILED",
396
- message: msg
397
- },
398
- text: msg
399
- };
400
- }
401
- const output = createPipelineOutput(doc.name);
402
- const runtime = {
403
- doc,
404
- args,
405
- last: void 0,
406
- outputs: [],
407
- vars: {}
408
- };
409
- log.info({
410
- pipeline: doc.name,
411
- steps: doc.pipeline.length
412
- }, `Running pipeline: ${doc.name}`);
413
- try {
414
- const timeoutController = new AbortController();
415
- const runContext = {
416
- ...ctx,
417
- signal: ctx.signal ? AbortSignal.any([ctx.signal, timeoutController.signal]) : timeoutController.signal
418
- };
419
- const run = executePipeline(doc.pipeline, "pipeline", runtime, runContext, registry, output, options);
420
- if (doc.timeoutSeconds && doc.timeoutSeconds > 0) await Promise.race([run, setTimeout(doc.timeoutSeconds * 1e3, void 0, { signal: ctx.signal }).then(() => {
421
- timeoutController.abort();
422
- throw actionError("PIPELINE_TIMEOUT", `Pipeline timed out after ${doc.timeoutSeconds} seconds`);
423
- })]);
424
- else await run;
425
- } catch (error) {
426
- const failure = error instanceof Error ? error : new Error(String(error));
427
- const code = failure.code ?? "PIPELINE_FAILED";
428
- runtime.error ??= {
429
- code,
430
- message: failure.message
431
- };
432
- output.ok = false;
433
- output.error ??= {
434
- step: output.trace.length,
435
- action: "pipeline",
436
- code,
437
- message: failure.message
438
- };
439
- }
440
- output.last = runtime.last;
441
- output.outputs = runtime.outputs;
442
- if (!output.ok && doc.onError && doc.onError.length > 0) {
443
- log.info({ pipeline: doc.name }, "Running on_error diagnostics");
444
- try {
445
- await executePipeline(doc.onError, "on_error", runtime, ctx, registry, output, options);
446
- } catch {}
447
- output.last = runtime.last;
448
- output.outputs = runtime.outputs;
449
- }
450
- return formatPipelineResult(output);
451
- }
452
- //#endregion
453
- export { runBrowserPipeline, validateBrowserPipeline };
@@ -1,42 +0,0 @@
1
- import { z } from 'zod';
2
- export declare const BROWSER_RECIPE_API_VERSION: "xopc.ai/browser-recipe/v1";
3
- declare const PipelineArgSchema: z.ZodObject<{
4
- type: z.ZodEnum<{
5
- string: "string";
6
- number: "number";
7
- boolean: "boolean";
8
- integer: "integer";
9
- }>;
10
- required: z.ZodOptional<z.ZodBoolean>;
11
- default: z.ZodOptional<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
12
- description: z.ZodOptional<z.ZodString>;
13
- choices: z.ZodOptional<z.ZodArray<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>>;
14
- }, z.core.$strict>;
15
- export type PipelineArgDef = z.infer<typeof PipelineArgSchema>;
16
- export interface PipelineStep {
17
- action: string;
18
- args: Record<string, unknown>;
19
- }
20
- export interface PipelineDocument {
21
- apiVersion: typeof BROWSER_RECIPE_API_VERSION;
22
- id: string;
23
- name: string;
24
- description?: string;
25
- risk: 'read_only' | 'account_write' | 'sensitive';
26
- domains: string[];
27
- timeoutSeconds?: number;
28
- args: Record<string, PipelineArgDef>;
29
- pipeline: PipelineStep[];
30
- onError?: PipelineStep[];
31
- }
32
- export interface PipelineValidationError {
33
- path: string;
34
- message: string;
35
- }
36
- export interface PipelineParseResult {
37
- ok: boolean;
38
- document?: PipelineDocument;
39
- errors: PipelineValidationError[];
40
- }
41
- export declare function parseBrowserPipeline(yamlSource: string): PipelineParseResult;
42
- export {};