@vibesdotdev/control 0.0.0-stage → 1.0.0-rc.3

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 (523) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +90 -2
  3. package/dist/browser/browser.cloud.plugin.d.ts +21 -0
  4. package/dist/browser/browser.cloud.plugin.d.ts.map +1 -0
  5. package/dist/browser/browser.cloud.plugin.js +37 -0
  6. package/dist/browser/browser.cloud.plugin.js.map +1 -0
  7. package/dist/browser/browser.consumer.plugin.d.ts +4 -0
  8. package/dist/browser/browser.consumer.plugin.d.ts.map +1 -0
  9. package/dist/browser/browser.consumer.plugin.js +77 -0
  10. package/dist/browser/browser.consumer.plugin.js.map +1 -0
  11. package/dist/browser/browser.plugin.d.ts +3 -0
  12. package/dist/browser/browser.plugin.d.ts.map +1 -0
  13. package/dist/browser/browser.plugin.js +3 -0
  14. package/dist/browser/browser.plugin.js.map +1 -0
  15. package/dist/browser/bun/webview.backend.d.ts +23 -0
  16. package/dist/browser/bun/webview.backend.d.ts.map +1 -0
  17. package/dist/browser/bun/webview.backend.js +262 -0
  18. package/dist/browser/bun/webview.backend.js.map +1 -0
  19. package/dist/browser/bun/webview.descriptor.d.ts +21 -0
  20. package/dist/browser/bun/webview.descriptor.d.ts.map +1 -0
  21. package/dist/browser/bun/webview.descriptor.js +21 -0
  22. package/dist/browser/bun/webview.descriptor.js.map +1 -0
  23. package/dist/browser/bun/webview.plugin.d.ts +3 -0
  24. package/dist/browser/bun/webview.plugin.d.ts.map +1 -0
  25. package/dist/browser/bun/webview.plugin.js +24 -0
  26. package/dist/browser/bun/webview.plugin.js.map +1 -0
  27. package/dist/browser/client/browser-client.d.ts +92 -0
  28. package/dist/browser/client/browser-client.d.ts.map +1 -0
  29. package/dist/browser/client/browser-client.js +138 -0
  30. package/dist/browser/client/browser-client.js.map +1 -0
  31. package/dist/browser/client/workspace-client.d.ts +29 -0
  32. package/dist/browser/client/workspace-client.d.ts.map +1 -0
  33. package/dist/browser/client/workspace-client.js +38 -0
  34. package/dist/browser/client/workspace-client.js.map +1 -0
  35. package/dist/browser/contracts.d.ts +246 -0
  36. package/dist/browser/contracts.d.ts.map +1 -0
  37. package/dist/browser/contracts.js +38 -0
  38. package/dist/browser/contracts.js.map +1 -0
  39. package/dist/browser/index.d.ts +6 -0
  40. package/dist/browser/index.d.ts.map +1 -0
  41. package/dist/browser/index.js +7 -0
  42. package/dist/browser/index.js.map +1 -0
  43. package/dist/browser/plugin.d.ts +3 -0
  44. package/dist/browser/plugin.d.ts.map +1 -0
  45. package/dist/browser/plugin.js +3 -0
  46. package/dist/browser/plugin.js.map +1 -0
  47. package/dist/browser/runtime/backend/kind.d.ts +23 -0
  48. package/dist/browser/runtime/backend/kind.d.ts.map +1 -0
  49. package/dist/browser/runtime/backend/kind.js +12 -0
  50. package/dist/browser/runtime/backend/kind.js.map +1 -0
  51. package/dist/browser/runtime/backend/playwright.descriptor.d.ts +20 -0
  52. package/dist/browser/runtime/backend/playwright.descriptor.d.ts.map +1 -0
  53. package/dist/browser/runtime/backend/playwright.descriptor.js +20 -0
  54. package/dist/browser/runtime/backend/playwright.descriptor.js.map +1 -0
  55. package/dist/browser/runtime/backend/resolve.d.ts +8 -0
  56. package/dist/browser/runtime/backend/resolve.d.ts.map +1 -0
  57. package/dist/browser/runtime/backend/resolve.js +43 -0
  58. package/dist/browser/runtime/backend/resolve.js.map +1 -0
  59. package/dist/browser/runtime/backend/types.d.ts +12 -0
  60. package/dist/browser/runtime/backend/types.d.ts.map +1 -0
  61. package/dist/browser/runtime/backend/types.js +12 -0
  62. package/dist/browser/runtime/backend/types.js.map +1 -0
  63. package/dist/browser/runtime/backends/playwright.backend.d.ts +71 -0
  64. package/dist/browser/runtime/backends/playwright.backend.d.ts.map +1 -0
  65. package/dist/browser/runtime/backends/playwright.backend.js +177 -0
  66. package/dist/browser/runtime/backends/playwright.backend.js.map +1 -0
  67. package/dist/browser/runtime/index.d.ts +3 -0
  68. package/dist/browser/runtime/index.d.ts.map +1 -0
  69. package/dist/browser/runtime/index.js +2 -0
  70. package/dist/browser/runtime/index.js.map +1 -0
  71. package/dist/browser/runtime/launcher.d.ts +18 -0
  72. package/dist/browser/runtime/launcher.d.ts.map +1 -0
  73. package/dist/browser/runtime/launcher.js +123 -0
  74. package/dist/browser/runtime/launcher.js.map +1 -0
  75. package/dist/browser/runtime/manager-host.d.ts +22 -0
  76. package/dist/browser/runtime/manager-host.d.ts.map +1 -0
  77. package/dist/browser/runtime/manager-host.js +102 -0
  78. package/dist/browser/runtime/manager-host.js.map +1 -0
  79. package/dist/browser/runtime/manager.context.d.ts +19 -0
  80. package/dist/browser/runtime/manager.context.d.ts.map +1 -0
  81. package/dist/browser/runtime/manager.context.descriptor.d.ts +30 -0
  82. package/dist/browser/runtime/manager.context.descriptor.d.ts.map +1 -0
  83. package/dist/browser/runtime/manager.context.descriptor.js +7 -0
  84. package/dist/browser/runtime/manager.context.descriptor.js.map +1 -0
  85. package/dist/browser/runtime/manager.context.impl.consumer.d.ts +6 -0
  86. package/dist/browser/runtime/manager.context.impl.consumer.d.ts.map +1 -0
  87. package/dist/browser/runtime/manager.context.impl.consumer.js +7 -0
  88. package/dist/browser/runtime/manager.context.impl.consumer.js.map +1 -0
  89. package/dist/browser/runtime/manager.context.js +19 -0
  90. package/dist/browser/runtime/manager.context.js.map +1 -0
  91. package/dist/browser/runtime/manager.d.ts +97 -0
  92. package/dist/browser/runtime/manager.d.ts.map +1 -0
  93. package/dist/browser/runtime/manager.js +731 -0
  94. package/dist/browser/runtime/manager.js.map +1 -0
  95. package/dist/browser/runtime/safe-url.d.ts +27 -0
  96. package/dist/browser/runtime/safe-url.d.ts.map +1 -0
  97. package/dist/browser/runtime/safe-url.js +77 -0
  98. package/dist/browser/runtime/safe-url.js.map +1 -0
  99. package/dist/browser/runtime/session-lease.d.ts +24 -0
  100. package/dist/browser/runtime/session-lease.d.ts.map +1 -0
  101. package/dist/browser/runtime/session-lease.js +65 -0
  102. package/dist/browser/runtime/session-lease.js.map +1 -0
  103. package/dist/browser/runtime/step-executor.d.ts +14 -0
  104. package/dist/browser/runtime/step-executor.d.ts.map +1 -0
  105. package/dist/browser/runtime/step-executor.js +97 -0
  106. package/dist/browser/runtime/step-executor.js.map +1 -0
  107. package/dist/browser/runtime/types.d.ts +54 -0
  108. package/dist/browser/runtime/types.d.ts.map +1 -0
  109. package/dist/browser/runtime/types.js +5 -0
  110. package/dist/browser/runtime/types.js.map +1 -0
  111. package/dist/browser/schemas/backend.d.ts +79 -0
  112. package/dist/browser/schemas/backend.d.ts.map +1 -0
  113. package/dist/browser/schemas/backend.js +33 -0
  114. package/dist/browser/schemas/backend.js.map +1 -0
  115. package/dist/browser/schemas/cli.d.ts +55 -0
  116. package/dist/browser/schemas/cli.d.ts.map +1 -0
  117. package/dist/browser/schemas/cli.js +37 -0
  118. package/dist/browser/schemas/cli.js.map +1 -0
  119. package/dist/browser/schemas/client.d.ts +28 -0
  120. package/dist/browser/schemas/client.d.ts.map +1 -0
  121. package/dist/browser/schemas/client.js +7 -0
  122. package/dist/browser/schemas/client.js.map +1 -0
  123. package/dist/browser/schemas/page.d.ts +71 -0
  124. package/dist/browser/schemas/page.d.ts.map +1 -0
  125. package/dist/browser/schemas/page.js +32 -0
  126. package/dist/browser/schemas/page.js.map +1 -0
  127. package/dist/browser/schemas/profile.d.ts +14 -0
  128. package/dist/browser/schemas/profile.d.ts.map +1 -0
  129. package/dist/browser/schemas/profile.js +14 -0
  130. package/dist/browser/schemas/profile.js.map +1 -0
  131. package/dist/browser/schemas/recipe.d.ts +218 -0
  132. package/dist/browser/schemas/recipe.d.ts.map +1 -0
  133. package/dist/browser/schemas/recipe.js +91 -0
  134. package/dist/browser/schemas/recipe.js.map +1 -0
  135. package/dist/browser/schemas/session.d.ts +42 -0
  136. package/dist/browser/schemas/session.d.ts.map +1 -0
  137. package/dist/browser/schemas/session.js +22 -0
  138. package/dist/browser/schemas/session.js.map +1 -0
  139. package/dist/browser/schemas/tab.d.ts +38 -0
  140. package/dist/browser/schemas/tab.d.ts.map +1 -0
  141. package/dist/browser/schemas/tab.js +20 -0
  142. package/dist/browser/schemas/tab.js.map +1 -0
  143. package/dist/browser/schemas/tool-card.d.ts +68 -0
  144. package/dist/browser/schemas/tool-card.d.ts.map +1 -0
  145. package/dist/browser/schemas/tool-card.js +29 -0
  146. package/dist/browser/schemas/tool-card.js.map +1 -0
  147. package/dist/browser/schemas/webview.d.ts +40 -0
  148. package/dist/browser/schemas/webview.d.ts.map +1 -0
  149. package/dist/browser/schemas/webview.js +5 -0
  150. package/dist/browser/schemas/webview.js.map +1 -0
  151. package/dist/browser/schemas/workspace.d.ts +8 -0
  152. package/dist/browser/schemas/workspace.d.ts.map +1 -0
  153. package/dist/browser/schemas/workspace.js +7 -0
  154. package/dist/browser/schemas/workspace.js.map +1 -0
  155. package/dist/browser/shared/ai-client.d.ts +26 -0
  156. package/dist/browser/shared/ai-client.d.ts.map +1 -0
  157. package/dist/browser/shared/ai-client.js +27 -0
  158. package/dist/browser/shared/ai-client.js.map +1 -0
  159. package/dist/browser/shared/ai-request.d.ts +26 -0
  160. package/dist/browser/shared/ai-request.d.ts.map +1 -0
  161. package/dist/browser/shared/ai-request.js +32 -0
  162. package/dist/browser/shared/ai-request.js.map +1 -0
  163. package/dist/browser/shared/cleanup.d.ts +5 -0
  164. package/dist/browser/shared/cleanup.d.ts.map +1 -0
  165. package/dist/browser/shared/cleanup.js +15 -0
  166. package/dist/browser/shared/cleanup.js.map +1 -0
  167. package/dist/browser/shared/constants.d.ts +19 -0
  168. package/dist/browser/shared/constants.d.ts.map +1 -0
  169. package/dist/browser/shared/constants.js +13 -0
  170. package/dist/browser/shared/constants.js.map +1 -0
  171. package/dist/browser/shared/json.d.ts +5 -0
  172. package/dist/browser/shared/json.d.ts.map +1 -0
  173. package/dist/browser/shared/json.js +3 -0
  174. package/dist/browser/shared/json.js.map +1 -0
  175. package/dist/browser/shared/paths.d.ts +33 -0
  176. package/dist/browser/shared/paths.d.ts.map +1 -0
  177. package/dist/browser/shared/paths.js +55 -0
  178. package/dist/browser/shared/paths.js.map +1 -0
  179. package/dist/browser/shared/steps.d.ts +82 -0
  180. package/dist/browser/shared/steps.d.ts.map +1 -0
  181. package/dist/browser/shared/steps.js +88 -0
  182. package/dist/browser/shared/steps.js.map +1 -0
  183. package/dist/browser/shared/storage-state.d.ts +23 -0
  184. package/dist/browser/shared/storage-state.d.ts.map +1 -0
  185. package/dist/browser/shared/storage-state.js +5 -0
  186. package/dist/browser/shared/storage-state.js.map +1 -0
  187. package/dist/browser/shared/tool-summary.d.ts +48 -0
  188. package/dist/browser/shared/tool-summary.d.ts.map +1 -0
  189. package/dist/browser/shared/tool-summary.js +183 -0
  190. package/dist/browser/shared/tool-summary.js.map +1 -0
  191. package/dist/browser/storage/browser-profile.record.descriptor.d.ts +28 -0
  192. package/dist/browser/storage/browser-profile.record.descriptor.d.ts.map +1 -0
  193. package/dist/browser/storage/browser-profile.record.descriptor.js +129 -0
  194. package/dist/browser/storage/browser-profile.record.descriptor.js.map +1 -0
  195. package/dist/browser/storage/browser-recipe.record.descriptor.d.ts +29 -0
  196. package/dist/browser/storage/browser-recipe.record.descriptor.d.ts.map +1 -0
  197. package/dist/browser/storage/browser-recipe.record.descriptor.js +103 -0
  198. package/dist/browser/storage/browser-recipe.record.descriptor.js.map +1 -0
  199. package/dist/browser/storage/browser-session.record.descriptor.d.ts +28 -0
  200. package/dist/browser/storage/browser-session.record.descriptor.d.ts.map +1 -0
  201. package/dist/browser/storage/browser-session.record.descriptor.js +147 -0
  202. package/dist/browser/storage/browser-session.record.descriptor.js.map +1 -0
  203. package/dist/browser/storage/browser-tab.record.descriptor.d.ts +28 -0
  204. package/dist/browser/storage/browser-tab.record.descriptor.d.ts.map +1 -0
  205. package/dist/browser/storage/browser-tab.record.descriptor.js +153 -0
  206. package/dist/browser/storage/browser-tab.record.descriptor.js.map +1 -0
  207. package/dist/browser/storage/database.d.ts +9 -0
  208. package/dist/browser/storage/database.d.ts.map +1 -0
  209. package/dist/browser/storage/database.js +16 -0
  210. package/dist/browser/storage/database.js.map +1 -0
  211. package/dist/browser/storage/index.d.ts +6 -0
  212. package/dist/browser/storage/index.d.ts.map +1 -0
  213. package/dist/browser/storage/index.js +5 -0
  214. package/dist/browser/storage/index.js.map +1 -0
  215. package/dist/browser/storage/types.d.ts +78 -0
  216. package/dist/browser/storage/types.d.ts.map +1 -0
  217. package/dist/browser/storage/types.js +5 -0
  218. package/dist/browser/storage/types.js.map +1 -0
  219. package/dist/browser/tools/cdp/implementation.d.ts +6 -0
  220. package/dist/browser/tools/cdp/implementation.d.ts.map +1 -0
  221. package/dist/browser/tools/cdp/implementation.js +20 -0
  222. package/dist/browser/tools/cdp/implementation.js.map +1 -0
  223. package/dist/browser/tools/control/implementation.d.ts +7 -0
  224. package/dist/browser/tools/control/implementation.d.ts.map +1 -0
  225. package/dist/browser/tools/control/implementation.js +185 -0
  226. package/dist/browser/tools/control/implementation.js.map +1 -0
  227. package/dist/browser/tools/control/prompts/index.d.ts +113 -0
  228. package/dist/browser/tools/control/prompts/index.d.ts.map +1 -0
  229. package/dist/browser/tools/control/prompts/index.js +5 -0
  230. package/dist/browser/tools/control/prompts/index.js.map +1 -0
  231. package/dist/browser/tools/control/prompts/plan-request.prompt.descriptor.d.ts +114 -0
  232. package/dist/browser/tools/control/prompts/plan-request.prompt.descriptor.d.ts.map +1 -0
  233. package/dist/browser/tools/control/prompts/plan-request.prompt.descriptor.js +57 -0
  234. package/dist/browser/tools/control/prompts/plan-request.prompt.descriptor.js.map +1 -0
  235. package/dist/browser/tools/control/prompts/planner.prompt.descriptor.d.ts +113 -0
  236. package/dist/browser/tools/control/prompts/planner.prompt.descriptor.d.ts.map +1 -0
  237. package/dist/browser/tools/control/prompts/planner.prompt.descriptor.js +15 -0
  238. package/dist/browser/tools/control/prompts/planner.prompt.descriptor.js.map +1 -0
  239. package/dist/browser/tools/control/schemas.d.ts +220 -0
  240. package/dist/browser/tools/control/schemas.d.ts.map +1 -0
  241. package/dist/browser/tools/control/schemas.js +49 -0
  242. package/dist/browser/tools/control/schemas.js.map +1 -0
  243. package/dist/browser/tools/direct/implementation.d.ts +7 -0
  244. package/dist/browser/tools/direct/implementation.d.ts.map +1 -0
  245. package/dist/browser/tools/direct/implementation.js +63 -0
  246. package/dist/browser/tools/direct/implementation.js.map +1 -0
  247. package/dist/browser/tools/direct/schemas.d.ts +209 -0
  248. package/dist/browser/tools/direct/schemas.d.ts.map +1 -0
  249. package/dist/browser/tools/direct/schemas.js +68 -0
  250. package/dist/browser/tools/direct/schemas.js.map +1 -0
  251. package/dist/browser/tools/index.d.ts +9 -0
  252. package/dist/browser/tools/index.d.ts.map +1 -0
  253. package/dist/browser/tools/index.js +9 -0
  254. package/dist/browser/tools/index.js.map +1 -0
  255. package/dist/browser/tools/observe/implementation.d.ts +7 -0
  256. package/dist/browser/tools/observe/implementation.d.ts.map +1 -0
  257. package/dist/browser/tools/observe/implementation.js +59 -0
  258. package/dist/browser/tools/observe/implementation.js.map +1 -0
  259. package/dist/browser/tools/observe/schemas.d.ts +63 -0
  260. package/dist/browser/tools/observe/schemas.d.ts.map +1 -0
  261. package/dist/browser/tools/observe/schemas.js +38 -0
  262. package/dist/browser/tools/observe/schemas.js.map +1 -0
  263. package/dist/browser/tools/observe/vision.d.ts +21 -0
  264. package/dist/browser/tools/observe/vision.d.ts.map +1 -0
  265. package/dist/browser/tools/observe/vision.js +73 -0
  266. package/dist/browser/tools/observe/vision.js.map +1 -0
  267. package/dist/browser/tools/recipe/implementation.d.ts +4 -0
  268. package/dist/browser/tools/recipe/implementation.d.ts.map +1 -0
  269. package/dist/browser/tools/recipe/implementation.js +259 -0
  270. package/dist/browser/tools/recipe/implementation.js.map +1 -0
  271. package/dist/browser/tools/recipe/schemas.d.ts +646 -0
  272. package/dist/browser/tools/recipe/schemas.d.ts.map +1 -0
  273. package/dist/browser/tools/recipe/schemas.js +126 -0
  274. package/dist/browser/tools/recipe/schemas.js.map +1 -0
  275. package/dist/browser/tools/session/implementation.d.ts +7 -0
  276. package/dist/browser/tools/session/implementation.d.ts.map +1 -0
  277. package/dist/browser/tools/session/implementation.js +111 -0
  278. package/dist/browser/tools/session/implementation.js.map +1 -0
  279. package/dist/browser/tools/session/index.d.ts +5 -0
  280. package/dist/browser/tools/session/index.d.ts.map +1 -0
  281. package/dist/browser/tools/session/index.js +6 -0
  282. package/dist/browser/tools/session/index.js.map +1 -0
  283. package/dist/browser/tools/session/schemas.d.ts +78 -0
  284. package/dist/browser/tools/session/schemas.d.ts.map +1 -0
  285. package/dist/browser/tools/session/schemas.js +60 -0
  286. package/dist/browser/tools/session/schemas.js.map +1 -0
  287. package/dist/browser/tools/unified/browser-recipe.prompt.descriptor.d.ts +114 -0
  288. package/dist/browser/tools/unified/browser-recipe.prompt.descriptor.d.ts.map +1 -0
  289. package/dist/browser/tools/unified/browser-recipe.prompt.descriptor.js +22 -0
  290. package/dist/browser/tools/unified/browser-recipe.prompt.descriptor.js.map +1 -0
  291. package/dist/browser/tools/unified/browser.impl.cloud.d.ts +8 -0
  292. package/dist/browser/tools/unified/browser.impl.cloud.d.ts.map +1 -0
  293. package/dist/browser/tools/unified/browser.impl.cloud.js +381 -0
  294. package/dist/browser/tools/unified/browser.impl.cloud.js.map +1 -0
  295. package/dist/browser/tools/unified/browser.impl.consumer.d.ts +14 -0
  296. package/dist/browser/tools/unified/browser.impl.consumer.d.ts.map +1 -0
  297. package/dist/browser/tools/unified/browser.impl.consumer.js +87 -0
  298. package/dist/browser/tools/unified/browser.impl.consumer.js.map +1 -0
  299. package/dist/browser/tools/unified/browser.unified.descriptor.d.ts +587 -0
  300. package/dist/browser/tools/unified/browser.unified.descriptor.d.ts.map +1 -0
  301. package/dist/browser/tools/unified/browser.unified.descriptor.js +54 -0
  302. package/dist/browser/tools/unified/browser.unified.descriptor.js.map +1 -0
  303. package/dist/browser/tools/unified/execution-binding.d.ts +5 -0
  304. package/dist/browser/tools/unified/execution-binding.d.ts.map +1 -0
  305. package/dist/browser/tools/unified/execution-binding.js +51 -0
  306. package/dist/browser/tools/unified/execution-binding.js.map +1 -0
  307. package/dist/browser/tools/unified/index.d.ts +5 -0
  308. package/dist/browser/tools/unified/index.d.ts.map +1 -0
  309. package/dist/browser/tools/unified/index.js +6 -0
  310. package/dist/browser/tools/unified/index.js.map +1 -0
  311. package/dist/browser/tools/unified/scan-cache-wiring.d.ts +16 -0
  312. package/dist/browser/tools/unified/scan-cache-wiring.d.ts.map +1 -0
  313. package/dist/browser/tools/unified/scan-cache-wiring.js +87 -0
  314. package/dist/browser/tools/unified/scan-cache-wiring.js.map +1 -0
  315. package/dist/browser/tools/unified/schemas.d.ts +786 -0
  316. package/dist/browser/tools/unified/schemas.d.ts.map +1 -0
  317. package/dist/browser/tools/unified/schemas.js +354 -0
  318. package/dist/browser/tools/unified/schemas.js.map +1 -0
  319. package/dist/browser/tools/webmcp/detection-script.d.ts +19 -0
  320. package/dist/browser/tools/webmcp/detection-script.d.ts.map +1 -0
  321. package/dist/browser/tools/webmcp/detection-script.js +104 -0
  322. package/dist/browser/tools/webmcp/detection-script.js.map +1 -0
  323. package/dist/browser/tools/webmcp/implementation.d.ts +18 -0
  324. package/dist/browser/tools/webmcp/implementation.d.ts.map +1 -0
  325. package/dist/browser/tools/webmcp/implementation.js +61 -0
  326. package/dist/browser/tools/webmcp/implementation.js.map +1 -0
  327. package/dist/cli/browser/browser.cli-group.descriptor.d.ts +17 -0
  328. package/dist/cli/browser/browser.cli-group.descriptor.d.ts.map +1 -0
  329. package/dist/cli/browser/browser.cli-group.descriptor.js +17 -0
  330. package/dist/cli/browser/browser.cli-group.descriptor.js.map +1 -0
  331. package/dist/cli/browser/browser.cli.plugin.d.ts +12 -0
  332. package/dist/cli/browser/browser.cli.plugin.d.ts.map +1 -0
  333. package/dist/cli/browser/browser.cli.plugin.js +179 -0
  334. package/dist/cli/browser/browser.cli.plugin.js.map +1 -0
  335. package/dist/cli/browser/browser.recipe.cli-group.descriptor.d.ts +18 -0
  336. package/dist/cli/browser/browser.recipe.cli-group.descriptor.d.ts.map +1 -0
  337. package/dist/cli/browser/browser.recipe.cli-group.descriptor.js +18 -0
  338. package/dist/cli/browser/browser.recipe.cli-group.descriptor.js.map +1 -0
  339. package/dist/cli/browser/browser.session.cli-group.descriptor.d.ts +18 -0
  340. package/dist/cli/browser/browser.session.cli-group.descriptor.d.ts.map +1 -0
  341. package/dist/cli/browser/browser.session.cli-group.descriptor.js +18 -0
  342. package/dist/cli/browser/browser.session.cli-group.descriptor.js.map +1 -0
  343. package/dist/cli/browser/commands/control/browser.control.cli-command.descriptor.d.ts +36 -0
  344. package/dist/cli/browser/commands/control/browser.control.cli-command.descriptor.d.ts.map +1 -0
  345. package/dist/cli/browser/commands/control/browser.control.cli-command.descriptor.js +29 -0
  346. package/dist/cli/browser/commands/control/browser.control.cli-command.descriptor.js.map +1 -0
  347. package/dist/cli/browser/commands/control/browser.control.impl.d.ts +7 -0
  348. package/dist/cli/browser/commands/control/browser.control.impl.d.ts.map +1 -0
  349. package/dist/cli/browser/commands/control/browser.control.impl.js +67 -0
  350. package/dist/cli/browser/commands/control/browser.control.impl.js.map +1 -0
  351. package/dist/cli/browser/commands/direct/browser.direct.cli-command.descriptor.d.ts +38 -0
  352. package/dist/cli/browser/commands/direct/browser.direct.cli-command.descriptor.d.ts.map +1 -0
  353. package/dist/cli/browser/commands/direct/browser.direct.cli-command.descriptor.js +28 -0
  354. package/dist/cli/browser/commands/direct/browser.direct.cli-command.descriptor.js.map +1 -0
  355. package/dist/cli/browser/commands/direct/browser.direct.impl.d.ts +7 -0
  356. package/dist/cli/browser/commands/direct/browser.direct.impl.d.ts.map +1 -0
  357. package/dist/cli/browser/commands/direct/browser.direct.impl.js +85 -0
  358. package/dist/cli/browser/commands/direct/browser.direct.impl.js.map +1 -0
  359. package/dist/cli/browser/commands/observe/browser.observe.cli-command.descriptor.d.ts +30 -0
  360. package/dist/cli/browser/commands/observe/browser.observe.cli-command.descriptor.d.ts.map +1 -0
  361. package/dist/cli/browser/commands/observe/browser.observe.cli-command.descriptor.js +22 -0
  362. package/dist/cli/browser/commands/observe/browser.observe.cli-command.descriptor.js.map +1 -0
  363. package/dist/cli/browser/commands/observe/browser.observe.impl.d.ts +7 -0
  364. package/dist/cli/browser/commands/observe/browser.observe.impl.d.ts.map +1 -0
  365. package/dist/cli/browser/commands/observe/browser.observe.impl.js +59 -0
  366. package/dist/cli/browser/commands/observe/browser.observe.impl.js.map +1 -0
  367. package/dist/cli/browser/commands/recipe/create/browser.recipe.create.cli-command.descriptor.d.ts +38 -0
  368. package/dist/cli/browser/commands/recipe/create/browser.recipe.create.cli-command.descriptor.d.ts.map +1 -0
  369. package/dist/cli/browser/commands/recipe/create/browser.recipe.create.cli-command.descriptor.js +26 -0
  370. package/dist/cli/browser/commands/recipe/create/browser.recipe.create.cli-command.descriptor.js.map +1 -0
  371. package/dist/cli/browser/commands/recipe/create/browser.recipe.create.impl.d.ts +7 -0
  372. package/dist/cli/browser/commands/recipe/create/browser.recipe.create.impl.d.ts.map +1 -0
  373. package/dist/cli/browser/commands/recipe/create/browser.recipe.create.impl.js +60 -0
  374. package/dist/cli/browser/commands/recipe/create/browser.recipe.create.impl.js.map +1 -0
  375. package/dist/cli/browser/commands/recipe/delete/browser.recipe.delete.cli-command.descriptor.d.ts +25 -0
  376. package/dist/cli/browser/commands/recipe/delete/browser.recipe.delete.cli-command.descriptor.d.ts.map +1 -0
  377. package/dist/cli/browser/commands/recipe/delete/browser.recipe.delete.cli-command.descriptor.js +22 -0
  378. package/dist/cli/browser/commands/recipe/delete/browser.recipe.delete.cli-command.descriptor.js.map +1 -0
  379. package/dist/cli/browser/commands/recipe/delete/browser.recipe.delete.impl.d.ts +7 -0
  380. package/dist/cli/browser/commands/recipe/delete/browser.recipe.delete.impl.d.ts.map +1 -0
  381. package/dist/cli/browser/commands/recipe/delete/browser.recipe.delete.impl.js +35 -0
  382. package/dist/cli/browser/commands/recipe/delete/browser.recipe.delete.impl.js.map +1 -0
  383. package/dist/cli/browser/commands/recipe/get/browser.recipe.get.cli-command.descriptor.d.ts +25 -0
  384. package/dist/cli/browser/commands/recipe/get/browser.recipe.get.cli-command.descriptor.d.ts.map +1 -0
  385. package/dist/cli/browser/commands/recipe/get/browser.recipe.get.cli-command.descriptor.js +22 -0
  386. package/dist/cli/browser/commands/recipe/get/browser.recipe.get.cli-command.descriptor.js.map +1 -0
  387. package/dist/cli/browser/commands/recipe/get/browser.recipe.get.impl.d.ts +7 -0
  388. package/dist/cli/browser/commands/recipe/get/browser.recipe.get.impl.d.ts.map +1 -0
  389. package/dist/cli/browser/commands/recipe/get/browser.recipe.get.impl.js +88 -0
  390. package/dist/cli/browser/commands/recipe/get/browser.recipe.get.impl.js.map +1 -0
  391. package/dist/cli/browser/commands/recipe/list/browser.recipe.list.cli-command.descriptor.d.ts +20 -0
  392. package/dist/cli/browser/commands/recipe/list/browser.recipe.list.cli-command.descriptor.d.ts.map +1 -0
  393. package/dist/cli/browser/commands/recipe/list/browser.recipe.list.cli-command.descriptor.js +19 -0
  394. package/dist/cli/browser/commands/recipe/list/browser.recipe.list.cli-command.descriptor.js.map +1 -0
  395. package/dist/cli/browser/commands/recipe/list/browser.recipe.list.impl.d.ts +7 -0
  396. package/dist/cli/browser/commands/recipe/list/browser.recipe.list.impl.d.ts.map +1 -0
  397. package/dist/cli/browser/commands/recipe/list/browser.recipe.list.impl.js +34 -0
  398. package/dist/cli/browser/commands/recipe/list/browser.recipe.list.impl.js.map +1 -0
  399. package/dist/cli/browser/commands/recipe/run/browser.recipe.run.cli-command.descriptor.d.ts +37 -0
  400. package/dist/cli/browser/commands/recipe/run/browser.recipe.run.cli-command.descriptor.d.ts.map +1 -0
  401. package/dist/cli/browser/commands/recipe/run/browser.recipe.run.cli-command.descriptor.js +26 -0
  402. package/dist/cli/browser/commands/recipe/run/browser.recipe.run.cli-command.descriptor.js.map +1 -0
  403. package/dist/cli/browser/commands/recipe/run/browser.recipe.run.impl.d.ts +7 -0
  404. package/dist/cli/browser/commands/recipe/run/browser.recipe.run.impl.d.ts.map +1 -0
  405. package/dist/cli/browser/commands/recipe/run/browser.recipe.run.impl.js +88 -0
  406. package/dist/cli/browser/commands/recipe/run/browser.recipe.run.impl.js.map +1 -0
  407. package/dist/cli/browser/commands/recipe/update/browser.recipe.update.cli-command.descriptor.d.ts +37 -0
  408. package/dist/cli/browser/commands/recipe/update/browser.recipe.update.cli-command.descriptor.d.ts.map +1 -0
  409. package/dist/cli/browser/commands/recipe/update/browser.recipe.update.cli-command.descriptor.js +26 -0
  410. package/dist/cli/browser/commands/recipe/update/browser.recipe.update.cli-command.descriptor.js.map +1 -0
  411. package/dist/cli/browser/commands/recipe/update/browser.recipe.update.impl.d.ts +7 -0
  412. package/dist/cli/browser/commands/recipe/update/browser.recipe.update.impl.d.ts.map +1 -0
  413. package/dist/cli/browser/commands/recipe/update/browser.recipe.update.impl.js +63 -0
  414. package/dist/cli/browser/commands/recipe/update/browser.recipe.update.impl.js.map +1 -0
  415. package/dist/cli/browser/commands/session/close/browser.session.close.cli-command.descriptor.d.ts +28 -0
  416. package/dist/cli/browser/commands/session/close/browser.session.close.cli-command.descriptor.d.ts.map +1 -0
  417. package/dist/cli/browser/commands/session/close/browser.session.close.cli-command.descriptor.js +23 -0
  418. package/dist/cli/browser/commands/session/close/browser.session.close.cli-command.descriptor.js.map +1 -0
  419. package/dist/cli/browser/commands/session/close/browser.session.close.impl.d.ts +35 -0
  420. package/dist/cli/browser/commands/session/close/browser.session.close.impl.d.ts.map +1 -0
  421. package/dist/cli/browser/commands/session/close/browser.session.close.impl.js +75 -0
  422. package/dist/cli/browser/commands/session/close/browser.session.close.impl.js.map +1 -0
  423. package/dist/cli/browser/commands/session/dismiss/browser.session.dismiss.cli-command.descriptor.d.ts +16 -0
  424. package/dist/cli/browser/commands/session/dismiss/browser.session.dismiss.cli-command.descriptor.d.ts.map +1 -0
  425. package/dist/cli/browser/commands/session/dismiss/browser.session.dismiss.cli-command.descriptor.js +16 -0
  426. package/dist/cli/browser/commands/session/dismiss/browser.session.dismiss.cli-command.descriptor.js.map +1 -0
  427. package/dist/cli/browser/commands/session/dismiss/browser.session.dismiss.impl.d.ts +7 -0
  428. package/dist/cli/browser/commands/session/dismiss/browser.session.dismiss.impl.d.ts.map +1 -0
  429. package/dist/cli/browser/commands/session/dismiss/browser.session.dismiss.impl.js +14 -0
  430. package/dist/cli/browser/commands/session/dismiss/browser.session.dismiss.impl.js.map +1 -0
  431. package/dist/cli/browser/commands/session/get/browser.session.get.cli-command.descriptor.d.ts +25 -0
  432. package/dist/cli/browser/commands/session/get/browser.session.get.cli-command.descriptor.d.ts.map +1 -0
  433. package/dist/cli/browser/commands/session/get/browser.session.get.cli-command.descriptor.js +22 -0
  434. package/dist/cli/browser/commands/session/get/browser.session.get.cli-command.descriptor.js.map +1 -0
  435. package/dist/cli/browser/commands/session/get/browser.session.get.impl.d.ts +18 -0
  436. package/dist/cli/browser/commands/session/get/browser.session.get.impl.d.ts.map +1 -0
  437. package/dist/cli/browser/commands/session/get/browser.session.get.impl.js +61 -0
  438. package/dist/cli/browser/commands/session/get/browser.session.get.impl.js.map +1 -0
  439. package/dist/cli/browser/commands/session/list/browser.session.list.cli-command.descriptor.d.ts +27 -0
  440. package/dist/cli/browser/commands/session/list/browser.session.list.cli-command.descriptor.d.ts.map +1 -0
  441. package/dist/cli/browser/commands/session/list/browser.session.list.cli-command.descriptor.js +24 -0
  442. package/dist/cli/browser/commands/session/list/browser.session.list.cli-command.descriptor.js.map +1 -0
  443. package/dist/cli/browser/commands/session/list/browser.session.list.impl.d.ts +22 -0
  444. package/dist/cli/browser/commands/session/list/browser.session.list.impl.d.ts.map +1 -0
  445. package/dist/cli/browser/commands/session/list/browser.session.list.impl.js +73 -0
  446. package/dist/cli/browser/commands/session/list/browser.session.list.impl.js.map +1 -0
  447. package/dist/cli/browser/commands/session/present/browser.session.present.cli-command.descriptor.d.ts +25 -0
  448. package/dist/cli/browser/commands/session/present/browser.session.present.cli-command.descriptor.d.ts.map +1 -0
  449. package/dist/cli/browser/commands/session/present/browser.session.present.cli-command.descriptor.js +22 -0
  450. package/dist/cli/browser/commands/session/present/browser.session.present.cli-command.descriptor.js.map +1 -0
  451. package/dist/cli/browser/commands/session/present/browser.session.present.impl.d.ts +7 -0
  452. package/dist/cli/browser/commands/session/present/browser.session.present.impl.d.ts.map +1 -0
  453. package/dist/cli/browser/commands/session/present/browser.session.present.impl.js +29 -0
  454. package/dist/cli/browser/commands/session/present/browser.session.present.impl.js.map +1 -0
  455. package/dist/cli/browser/commands/session/resolve-session.d.ts +19 -0
  456. package/dist/cli/browser/commands/session/resolve-session.d.ts.map +1 -0
  457. package/dist/cli/browser/commands/session/resolve-session.js +11 -0
  458. package/dist/cli/browser/commands/session/resolve-session.js.map +1 -0
  459. package/dist/cli/browser/commands/session/session-age.d.ts +6 -0
  460. package/dist/cli/browser/commands/session/session-age.d.ts.map +1 -0
  461. package/dist/cli/browser/commands/session/session-age.js +34 -0
  462. package/dist/cli/browser/commands/session/session-age.js.map +1 -0
  463. package/dist/cli/browser/commands/session/sweep/browser.session.sweep.cli-command.descriptor.d.ts +26 -0
  464. package/dist/cli/browser/commands/session/sweep/browser.session.sweep.cli-command.descriptor.d.ts.map +1 -0
  465. package/dist/cli/browser/commands/session/sweep/browser.session.sweep.cli-command.descriptor.js +24 -0
  466. package/dist/cli/browser/commands/session/sweep/browser.session.sweep.cli-command.descriptor.js.map +1 -0
  467. package/dist/cli/browser/commands/session/sweep/browser.session.sweep.impl.d.ts +32 -0
  468. package/dist/cli/browser/commands/session/sweep/browser.session.sweep.impl.d.ts.map +1 -0
  469. package/dist/cli/browser/commands/session/sweep/browser.session.sweep.impl.js +112 -0
  470. package/dist/cli/browser/commands/session/sweep/browser.session.sweep.impl.js.map +1 -0
  471. package/dist/index.d.ts +25 -0
  472. package/dist/index.d.ts.map +1 -0
  473. package/dist/index.js +24 -0
  474. package/dist/index.js.map +1 -0
  475. package/dist/svelte/browser/BrowserWorkspace.svelte +450 -0
  476. package/dist/svelte/browser/BrowserWorkspace.svelte.d.ts +20 -0
  477. package/dist/svelte/browser/BrowserWorkspace.svelte.d.ts.map +1 -0
  478. package/dist/svelte/browser/browser-automation-svelte.plugin.d.ts +3 -0
  479. package/dist/svelte/browser/browser-automation-svelte.plugin.d.ts.map +1 -0
  480. package/dist/svelte/browser/browser-automation-svelte.plugin.js +25 -0
  481. package/dist/svelte/browser/docs/browser-automation-svelte.docs.descriptor.d.ts +4 -0
  482. package/dist/svelte/browser/docs/browser-automation-svelte.docs.descriptor.d.ts.map +1 -0
  483. package/dist/svelte/browser/docs/browser-automation-svelte.docs.descriptor.js +55 -0
  484. package/dist/svelte/browser/index.d.ts +6 -0
  485. package/dist/svelte/browser/index.d.ts.map +1 -0
  486. package/dist/svelte/browser/index.js +4 -0
  487. package/dist/svelte/browser/state.svelte.d.ts +28 -0
  488. package/dist/svelte/browser/state.svelte.d.ts.map +1 -0
  489. package/dist/svelte/browser/state.svelte.js +87 -0
  490. package/dist/svelte/browser/styles.css +10 -0
  491. package/dist/svelte/browser/tool-widgets/BrowserToolCard.svelte +268 -0
  492. package/dist/svelte/browser/tool-widgets/BrowserToolCard.svelte.d.ts +10 -0
  493. package/dist/svelte/browser/tool-widgets/BrowserToolCard.svelte.d.ts.map +1 -0
  494. package/dist/svelte/browser/tool-widgets/index.d.ts +2 -0
  495. package/dist/svelte/browser/tool-widgets/index.d.ts.map +1 -0
  496. package/dist/svelte/browser/tool-widgets/index.js +1 -0
  497. package/dist/svelte/browser/tool-widgets/summary.d.ts +2 -0
  498. package/dist/svelte/browser/tool-widgets/summary.d.ts.map +1 -0
  499. package/dist/svelte/browser/tool-widgets/summary.js +1 -0
  500. package/dist/svelte/browser/types.d.ts +16 -0
  501. package/dist/svelte/browser/types.d.ts.map +1 -0
  502. package/dist/svelte/browser/types.js +1 -0
  503. package/dist/tui/browser/browser-sessions.app.descriptor.d.ts +33 -0
  504. package/dist/tui/browser/browser-sessions.app.descriptor.d.ts.map +1 -0
  505. package/dist/tui/browser/browser-sessions.app.descriptor.js +33 -0
  506. package/dist/tui/browser/browser-sessions.app.descriptor.js.map +1 -0
  507. package/dist/tui/browser/browser-sessions.app.impl.d.ts +4 -0
  508. package/dist/tui/browser/browser-sessions.app.impl.d.ts.map +1 -0
  509. package/dist/tui/browser/browser-sessions.app.impl.js +231 -0
  510. package/dist/tui/browser/browser-sessions.app.impl.js.map +1 -0
  511. package/dist/tui/browser/browser.tui.plugin.d.ts +13 -0
  512. package/dist/tui/browser/browser.tui.plugin.d.ts.map +1 -0
  513. package/dist/tui/browser/browser.tui.plugin.js +52 -0
  514. package/dist/tui/browser/browser.tui.plugin.js.map +1 -0
  515. package/dist/tui/browser/tool-widgets/BrowserToolWidget.impl.consumer.d.ts +4 -0
  516. package/dist/tui/browser/tool-widgets/BrowserToolWidget.impl.consumer.d.ts.map +1 -0
  517. package/dist/tui/browser/tool-widgets/BrowserToolWidget.impl.consumer.js +31 -0
  518. package/dist/tui/browser/tool-widgets/BrowserToolWidget.impl.consumer.js.map +1 -0
  519. package/dist/tui/browser/tool-widgets/summary.d.ts +40 -0
  520. package/dist/tui/browser/tool-widgets/summary.d.ts.map +1 -0
  521. package/dist/tui/browser/tool-widgets/summary.js +16 -0
  522. package/dist/tui/browser/tool-widgets/summary.js.map +1 -0
  523. package/package.json +212 -4
@@ -0,0 +1,450 @@
1
+ <script module lang="ts">
2
+ export type { BrowserObservedPage, BrowserWorkspaceData } from './types.js';
3
+ </script>
4
+
5
+ <script lang="ts">
6
+ /**
7
+ * BrowserWorkspace — the consumer control surface for the browser-automation
8
+ * feature. Sessions list (with a profile filter) on the left; the selected
9
+ * session's detail (status, base URL, profile, storage-state, timestamps),
10
+ * its tabs, the recipe library, and an observed-page panel on the right.
11
+ *
12
+ * Data source: the host supplies records through `data` or an async `load`
13
+ * function. This presentation package never imports the consumer browser client:
14
+ * that client owns Playwright and local filesystem lifecycle and cannot enter a
15
+ * web or workerd bundle. When no data source is supplied, the surface shows an
16
+ * honest disconnected state; it never fabricates sessions.
17
+ *
18
+ * Registers NO runtime kinds — this is a *view* over host-supplied browser data.
19
+ *
20
+ * SEAMS (honest, not faked):
21
+ * - Observed-page panel: renders a real screenshot only when one is supplied
22
+ * via `observed` / `loadObserved` (the `observe` action's output). With no
23
+ * snapshot it shows a placeholder describing what a live capture would show.
24
+ * The live wire (host resolves the browser client + calls `observe`) lands
25
+ * with the hq-web route in C4 — this component only leaves the clean seam.
26
+ * - `data` / `load` props let a host feed records from the runtime appropriate
27
+ * to that host (SSR hydration, consumer client, cloud API, fixtures, or tests).
28
+ */
29
+ import { onMount } from 'svelte';
30
+ import { settle } from '@vibesdotdev/kernel';
31
+ import { Badge } from '@vibesdotdev/kit/components/ui/badge';
32
+ import { Button } from '@vibesdotdev/kit/components/ui/button';
33
+ import * as Select from '@vibesdotdev/kit/components/ui/select';
34
+ import {
35
+ Camera,
36
+ Clock3,
37
+ Globe,
38
+ Layers,
39
+ RotateCw,
40
+ ScrollText,
41
+ SquareStack,
42
+ UserRound
43
+ } from '@lucide/svelte';
44
+ import { getBrowserWorkspaceState as scopedWorkspaceState, type BrowserWorkspaceSelectionState } from './state.svelte.js';
45
+ import type {
46
+ BrowserSession,
47
+ BrowserProfile,
48
+ BrowserTab,
49
+ BrowserRecipe
50
+ } from '@vibesdotdev/control/browser-automation';
51
+ import type { BrowserObservedPage, BrowserWorkspaceData } from './types.js';
52
+
53
+ interface Props {
54
+ state?: BrowserWorkspaceSelectionState;
55
+ class?: string;
56
+ title?: string;
57
+ /** Host-supplied records rendered directly without resolving a transport. */
58
+ data?: BrowserWorkspaceData;
59
+ /** Host-owned loader for the runtime/transport appropriate to the mounting surface. */
60
+ load?: () => Promise<BrowserWorkspaceData>;
61
+ /** Injected observed-page snapshot for the active session (the live seam). */
62
+ observed?: BrowserObservedPage | null;
63
+ /** Live observed-page loader; called when a session is focused. Left unset → seam only. */
64
+ loadObserved?: (sessionId: string) => Promise<BrowserObservedPage | null>;
65
+ }
66
+
67
+ let {
68
+ state: selectionState = scopedWorkspaceState(),
69
+ class: className = '',
70
+ title = 'Browser sessions',
71
+ data,
72
+ load,
73
+ observed = null,
74
+ loadObserved
75
+ }: Props = $props();
76
+
77
+ const browserWorkspaceState = $derived(selectionState);
78
+
79
+
80
+ type Status = 'loading' | 'ready' | 'empty' | 'error';
81
+
82
+ let status = $state<Status>('loading');
83
+ let notice = $state('Connecting to browser runtime…');
84
+ let sessions = $state<BrowserSession[]>([]);
85
+ let profiles = $state<BrowserProfile[]>([]);
86
+ let tabs = $state<BrowserTab[]>([]);
87
+ let recipes = $state<BrowserRecipe[]>([]);
88
+ let liveObserved = $state<BrowserObservedPage | null>(null);
89
+ let loadGeneration = 0;
90
+
91
+ const profileFilter = $derived(browserWorkspaceState.profileFilter);
92
+
93
+ const profileName = $derived.by(() => {
94
+ const byId = new Map(profiles.map((p) => [p.id, p.name]));
95
+ return (id: string | undefined): string | null => (id ? (byId.get(id) ?? id) : null);
96
+ });
97
+
98
+ const visibleSessions = $derived(
99
+ profileFilter ? sessions.filter((s) => s.profileId === profileFilter) : sessions
100
+ );
101
+
102
+ const selectedSession = $derived(
103
+ visibleSessions.find((s) => s.id === browserWorkspaceState.activeSessionId) ?? null
104
+ );
105
+
106
+ const sessionTabs = $derived(
107
+ selectedSession ? tabs.filter((t) => t.sessionId === selectedSession.id) : []
108
+ );
109
+
110
+ const activeCount = $derived(sessions.filter((s) => s.status === 'active').length);
111
+
112
+ // Injected snapshot takes precedence over the live-loaded one.
113
+ const observedPage = $derived(observed ?? liveObserved);
114
+
115
+ function apply(next: BrowserWorkspaceData): void {
116
+ sessions = [...next.sessions];
117
+ profiles = [...next.profiles];
118
+ tabs = [...next.tabs];
119
+ recipes = [...next.recipes];
120
+ // Keep or seed the active selection so cross-route focus survives a reload.
121
+ const stillVisible =
122
+ browserWorkspaceState.activeSessionId &&
123
+ visibleSessions.some((s) => s.id === browserWorkspaceState.activeSessionId);
124
+ if (!stillVisible) {
125
+ browserWorkspaceState.selectSession(visibleSessions[0]?.id ?? null);
126
+ }
127
+ status = sessions.length > 0 ? 'ready' : 'empty';
128
+ notice =
129
+ status === 'ready'
130
+ ? `${sessions.length} ${sessions.length === 1 ? 'session' : 'sessions'} · ${activeCount} active`
131
+ : 'No browser sessions yet.';
132
+ }
133
+
134
+
135
+ async function refresh(): Promise<void> {
136
+ const generation = ++loadGeneration;
137
+ status = 'loading';
138
+ notice = 'Loading browser sessions…';
139
+ const result = await settle(async () => load
140
+ ? load()
141
+ : (data ?? { sessions: [], profiles: [], tabs: [], recipes: [] }));
142
+ if (generation !== loadGeneration) return;
143
+ if (result.ok) {
144
+ apply(result.value);
145
+ if (!load && !data) notice = 'Not connected to a browser data source.';
146
+ } else {
147
+ status = 'error';
148
+ notice = `Browser data source failed: ${result.cause instanceof Error ? result.cause.message : String(result.cause)}`;
149
+ }
150
+ }
151
+
152
+ onMount(() => {
153
+ if (data) {
154
+ apply(data);
155
+ return;
156
+ }
157
+ void refresh();
158
+ });
159
+
160
+ // Pull a live observed-page snapshot when the focused session changes and a
161
+ // loader is wired. Without a loader the panel stays a placeholder (the seam).
162
+ $effect(() => {
163
+ const id = selectedSession?.id;
164
+ const loader = loadObserved;
165
+ if (!id || !loader) {
166
+ liveObserved = null;
167
+ return;
168
+ }
169
+ let cancelled = false;
170
+ void settle(() => loader(id)).then(result => {
171
+ if (cancelled) return;
172
+ if (result.ok) liveObserved = result.value;
173
+ else {
174
+ liveObserved = null;
175
+ status = 'error';
176
+ notice = `Observation failed: ${result.cause instanceof Error ? result.cause.message : String(result.cause)}`;
177
+ }
178
+ });
179
+ return () => {
180
+ cancelled = true;
181
+ };
182
+ });
183
+
184
+ function handleProfileChange(value: string | undefined): void {
185
+ browserWorkspaceState.setProfileFilter(value && value !== 'all' ? value : null);
186
+ }
187
+
188
+ function selectSession(id: string): void {
189
+ browserWorkspaceState.selectSession(id);
190
+ }
191
+
192
+ function fmt(ts: string | undefined): string {
193
+ if (!ts) return '—';
194
+ const d = new Date(ts);
195
+ if (Number.isNaN(d.getTime())) return ts;
196
+ return d.toLocaleString();
197
+ }
198
+ </script>
199
+
200
+ <section
201
+ class={`flex h-full min-h-[440px] flex-col gap-3 overflow-hidden ${className}`}
202
+ aria-label={title}
203
+ data-browser-workspace
204
+ data-browser-status={status}
205
+ >
206
+ <header class="flex flex-wrap items-center justify-between gap-3">
207
+ <div class="min-w-0">
208
+ <div class="flex items-center gap-2">
209
+ <Globe class="h-4 w-4 shrink-0 text-muted-foreground" />
210
+ <h2 class="truncate text-sm font-semibold text-foreground">{title}</h2>
211
+ {#if status === 'ready'}
212
+ <Badge variant="outline" class="gap-1 text-[0.6rem]">
213
+ {sessions.length}
214
+ {sessions.length === 1 ? 'session' : 'sessions'}
215
+ </Badge>
216
+ {#if activeCount > 0}
217
+ <Badge variant="success" class="gap-1 text-[0.6rem]">{activeCount} active</Badge>
218
+ {/if}
219
+ {/if}
220
+ </div>
221
+ <p class="mt-1 truncate text-xs text-muted-foreground">{notice}</p>
222
+ </div>
223
+ <div class="flex items-center gap-2">
224
+ {#if profiles.length > 0}
225
+ <Select.Root
226
+ type="single"
227
+ value={profileFilter ?? 'all'}
228
+ onValueChange={handleProfileChange}
229
+ >
230
+ <Select.Trigger class="h-8 w-44 text-xs">
231
+ {profileFilter ? (profileName(profileFilter) ?? 'Profile') : 'All profiles'}
232
+ </Select.Trigger>
233
+ <Select.Content>
234
+ <Select.Item value="all">All profiles</Select.Item>
235
+ {#each profiles as profile (profile.id)}
236
+ <Select.Item value={profile.id}>{profile.name}</Select.Item>
237
+ {/each}
238
+ </Select.Content>
239
+ </Select.Root>
240
+ {/if}
241
+ <Button
242
+ variant="outline"
243
+ size="sm"
244
+ class="h-8 gap-1.5 text-xs"
245
+ onclick={() => void refresh()}
246
+ disabled={status === 'loading'}
247
+ >
248
+ <RotateCw class="h-3.5 w-3.5" />
249
+ Refresh
250
+ </Button>
251
+ </div>
252
+ </header>
253
+
254
+ {#if status === 'loading'}
255
+ <div
256
+ class="grid min-h-64 flex-1 place-items-center rounded-xl border border-dashed border-border bg-muted/20 p-6 text-center"
257
+ >
258
+ <p class="text-sm text-muted-foreground">{notice}</p>
259
+ </div>
260
+ {:else if status === 'error'}
261
+ <div
262
+ class="grid min-h-64 flex-1 place-items-center rounded-xl border border-dashed border-destructive/40 bg-destructive/5 p-6 text-center"
263
+ >
264
+ <div class="space-y-1">
265
+ <p class="text-sm font-medium text-destructive">Couldn't load browser sessions</p>
266
+ <p class="text-xs text-muted-foreground">{notice}</p>
267
+ </div>
268
+ </div>
269
+ {:else if status === 'empty'}
270
+ <div
271
+ class="grid min-h-64 flex-1 place-items-center rounded-xl border border-dashed border-border bg-muted/20 p-8 text-center"
272
+ >
273
+ <div class="max-w-sm space-y-2">
274
+ <SquareStack class="mx-auto h-6 w-6 text-muted-foreground/70" />
275
+ <p class="text-sm font-medium text-foreground">{notice}</p>
276
+ <p class="text-xs text-muted-foreground">
277
+ Browser sessions appear after an agent runs a browser tool or when a connected machine
278
+ provides browser automation.
279
+ </p>
280
+ </div>
281
+ </div>
282
+ {:else}
283
+ <div class="grid min-h-0 flex-1 grid-cols-[minmax(0,20rem)_minmax(0,1fr)] gap-3 overflow-hidden">
284
+ <!-- Sessions list -->
285
+ <ul class="min-h-0 space-y-1.5 overflow-y-auto pr-1" aria-label="Browser sessions">
286
+ {#each visibleSessions as session (session.id)}
287
+ {@const selected = session.id === selectedSession?.id}
288
+ <li>
289
+ <button
290
+ type="button"
291
+ class={`w-full rounded-lg border px-3 py-2 text-left transition-colors ${
292
+ selected
293
+ ? 'border-primary/60 bg-primary/5'
294
+ : 'border-border bg-card hover:border-border hover:bg-muted/40'
295
+ }`}
296
+ aria-current={selected}
297
+ onclick={() => selectSession(session.id)}
298
+ >
299
+ <div class="flex items-center justify-between gap-2">
300
+ <span class="truncate text-sm font-medium text-foreground">{session.name}</span>
301
+ <Badge
302
+ variant={session.status === 'active' ? 'success' : 'outline'}
303
+ class="shrink-0 text-[0.55rem]"
304
+ >
305
+ {session.status}
306
+ </Badge>
307
+ </div>
308
+ {#if session.baseUrl}
309
+ <p class="mt-0.5 truncate text-xs text-muted-foreground">{session.baseUrl}</p>
310
+ {/if}
311
+ <p class="mt-1 flex items-center gap-1 text-[0.65rem] text-muted-foreground">
312
+ <Clock3 class="h-3 w-3 shrink-0" />
313
+ <span class="truncate">used {fmt(session.lastUsedAt)}</span>
314
+ </p>
315
+ </button>
316
+ </li>
317
+ {:else}
318
+ <li class="rounded-lg border border-dashed border-border p-4 text-center text-xs text-muted-foreground">
319
+ No sessions for this profile.
320
+ </li>
321
+ {/each}
322
+ </ul>
323
+
324
+ <!-- Detail -->
325
+ <div class="min-h-0 overflow-y-auto rounded-xl border border-border bg-card">
326
+ {#if selectedSession}
327
+ <div class="space-y-4 p-4">
328
+ <div>
329
+ <div class="flex flex-wrap items-center gap-2">
330
+ <h3 class="truncate text-sm font-semibold text-foreground">{selectedSession.name}</h3>
331
+ <Badge
332
+ variant={selectedSession.status === 'active' ? 'success' : 'outline'}
333
+ class="text-[0.55rem]"
334
+ >
335
+ {selectedSession.status}
336
+ </Badge>
337
+ </div>
338
+ <dl class="mt-2 grid grid-cols-1 gap-x-4 gap-y-1.5 text-xs sm:grid-cols-2">
339
+ <div class="flex items-center gap-1.5 text-muted-foreground">
340
+ <Globe class="h-3 w-3 shrink-0" />
341
+ <dt class="sr-only">Base URL</dt>
342
+ <dd class="truncate text-foreground">{selectedSession.baseUrl ?? '—'}</dd>
343
+ </div>
344
+ <div class="flex items-center gap-1.5 text-muted-foreground">
345
+ <UserRound class="h-3 w-3 shrink-0" />
346
+ <dt class="sr-only">Profile</dt>
347
+ <dd class="truncate text-foreground">
348
+ {profileName(selectedSession.profileId) ?? 'default'}
349
+ </dd>
350
+ </div>
351
+ <div class="flex items-center gap-1.5 text-muted-foreground">
352
+ <ScrollText class="h-3 w-3 shrink-0" />
353
+ <dt class="sr-only">Storage state</dt>
354
+ <dd class="truncate text-foreground">{selectedSession.storageStatePath ?? 'none'}</dd>
355
+ </div>
356
+ <div class="flex items-center gap-1.5 text-muted-foreground">
357
+ <Clock3 class="h-3 w-3 shrink-0" />
358
+ <dt class="sr-only">Created</dt>
359
+ <dd class="truncate text-foreground">created {fmt(selectedSession.createdAt)}</dd>
360
+ </div>
361
+ </dl>
362
+ </div>
363
+
364
+ <!-- Observed-page panel (live seam) -->
365
+ <div class="rounded-lg border border-border bg-muted/20">
366
+ <div class="flex items-center gap-1.5 border-b border-border px-3 py-2">
367
+ <Camera class="h-3.5 w-3.5 text-muted-foreground" />
368
+ <span class="text-xs font-medium text-foreground">Observed page</span>
369
+ </div>
370
+ {#if observedPage?.screenshotUrl}
371
+ <figure class="p-3">
372
+ <img
373
+ src={observedPage.screenshotUrl}
374
+ alt={observedPage.title ?? 'Observed page screenshot'}
375
+ class="w-full rounded border border-border"
376
+ />
377
+ <figcaption class="mt-1.5 truncate text-[0.65rem] text-muted-foreground">
378
+ {observedPage.title ?? observedPage.url ?? ''}
379
+ {#if observedPage.capturedAt}· {fmt(observedPage.capturedAt)}{/if}
380
+ </figcaption>
381
+ </figure>
382
+ {:else}
383
+ <div class="p-4 text-center text-xs text-muted-foreground">
384
+ No live view captured. Run the
385
+ <code class="rounded bg-muted px-1 py-0.5 text-[0.7rem]">observe</code>
386
+ action to capture this session's current page.
387
+ </div>
388
+ {/if}
389
+ </div>
390
+
391
+ <!-- Tabs -->
392
+ <div>
393
+ <div class="mb-1.5 flex items-center gap-1.5">
394
+ <Layers class="h-3.5 w-3.5 text-muted-foreground" />
395
+ <span class="text-xs font-medium text-foreground">Tabs</span>
396
+ <Badge variant="outline" class="text-[0.55rem]">{sessionTabs.length}</Badge>
397
+ </div>
398
+ {#if sessionTabs.length > 0}
399
+ <ul class="space-y-1">
400
+ {#each sessionTabs as tab (tab.id)}
401
+ <li
402
+ class="flex items-center justify-between gap-2 rounded-md border border-border px-2.5 py-1.5 text-xs"
403
+ >
404
+ <span class="truncate text-foreground">{tab.url ?? tab.id}</span>
405
+ <Badge
406
+ variant={tab.status === 'open' ? 'info' : 'outline'}
407
+ class="shrink-0 text-[0.55rem]"
408
+ >
409
+ {tab.status}
410
+ </Badge>
411
+ </li>
412
+ {/each}
413
+ </ul>
414
+ {:else}
415
+ <p class="text-xs text-muted-foreground">No tabs recorded for this session.</p>
416
+ {/if}
417
+ </div>
418
+
419
+ <!-- Recipe library -->
420
+ <div>
421
+ <div class="mb-1.5 flex items-center gap-1.5">
422
+ <ScrollText class="h-3.5 w-3.5 text-muted-foreground" />
423
+ <span class="text-xs font-medium text-foreground">Recipe library</span>
424
+ <Badge variant="outline" class="text-[0.55rem]">{recipes.length}</Badge>
425
+ </div>
426
+ {#if recipes.length > 0}
427
+ <ul class="space-y-1">
428
+ {#each recipes as recipe (recipe.id)}
429
+ <li
430
+ class="flex items-center justify-between gap-2 rounded-md border border-border px-2.5 py-1.5 text-xs"
431
+ >
432
+ <span class="truncate text-foreground">{recipe.name}</span>
433
+ <Badge variant="outline" class="shrink-0 text-[0.55rem]">{recipe.type}</Badge>
434
+ </li>
435
+ {/each}
436
+ </ul>
437
+ {:else}
438
+ <p class="text-xs text-muted-foreground">No saved recipes.</p>
439
+ {/if}
440
+ </div>
441
+ </div>
442
+ {:else}
443
+ <div class="grid h-full place-items-center p-6 text-center">
444
+ <p class="text-sm text-muted-foreground">Select a session to see its detail.</p>
445
+ </div>
446
+ {/if}
447
+ </div>
448
+ </div>
449
+ {/if}
450
+ </section>
@@ -0,0 +1,20 @@
1
+ export type { BrowserObservedPage, BrowserWorkspaceData } from './types.ts';
2
+ import { type BrowserWorkspaceSelectionState } from './state.svelte.ts';
3
+ import type { BrowserObservedPage, BrowserWorkspaceData } from './types.ts';
4
+ interface Props {
5
+ state?: BrowserWorkspaceSelectionState;
6
+ class?: string;
7
+ title?: string;
8
+ /** Host-supplied records rendered directly without resolving a transport. */
9
+ data?: BrowserWorkspaceData;
10
+ /** Host-owned loader for the runtime/transport appropriate to the mounting surface. */
11
+ load?: () => Promise<BrowserWorkspaceData>;
12
+ /** Injected observed-page snapshot for the active session (the live seam). */
13
+ observed?: BrowserObservedPage | null;
14
+ /** Live observed-page loader; called when a session is focused. Left unset → seam only. */
15
+ loadObserved?: (sessionId: string) => Promise<BrowserObservedPage | null>;
16
+ }
17
+ declare const BrowserWorkspace: import("svelte").Component<Props, {}, "">;
18
+ type BrowserWorkspace = ReturnType<typeof BrowserWorkspace>;
19
+ export default BrowserWorkspace;
20
+ //# sourceMappingURL=BrowserWorkspace.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserWorkspace.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/browser/BrowserWorkspace.svelte.ts"],"names":[],"mappings":"AAGC,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAyC7E,OAAO,EAAoD,KAAK,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AAO1H,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAG3E,UAAU,KAAK;IACd,KAAK,CAAC,EAAE,8BAA8B,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,uFAAuF;IACvF,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC3C,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACtC,2FAA2F;IAC3F,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;CAC1E;AAyWF,QAAA,MAAM,gBAAgB,2CAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const browserAutomationSveltePlugin: import("@vibesdotdev/kernel").RuntimePlugin;
2
+ export default browserAutomationSveltePlugin;
3
+ //# sourceMappingURL=browser-automation-svelte.plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-automation-svelte.plugin.d.ts","sourceRoot":"","sources":["../../../src/svelte/browser/browser-automation-svelte.plugin.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,6BAA6B,6CAkBxC,CAAC;AAEH,eAAe,6BAA6B,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { browserWorkspaceComposition } from "../../browser/client/workspace-client.js";
2
+ import { createRuntimePlugin } from '@vibesdotdev/kernel';
3
+ import browserAutomationSvelteDocsDescriptor from "./docs/browser-automation-svelte.docs.descriptor.js";
4
+ import { createSvelteToolWidgetDescriptor, createSvelteToolWidgetLoader } from '@vibesdotdev/tools/svelte/tool-widgets';
5
+ const browserWidgetDescriptor = createSvelteToolWidgetDescriptor({
6
+ toolId: 'browser',
7
+ placement: 'top'
8
+ });
9
+ export const browserAutomationSveltePlugin = createRuntimePlugin({
10
+ // Plugin ids are how consumers resolve; this one is preserved verbatim
11
+ // through the bridge → control move even though it names the old package.
12
+ // Renaming it is part of "4. Close the old path" in
13
+ // docs/architecture/APP-PACKAGE-SPLIT-PLAYBOOK.md, together with the
14
+ // consumer sweep — not this split.
15
+ id: '@vibesdotdev/bridge/browser-automation/svelte',
16
+ name: 'Browser Automation Svelte',
17
+ description: 'Svelte browser-automation presentation surfaces and the designed `browser` tools/ui widget.',
18
+ dependencies: ['tools', 'runtime-client'],
19
+ descriptors: [...browserWorkspaceComposition.descriptors, browserAutomationSvelteDocsDescriptor, browserWidgetDescriptor],
20
+ loaders: [
21
+ ...browserWorkspaceComposition.loaders,
22
+ createSvelteToolWidgetLoader(browserWidgetDescriptor, () => import('./tool-widgets/BrowserToolCard.svelte'))
23
+ ]
24
+ });
25
+ export default browserAutomationSveltePlugin;
@@ -0,0 +1,4 @@
1
+ import type { DocsTopicDescriptor } from '@vibesdotdev/docs-contracts';
2
+ declare const descriptor: DocsTopicDescriptor;
3
+ export default descriptor;
4
+ //# sourceMappingURL=browser-automation-svelte.docs.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-automation-svelte.docs.descriptor.d.ts","sourceRoot":"","sources":["../../../../src/svelte/browser/docs/browser-automation-svelte.docs.descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,QAAA,MAAM,UAAU,EAAE,mBAsDjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,55 @@
1
+ const descriptor = {
2
+ kind: 'docs/topic',
3
+ id: 'browser-automation-svelte',
4
+ parent: 'runtime',
5
+ order: 46,
6
+ title: 'Browser Automation Svelte',
7
+ summary: 'Svelte browser-automation presentation surfaces (tool-call widget + control workspace) over the runtime-resolved browser client.',
8
+ tags: ['browser', 'svelte', 'automation', 'runtime', 'control-plane'],
9
+ surfaces: ['web', 'in-app'],
10
+ hardware: ['consumer', 'cloud'],
11
+ enabled: true,
12
+ body: {
13
+ type: 'markdown',
14
+ sourceType: 'raw',
15
+ source: `---
16
+ title: Browser Automation Svelte
17
+ summary: Transport-blind Svelte browser-automation presentation surfaces
18
+ tags: [browser, svelte, automation, runtime, control-plane]
19
+ parent: runtime
20
+ order: 46
21
+ surfaces: [web, in-app]
22
+ hardware: [consumer, cloud]
23
+ ---
24
+
25
+ # Browser Automation Svelte
26
+
27
+ \`@vibesdotdev/control/browser-automation/svelte\` presents browser-automation surfaces
28
+ without owning or bundling a browser backend. Hosts inject records through
29
+ \`data\` or \`load\`; the package never chooses a runtime or transport.
30
+
31
+ ## Entrypoints
32
+
33
+ - \`@vibesdotdev/control/browser-automation/svelte/BrowserWorkspace.svelte\` - the
34
+ sessions list + profile filter + selected-session detail + observed-page seam.
35
+ - \`@vibesdotdev/control/browser-automation/svelte/tool-widgets\` - exports
36
+ \`BrowserToolCard\`. Registration is not a side effect of this subpath.
37
+ - \`@vibesdotdev/control/browser-automation/svelte/state\` - the cross-route
38
+ \`browserWorkspaceState\` runtime-owned selection compatibility facade (subpath-only; hosts that only
39
+ need the selection store import it without the workspace component tree).
40
+ - \`@vibesdotdev/control/browser-automation/svelte/plugin\` - docs topic plus the
41
+ \`browser\` \`tools/ui\` widget (\`BrowserToolCard\`, placement \`top\`).
42
+ Compose the plugin in the runtime to register its descriptors and workspace selection client.
43
+
44
+ ## Boundary
45
+
46
+ This package paints host-supplied sessions, tabs, recipes, and observed-page
47
+ snapshots. The host resolves the consumer client, cloud API, or other transport
48
+ appropriate to its surface and supplies \`data\` or \`load\`. With no data source
49
+ the workspace shows an honest disconnected state. The Svelte plugin registers
50
+ the \`browser\` \`tools/ui\` widget; it does not register drive kinds — those stay
51
+ on the separate consumer and cloud plugins. JSON \`DefaultToolCard\` is not the fallback.
52
+ `
53
+ }
54
+ };
55
+ export default descriptor;
@@ -0,0 +1,6 @@
1
+ /** Svelte views and plugin. Runtime-owned selection adapters live at ./state. */
2
+ export { default as BrowserToolCard } from './tool-widgets/BrowserToolCard.svelte';
3
+ export { default as BrowserWorkspace } from './BrowserWorkspace.svelte';
4
+ export type { BrowserWorkspaceData, BrowserObservedPage } from './types.ts';
5
+ export { browserAutomationSveltePlugin, default } from './browser-automation-svelte.plugin.ts';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/svelte/browser/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EACN,OAAO,IAAI,gBAAgB,EAC3B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** Svelte views and plugin. Runtime-owned selection adapters live at ./state. */
2
+ export { default as BrowserToolCard } from './tool-widgets/BrowserToolCard.svelte';
3
+ export { default as BrowserWorkspace } from './BrowserWorkspace.svelte';
4
+ export { browserAutomationSveltePlugin, default } from "./browser-automation-svelte.plugin.js";
@@ -0,0 +1,28 @@
1
+ import { BrowserWorkspaceClient } from '../../browser/client/workspace-client.ts';
2
+ import { type VibesRuntime } from '@vibesdotdev/kernel';
3
+ export { browserWorkspacePlugin, getBrowserWorkspaceClient } from '../../browser/client/workspace-client.ts';
4
+ /** A component-scoped reactive projection. Call dispose when its scope ends. */
5
+ export declare class BrowserWorkspaceState {
6
+ private readonly client?;
7
+ private selection;
8
+ private unsubscribe;
9
+ constructor(client?: BrowserWorkspaceClient | undefined);
10
+ get activeSessionId(): string | null;
11
+ set activeSessionId(id: string | null);
12
+ get activeTabId(): string | null;
13
+ set activeTabId(id: string | null);
14
+ get profileFilter(): string | null;
15
+ set profileFilter(id: string | null);
16
+ selectSession(id: string | null): void;
17
+ selectTab(id: string | null): void;
18
+ setProfileFilter(id: string | null): void;
19
+ reset(): void;
20
+ dispose(): void;
21
+ }
22
+ export type BrowserWorkspaceSelectionState = Pick<BrowserWorkspaceState, 'activeSessionId' | 'activeTabId' | 'profileFilter' | 'selectSession' | 'selectTab' | 'setProfileFilter' | 'reset'>;
23
+ /** Share an adapter across routes by placing it in their common Svelte scope. */
24
+ export declare function provideBrowserWorkspaceState(state: BrowserWorkspaceState): BrowserWorkspaceState;
25
+ export declare function getBrowserWorkspaceState(): BrowserWorkspaceSelectionState;
26
+ export declare function createBrowserWorkspaceState(runtime: VibesRuntime): Promise<BrowserWorkspaceState>;
27
+ export declare const browserWorkspaceState: BrowserWorkspaceSelectionState;
28
+ //# sourceMappingURL=state.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/browser/state.svelte.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAA6B,MAAM,0CAA0C,CAAC;AAE7G,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE1F,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAI7G,gFAAgF;AAChF,qBAAa,qBAAqB;IAGrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAFpC,OAAO,CAAC,SAAS,CAAqD;IACtE,OAAO,CAAC,WAAW,CAA2B;gBACjB,MAAM,CAAC,EAAE,sBAAsB,YAAA;IAG5D,IAAI,eAAe,IACK,MAAM,GAAG,IAAI,CAD2B;IAChE,IAAI,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,EAA6B;IAClE,IAAI,WAAW,IACK,MAAM,GAAG,IAAI,CADuB;IACxD,IAAI,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,EAAyB;IAC1D,IAAI,aAAa,IACK,MAAM,GAAG,IAAI,CADyB;IAC5D,IAAI,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,EAAgC;IACnE,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAItC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIlC,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIzC,KAAK,IAAI,IAAI;IAIb,OAAO,IAAI,IAAI;CACf;AAED,MAAM,MAAM,8BAA8B,GAAG,IAAI,CAAC,qBAAqB,EACtE,iBAAiB,GAAG,aAAa,GAAG,eAAe,GAAG,eAAe,GAAG,WAAW,GAAG,kBAAkB,GAAG,OAAO,CAAC,CAAC;AAErH,iFAAiF;AACjF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,qBAAqB,GAAG,qBAAqB,CAEhG;AACD,wBAAgB,wBAAwB,IAAI,8BAA8B,CAEzE;AACD,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAEvG;AAiBD,eAAO,MAAM,qBAAqB,EAAE,8BAWnC,CAAC"}