@xopcai/xopc 0.0.250 → 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 (312) 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-BN6FJXkJ.js → agent-avatar-dicebear-k039rbUz.js} +1 -1
  8. package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-C7rZH1A2.js → agent-defaults-settings-panel-D4J4oq8p.js} +1 -1
  9. package/dist/gateway/static/root/assets/{agents-CgGaoo4z.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-D2gMshuS.js → app-management-settings-panel-ByJ4kiD0.js} +1 -1
  12. package/dist/gateway/static/root/assets/{appearance-settings-wMu0jSKx.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-u6EE3JV8.js → archive-plugin-DMDKtYpi.js} +1 -1
  15. package/dist/gateway/static/root/assets/{attachment-load-DbJurnv-.js → attachment-load-B764Ql3Z.js} +1 -1
  16. package/dist/gateway/static/root/assets/{automations-page-Ew_e5HDn.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-DtDFNfPM.js → binary-plugins-fxtzYRpv.js} +1 -1
  19. package/dist/gateway/static/root/assets/{block-editor-CnAwmabq.js → block-editor-Bcjtvckh.js} +50 -50
  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-CryTDNdD.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-ji5aWrjG.js → cron-expression-DtsfalBM.js} +1 -1
  29. package/dist/gateway/static/root/assets/{date-picker-Dro_w3eX.js → date-picker-tDEQV5TP.js} +1 -1
  30. package/dist/gateway/static/root/assets/{dependency-picker-Ce19KKnX.js → dependency-picker-HhNwg0Y2.js} +1 -1
  31. package/dist/gateway/static/root/assets/{desktop-pet-DsSi-3uZ.js → desktop-pet-acU4Li-C.js} +1 -1
  32. package/dist/gateway/static/root/assets/{desktop-pet-settings-8WQ4woJy.js → desktop-pet-settings-R84AR0Pe.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-debug-page-CgvEBfLZ.js → extension-debug-page-CrLlRkSN.js} +1 -1
  34. package/dist/gateway/static/root/assets/{extension-page-DkznBbMj.js → extension-page-BH5lmZXE.js} +1 -1
  35. package/dist/gateway/static/root/assets/{extension-settings-page-BOjhchK2.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-K5Zhl2rx.js +1 -0
  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-BYhfzsqe.js → keyboard-shortcuts-settings-B1QR49-7.js} +1 -1
  45. package/dist/gateway/static/root/assets/languages-5WaOu0Lf.js +2 -0
  46. package/dist/gateway/static/root/assets/local-app-workbench-page-wicoV-ti.js +2 -0
  47. package/dist/gateway/static/root/assets/{local-apps-page-vBlknU7C.js → local-apps-page-C74It-T8.js} +1 -1
  48. package/dist/gateway/static/root/assets/{locale-store-CF4erhjB.js → locale-store-BfZGZKSs.js} +1 -1
  49. package/dist/gateway/static/root/assets/logs-page-xX-7S49A.js +2 -0
  50. package/dist/gateway/static/root/assets/{management-settings-Dnx6mSNe.js → management-settings-1kNnYL97.js} +1 -1
  51. package/dist/gateway/static/root/assets/markdown-editor-BjMTIM-m.js +1 -0
  52. package/dist/gateway/static/root/assets/{markdown-view-CQvzsE24.js → markdown-view-DjiwT28p.js} +2 -2
  53. package/dist/gateway/static/root/assets/{media-plugins-DrMYeHe7.js → media-plugins-B5c0AoS1.js} +1 -1
  54. package/dist/gateway/static/root/assets/messages-DaIwVWar.js +3 -0
  55. package/dist/gateway/static/root/assets/{mobile-pairing-wizard-AKgGy3Kx.js → mobile-pairing-wizard-CsIZqK51.js} +1 -1
  56. package/dist/gateway/static/root/assets/note-detail-panel-CfWxopl4.js +5 -0
  57. package/dist/gateway/static/root/assets/notes-page-CYN-LCHJ.js +8 -0
  58. package/dist/gateway/static/root/assets/{page-tabs-CX9T71by.js → page-tabs-CqJN6Ljz.js} +1 -1
  59. package/dist/gateway/static/root/assets/{preview-open-alternatives-DvEHoimN.js → preview-open-alternatives-DqRIGxf4.js} +1 -1
  60. package/dist/gateway/static/root/assets/{product-open-page-COcr_NUJ.js → product-open-page-DE2nPE_K.js} +1 -1
  61. package/dist/gateway/static/root/assets/project-detail-page-B5G3LzDq.js +1 -0
  62. package/dist/gateway/static/root/assets/projects-page-CuVK2mKu.js +1 -0
  63. package/dist/gateway/static/root/assets/{registry-api-BsRBlji7.js → registry-api-Bpy8XX-5.js} +1 -1
  64. package/dist/gateway/static/root/assets/remote-access-hub-Dnd73xWt.js +1 -0
  65. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-CQ13P-mS.js → runtime-tools-settings-panel-Bb4b74-P.js} +2 -2
  66. package/dist/gateway/static/root/assets/{schema-form-BUVyTpZj.js → schema-form-DoPU5j3J.js} +1 -1
  67. package/dist/gateway/static/root/assets/sessions-page-XL4LyKZe.js +1 -0
  68. package/dist/gateway/static/root/assets/settings-advanced-gate-0ForzDSS.js +1 -0
  69. package/dist/gateway/static/root/assets/{settings-form-section-DVY-8_B9.js → settings-form-section-Ci-9WajJ.js} +1 -1
  70. package/dist/gateway/static/root/assets/{settings-page-CdiVYyTl.js → settings-page-CL_2F95D.js} +1 -1
  71. package/dist/gateway/static/root/assets/setup-status-panel-DVws6XZc.js +1 -0
  72. package/dist/gateway/static/root/assets/{share-preview-page-C88YLKm4.js → share-preview-page-XUA3oKQX.js} +1 -1
  73. package/dist/gateway/static/root/assets/shares-settings-BwDvcacF.js +1 -0
  74. package/dist/gateway/static/root/assets/skill-reload-api-BJjrATqE.js +1 -0
  75. package/dist/gateway/static/root/assets/{skills-page-DLir1nM0.js → skills-page-sXXAZDc9.js} +1 -1
  76. package/dist/gateway/static/root/assets/{skills-page.utils-BMZAfS3G.js → skills-page.utils-DD79Bl1I.js} +1 -1
  77. package/dist/gateway/static/root/assets/source-workspace-editor-CVWzt0oT.js +1 -0
  78. package/dist/gateway/static/root/assets/{system-settings-panel-BM8ivYan.js → system-settings-panel-BEH64qBV.js} +1 -1
  79. package/dist/gateway/static/root/assets/task-detail-page-0jxMi75O.js +1 -0
  80. package/dist/gateway/static/root/assets/{theme-store-BOgkc_9D.js → theme-store-CISSxU1c.js} +1 -1
  81. package/dist/gateway/static/root/assets/{tunnel-api-DemxChjo.js → tunnel-api-DrKDhnJm.js} +1 -1
  82. package/dist/gateway/static/root/assets/{use-autosave-CV3Ui5hu.js → use-autosave-CPYePL-Q.js} +1 -1
  83. package/dist/gateway/static/root/assets/user-model-page-B6zLDfDl.js +2 -0
  84. package/dist/gateway/static/root/assets/{vendor-codemirror--gTq3YAI.js → vendor-codemirror-Qdcjid65.js} +1 -1
  85. package/dist/gateway/static/root/assets/{voice-api-key-field-CUoCi4Sq.js → voice-api-key-field-DKqzrCXx.js} +1 -1
  86. package/dist/gateway/static/root/assets/{voice-config-api-C-ryeIxj.js → voice-config-api-e9xWjwBX.js} +1 -1
  87. package/dist/gateway/static/root/assets/{work-discovery-overlay-BhDlkCMB.js → work-discovery-overlay-kTQug6bq.js} +1 -1
  88. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-D8CcPc_C.js → workflow-run-setup-panel-m9SKj_GT.js} +2 -2
  89. package/dist/gateway/static/root/assets/workflows-page-Bcd1XqP7.js +5 -0
  90. package/dist/gateway/static/root/index.html +10 -10
  91. package/dist/package.js +1 -1
  92. package/dist/packages/gateway-contract/src/new-session.js +9 -0
  93. package/dist/src/agent/agent-manager.d.ts +2 -1
  94. package/dist/src/agent/agent-manager.js +2 -1
  95. package/dist/src/agent/coding/repository-instructions.js +2 -2
  96. package/dist/src/agent/coding/workspace-revision.js +2 -2
  97. package/dist/src/agent/commands/command-isolation.js +2 -2
  98. package/dist/src/agent/external-tools/composio-provider.d.ts +1 -0
  99. package/dist/src/agent/external-tools/composio-provider.js +64 -34
  100. package/dist/src/agent/external-tools/search-error.js +5 -3
  101. package/dist/src/agent/service.js +2 -1
  102. package/dist/src/agent/service.types.d.ts +2 -1
  103. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +4 -0
  104. package/dist/src/agent/tool-manuals/browser.d.ts +1 -1
  105. package/dist/src/agent/tool-manuals/browser.js +15 -226
  106. package/dist/src/agent/tools/browser/tool/browser-use-tool.d.ts +4 -21
  107. package/dist/src/agent/tools/browser/tool/browser-use-tool.js +48 -165
  108. package/dist/src/agent/tools/browser/tool/schemas.d.ts +203 -16
  109. package/dist/src/agent/tools/browser/tool/schemas.js +146 -16
  110. package/dist/src/agent/tools/browser-automation-tool.d.ts +121 -0
  111. package/dist/src/agent/tools/browser-automation-tool.js +197 -0
  112. package/dist/src/agent/tools/factory.d.ts +6 -9
  113. package/dist/src/agent/tools/factory.js +28 -55
  114. package/dist/src/agent/tools/index.d.ts +2 -2
  115. package/dist/src/agent/tools/index.js +3 -3
  116. package/dist/src/agent/tools/review-workspace.js +2 -2
  117. package/dist/src/auth/oauth/xopc-cloud.js +3 -1
  118. package/dist/src/automations/domain/defaults.js +1 -1
  119. package/dist/src/automations/domain/types.d.ts +5 -5
  120. package/dist/src/automations/domain/validation.d.ts +12 -12
  121. package/dist/src/automations/domain/validation.js +3 -3
  122. package/dist/src/automations/draft/automation-draft-validator.d.ts +3 -3
  123. package/dist/src/automations/draft/automation-draft-validator.js +1 -1
  124. package/dist/src/automations/service/action-executor.d.ts +1 -1
  125. package/dist/src/automations/service/action-executor.js +7 -7
  126. package/dist/src/browser/{recipes → automations}/index.d.ts +1 -0
  127. package/dist/src/browser/automations/index.js +4 -0
  128. package/dist/src/browser/automations/repository.d.ts +13 -0
  129. package/dist/src/browser/automations/repository.js +60 -0
  130. package/dist/src/browser/automations/runner.d.ts +17 -0
  131. package/dist/src/browser/automations/runner.js +173 -0
  132. package/dist/src/browser/automations/runtime-service.d.ts +6 -0
  133. package/dist/src/browser/automations/runtime-service.js +37 -0
  134. package/dist/src/browser/automations/schema.d.ts +144 -0
  135. package/dist/src/browser/automations/schema.js +135 -0
  136. package/dist/src/browser/automations/service.d.ts +146 -0
  137. package/dist/src/browser/automations/service.js +168 -0
  138. package/dist/src/browser/automations/types.d.ts +90 -0
  139. package/dist/src/browser/cache-dir-policy.d.ts +1 -1
  140. package/dist/src/browser/cache-dir-policy.js +1 -4
  141. package/dist/src/browser/drivers/browser-driver.d.ts +17 -0
  142. package/dist/src/browser/drivers/create-driver.d.ts +3 -0
  143. package/dist/src/browser/drivers/create-driver.js +84 -0
  144. package/dist/src/browser/drivers/extension-driver.d.ts +20 -0
  145. package/dist/src/browser/drivers/extension-driver.js +47 -0
  146. package/dist/src/browser/drivers/playwright-driver.d.ts +38 -0
  147. package/dist/src/browser/drivers/playwright-driver.js +406 -0
  148. package/dist/src/browser/index.d.ts +10 -15
  149. package/dist/src/browser/index.js +10 -15
  150. package/dist/src/browser/install-lock.d.ts +1 -2
  151. package/dist/src/browser/install-lock.js +3 -9
  152. package/dist/src/browser/install-progress.d.ts +1 -1
  153. package/dist/src/browser/observation/format.d.ts +2 -0
  154. package/dist/src/browser/observation/format.js +26 -0
  155. package/dist/src/browser/policy/approval-store.d.ts +17 -0
  156. package/dist/src/browser/policy/approval-store.js +62 -0
  157. package/dist/src/browser/policy/browser-policy.d.ts +3 -0
  158. package/dist/src/browser/policy/browser-policy.js +27 -0
  159. package/dist/src/browser/providers/browser-ext-install.d.ts +1 -1
  160. package/dist/src/browser/providers/browser-ext-install.js +3 -5
  161. package/dist/src/browser/providers/browser-use.js +1 -1
  162. package/dist/src/browser/providers/browserbase.js +1 -1
  163. package/dist/src/browser/providers/extension-ws-acquire.d.ts +1 -4
  164. package/dist/src/browser/providers/extension-ws-acquire.js +1 -13
  165. package/dist/src/browser/providers/extension.d.ts +3 -22
  166. package/dist/src/browser/providers/extension.js +7 -15
  167. package/dist/src/browser/providers/index.d.ts +2 -2
  168. package/dist/src/browser/providers/index.js +3 -3
  169. package/dist/src/browser/providers/types.d.ts +0 -94
  170. package/dist/src/browser/readiness.d.ts +4 -22
  171. package/dist/src/browser/readiness.js +55 -118
  172. package/dist/src/browser/runtime/browser-runtime.d.ts +30 -0
  173. package/dist/src/browser/runtime/browser-runtime.js +362 -0
  174. package/dist/src/browser/url-policy.d.ts +3 -3
  175. package/dist/src/browser/url-policy.js +7 -6
  176. package/dist/src/browser/verification/expectation.d.ts +2 -0
  177. package/dist/src/browser/verification/expectation.js +17 -0
  178. package/dist/src/cli/command-loaders.js +1 -0
  179. package/dist/src/cli/command-manifest.js +5 -1
  180. package/dist/src/cli/commands/browser-cli-helpers.d.ts +0 -6
  181. package/dist/src/cli/commands/browser-cli-helpers.js +11 -144
  182. package/dist/src/cli/commands/browser.d.ts +0 -5
  183. package/dist/src/cli/commands/browser.js +11 -152
  184. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  185. package/dist/src/cli/commands/doctor/checks/node-version.js +25 -9
  186. package/dist/src/cli/commands/platform.d.ts +1 -0
  187. package/dist/src/cli/commands/platform.js +111 -0
  188. package/dist/src/config/loader.js +9 -3
  189. package/dist/src/config/schema.d.ts +131 -84
  190. package/dist/src/config/schema.js +112 -59
  191. package/dist/src/connectors/composio-sessions.js +1 -3
  192. package/dist/src/extensions/marketplace.js +4 -0
  193. package/dist/src/files/file-service.js +139 -14
  194. package/dist/src/gateway/hono/lib/config-payload.d.ts +12 -26
  195. package/dist/src/gateway/hono/lib/config-payload.js +10 -39
  196. package/dist/src/gateway/hono/routes/browser-automations.d.ts +3 -0
  197. package/dist/src/gateway/hono/routes/browser-automations.js +77 -0
  198. package/dist/src/gateway/hono/routes/browser-install.js +0 -32
  199. package/dist/src/gateway/hono/routes/browser.d.ts +0 -17
  200. package/dist/src/gateway/hono/routes/browser.js +46 -568
  201. package/dist/src/gateway/hono/routes/config-patch/misc.js +8 -1
  202. package/dist/src/gateway/hono/routes/config.js +0 -11
  203. package/dist/src/gateway/hono/routes/lazy-bundles.js +5 -5
  204. package/dist/src/gateway/service.d.ts +4 -6
  205. package/dist/src/gateway/service.js +20 -23
  206. package/dist/src/platform/client.d.ts +121 -0
  207. package/dist/src/platform/client.js +108 -0
  208. package/dist/src/platform/contracts.d.ts +194 -0
  209. package/dist/src/platform/contracts.js +150 -0
  210. package/dist/src/platform/index.d.ts +4 -0
  211. package/dist/src/platform/index.js +9 -0
  212. package/dist/src/platform/resolution.d.ts +4 -0
  213. package/dist/src/platform/resolution.js +16 -0
  214. package/dist/src/platform/worker.d.ts +6 -0
  215. package/dist/src/platform/worker.js +75 -0
  216. package/dist/src/providers/xopc-cloud-config.js +3 -1
  217. package/dist/src/session/session-context-for-llm.js +41 -1
  218. package/dist/src/share/hosted-session-share.js +3 -1
  219. package/dist/src/share/share-thumbnail.js +1 -1
  220. package/dist/src/storage/sqlite/migrations/153_browser_control_v2.sql +45 -0
  221. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  222. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  223. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  224. package/dist/src/storage/sqlite/schema.js +1 -1
  225. package/dist/src/storage/sqlite/schema.sql +16 -20
  226. package/dist/src/tasks/home-query-service.js +1 -1
  227. package/dist/src/tunnel/env.js +3 -1
  228. package/dist/src/voice/realtime/agentEngine.js +0 -1
  229. package/package.json +7 -7
  230. package/dist/gateway/static/root/assets/apps-page-KF1Gnv36.js +0 -1
  231. package/dist/gateway/static/root/assets/automations-workspace-Ch-ldu35.js +0 -6
  232. package/dist/gateway/static/root/assets/browser-settings-page-DtVhsHJW.js +0 -8
  233. package/dist/gateway/static/root/assets/browser-workflow-inputs-BX1-uM9L.js +0 -1
  234. package/dist/gateway/static/root/assets/browser-workflows-page-CcbUOWDF.js +0 -3
  235. package/dist/gateway/static/root/assets/capabilities-settings-panel--sXeylhe.js +0 -7
  236. package/dist/gateway/static/root/assets/channels-settings-AXSBDujZ.js +0 -1
  237. package/dist/gateway/static/root/assets/code-editor-D4_k-6QN.js +0 -1
  238. package/dist/gateway/static/root/assets/connectors-page-HBHUWohz.js +0 -2
  239. package/dist/gateway/static/root/assets/gateway-config-api-OEruhhX3.js +0 -1
  240. package/dist/gateway/static/root/assets/gateway-settings-BgH3A0LO.js +0 -1
  241. package/dist/gateway/static/root/assets/heartbeat-settings-C97naDkO.js +0 -1
  242. package/dist/gateway/static/root/assets/home-page-BBKKme4G.js +0 -1
  243. package/dist/gateway/static/root/assets/html-workspace-editor-C3DKAkMc.js +0 -1
  244. package/dist/gateway/static/root/assets/index-BcaF-dgQ.js +0 -72
  245. package/dist/gateway/static/root/assets/index-DAryGvZ7.css +0 -2
  246. package/dist/gateway/static/root/assets/local-app-workbench-page-DNncc2tn.js +0 -2
  247. package/dist/gateway/static/root/assets/logs-page-CizZInrT.js +0 -2
  248. package/dist/gateway/static/root/assets/markdown-editor-nDLmA_LF.js +0 -2
  249. package/dist/gateway/static/root/assets/markdown-split-DtBtcHWi.js +0 -1
  250. package/dist/gateway/static/root/assets/messages-Cf5hpZE6.js +0 -3
  251. package/dist/gateway/static/root/assets/note-detail-panel-Bw3jD9Jf.js +0 -5
  252. package/dist/gateway/static/root/assets/notes-page-Dpqq7Z-J.js +0 -8
  253. package/dist/gateway/static/root/assets/project-detail-page-BuT6MCTs.js +0 -1
  254. package/dist/gateway/static/root/assets/projects-page-DXWMxOjf.js +0 -1
  255. package/dist/gateway/static/root/assets/remote-access-hub-7rBCUWzZ.js +0 -1
  256. package/dist/gateway/static/root/assets/sessions-page-gmEOYNb4.js +0 -1
  257. package/dist/gateway/static/root/assets/settings-advanced-gate-DYYoJcl7.js +0 -1
  258. package/dist/gateway/static/root/assets/setup-status-panel-BhenBnUj.js +0 -1
  259. package/dist/gateway/static/root/assets/shares-settings-Dq7xIj0_.js +0 -1
  260. package/dist/gateway/static/root/assets/skill-reload-api-MDI9Lz6z.js +0 -1
  261. package/dist/gateway/static/root/assets/task-detail-page-P0_RldWv.js +0 -1
  262. package/dist/gateway/static/root/assets/user-model-page-CxfnoRVn.js +0 -2
  263. package/dist/gateway/static/root/assets/workflows-page-Bxn2Dc16.js +0 -5
  264. package/dist/src/agent/tools/browser-recipe-tool.d.ts +0 -12
  265. package/dist/src/agent/tools/browser-recipe-tool.js +0 -113
  266. package/dist/src/browser/actions/extension-registry-bridge.d.ts +0 -5
  267. package/dist/src/browser/actions/extension-registry-bridge.js +0 -312
  268. package/dist/src/browser/actions/registry.d.ts +0 -5
  269. package/dist/src/browser/actions/registry.js +0 -741
  270. package/dist/src/browser/actions/types.d.ts +0 -65
  271. package/dist/src/browser/backend-from-config.d.ts +0 -22
  272. package/dist/src/browser/backend-from-config.js +0 -99
  273. package/dist/src/browser/browser-command-timeout.d.ts +0 -2
  274. package/dist/src/browser/browser-command-timeout.js +0 -11
  275. package/dist/src/browser/cdp-local-launcher.d.ts +0 -35
  276. package/dist/src/browser/cdp-local-launcher.js +0 -154
  277. package/dist/src/browser/cdp-supervisor.d.ts +0 -58
  278. package/dist/src/browser/cdp-supervisor.js +0 -133
  279. package/dist/src/browser/humanize.d.ts +0 -80
  280. package/dist/src/browser/humanize.js +0 -363
  281. package/dist/src/browser/manager.d.ts +0 -50
  282. package/dist/src/browser/manager.js +0 -251
  283. package/dist/src/browser/pipeline/output.d.ts +0 -35
  284. package/dist/src/browser/pipeline/output.js +0 -74
  285. package/dist/src/browser/pipeline/runner.d.ts +0 -27
  286. package/dist/src/browser/pipeline/runner.js +0 -453
  287. package/dist/src/browser/pipeline/schema.d.ts +0 -42
  288. package/dist/src/browser/pipeline/schema.js +0 -116
  289. package/dist/src/browser/pipeline/template.d.ts +0 -30
  290. package/dist/src/browser/pipeline/template.js +0 -112
  291. package/dist/src/browser/providers/cloakbrowser.d.ts +0 -83
  292. package/dist/src/browser/providers/cloakbrowser.js +0 -612
  293. package/dist/src/browser/recipes/index.js +0 -3
  294. package/dist/src/browser/recipes/repository.d.ts +0 -13
  295. package/dist/src/browser/recipes/repository.js +0 -81
  296. package/dist/src/browser/recipes/runtime-service.d.ts +0 -6
  297. package/dist/src/browser/recipes/runtime-service.js +0 -30
  298. package/dist/src/browser/recipes/service.d.ts +0 -36
  299. package/dist/src/browser/recipes/service.js +0 -186
  300. package/dist/src/browser/recipes/types.d.ts +0 -36
  301. package/dist/src/browser/schemas.d.ts +0 -53
  302. package/dist/src/browser/schemas.js +0 -68
  303. package/dist/src/browser/session-lifecycle.d.ts +0 -40
  304. package/dist/src/browser/session-lifecycle.js +0 -136
  305. package/dist/src/browser/snapshot-helpers.d.ts +0 -24
  306. package/dist/src/browser/snapshot-helpers.js +0 -70
  307. package/dist/src/browser/stealth.d.ts +0 -46
  308. package/dist/src/browser/stealth.js +0 -163
  309. package/dist/src/gateway/hono/routes/browser-workflows.d.ts +0 -3
  310. package/dist/src/gateway/hono/routes/browser-workflows.js +0 -78
  311. /package/dist/src/browser/{actions → automations}/types.js +0 -0
  312. /package/dist/src/browser/{recipes/types.js → drivers/browser-driver.js} +0 -0
@@ -0,0 +1,150 @@
1
+ import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
+ import { z } from "zod";
3
+ //#region src/platform/contracts.ts
4
+ var identifier, sha256, exactVersion, PlatformCapabilitySchema, PlatformDiscoverySchema, PlatformConfigSchema, agentDependency, AgentManifestSchema, PlatformEventSchema;
5
+ var init_contracts = __esmMin((() => {
6
+ identifier = z.string().min(1).max(128).regex(/^[A-Za-z0-9][A-Za-z0-9._:-]*$/);
7
+ sha256 = z.string().regex(/^[a-f0-9]{64}$/);
8
+ exactVersion = z.string().regex(/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/);
9
+ PlatformCapabilitySchema = z.enum([
10
+ "models",
11
+ "connectors",
12
+ "tunnels",
13
+ "shares",
14
+ "managedRuntime",
15
+ "runtimeFleet",
16
+ "traceUpload",
17
+ "a2a"
18
+ ]);
19
+ PlatformDiscoverySchema = z.object({
20
+ schemaVersion: z.literal("1"),
21
+ platformId: identifier,
22
+ displayName: z.string().min(1).max(120),
23
+ deploymentMode: z.enum([
24
+ "cloud",
25
+ "private",
26
+ "development"
27
+ ]),
28
+ region: identifier,
29
+ endpoints: z.object({
30
+ authorizationServer: z.string().url(),
31
+ controlApi: z.string().url(),
32
+ modelApi: z.string().url().optional(),
33
+ storeApi: z.string().url().optional(),
34
+ tunnelApi: z.string().url().optional(),
35
+ shareApi: z.string().url().optional(),
36
+ agentApi: z.string().url().optional(),
37
+ a2aApi: z.string().url().optional(),
38
+ realtime: z.string().url().optional()
39
+ }).strict(),
40
+ capabilities: z.record(PlatformCapabilitySchema, z.boolean()),
41
+ protocols: z.object({
42
+ xopc: z.object({
43
+ min: z.string().min(1),
44
+ max: z.string().min(1)
45
+ }).strict(),
46
+ mcp: z.array(z.string().min(1)).default([]),
47
+ a2a: z.array(z.string().min(1)).default([])
48
+ }).strict()
49
+ }).strict();
50
+ PlatformConfigSchema = z.discriminatedUnion("mode", [z.object({ mode: z.literal("standalone") }).strict(), z.object({
51
+ mode: z.literal("connected"),
52
+ url: z.string().url(),
53
+ workspaceId: identifier.optional(),
54
+ discovery: PlatformDiscoverySchema
55
+ }).strict()]).default({ mode: "standalone" });
56
+ agentDependency = z.object({
57
+ id: identifier,
58
+ version: exactVersion,
59
+ sha256: sha256.optional()
60
+ }).strict();
61
+ AgentManifestSchema = z.object({
62
+ schemaVersion: z.literal("1"),
63
+ agentId: identifier,
64
+ version: exactVersion,
65
+ runtime: z.object({
66
+ engine: z.literal("xopc"),
67
+ requires: z.string().min(1),
68
+ execution: z.array(z.enum([
69
+ "local",
70
+ "managed",
71
+ "enterprise"
72
+ ])).min(1)
73
+ }).strict(),
74
+ entry: z.object({
75
+ instructions: z.string().min(1),
76
+ workflow: z.string().min(1).optional()
77
+ }).strict(),
78
+ models: z.object({
79
+ intents: z.array(z.enum([
80
+ "fast",
81
+ "reasoning",
82
+ "coding",
83
+ "review",
84
+ "vision",
85
+ "understanding"
86
+ ])),
87
+ allow: z.array(z.string().min(1))
88
+ }).strict(),
89
+ dependencies: z.object({
90
+ skills: z.array(agentDependency),
91
+ connectors: z.array(agentDependency),
92
+ extensions: z.array(agentDependency).default([])
93
+ }).strict(),
94
+ permissions: z.object({
95
+ tools: z.array(z.string().min(1)),
96
+ networkDomains: z.array(z.string().min(1)),
97
+ filesystem: z.array(z.string().min(1)),
98
+ effects: z.array(z.enum([
99
+ "read",
100
+ "write",
101
+ "send",
102
+ "execute",
103
+ "delete",
104
+ "purchase",
105
+ "publish",
106
+ "admin"
107
+ ]))
108
+ }).strict(),
109
+ data: z.object({
110
+ classification: z.enum([
111
+ "public",
112
+ "internal",
113
+ "confidential",
114
+ "restricted"
115
+ ]),
116
+ memory: z.enum([
117
+ "none",
118
+ "local",
119
+ "workspace"
120
+ ]),
121
+ retentionPolicy: identifier
122
+ }).strict(),
123
+ quality: z.object({
124
+ evaluationSuite: identifier.optional(),
125
+ releaseGate: identifier.optional()
126
+ }).strict()
127
+ }).strict();
128
+ PlatformEventSchema = z.object({
129
+ schemaVersion: z.literal("1"),
130
+ eventId: identifier,
131
+ type: z.string().min(1).max(160).regex(/^xopc\.[a-z0-9_.-]+$/),
132
+ time: z.string().datetime(),
133
+ organizationId: identifier,
134
+ workspaceId: identifier,
135
+ runId: identifier.optional(),
136
+ traceId: identifier.optional(),
137
+ sequence: z.number().int().nonnegative().optional(),
138
+ producer: identifier,
139
+ payload: z.record(z.string(), z.unknown())
140
+ }).strict().superRefine((event, context) => {
141
+ if (event.runId && event.sequence === void 0) context.addIssue({
142
+ code: z.ZodIssueCode.custom,
143
+ message: "Run events require a sequence",
144
+ path: ["sequence"]
145
+ });
146
+ });
147
+ }));
148
+ //#endregion
149
+ init_contracts();
150
+ export { AgentManifestSchema, PlatformCapabilitySchema, PlatformConfigSchema, PlatformDiscoverySchema, PlatformEventSchema, init_contracts };
@@ -0,0 +1,4 @@
1
+ export * from './contracts.js';
2
+ export * from './client.js';
3
+ export * from './worker.js';
4
+ export * from './resolution.js';
@@ -0,0 +1,9 @@
1
+ import { AgentManifestSchema, PlatformCapabilitySchema, PlatformConfigSchema, PlatformDiscoverySchema, PlatformEventSchema, init_contracts } from "./contracts.js";
2
+ import { init_resolution, resolveConnectedPlatformDiscovery, resolveConnectedPlatformEndpoint, setActivePlatformDiscovery } from "./resolution.js";
3
+ import { PLATFORM_RUNTIME_PROFILE, PLATFORM_RUNTIME_PROVIDER, PlatformRuntimeClient, RuntimeCommandSchema, discoverPlatform } from "./client.js";
4
+ import { processRuntimeCommand } from "./worker.js";
5
+ //#region src/platform/index.ts
6
+ init_contracts();
7
+ init_resolution();
8
+ //#endregion
9
+ export { AgentManifestSchema, PLATFORM_RUNTIME_PROFILE, PLATFORM_RUNTIME_PROVIDER, PlatformCapabilitySchema, PlatformConfigSchema, PlatformDiscoverySchema, PlatformEventSchema, PlatformRuntimeClient, RuntimeCommandSchema, discoverPlatform, processRuntimeCommand, resolveConnectedPlatformDiscovery, resolveConnectedPlatformEndpoint, setActivePlatformDiscovery };
@@ -0,0 +1,4 @@
1
+ import type { PlatformDiscovery } from './contracts.js';
2
+ export declare function setActivePlatformDiscovery(discovery: PlatformDiscovery | undefined): void;
3
+ export declare function resolveConnectedPlatformDiscovery(): PlatformDiscovery | undefined;
4
+ export declare function resolveConnectedPlatformEndpoint(endpoint: keyof PlatformDiscovery['endpoints']): string | undefined;
@@ -0,0 +1,16 @@
1
+ import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
+ //#region src/platform/resolution.ts
3
+ function setActivePlatformDiscovery(discovery) {
4
+ activeDiscovery = discovery;
5
+ }
6
+ function resolveConnectedPlatformDiscovery() {
7
+ return activeDiscovery;
8
+ }
9
+ function resolveConnectedPlatformEndpoint(endpoint) {
10
+ return resolveConnectedPlatformDiscovery()?.endpoints[endpoint];
11
+ }
12
+ var activeDiscovery;
13
+ var init_resolution = __esmMin((() => {}));
14
+ //#endregion
15
+ init_resolution();
16
+ export { init_resolution, resolveConnectedPlatformDiscovery, resolveConnectedPlatformEndpoint, setActivePlatformDiscovery };
@@ -0,0 +1,6 @@
1
+ import { PlatformRuntimeClient, type RuntimeCommand } from './client.js';
2
+ export interface RuntimeExecutionResult {
3
+ output?: unknown;
4
+ }
5
+ export type RuntimeCommandHandler = (command: RuntimeCommand, signal: AbortSignal) => Promise<RuntimeExecutionResult>;
6
+ export declare function processRuntimeCommand(client: PlatformRuntimeClient, handler: RuntimeCommandHandler): Promise<'idle' | 'completed' | 'failed' | 'cancelled'>;
@@ -0,0 +1,75 @@
1
+ import { randomUUID } from "node:crypto";
2
+ //#region src/platform/worker.ts
3
+ var RuntimeCancellation = class extends Error {
4
+ constructor() {
5
+ super("Run cancellation requested by platform");
6
+ this.name = "RuntimeCancellation";
7
+ }
8
+ };
9
+ function commandIdentity(command) {
10
+ const { organizationId, workspaceId, traceId, runtimeId } = command.payload;
11
+ if ([
12
+ organizationId,
13
+ workspaceId,
14
+ traceId,
15
+ runtimeId
16
+ ].some((value) => typeof value !== "string" || value.length === 0)) throw new Error("Runtime command is missing tenant or trace identity");
17
+ return {
18
+ organizationId,
19
+ workspaceId,
20
+ traceId,
21
+ runtimeId
22
+ };
23
+ }
24
+ function event(command, type, sequence, payload) {
25
+ const identity = commandIdentity(command);
26
+ return {
27
+ schemaVersion: "1",
28
+ eventId: `event_${randomUUID()}`,
29
+ type,
30
+ time: (/* @__PURE__ */ new Date()).toISOString(),
31
+ organizationId: identity.organizationId,
32
+ workspaceId: identity.workspaceId,
33
+ runId: command.runId,
34
+ traceId: identity.traceId,
35
+ sequence,
36
+ producer: identity.runtimeId,
37
+ payload
38
+ };
39
+ }
40
+ async function processRuntimeCommand(client, handler) {
41
+ const command = await client.lease();
42
+ if (!command) return "idle";
43
+ await client.report(event(command, "xopc.run.started", 1, {}), command.leaseToken);
44
+ const controller = new AbortController();
45
+ let renewing = false;
46
+ let renewalInFlight = Promise.resolve();
47
+ const renewalIntervalMs = Math.max(1e3, Math.min(3e4, Math.floor((command.leaseExpiresAt - Date.now()) / 3)));
48
+ const renewal = setInterval(() => {
49
+ if (renewing || controller.signal.aborted) return;
50
+ renewing = true;
51
+ renewalInFlight = client.renew(command.id, command.leaseToken).then((result) => {
52
+ if (result.cancelRequested) controller.abort(new RuntimeCancellation());
53
+ }).catch((error) => controller.abort(error)).finally(() => {
54
+ renewing = false;
55
+ });
56
+ }, renewalIntervalMs);
57
+ renewal.unref?.();
58
+ try {
59
+ const result = await handler(command, controller.signal);
60
+ await renewalInFlight;
61
+ if (controller.signal.aborted) throw controller.signal.reason;
62
+ await client.report(event(command, "xopc.run.succeeded", 2, { output: result.output }), command.leaseToken);
63
+ return "completed";
64
+ } catch (error) {
65
+ const effectiveError = controller.signal.aborted ? controller.signal.reason : error;
66
+ const cancelled = effectiveError instanceof RuntimeCancellation;
67
+ await client.report(event(command, cancelled ? "xopc.run.cancelled" : "xopc.run.failed", 2, cancelled ? {} : { error: effectiveError instanceof Error ? effectiveError.message : "Runtime command failed" }), command.leaseToken);
68
+ return cancelled ? "cancelled" : "failed";
69
+ } finally {
70
+ clearInterval(renewal);
71
+ await renewalInFlight;
72
+ }
73
+ }
74
+ //#endregion
75
+ export { processRuntimeCommand };
@@ -1,10 +1,12 @@
1
1
  import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
+ import { init_resolution, resolveConnectedPlatformEndpoint } from "../platform/resolution.js";
2
3
  //#region src/providers/xopc-cloud-config.ts
3
4
  function resolveXopcModelRouterUrl(override) {
4
- return (override ?? process.env.XOPC_MODEL_ROUTER_URL ?? "https://router.xopc.ai/v1").replace(/\/+$/, "");
5
+ return (override ?? process.env.XOPC_MODEL_ROUTER_URL ?? resolveConnectedPlatformEndpoint("modelApi") ?? "https://router.xopc.ai/v1").replace(/\/+$/, "");
5
6
  }
6
7
  var XOPC_CLOUD_PROVIDER_ID, DEFAULT_XOPC_MODEL_ROUTER_URL;
7
8
  var init_xopc_cloud_config = __esmMin((() => {
9
+ init_resolution();
8
10
  XOPC_CLOUD_PROVIDER_ID = "xopc-cloud";
9
11
  DEFAULT_XOPC_MODEL_ROUTER_URL = "https://router.xopc.ai/v1";
10
12
  }));
@@ -127,6 +127,46 @@ function toolCallIds(message) {
127
127
  }
128
128
  return ids;
129
129
  }
130
+ function browserToolCallIds(messages) {
131
+ const ids = /* @__PURE__ */ new Set();
132
+ for (const message of messages) {
133
+ if (message.role !== "assistant") continue;
134
+ const content = message.content;
135
+ if (!Array.isArray(content)) continue;
136
+ for (const block of content) {
137
+ const record = asRecord(block);
138
+ if (!record || stringValue(record.name) !== "browser_use") continue;
139
+ const id = toolCallIdFromBlock(record);
140
+ if (id) ids.add(id);
141
+ }
142
+ }
143
+ return ids;
144
+ }
145
+ /** Keep semantic browser text throughout history, but only the newest browser screenshot. */
146
+ function projectBrowserVisualContext(messages) {
147
+ const browserIds = browserToolCallIds(messages);
148
+ let latestVisualIndex = -1;
149
+ for (let index = 0; index < messages.length; index += 1) {
150
+ const message = messages[index];
151
+ if (!browserIds.has(toolResultId(message) ?? "")) continue;
152
+ const content = message.content;
153
+ if (Array.isArray(content) && content.some((block) => asRecord(block)?.type === "image")) latestVisualIndex = index;
154
+ }
155
+ if (latestVisualIndex < 0) return messages;
156
+ return messages.map((message, index) => {
157
+ if (index === latestVisualIndex || !browserIds.has(toolResultId(message) ?? "")) return message;
158
+ const record = message;
159
+ if (!Array.isArray(record.content)) return message;
160
+ const content = record.content.map((block) => asRecord(block)?.type === "image" ? {
161
+ type: "text",
162
+ text: "[Earlier browser screenshot omitted; semantic observation retained.]"
163
+ } : block);
164
+ return {
165
+ ...record,
166
+ content
167
+ };
168
+ });
169
+ }
130
170
  function filterAssistantToolCalls(message, pairedIds) {
131
171
  const record = message;
132
172
  const content = record.content;
@@ -257,7 +297,7 @@ function buildSessionContextForLlm(rows) {
257
297
  }
258
298
  if (isLikelyAgentMessage(r)) out.push(r);
259
299
  }
260
- return sanitizeToolPairs(out);
300
+ return projectBrowserVisualContext(sanitizeToolPairs(out));
261
301
  }
262
302
  /** Visible chat messages only - no LLM-only audit/context expansion. */
263
303
  function buildSessionDisplayMessages(rows) {
@@ -1,5 +1,6 @@
1
1
  import { requireXopcDatabase } from "../storage/sqlite/connection.js";
2
2
  import { runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
3
+ import { init_resolution, resolveConnectedPlatformEndpoint } from "../platform/resolution.js";
3
4
  import { CredentialResolver, init_credentials } from "../auth/credentials.js";
4
5
  import { DurableState } from "../storage/sqlite/durable-state.js";
5
6
  import { resolveMediaReference } from "../media/media-reference.js";
@@ -11,6 +12,7 @@ import { createHash, randomBytes, randomUUID } from "node:crypto";
11
12
  import { readFile, stat } from "node:fs/promises";
12
13
  //#region src/share/hosted-session-share.ts
13
14
  init_credentials();
15
+ init_resolution();
14
16
  const DEFAULT_SHARE_URL = "https://share.xopc.ai";
15
17
  const MAX_MESSAGES = 1e4;
16
18
  const MAX_ATTACHMENTS = 20;
@@ -105,7 +107,7 @@ var HostedSessionShareBuilder = class {
105
107
  };
106
108
  var HostedSessionSharePublisher = class {
107
109
  baseUrl;
108
- constructor(baseUrl = process.env.XOPC_SHARE_URL ?? DEFAULT_SHARE_URL, credentials = new CredentialResolver(), fetchImpl = fetch) {
110
+ constructor(baseUrl = process.env.XOPC_SHARE_URL ?? resolveConnectedPlatformEndpoint("shareApi") ?? DEFAULT_SHARE_URL, credentials = new CredentialResolver(), fetchImpl = fetch) {
109
111
  this.credentials = credentials;
110
112
  this.fetchImpl = fetchImpl;
111
113
  this.baseUrl = baseUrl.replace(/\/+$/, "");
@@ -14,7 +14,7 @@ import { mkdir, readFile, stat, unlink, writeFile } from "node:fs/promises";
14
14
  * Responsibilities:
15
15
  * - Render a 1200x630 jpeg preview for shareable artefacts.
16
16
  * - HTML / sites: launch its own Playwright browser (does NOT share the user
17
- * BrowserManager — the user-facing browser is for the agent and we mustn't
17
+ * Browser Control runtime — the user-facing browser is for the agent and we mustn't
18
18
  * pollute its context).
19
19
  * - Images: pass through with size cap; downscale only if oversized.
20
20
  * - Anything else: emit an SVG placeholder card with the file name + icon.
@@ -0,0 +1,45 @@
1
+ DROP TABLE IF EXISTS browser_recipe_run_events;
2
+ DROP TABLE IF EXISTS browser_recipe_runs;
3
+ DROP TABLE IF EXISTS browser_recipes;
4
+
5
+ CREATE TABLE IF NOT EXISTS browser_automations (
6
+ automation_id TEXT PRIMARY KEY,
7
+ revision INTEGER NOT NULL,
8
+ status TEXT NOT NULL CHECK (status IN ('enabled', 'disabled')),
9
+ definition_json TEXT NOT NULL,
10
+ created_at_ms INTEGER NOT NULL,
11
+ updated_at_ms INTEGER NOT NULL
12
+ );
13
+
14
+ CREATE TABLE IF NOT EXISTS browser_automation_runs (
15
+ run_id TEXT PRIMARY KEY,
16
+ automation_id TEXT NOT NULL,
17
+ automation_revision INTEGER NOT NULL,
18
+ definition_json TEXT NOT NULL,
19
+ status TEXT NOT NULL CHECK (status IN ('queued', 'running', 'succeeded', 'failed', 'cancelled')),
20
+ inputs_json TEXT NOT NULL,
21
+ result_json TEXT,
22
+ error TEXT,
23
+ created_at_ms INTEGER NOT NULL,
24
+ started_at_ms INTEGER,
25
+ ended_at_ms INTEGER,
26
+ duration_ms INTEGER,
27
+ FOREIGN KEY (automation_id) REFERENCES browser_automations(automation_id) ON DELETE CASCADE
28
+ );
29
+
30
+ CREATE INDEX IF NOT EXISTS idx_browser_automation_runs_automation_created
31
+ ON browser_automation_runs(automation_id, created_at_ms DESC);
32
+
33
+ CREATE TABLE IF NOT EXISTS browser_action_audit (
34
+ event_id TEXT PRIMARY KEY,
35
+ run_id TEXT NOT NULL,
36
+ seq INTEGER NOT NULL,
37
+ type TEXT NOT NULL,
38
+ data_json TEXT,
39
+ created_at_ms INTEGER NOT NULL,
40
+ UNIQUE(run_id, seq),
41
+ FOREIGN KEY (run_id) REFERENCES browser_automation_runs(run_id) ON DELETE CASCADE
42
+ );
43
+
44
+ CREATE INDEX IF NOT EXISTS idx_browser_action_audit_run_seq
45
+ ON browser_action_audit(run_id, seq ASC);
@@ -3,7 +3,7 @@ import type { ApplyMigrationsOptions } from './types.js';
3
3
  /** Baseline schema version applied from schema.sql on first open. */
4
4
  export declare const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
5
5
  /** Latest schema version this release supports (increment when adding migrations). */
6
- export declare const XOPC_DB_SCHEMA_VERSION = 152;
6
+ export declare const XOPC_DB_SCHEMA_VERSION = 153;
7
7
  export declare function resolveMigrationsDir(override?: string): string;
8
8
  /**
9
9
  * Apply sequential SQL migrations from (currentVersion + 1) through targetVersion.
@@ -12,7 +12,7 @@ const log = createLogger("Sqlite:Migrations");
12
12
  /** Baseline schema version applied from schema.sql on first open. */
13
13
  const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
14
14
  /** Latest schema version this release supports (increment when adding migrations). */
15
- const XOPC_DB_SCHEMA_VERSION = 152;
15
+ const XOPC_DB_SCHEMA_VERSION = 153;
16
16
  const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
17
17
  function backupBeforeTaskCutover(db, databasePath) {
18
18
  db.exec("PRAGMA wal_checkpoint(FULL)");
@@ -57,7 +57,7 @@ function applySingleMigration(db, migration) {
57
57
  * Each step runs in its own transaction and updates schema_meta on success.
58
58
  */
59
59
  function applyPendingMigrations(db, options = {}) {
60
- const targetVersion = options.targetVersion ?? 152;
60
+ const targetVersion = options.targetVersion ?? 153;
61
61
  let currentVersion = readSchemaVersion(db);
62
62
  if (currentVersion > targetVersion) throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);
63
63
  if (currentVersion >= targetVersion) return currentVersion;
@@ -94,7 +94,7 @@ function applyPendingMigrations(db, options = {}) {
94
94
  }
95
95
  /** Inspect schema version without mutating the database. */
96
96
  function inspectSchemaMigrationStatus(db, options = {}) {
97
- const appVersion = options.targetVersion ?? 152;
97
+ const appVersion = options.targetVersion ?? 153;
98
98
  const dbVersion = readSchemaVersion(db);
99
99
  if (dbVersion > appVersion) return {
100
100
  dbVersion,
@@ -19,7 +19,7 @@ const log = createLogger('Sqlite:Migrations');
19
19
  export const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
20
20
 
21
21
  /** Latest schema version this release supports (increment when adding migrations). */
22
- export const XOPC_DB_SCHEMA_VERSION = 152;
22
+ export const XOPC_DB_SCHEMA_VERSION = 153;
23
23
 
24
24
  const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
25
25
 
@@ -32,7 +32,7 @@ function ensureXopcDatabaseSchema(db, options = {}) {
32
32
  currentVersion = 11;
33
33
  }
34
34
  applyPendingMigrations(db, {
35
- targetVersion: 152,
35
+ targetVersion: 153,
36
36
  databasePath: options.databasePath
37
37
  });
38
38
  }
@@ -756,39 +756,35 @@ CREATE TABLE IF NOT EXISTS goal_session_links (
756
756
  CREATE INDEX IF NOT EXISTS idx_goal_session_links_session
757
757
  ON goal_session_links(session_key, linked_at DESC);
758
758
 
759
- CREATE TABLE IF NOT EXISTS browser_recipes (
760
- recipe_id TEXT PRIMARY KEY,
759
+ CREATE TABLE IF NOT EXISTS browser_automations (
760
+ automation_id TEXT PRIMARY KEY,
761
761
  revision INTEGER NOT NULL,
762
- name TEXT NOT NULL,
763
- description TEXT,
764
- status TEXT NOT NULL CHECK (status IN ('published', 'disabled')),
765
- yaml_source TEXT NOT NULL,
766
- risk_level TEXT NOT NULL CHECK (risk_level IN ('read_only', 'account_write', 'sensitive')),
767
- domains_json TEXT NOT NULL,
762
+ status TEXT NOT NULL CHECK (status IN ('enabled', 'disabled')),
763
+ definition_json TEXT NOT NULL,
768
764
  created_at_ms INTEGER NOT NULL,
769
765
  updated_at_ms INTEGER NOT NULL
770
766
  );
771
767
 
772
- CREATE TABLE IF NOT EXISTS browser_recipe_runs (
768
+ CREATE TABLE IF NOT EXISTS browser_automation_runs (
773
769
  run_id TEXT PRIMARY KEY,
774
- recipe_id TEXT NOT NULL,
775
- recipe_revision INTEGER NOT NULL,
776
- recipe_yaml TEXT NOT NULL,
770
+ automation_id TEXT NOT NULL,
771
+ automation_revision INTEGER NOT NULL,
772
+ definition_json TEXT NOT NULL,
777
773
  status TEXT NOT NULL CHECK (status IN ('queued', 'running', 'succeeded', 'failed', 'cancelled')),
778
- args_json TEXT NOT NULL,
774
+ inputs_json TEXT NOT NULL,
779
775
  result_json TEXT,
780
776
  error TEXT,
781
777
  created_at_ms INTEGER NOT NULL,
782
778
  started_at_ms INTEGER,
783
779
  ended_at_ms INTEGER,
784
780
  duration_ms INTEGER,
785
- FOREIGN KEY (recipe_id) REFERENCES browser_recipes(recipe_id) ON DELETE CASCADE
781
+ FOREIGN KEY (automation_id) REFERENCES browser_automations(automation_id) ON DELETE CASCADE
786
782
  );
787
783
 
788
- CREATE INDEX IF NOT EXISTS idx_browser_recipe_runs_recipe_created
789
- ON browser_recipe_runs(recipe_id, created_at_ms DESC);
784
+ CREATE INDEX IF NOT EXISTS idx_browser_automation_runs_automation_created
785
+ ON browser_automation_runs(automation_id, created_at_ms DESC);
790
786
 
791
- CREATE TABLE IF NOT EXISTS browser_recipe_run_events (
787
+ CREATE TABLE IF NOT EXISTS browser_action_audit (
792
788
  event_id TEXT PRIMARY KEY,
793
789
  run_id TEXT NOT NULL,
794
790
  seq INTEGER NOT NULL,
@@ -796,8 +792,8 @@ CREATE TABLE IF NOT EXISTS browser_recipe_run_events (
796
792
  data_json TEXT,
797
793
  created_at_ms INTEGER NOT NULL,
798
794
  UNIQUE(run_id, seq),
799
- FOREIGN KEY (run_id) REFERENCES browser_recipe_runs(run_id) ON DELETE CASCADE
795
+ FOREIGN KEY (run_id) REFERENCES browser_automation_runs(run_id) ON DELETE CASCADE
800
796
  );
801
797
 
802
- CREATE INDEX IF NOT EXISTS idx_browser_recipe_run_events_run_seq
803
- ON browser_recipe_run_events(run_id, seq ASC);
798
+ CREATE INDEX IF NOT EXISTS idx_browser_action_audit_run_seq
799
+ ON browser_action_audit(run_id, seq ASC);
@@ -34,7 +34,7 @@ function triggerLabel(automation) {
34
34
  }
35
35
  function actionLabel(automation) {
36
36
  if (automation.action.kind === "workflow") return `workflow:${automation.action.workflowId}`;
37
- if (automation.action.kind === "browser_recipe") return `browser-workflow:${automation.action.recipeId}`;
37
+ if (automation.action.kind === "browser_automation") return `browser-automation:${automation.action.automationId}`;
38
38
  if (automation.action.kind === "task_command") return `task:${automation.action.command.type}`;
39
39
  return automation.action.agentId ? `agent:${automation.action.agentId}` : "agent";
40
40
  }
@@ -1,4 +1,6 @@
1
+ import { init_resolution, resolveConnectedPlatformEndpoint } from "../platform/resolution.js";
1
2
  //#region src/tunnel/env.ts
3
+ init_resolution();
2
4
  const DEV_REGISTRATION_SECRET = "dev-registration-secret";
3
5
  const TUNNEL_REGISTRATION_SECRET_REQUIRED_CODE = "TUNNEL_REGISTRATION_SECRET_REQUIRED";
4
6
  var TunnelRegistrationSecretError = class extends Error {
@@ -75,7 +77,7 @@ function resolveTunnelRegistrationSecret(brokerUrl, configSecret) {
75
77
  throw new TunnelRegistrationSecretError(brokerUrl);
76
78
  }
77
79
  function resolveTunnelBrokerUrl(configBrokerUrl, env = process.env) {
78
- return env.XOPC_TUNNEL_BROKER_URL ?? configBrokerUrl ?? "https://frp.xopc.ai/api";
80
+ return env.XOPC_TUNNEL_BROKER_URL ?? resolveConnectedPlatformEndpoint("tunnelApi") ?? configBrokerUrl ?? "https://frp.xopc.ai/api";
79
81
  }
80
82
  //#endregion
81
83
  export { TUNNEL_REGISTRATION_SECRET_REQUIRED_CODE, TunnelRegistrationSecretError, getTunnelRegistrationSecretMeta, isLocalDevelopmentTunnelBroker, isMaskedTunnelSecretPatchValue, maskTunnelSecretForWeb, readTunnelRegistrationSecretFromConfigOnly, resolveOptionalTunnelRegistrationSecret, resolveTunnelBrokerUrl, resolveTunnelRegistrationSecret, tunnelRegistrationSecretRequiredMessage };
@@ -305,7 +305,6 @@ function createAgentVoiceEngine(options) {
305
305
  }
306
306
  turn.start(event.utteranceId);
307
307
  }
308
- if (claim.request.purpose === "conversation" && claim.config.voice?.realtime?.bargeIn && !activeResponse?.awaitingClarification) cancelActiveResponse("barge_in");
309
308
  send("input.speech_started", { utteranceId: event.utteranceId });
310
309
  }
311
310
  if (event.type === "speech_stopped") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xopcai/xopc",
3
- "version": "0.0.250",
3
+ "version": "0.0.252",
4
4
  "description": "Local-first personal AI assistant with reviewable user understanding, durable tasks, workflows, automations, and local or cloud models.",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -62,11 +62,10 @@
62
62
  },
63
63
  "homepage": "https://xopc.ai",
64
64
  "engines": {
65
- "node": ">=22.19.0"
65
+ "node": ">=22.22.3"
66
66
  },
67
67
  "dependencies": {
68
- "@composio/core": "0.14.1",
69
- "@composio/experimental": "0.2.0",
68
+ "@composio/core": "0.18.1",
70
69
  "@earendil-works/pi-agent-core": "0.85.1",
71
70
  "@earendil-works/pi-ai": "0.85.1",
72
71
  "@earendil-works/pi-coding-agent": "0.85.1",
@@ -149,8 +148,8 @@
149
148
  "esbuild": "^0.28.1",
150
149
  "eslint": "^10.4.0",
151
150
  "jsdom": "^29.1.1",
152
- "onnxruntime-common": "1.21.0",
153
151
  "node-pty": "1.1.0",
152
+ "onnxruntime-common": "1.21.0",
154
153
  "playwright-core": "^1.60.0",
155
154
  "sherpa-onnx-node": "1.13.4",
156
155
  "svgo": "4.0.2",
@@ -163,10 +162,11 @@
163
162
  "vitepress": "^1.6.4",
164
163
  "vitest": "4.1.5",
165
164
  "vue": "^3.5.35",
165
+ "@xopcai/browser-control-contract": "0.1.0",
166
166
  "@xopcai/endpoint-tools-protocol": "0.0.0",
167
- "@xopcai/realtime-client": "0.0.0",
168
167
  "@xopcai/realtime-protocol": "0.0.0",
169
- "@xopcai/gateway-contract": "0.0.0"
168
+ "@xopcai/gateway-contract": "0.0.0",
169
+ "@xopcai/realtime-client": "0.0.0"
170
170
  },
171
171
  "scripts": {
172
172
  "assets:brand": "node scripts/generate-brand-assets.mjs",