conductor-oss 0.3.4 → 0.4.0

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 (1214) hide show
  1. package/README.md +225 -201
  2. package/dist/commands/setup.d.ts.map +1 -1
  3. package/dist/commands/setup.js +28 -3
  4. package/dist/commands/setup.js.map +1 -1
  5. package/dist/commands/start.d.ts +14 -2
  6. package/dist/commands/start.d.ts.map +1 -1
  7. package/dist/commands/start.js +351 -180
  8. package/dist/commands/start.js.map +1 -1
  9. package/node_modules/@conductor-oss/core/dist/board-watcher.d.ts.map +1 -1
  10. package/node_modules/@conductor-oss/core/dist/board-watcher.js +11 -8
  11. package/node_modules/@conductor-oss/core/dist/board-watcher.js.map +1 -1
  12. package/node_modules/@conductor-oss/core/dist/config-sync.d.ts.map +1 -1
  13. package/node_modules/@conductor-oss/core/dist/config-sync.js +23 -2
  14. package/node_modules/@conductor-oss/core/dist/config-sync.js.map +1 -1
  15. package/node_modules/@conductor-oss/core/dist/config.d.ts.map +1 -1
  16. package/node_modules/@conductor-oss/core/dist/config.js +87 -4
  17. package/node_modules/@conductor-oss/core/dist/config.js.map +1 -1
  18. package/node_modules/@conductor-oss/core/dist/metadata.d.ts.map +1 -1
  19. package/node_modules/@conductor-oss/core/dist/metadata.js +4 -0
  20. package/node_modules/@conductor-oss/core/dist/metadata.js.map +1 -1
  21. package/node_modules/@conductor-oss/core/dist/prompt-builder.d.ts +1 -1
  22. package/node_modules/@conductor-oss/core/dist/prompt-builder.d.ts.map +1 -1
  23. package/node_modules/@conductor-oss/core/dist/prompt-builder.js +5 -0
  24. package/node_modules/@conductor-oss/core/dist/prompt-builder.js.map +1 -1
  25. package/node_modules/@conductor-oss/core/dist/scaffold.d.ts +20 -2
  26. package/node_modules/@conductor-oss/core/dist/scaffold.d.ts.map +1 -1
  27. package/node_modules/@conductor-oss/core/dist/scaffold.js +39 -5
  28. package/node_modules/@conductor-oss/core/dist/scaffold.js.map +1 -1
  29. package/node_modules/@conductor-oss/core/dist/session-manager.d.ts.map +1 -1
  30. package/node_modules/@conductor-oss/core/dist/session-manager.js +82 -9
  31. package/node_modules/@conductor-oss/core/dist/session-manager.js.map +1 -1
  32. package/node_modules/@conductor-oss/core/dist/types.d.ts +33 -7
  33. package/node_modules/@conductor-oss/core/dist/types.d.ts.map +1 -1
  34. package/node_modules/@conductor-oss/core/dist/types.js +151 -0
  35. package/node_modules/@conductor-oss/core/dist/types.js.map +1 -1
  36. package/node_modules/@conductor-oss/plugin-agent-amp/package.json +1 -1
  37. package/node_modules/@conductor-oss/plugin-agent-ccr/package.json +1 -1
  38. package/node_modules/@conductor-oss/plugin-agent-claude-code/package.json +1 -1
  39. package/node_modules/@conductor-oss/plugin-agent-codex/package.json +1 -1
  40. package/node_modules/@conductor-oss/plugin-agent-cursor-cli/package.json +1 -1
  41. package/node_modules/@conductor-oss/plugin-agent-droid/package.json +1 -1
  42. package/node_modules/@conductor-oss/plugin-agent-gemini/package.json +1 -1
  43. package/node_modules/@conductor-oss/plugin-agent-github-copilot/package.json +1 -1
  44. package/node_modules/@conductor-oss/plugin-agent-opencode/package.json +1 -1
  45. package/node_modules/@conductor-oss/plugin-agent-qwen-code/package.json +1 -1
  46. package/node_modules/@conductor-oss/plugin-mcp-server/package.json +1 -1
  47. package/node_modules/@conductor-oss/plugin-notifier-desktop/package.json +1 -1
  48. package/node_modules/@conductor-oss/plugin-notifier-discord/package.json +1 -1
  49. package/node_modules/@conductor-oss/plugin-runtime-tmux/package.json +1 -1
  50. package/node_modules/@conductor-oss/plugin-scm-github/package.json +1 -1
  51. package/node_modules/@conductor-oss/plugin-terminal-web/package.json +1 -1
  52. package/node_modules/@conductor-oss/plugin-tracker-github/package.json +1 -1
  53. package/node_modules/@conductor-oss/plugin-workspace-worktree/package.json +1 -1
  54. package/package.json +24 -23
  55. package/web/.next/standalone/node_modules/@babel/code-frame/lib/index.js +217 -0
  56. package/web/.next/standalone/node_modules/@babel/code-frame/package.json +32 -0
  57. package/web/.next/standalone/node_modules/@babel/helper-validator-identifier/lib/identifier.js +70 -0
  58. package/web/.next/standalone/node_modules/@babel/helper-validator-identifier/lib/index.js +57 -0
  59. package/web/.next/standalone/node_modules/@babel/helper-validator-identifier/lib/keyword.js +35 -0
  60. package/web/.next/standalone/node_modules/@babel/helper-validator-identifier/package.json +31 -0
  61. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/CLI.js +338 -0
  62. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/Cache.js +208 -0
  63. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/DefaultProvider.js +35 -0
  64. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/DefaultProvider.spec.js +75 -0
  65. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/browser-data/browser-data.js +235 -0
  66. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome-headless-shell.js +47 -0
  67. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/browser-data/chrome.js +296 -0
  68. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromedriver.js +43 -0
  69. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/browser-data/chromium.js +63 -0
  70. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/browser-data/firefox.js +374 -0
  71. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/browser-data/types.js +63 -0
  72. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/debug.js +8 -0
  73. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/detectPlatform.js +47 -0
  74. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/fileUtil.js +156 -0
  75. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/httpUtil.js +132 -0
  76. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/install.js +351 -0
  77. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/launch.js +426 -0
  78. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/main-cli.js +9 -0
  79. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/main.js +15 -0
  80. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/package.json +1 -0
  81. package/web/.next/standalone/node_modules/@puppeteer/browsers/lib/esm/provider.js +13 -0
  82. package/web/.next/standalone/node_modules/@puppeteer/browsers/package.json +125 -0
  83. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/asyncify-helpers.js +53 -0
  84. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/context-asyncify.js +58 -0
  85. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/context.js +691 -0
  86. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/debug.js +6 -0
  87. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/deferred-promise.js +96 -0
  88. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/errors.js +58 -0
  89. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/esmHelpers.js +19 -0
  90. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/generated/emscripten-module.WASM_RELEASE_SYNC.js +387 -0
  91. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/generated/ffi.WASM_RELEASE_SYNC.js +71 -0
  92. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/index.js +128 -0
  93. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/lifetime.js +227 -0
  94. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/memory.js +41 -0
  95. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/module-asyncify.js +97 -0
  96. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/module-test.js +77 -0
  97. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/module.js +302 -0
  98. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/runtime-asyncify.js +49 -0
  99. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/runtime.js +300 -0
  100. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/types-ffi.js +38 -0
  101. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/types.js +58 -0
  102. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/variants.js +169 -0
  103. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/dist/vm-interface.js +12 -0
  104. package/web/.next/standalone/node_modules/@tootallnate/quickjs-emscripten/package.json +60 -0
  105. package/web/.next/standalone/node_modules/agent-base/dist/helpers.js +66 -0
  106. package/web/.next/standalone/node_modules/agent-base/dist/index.js +178 -0
  107. package/web/.next/standalone/node_modules/agent-base/package.json +46 -0
  108. package/web/.next/standalone/node_modules/ast-types/def/babel-core.js +256 -0
  109. package/web/.next/standalone/node_modules/ast-types/def/babel.js +11 -0
  110. package/web/.next/standalone/node_modules/ast-types/def/core.js +298 -0
  111. package/web/.next/standalone/node_modules/ast-types/def/es-proposals.js +33 -0
  112. package/web/.next/standalone/node_modules/ast-types/def/es2020.js +16 -0
  113. package/web/.next/standalone/node_modules/ast-types/def/es6.js +210 -0
  114. package/web/.next/standalone/node_modules/ast-types/def/es7.js +34 -0
  115. package/web/.next/standalone/node_modules/ast-types/def/esprima.js +49 -0
  116. package/web/.next/standalone/node_modules/ast-types/def/flow.js +292 -0
  117. package/web/.next/standalone/node_modules/ast-types/def/jsx.js +103 -0
  118. package/web/.next/standalone/node_modules/ast-types/def/type-annotations.js +40 -0
  119. package/web/.next/standalone/node_modules/ast-types/def/typescript.js +344 -0
  120. package/web/.next/standalone/node_modules/ast-types/fork.js +52 -0
  121. package/web/.next/standalone/node_modules/ast-types/gen/namedTypes.js +6 -0
  122. package/web/.next/standalone/node_modules/ast-types/lib/equiv.js +154 -0
  123. package/web/.next/standalone/node_modules/ast-types/lib/node-path.js +411 -0
  124. package/web/.next/standalone/node_modules/ast-types/lib/path-visitor.js +343 -0
  125. package/web/.next/standalone/node_modules/ast-types/lib/path.js +331 -0
  126. package/web/.next/standalone/node_modules/ast-types/lib/scope.js +318 -0
  127. package/web/.next/standalone/node_modules/ast-types/lib/shared.js +47 -0
  128. package/web/.next/standalone/node_modules/ast-types/lib/types.js +780 -0
  129. package/web/.next/standalone/node_modules/ast-types/main.js +53 -0
  130. package/web/.next/standalone/node_modules/ast-types/package.json +65 -0
  131. package/web/.next/standalone/node_modules/b4a/index.js +188 -0
  132. package/web/.next/standalone/node_modules/b4a/package.json +49 -0
  133. package/web/.next/standalone/node_modules/basic-ftp/dist/Client.js +782 -0
  134. package/web/.next/standalone/node_modules/basic-ftp/dist/FileInfo.js +92 -0
  135. package/web/.next/standalone/node_modules/basic-ftp/dist/FtpContext.js +365 -0
  136. package/web/.next/standalone/node_modules/basic-ftp/dist/ProgressTracker.js +72 -0
  137. package/web/.next/standalone/node_modules/basic-ftp/dist/StringEncoding.js +2 -0
  138. package/web/.next/standalone/node_modules/basic-ftp/dist/StringWriter.js +23 -0
  139. package/web/.next/standalone/node_modules/basic-ftp/dist/index.js +28 -0
  140. package/web/.next/standalone/node_modules/basic-ftp/dist/netUtils.js +66 -0
  141. package/web/.next/standalone/node_modules/basic-ftp/dist/parseControlResponse.js +66 -0
  142. package/web/.next/standalone/node_modules/basic-ftp/dist/parseList.js +79 -0
  143. package/web/.next/standalone/node_modules/basic-ftp/dist/parseListDOS.js +52 -0
  144. package/web/.next/standalone/node_modules/basic-ftp/dist/parseListMLSD.js +187 -0
  145. package/web/.next/standalone/node_modules/basic-ftp/dist/parseListUnix.js +155 -0
  146. package/web/.next/standalone/node_modules/basic-ftp/dist/transfer.js +318 -0
  147. package/web/.next/standalone/node_modules/basic-ftp/package.json +52 -0
  148. package/web/.next/standalone/node_modules/buffer-crc32/index.js +111 -0
  149. package/web/.next/standalone/node_modules/buffer-crc32/package.json +39 -0
  150. package/web/.next/standalone/node_modules/callsites/index.js +13 -0
  151. package/web/.next/standalone/node_modules/callsites/package.json +39 -0
  152. package/web/.next/standalone/node_modules/cliui/build/lib/index.js +287 -0
  153. package/web/.next/standalone/node_modules/cliui/build/lib/string-utils.js +27 -0
  154. package/web/.next/standalone/node_modules/cliui/index.mjs +13 -0
  155. package/web/.next/standalone/node_modules/cliui/package.json +83 -0
  156. package/web/.next/standalone/node_modules/cosmiconfig/dist/Explorer.js +170 -0
  157. package/web/.next/standalone/node_modules/cosmiconfig/dist/ExplorerBase.js +126 -0
  158. package/web/.next/standalone/node_modules/cosmiconfig/dist/ExplorerSync.js +184 -0
  159. package/web/.next/standalone/node_modules/cosmiconfig/dist/cacheWrapper.js +32 -0
  160. package/web/.next/standalone/node_modules/cosmiconfig/dist/canUseDynamicImport.js +23 -0
  161. package/web/.next/standalone/node_modules/cosmiconfig/dist/defaults.js +105 -0
  162. package/web/.next/standalone/node_modules/cosmiconfig/dist/getDirectory.js +38 -0
  163. package/web/.next/standalone/node_modules/cosmiconfig/dist/getPropertyByPath.js +28 -0
  164. package/web/.next/standalone/node_modules/cosmiconfig/dist/index.js +148 -0
  165. package/web/.next/standalone/node_modules/cosmiconfig/dist/loaders.js +150 -0
  166. package/web/.next/standalone/node_modules/cosmiconfig/dist/merge.js +40 -0
  167. package/web/.next/standalone/node_modules/cosmiconfig/dist/readFile.js +56 -0
  168. package/web/.next/standalone/node_modules/cosmiconfig/dist/types.js +3 -0
  169. package/web/.next/standalone/node_modules/cosmiconfig/dist/util.js +99 -0
  170. package/web/.next/standalone/node_modules/cosmiconfig/package.json +103 -0
  171. package/web/.next/standalone/node_modules/data-uri-to-buffer/dist/common.js +54 -0
  172. package/web/.next/standalone/node_modules/data-uri-to-buffer/dist/node.js +26 -0
  173. package/web/.next/standalone/node_modules/data-uri-to-buffer/package.json +48 -0
  174. package/web/.next/standalone/node_modules/debug/package.json +64 -0
  175. package/web/.next/standalone/node_modules/debug/src/browser.js +272 -0
  176. package/web/.next/standalone/node_modules/debug/src/common.js +292 -0
  177. package/web/.next/standalone/node_modules/debug/src/index.js +10 -0
  178. package/web/.next/standalone/node_modules/debug/src/node.js +263 -0
  179. package/web/.next/standalone/node_modules/degenerator/dist/compile.js +107 -0
  180. package/web/.next/standalone/node_modules/degenerator/dist/degenerator.js +156 -0
  181. package/web/.next/standalone/node_modules/degenerator/dist/index.js +19 -0
  182. package/web/.next/standalone/node_modules/degenerator/package.json +42 -0
  183. package/web/.next/standalone/node_modules/end-of-stream/index.js +96 -0
  184. package/web/.next/standalone/node_modules/end-of-stream/package.json +37 -0
  185. package/web/.next/standalone/node_modules/env-paths/index.js +74 -0
  186. package/web/.next/standalone/node_modules/env-paths/license +9 -0
  187. package/web/.next/standalone/node_modules/env-paths/package.json +45 -0
  188. package/web/.next/standalone/node_modules/env-paths/readme.md +115 -0
  189. package/web/.next/standalone/node_modules/error-ex/index.js +141 -0
  190. package/web/.next/standalone/node_modules/error-ex/package.json +46 -0
  191. package/web/.next/standalone/node_modules/escalade/package.json +74 -0
  192. package/web/.next/standalone/node_modules/escalade/sync/index.d.mts +9 -0
  193. package/web/.next/standalone/node_modules/escalade/sync/index.js +18 -0
  194. package/web/.next/standalone/node_modules/escalade/sync/index.mjs +18 -0
  195. package/web/.next/standalone/node_modules/escodegen/escodegen.js +2667 -0
  196. package/web/.next/standalone/node_modules/escodegen/package.json +63 -0
  197. package/web/.next/standalone/node_modules/esprima/dist/esprima.js +6709 -0
  198. package/web/.next/standalone/node_modules/esprima/package.json +112 -0
  199. package/web/.next/standalone/node_modules/estraverse/estraverse.js +805 -0
  200. package/web/.next/standalone/node_modules/estraverse/package.json +40 -0
  201. package/web/.next/standalone/node_modules/esutils/lib/ast.js +144 -0
  202. package/web/.next/standalone/node_modules/esutils/lib/code.js +135 -0
  203. package/web/.next/standalone/node_modules/esutils/lib/keyword.js +165 -0
  204. package/web/.next/standalone/node_modules/esutils/lib/utils.js +33 -0
  205. package/web/.next/standalone/node_modules/esutils/package.json +44 -0
  206. package/web/.next/standalone/node_modules/events-universal/default.js +1 -0
  207. package/web/.next/standalone/node_modules/events-universal/package.json +39 -0
  208. package/web/.next/standalone/node_modules/extract-zip/LICENSE +23 -0
  209. package/web/.next/standalone/node_modules/extract-zip/cli.js +19 -0
  210. package/web/.next/standalone/node_modules/extract-zip/index.js +173 -0
  211. package/web/.next/standalone/node_modules/extract-zip/package.json +80 -0
  212. package/web/.next/standalone/node_modules/extract-zip/readme.md +57 -0
  213. package/web/.next/standalone/node_modules/fast-fifo/fixed-size.js +39 -0
  214. package/web/.next/standalone/node_modules/fast-fifo/index.js +48 -0
  215. package/web/.next/standalone/node_modules/fast-fifo/package.json +28 -0
  216. package/web/.next/standalone/node_modules/fd-slicer/index.js +296 -0
  217. package/web/.next/standalone/node_modules/fd-slicer/package.json +36 -0
  218. package/web/.next/standalone/node_modules/get-stream/buffer-stream.js +52 -0
  219. package/web/.next/standalone/node_modules/get-stream/index.js +60 -0
  220. package/web/.next/standalone/node_modules/get-stream/package.json +50 -0
  221. package/web/.next/standalone/node_modules/get-uri/dist/data.js +43 -0
  222. package/web/.next/standalone/node_modules/get-uri/dist/file.js +57 -0
  223. package/web/.next/standalone/node_modules/get-uri/dist/ftp.js +93 -0
  224. package/web/.next/standalone/node_modules/get-uri/dist/http-error.js +15 -0
  225. package/web/.next/standalone/node_modules/get-uri/dist/http.js +191 -0
  226. package/web/.next/standalone/node_modules/get-uri/dist/https.js +16 -0
  227. package/web/.next/standalone/node_modules/get-uri/dist/index.js +57 -0
  228. package/web/.next/standalone/node_modules/get-uri/dist/notfound.js +16 -0
  229. package/web/.next/standalone/node_modules/get-uri/dist/notmodified.js +17 -0
  230. package/web/.next/standalone/node_modules/get-uri/package.json +58 -0
  231. package/web/.next/standalone/node_modules/http-proxy-agent/dist/index.js +148 -0
  232. package/web/.next/standalone/node_modules/http-proxy-agent/package.json +47 -0
  233. package/web/.next/standalone/node_modules/https-proxy-agent/dist/index.js +180 -0
  234. package/web/.next/standalone/node_modules/https-proxy-agent/dist/parse-proxy-response.js +101 -0
  235. package/web/.next/standalone/node_modules/https-proxy-agent/package.json +50 -0
  236. package/web/.next/standalone/node_modules/import-fresh/index.js +34 -0
  237. package/web/.next/standalone/node_modules/import-fresh/node_modules/resolve-from/index.js +47 -0
  238. package/web/.next/standalone/node_modules/import-fresh/node_modules/resolve-from/license +9 -0
  239. package/web/.next/standalone/node_modules/import-fresh/node_modules/resolve-from/package.json +34 -0
  240. package/web/.next/standalone/node_modules/import-fresh/node_modules/resolve-from/readme.md +72 -0
  241. package/web/.next/standalone/node_modules/import-fresh/package.json +48 -0
  242. package/web/.next/standalone/node_modules/ip-address/dist/address-error.js +12 -0
  243. package/web/.next/standalone/node_modules/ip-address/dist/common.js +46 -0
  244. package/web/.next/standalone/node_modules/ip-address/dist/ip-address.js +35 -0
  245. package/web/.next/standalone/node_modules/ip-address/dist/ipv4.js +360 -0
  246. package/web/.next/standalone/node_modules/ip-address/dist/ipv6.js +1003 -0
  247. package/web/.next/standalone/node_modules/ip-address/dist/v4/constants.js +8 -0
  248. package/web/.next/standalone/node_modules/ip-address/dist/v6/constants.js +76 -0
  249. package/web/.next/standalone/node_modules/ip-address/dist/v6/helpers.js +45 -0
  250. package/web/.next/standalone/node_modules/ip-address/dist/v6/regular-expressions.js +95 -0
  251. package/web/.next/standalone/node_modules/ip-address/package.json +78 -0
  252. package/web/.next/standalone/node_modules/is-arrayish/index.js +10 -0
  253. package/web/.next/standalone/node_modules/is-arrayish/package.json +34 -0
  254. package/web/.next/standalone/node_modules/js-tokens/index.js +23 -0
  255. package/web/.next/standalone/node_modules/js-tokens/package.json +30 -0
  256. package/web/.next/standalone/node_modules/js-yaml/index.js +47 -0
  257. package/web/.next/standalone/node_modules/js-yaml/lib/common.js +59 -0
  258. package/web/.next/standalone/node_modules/js-yaml/lib/dumper.js +965 -0
  259. package/web/.next/standalone/node_modules/js-yaml/lib/exception.js +55 -0
  260. package/web/.next/standalone/node_modules/js-yaml/lib/loader.js +1733 -0
  261. package/web/.next/standalone/node_modules/js-yaml/lib/schema/core.js +11 -0
  262. package/web/.next/standalone/node_modules/js-yaml/lib/schema/default.js +22 -0
  263. package/web/.next/standalone/node_modules/js-yaml/lib/schema/failsafe.js +17 -0
  264. package/web/.next/standalone/node_modules/js-yaml/lib/schema/json.js +19 -0
  265. package/web/.next/standalone/node_modules/js-yaml/lib/schema.js +121 -0
  266. package/web/.next/standalone/node_modules/js-yaml/lib/snippet.js +101 -0
  267. package/web/.next/standalone/node_modules/js-yaml/lib/type/binary.js +125 -0
  268. package/web/.next/standalone/node_modules/js-yaml/lib/type/bool.js +35 -0
  269. package/web/.next/standalone/node_modules/js-yaml/lib/type/float.js +97 -0
  270. package/web/.next/standalone/node_modules/js-yaml/lib/type/int.js +156 -0
  271. package/web/.next/standalone/node_modules/js-yaml/lib/type/map.js +8 -0
  272. package/web/.next/standalone/node_modules/js-yaml/lib/type/merge.js +12 -0
  273. package/web/.next/standalone/node_modules/js-yaml/lib/type/null.js +35 -0
  274. package/web/.next/standalone/node_modules/js-yaml/lib/type/omap.js +44 -0
  275. package/web/.next/standalone/node_modules/js-yaml/lib/type/pairs.js +53 -0
  276. package/web/.next/standalone/node_modules/js-yaml/lib/type/seq.js +8 -0
  277. package/web/.next/standalone/node_modules/js-yaml/lib/type/set.js +29 -0
  278. package/web/.next/standalone/node_modules/js-yaml/lib/type/str.js +8 -0
  279. package/web/.next/standalone/node_modules/js-yaml/lib/type/timestamp.js +88 -0
  280. package/web/.next/standalone/node_modules/js-yaml/lib/type.js +66 -0
  281. package/web/.next/standalone/node_modules/js-yaml/package.json +66 -0
  282. package/web/.next/standalone/node_modules/json-parse-even-better-errors/index.js +121 -0
  283. package/web/.next/standalone/node_modules/json-parse-even-better-errors/package.json +33 -0
  284. package/web/.next/standalone/node_modules/lines-and-columns/build/index.js +62 -0
  285. package/web/.next/standalone/node_modules/lines-and-columns/package.json +49 -0
  286. package/web/.next/standalone/node_modules/lru-cache/index.js +1227 -0
  287. package/web/.next/standalone/node_modules/lru-cache/package.json +96 -0
  288. package/web/.next/standalone/node_modules/ms/index.js +162 -0
  289. package/web/.next/standalone/node_modules/ms/package.json +38 -0
  290. package/web/.next/standalone/node_modules/netmask/lib/netmask.js +208 -0
  291. package/web/.next/standalone/node_modules/netmask/package.json +36 -0
  292. package/web/.next/standalone/node_modules/once/once.js +42 -0
  293. package/web/.next/standalone/node_modules/once/package.json +33 -0
  294. package/web/.next/standalone/node_modules/pac-proxy-agent/dist/index.js +238 -0
  295. package/web/.next/standalone/node_modules/pac-proxy-agent/package.json +58 -0
  296. package/web/.next/standalone/node_modules/pac-resolver/dist/dateRange.js +73 -0
  297. package/web/.next/standalone/node_modules/pac-resolver/dist/dnsDomainIs.js +30 -0
  298. package/web/.next/standalone/node_modules/pac-resolver/dist/dnsDomainLevels.js +28 -0
  299. package/web/.next/standalone/node_modules/pac-resolver/dist/dnsResolve.js +32 -0
  300. package/web/.next/standalone/node_modules/pac-resolver/dist/index.js +87 -0
  301. package/web/.next/standalone/node_modules/pac-resolver/dist/ip.js +50 -0
  302. package/web/.next/standalone/node_modules/pac-resolver/dist/isInNet.js +42 -0
  303. package/web/.next/standalone/node_modules/pac-resolver/dist/isPlainHostName.js +23 -0
  304. package/web/.next/standalone/node_modules/pac-resolver/dist/isResolvable.js +23 -0
  305. package/web/.next/standalone/node_modules/pac-resolver/dist/localHostOrDomainIs.js +40 -0
  306. package/web/.next/standalone/node_modules/pac-resolver/dist/myIpAddress.js +50 -0
  307. package/web/.next/standalone/node_modules/pac-resolver/dist/shExpMatch.js +41 -0
  308. package/web/.next/standalone/node_modules/pac-resolver/dist/timeRange.js +92 -0
  309. package/web/.next/standalone/node_modules/pac-resolver/dist/util.js +22 -0
  310. package/web/.next/standalone/node_modules/pac-resolver/dist/weekdayRange.js +91 -0
  311. package/web/.next/standalone/node_modules/pac-resolver/package.json +47 -0
  312. package/web/.next/standalone/node_modules/parent-module/index.js +37 -0
  313. package/web/.next/standalone/node_modules/parent-module/package.json +46 -0
  314. package/web/.next/standalone/node_modules/parse-json/index.js +54 -0
  315. package/web/.next/standalone/node_modules/parse-json/package.json +45 -0
  316. package/web/.next/standalone/node_modules/pend/index.js +55 -0
  317. package/web/.next/standalone/node_modules/pend/package.json +18 -0
  318. package/web/.next/standalone/node_modules/picocolors/package.json +25 -0
  319. package/web/.next/standalone/node_modules/picocolors/picocolors.js +75 -0
  320. package/web/.next/standalone/node_modules/progress/index.js +1 -0
  321. package/web/.next/standalone/node_modules/progress/lib/node-progress.js +236 -0
  322. package/web/.next/standalone/node_modules/progress/package.json +26 -0
  323. package/web/.next/standalone/node_modules/proxy-agent/dist/index.js +138 -0
  324. package/web/.next/standalone/node_modules/proxy-agent/package.json +60 -0
  325. package/web/.next/standalone/node_modules/proxy-from-env/index.js +108 -0
  326. package/web/.next/standalone/node_modules/proxy-from-env/package.json +34 -0
  327. package/web/.next/standalone/node_modules/pump/index.js +86 -0
  328. package/web/.next/standalone/node_modules/pump/package.json +30 -0
  329. package/web/.next/standalone/node_modules/puppeteer/lib/esm/package.json +1 -0
  330. package/web/.next/standalone/node_modules/puppeteer/lib/esm/puppeteer/getConfiguration.js +122 -0
  331. package/web/.next/standalone/node_modules/puppeteer/lib/esm/puppeteer/puppeteer.js +40 -0
  332. package/web/.next/standalone/node_modules/puppeteer/package.json +145 -0
  333. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/package.json +1 -0
  334. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/Browser.js +204 -0
  335. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/BrowserContext.js +182 -0
  336. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/CDPSession.js +68 -0
  337. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/DeviceRequestPrompt.js +34 -0
  338. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/Dialog.js +90 -0
  339. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/ElementHandle.js +1406 -0
  340. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/ElementHandleSymbol.js +10 -0
  341. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/Frame.js +904 -0
  342. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/HTTPRequest.js +461 -0
  343. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/HTTPResponse.js +56 -0
  344. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/Input.js +211 -0
  345. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/JSHandle.js +227 -0
  346. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/Page.js +1511 -0
  347. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/Realm.js +44 -0
  348. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/Target.js +49 -0
  349. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/WebWorker.js +106 -0
  350. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/api.js +22 -0
  351. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/api/locators/locators.js +769 -0
  352. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/bidi/BrowserConnector.js +83 -0
  353. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/Accessibility.js +591 -0
  354. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/Binding.js +162 -0
  355. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/BluetoothEmulation.js +26 -0
  356. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/Browser.js +321 -0
  357. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/BrowserConnector.js +26 -0
  358. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/BrowserContext.js +192 -0
  359. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/CdpPreloadScript.js +39 -0
  360. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/CdpSession.js +129 -0
  361. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/Connection.js +244 -0
  362. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/Coverage.js +372 -0
  363. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/DeviceRequestPrompt.js +151 -0
  364. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/Dialog.js +23 -0
  365. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/ElementHandle.js +206 -0
  366. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/EmulationManager.js +458 -0
  367. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/ExecutionContext.js +457 -0
  368. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/ExtensionTransport.js +175 -0
  369. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/Frame.js +358 -0
  370. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/FrameManager.js +455 -0
  371. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/FrameManagerEvents.js +24 -0
  372. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/FrameTree.js +91 -0
  373. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/HTTPRequest.js +195 -0
  374. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/HTTPResponse.js +126 -0
  375. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/Input.js +499 -0
  376. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/IsolatedWorld.js +157 -0
  377. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/IsolatedWorlds.js +20 -0
  378. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/JSHandle.js +101 -0
  379. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/LifecycleWatcher.js +174 -0
  380. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/NetworkEventManager.js +162 -0
  381. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/NetworkManager.js +601 -0
  382. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/Page.js +1006 -0
  383. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/PredefinedNetworkConditions.js +69 -0
  384. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/Target.js +243 -0
  385. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/TargetManageEvents.js +7 -0
  386. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/TargetManager.js +320 -0
  387. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/Tracing.js +110 -0
  388. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/WebWorker.js +73 -0
  389. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/cdp.js +43 -0
  390. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/cdp/utils.js +216 -0
  391. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.js +54 -0
  392. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserConnector.js +129 -0
  393. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserWebSocketTransport.js +39 -0
  394. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/CSSQueryHandler.js +18 -0
  395. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/CallbackRegistry.js +133 -0
  396. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/ConsoleMessage.js +78 -0
  397. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/CustomQueryHandler.js +114 -0
  398. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/Debug.js +109 -0
  399. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/Device.js +1604 -0
  400. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/Errors.js +94 -0
  401. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/EventEmitter.js +128 -0
  402. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/FileChooser.js +75 -0
  403. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/GetQueryHandler.js +70 -0
  404. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/HandleIterator.js +142 -0
  405. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/LazyArg.js +23 -0
  406. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkManagerEvents.js +21 -0
  407. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/PDFOptions.js +58 -0
  408. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/PQueryHandler.js +18 -0
  409. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/PSelectorParser.js +100 -0
  410. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/PierceQueryHandler.js +18 -0
  411. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/Puppeteer.js +98 -0
  412. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/QueryHandler.js +225 -0
  413. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/ScriptInjector.js +51 -0
  414. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/SecurityDetails.js +69 -0
  415. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/TaskQueue.js +24 -0
  416. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/TextQueryHandler.js +15 -0
  417. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/TimeoutSettings.js +39 -0
  418. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/USKeyboardLayout.js +394 -0
  419. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/WaitTask.js +197 -0
  420. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/XPathQueryHandler.js +21 -0
  421. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/common.js +35 -0
  422. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/common/util.js +375 -0
  423. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/environment.js +24 -0
  424. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/generated/injected.js +9 -0
  425. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/index-browser.js +11 -0
  426. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/index.js +8 -0
  427. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserLauncher.js +312 -0
  428. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/node/ChromeLauncher.js +258 -0
  429. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/node/FirefoxLauncher.js +166 -0
  430. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/node/LaunchOptions.js +22 -0
  431. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/node/NodeWebSocketTransport.js +55 -0
  432. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/node/PipeTransport.js +72 -0
  433. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/node/PuppeteerNode.js +281 -0
  434. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/node/ScreenRecorder.js +279 -0
  435. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/node/node.js +12 -0
  436. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/node/util/fs.js +24 -0
  437. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/puppeteer-core.js +41 -0
  438. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/revisions.js +14 -0
  439. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/util/AsyncIterableUtil.js +29 -0
  440. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/util/Deferred.js +105 -0
  441. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/util/ErrorLike.js +41 -0
  442. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/util/Function.js +70 -0
  443. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/util/Mutex.js +46 -0
  444. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/util/assert.js +18 -0
  445. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/util/decorators.js +232 -0
  446. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/util/disposable.js +342 -0
  447. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/util/encoding.js +63 -0
  448. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/util/incremental-id-generator.js +18 -0
  449. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/util/util.js +13 -0
  450. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/puppeteer/util/version.js +10 -0
  451. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/third_party/mitt/mitt.js +44 -0
  452. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/third_party/parsel-js/parsel-js.js +196 -0
  453. package/web/.next/standalone/node_modules/puppeteer-core/lib/esm/third_party/rxjs/rxjs.js +2887 -0
  454. package/web/.next/standalone/node_modules/puppeteer-core/package.json +169 -0
  455. package/web/.next/standalone/node_modules/semver/functions/clean.js +8 -0
  456. package/web/.next/standalone/node_modules/semver/functions/compare-build.js +9 -0
  457. package/web/.next/standalone/node_modules/semver/functions/compare-loose.js +5 -0
  458. package/web/.next/standalone/node_modules/semver/functions/diff.js +60 -0
  459. package/web/.next/standalone/node_modules/semver/functions/inc.js +21 -0
  460. package/web/.next/standalone/node_modules/semver/functions/major.js +5 -0
  461. package/web/.next/standalone/node_modules/semver/functions/minor.js +5 -0
  462. package/web/.next/standalone/node_modules/semver/functions/patch.js +5 -0
  463. package/web/.next/standalone/node_modules/semver/functions/prerelease.js +8 -0
  464. package/web/.next/standalone/node_modules/semver/functions/rcompare.js +5 -0
  465. package/web/.next/standalone/node_modules/semver/functions/rsort.js +5 -0
  466. package/web/.next/standalone/node_modules/semver/functions/sort.js +5 -0
  467. package/web/.next/standalone/node_modules/semver/functions/valid.js +8 -0
  468. package/web/.next/standalone/node_modules/semver/index.js +91 -0
  469. package/web/.next/standalone/node_modules/semver/ranges/gtr.js +6 -0
  470. package/web/.next/standalone/node_modules/semver/ranges/intersects.js +9 -0
  471. package/web/.next/standalone/node_modules/semver/ranges/ltr.js +6 -0
  472. package/web/.next/standalone/node_modules/semver/ranges/max-satisfying.js +27 -0
  473. package/web/.next/standalone/node_modules/semver/ranges/min-satisfying.js +26 -0
  474. package/web/.next/standalone/node_modules/semver/ranges/min-version.js +63 -0
  475. package/web/.next/standalone/node_modules/semver/ranges/outside.js +82 -0
  476. package/web/.next/standalone/node_modules/semver/ranges/simplify.js +49 -0
  477. package/web/.next/standalone/node_modules/semver/ranges/subset.js +249 -0
  478. package/web/.next/standalone/node_modules/semver/ranges/to-comparators.js +10 -0
  479. package/web/.next/standalone/node_modules/semver/ranges/valid.js +13 -0
  480. package/web/.next/standalone/node_modules/smart-buffer/build/smartbuffer.js +1233 -0
  481. package/web/.next/standalone/node_modules/smart-buffer/build/utils.js +108 -0
  482. package/web/.next/standalone/node_modules/smart-buffer/package.json +79 -0
  483. package/web/.next/standalone/node_modules/socks/build/client/socksclient.js +793 -0
  484. package/web/.next/standalone/node_modules/socks/build/common/constants.js +108 -0
  485. package/web/.next/standalone/node_modules/socks/build/common/helpers.js +167 -0
  486. package/web/.next/standalone/node_modules/socks/build/common/receivebuffer.js +43 -0
  487. package/web/.next/standalone/node_modules/socks/build/common/util.js +25 -0
  488. package/web/.next/standalone/node_modules/socks/build/index.js +18 -0
  489. package/web/.next/standalone/node_modules/socks/package.json +58 -0
  490. package/web/.next/standalone/node_modules/socks-proxy-agent/dist/index.js +195 -0
  491. package/web/.next/standalone/node_modules/socks-proxy-agent/package.json +142 -0
  492. package/web/.next/standalone/node_modules/source-map/lib/array-set.js +121 -0
  493. package/web/.next/standalone/node_modules/source-map/lib/base64-vlq.js +140 -0
  494. package/web/.next/standalone/node_modules/source-map/lib/base64.js +67 -0
  495. package/web/.next/standalone/node_modules/source-map/lib/binary-search.js +111 -0
  496. package/web/.next/standalone/node_modules/source-map/lib/mapping-list.js +79 -0
  497. package/web/.next/standalone/node_modules/source-map/lib/quick-sort.js +114 -0
  498. package/web/.next/standalone/node_modules/source-map/lib/source-map-consumer.js +1145 -0
  499. package/web/.next/standalone/node_modules/source-map/lib/source-map-generator.js +425 -0
  500. package/web/.next/standalone/node_modules/source-map/lib/source-node.js +413 -0
  501. package/web/.next/standalone/node_modules/source-map/lib/util.js +488 -0
  502. package/web/.next/standalone/node_modules/source-map/package.json +73 -0
  503. package/web/.next/standalone/node_modules/source-map/source-map.js +8 -0
  504. package/web/.next/standalone/node_modules/streamx/index.js +1184 -0
  505. package/web/.next/standalone/node_modules/streamx/package.json +34 -0
  506. package/web/.next/standalone/node_modules/tar-fs/LICENSE +21 -0
  507. package/web/.next/standalone/node_modules/tar-fs/README.md +154 -0
  508. package/web/.next/standalone/node_modules/tar-fs/index.js +400 -0
  509. package/web/.next/standalone/node_modules/tar-fs/package.json +61 -0
  510. package/web/.next/standalone/node_modules/tar-stream/constants.js +14 -0
  511. package/web/.next/standalone/node_modules/tar-stream/extract.js +406 -0
  512. package/web/.next/standalone/node_modules/tar-stream/headers.js +321 -0
  513. package/web/.next/standalone/node_modules/tar-stream/index.js +2 -0
  514. package/web/.next/standalone/node_modules/tar-stream/pack.js +287 -0
  515. package/web/.next/standalone/node_modules/tar-stream/package.json +42 -0
  516. package/web/.next/standalone/node_modules/text-decoder/index.js +64 -0
  517. package/web/.next/standalone/node_modules/text-decoder/lib/pass-through-decoder.js +19 -0
  518. package/web/.next/standalone/node_modules/text-decoder/lib/utf8-decoder.js +185 -0
  519. package/web/.next/standalone/node_modules/text-decoder/package.json +39 -0
  520. package/web/.next/standalone/node_modules/tslib/package.json +47 -0
  521. package/web/.next/standalone/node_modules/tslib/tslib.js +484 -0
  522. package/web/.next/standalone/node_modules/wrappy/package.json +29 -0
  523. package/web/.next/standalone/node_modules/wrappy/wrappy.js +33 -0
  524. package/web/.next/standalone/node_modules/ws/lib/buffer-util.js +131 -0
  525. package/web/.next/standalone/node_modules/ws/lib/constants.js +19 -0
  526. package/web/.next/standalone/node_modules/ws/lib/event-target.js +292 -0
  527. package/web/.next/standalone/node_modules/ws/lib/extension.js +203 -0
  528. package/web/.next/standalone/node_modules/ws/lib/limiter.js +55 -0
  529. package/web/.next/standalone/node_modules/ws/lib/permessage-deflate.js +528 -0
  530. package/web/.next/standalone/node_modules/ws/lib/receiver.js +706 -0
  531. package/web/.next/standalone/node_modules/ws/lib/sender.js +602 -0
  532. package/web/.next/standalone/node_modules/ws/lib/stream.js +161 -0
  533. package/web/.next/standalone/node_modules/ws/lib/subprotocol.js +62 -0
  534. package/web/.next/standalone/node_modules/ws/lib/validation.js +152 -0
  535. package/web/.next/standalone/node_modules/ws/lib/websocket-server.js +554 -0
  536. package/web/.next/standalone/node_modules/ws/lib/websocket.js +1393 -0
  537. package/web/.next/standalone/node_modules/ws/package.json +69 -0
  538. package/web/.next/standalone/node_modules/ws/wrapper.mjs +8 -0
  539. package/web/.next/standalone/node_modules/y18n/build/lib/index.js +174 -0
  540. package/web/.next/standalone/node_modules/y18n/build/lib/platform-shims/node.js +19 -0
  541. package/web/.next/standalone/node_modules/y18n/index.mjs +8 -0
  542. package/web/.next/standalone/node_modules/y18n/package.json +70 -0
  543. package/web/.next/standalone/node_modules/yargs/build/lib/argsert.js +62 -0
  544. package/web/.next/standalone/node_modules/yargs/build/lib/command.js +449 -0
  545. package/web/.next/standalone/node_modules/yargs/build/lib/completion-templates.js +48 -0
  546. package/web/.next/standalone/node_modules/yargs/build/lib/completion.js +243 -0
  547. package/web/.next/standalone/node_modules/yargs/build/lib/middleware.js +88 -0
  548. package/web/.next/standalone/node_modules/yargs/build/lib/parse-command.js +32 -0
  549. package/web/.next/standalone/node_modules/yargs/build/lib/typings/common-types.js +9 -0
  550. package/web/.next/standalone/node_modules/yargs/build/lib/usage.js +584 -0
  551. package/web/.next/standalone/node_modules/yargs/build/lib/utils/apply-extends.js +59 -0
  552. package/web/.next/standalone/node_modules/yargs/build/lib/utils/is-promise.js +5 -0
  553. package/web/.next/standalone/node_modules/yargs/build/lib/utils/levenshtein.js +34 -0
  554. package/web/.next/standalone/node_modules/yargs/build/lib/utils/maybe-async-result.js +17 -0
  555. package/web/.next/standalone/node_modules/yargs/build/lib/utils/obj-filter.js +10 -0
  556. package/web/.next/standalone/node_modules/yargs/build/lib/utils/process-argv.js +17 -0
  557. package/web/.next/standalone/node_modules/yargs/build/lib/utils/set-blocking.js +12 -0
  558. package/web/.next/standalone/node_modules/yargs/build/lib/utils/which-module.js +10 -0
  559. package/web/.next/standalone/node_modules/yargs/build/lib/validation.js +305 -0
  560. package/web/.next/standalone/node_modules/yargs/build/lib/yargs-factory.js +1512 -0
  561. package/web/.next/standalone/node_modules/yargs/build/lib/yerror.js +9 -0
  562. package/web/.next/standalone/node_modules/yargs/helpers/helpers.mjs +10 -0
  563. package/web/.next/standalone/node_modules/yargs/index.mjs +8 -0
  564. package/web/.next/standalone/node_modules/yargs/lib/platform-shims/esm.mjs +73 -0
  565. package/web/.next/standalone/node_modules/yargs/package.json +123 -0
  566. package/web/.next/standalone/node_modules/yargs-parser/build/lib/index.js +62 -0
  567. package/web/.next/standalone/node_modules/yargs-parser/build/lib/string-utils.js +65 -0
  568. package/web/.next/standalone/node_modules/yargs-parser/build/lib/tokenize-arg-string.js +40 -0
  569. package/web/.next/standalone/node_modules/yargs-parser/build/lib/yargs-parser-types.js +12 -0
  570. package/web/.next/standalone/node_modules/yargs-parser/build/lib/yargs-parser.js +1045 -0
  571. package/web/.next/standalone/node_modules/yargs-parser/package.json +92 -0
  572. package/web/.next/standalone/node_modules/yauzl/LICENSE +21 -0
  573. package/web/.next/standalone/node_modules/yauzl/README.md +658 -0
  574. package/web/.next/standalone/node_modules/yauzl/index.js +796 -0
  575. package/web/.next/standalone/node_modules/yauzl/package.json +40 -0
  576. package/web/.next/standalone/packages/web/.next/BUILD_ID +1 -1
  577. package/web/.next/standalone/packages/web/.next/app-path-routes-manifest.json +10 -0
  578. package/web/.next/standalone/packages/web/.next/build-manifest.json +6 -6
  579. package/web/.next/standalone/packages/web/.next/node_modules/puppeteer-582bc9288a971b4a/lib/esm/package.json +1 -0
  580. package/web/.next/standalone/packages/web/.next/node_modules/puppeteer-582bc9288a971b4a/lib/esm/puppeteer/getConfiguration.js +122 -0
  581. package/web/.next/standalone/packages/web/.next/node_modules/puppeteer-582bc9288a971b4a/lib/esm/puppeteer/puppeteer.js +40 -0
  582. package/web/.next/standalone/packages/web/.next/node_modules/puppeteer-582bc9288a971b4a/package.json +145 -0
  583. package/web/.next/standalone/packages/web/.next/prerender-manifest.json +3 -27
  584. package/web/.next/standalone/packages/web/.next/routes-manifest.json +70 -0
  585. package/web/.next/standalone/packages/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  586. package/web/.next/standalone/packages/web/.next/server/app/_global-error/page.js +1 -1
  587. package/web/.next/standalone/packages/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  588. package/web/.next/standalone/packages/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  589. package/web/.next/standalone/packages/web/.next/server/app/_global-error.html +2 -2
  590. package/web/.next/standalone/packages/web/.next/server/app/_global-error.rsc +1 -1
  591. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  592. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  593. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  594. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  595. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  596. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  597. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page/server-reference-manifest.json +7 -7
  598. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page.js +10 -7
  599. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  600. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  601. package/web/.next/standalone/packages/web/.next/server/app/_not-found.html +1 -1
  602. package/web/.next/standalone/packages/web/.next/server/app/_not-found.rsc +15 -14
  603. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_full.segment.rsc +15 -14
  604. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  605. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_index.segment.rsc +6 -5
  606. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  607. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  608. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  609. package/web/.next/standalone/packages/web/.next/server/app/api/access/route.js +3 -3
  610. package/web/.next/standalone/packages/web/.next/server/app/api/access/route.js.nft.json +1 -1
  611. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route.js +5 -4
  612. package/web/.next/standalone/packages/web/.next/server/app/api/agents/route.js.nft.json +1 -1
  613. package/web/.next/standalone/packages/web/.next/server/app/api/app-update/route/app-paths-manifest.json +3 -0
  614. package/web/.next/standalone/packages/web/.next/server/app/api/app-update/route/build-manifest.json +11 -0
  615. package/web/.next/standalone/packages/web/.next/server/app/api/app-update/route/server-reference-manifest.json +4 -0
  616. package/web/.next/standalone/packages/web/.next/server/app/api/app-update/route.js +10 -0
  617. package/web/.next/standalone/packages/web/.next/server/app/api/app-update/route.js.map +5 -0
  618. package/web/.next/standalone/packages/web/.next/server/app/api/app-update/route.js.nft.json +1 -0
  619. package/web/.next/standalone/packages/web/.next/server/app/api/app-update/route_client-reference-manifest.js +2 -0
  620. package/web/.next/standalone/packages/web/.next/server/app/api/attachments/route.js +3 -3
  621. package/web/.next/standalone/packages/web/.next/server/app/api/attachments/route.js.nft.json +1 -1
  622. package/web/.next/standalone/packages/web/.next/server/app/api/auth/session/route.js +3 -3
  623. package/web/.next/standalone/packages/web/.next/server/app/api/auth/session/route.js.nft.json +1 -1
  624. package/web/.next/standalone/packages/web/.next/server/app/api/boards/comments/route/app-paths-manifest.json +3 -0
  625. package/web/.next/standalone/packages/web/.next/server/app/api/boards/comments/route/build-manifest.json +11 -0
  626. package/web/.next/standalone/packages/web/.next/server/app/api/boards/comments/route/server-reference-manifest.json +4 -0
  627. package/web/.next/standalone/packages/web/.next/server/app/api/boards/comments/route.js +10 -0
  628. package/web/.next/standalone/packages/web/.next/server/app/api/boards/comments/route.js.map +5 -0
  629. package/web/.next/standalone/packages/web/.next/server/app/api/boards/comments/route.js.nft.json +1 -0
  630. package/web/.next/standalone/packages/web/.next/server/app/api/boards/comments/route_client-reference-manifest.js +2 -0
  631. package/web/.next/standalone/packages/web/.next/server/app/api/boards/route.js +3 -3
  632. package/web/.next/standalone/packages/web/.next/server/app/api/boards/route.js.nft.json +1 -1
  633. package/web/.next/standalone/packages/web/.next/server/app/api/config/route.js +3 -3
  634. package/web/.next/standalone/packages/web/.next/server/app/api/config/route.js.nft.json +1 -1
  635. package/web/.next/standalone/packages/web/.next/server/app/api/context-files/open/route/app-paths-manifest.json +3 -0
  636. package/web/.next/standalone/packages/web/.next/server/app/api/context-files/open/route/build-manifest.json +11 -0
  637. package/web/.next/standalone/packages/web/.next/server/app/api/context-files/open/route/server-reference-manifest.json +4 -0
  638. package/web/.next/standalone/packages/web/.next/server/app/api/context-files/open/route.js +10 -0
  639. package/web/.next/standalone/packages/web/.next/server/app/api/context-files/open/route.js.map +5 -0
  640. package/web/.next/standalone/packages/web/.next/server/app/api/context-files/open/route.js.nft.json +1 -0
  641. package/web/.next/standalone/packages/web/.next/server/app/api/context-files/open/route_client-reference-manifest.js +2 -0
  642. package/web/.next/standalone/packages/web/.next/server/app/api/context-files/route.js +3 -3
  643. package/web/.next/standalone/packages/web/.next/server/app/api/context-files/route.js.nft.json +1 -1
  644. package/web/.next/standalone/packages/web/.next/server/app/api/events/route.js +3 -3
  645. package/web/.next/standalone/packages/web/.next/server/app/api/events/route.js.nft.json +1 -1
  646. package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route.js +3 -3
  647. package/web/.next/standalone/packages/web/.next/server/app/api/executor/health/route.js.nft.json +1 -1
  648. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/directory/route.js +3 -3
  649. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/directory/route.js.nft.json +1 -1
  650. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route.js +3 -3
  651. package/web/.next/standalone/packages/web/.next/server/app/api/filesystem/pick-directory/route.js.nft.json +1 -1
  652. package/web/.next/standalone/packages/web/.next/server/app/api/github/repos/route.js +3 -3
  653. package/web/.next/standalone/packages/web/.next/server/app/api/github/repos/route.js.nft.json +1 -1
  654. package/web/.next/standalone/packages/web/.next/server/app/api/github/webhook/route/app-paths-manifest.json +3 -0
  655. package/web/.next/standalone/packages/web/.next/server/app/api/github/webhook/route/build-manifest.json +11 -0
  656. package/web/.next/standalone/packages/web/.next/server/app/api/github/webhook/route/server-reference-manifest.json +4 -0
  657. package/web/.next/standalone/packages/web/.next/server/app/api/github/webhook/route.js +10 -0
  658. package/web/.next/standalone/packages/web/.next/server/app/api/github/webhook/route.js.map +5 -0
  659. package/web/.next/standalone/packages/web/.next/server/app/api/github/webhook/route.js.nft.json +1 -0
  660. package/web/.next/standalone/packages/web/.next/server/app/api/github/webhook/route_client-reference-manifest.js +2 -0
  661. package/web/.next/standalone/packages/web/.next/server/app/api/health/boards/route.js +3 -3
  662. package/web/.next/standalone/packages/web/.next/server/app/api/health/boards/route.js.nft.json +1 -1
  663. package/web/.next/standalone/packages/web/.next/server/app/api/health/sessions/route.js +3 -3
  664. package/web/.next/standalone/packages/web/.next/server/app/api/health/sessions/route.js.nft.json +1 -1
  665. package/web/.next/standalone/packages/web/.next/server/app/api/notifications/route.js +3 -3
  666. package/web/.next/standalone/packages/web/.next/server/app/api/notifications/route.js.nft.json +1 -1
  667. package/web/.next/standalone/packages/web/.next/server/app/api/preferences/route.js +3 -3
  668. package/web/.next/standalone/packages/web/.next/server/app/api/preferences/route.js.nft.json +1 -1
  669. package/web/.next/standalone/packages/web/.next/server/app/api/remote-access/route/app-paths-manifest.json +3 -0
  670. package/web/.next/standalone/packages/web/.next/server/app/api/remote-access/route/build-manifest.json +11 -0
  671. package/web/.next/standalone/packages/web/.next/server/app/api/remote-access/route/server-reference-manifest.json +4 -0
  672. package/web/.next/standalone/packages/web/.next/server/app/api/remote-access/route.js +11 -0
  673. package/web/.next/standalone/packages/web/.next/server/app/api/remote-access/route.js.map +5 -0
  674. package/web/.next/standalone/packages/web/.next/server/app/api/remote-access/route.js.nft.json +1 -0
  675. package/web/.next/standalone/packages/web/.next/server/app/api/remote-access/route_client-reference-manifest.js +2 -0
  676. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route.js +3 -3
  677. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
  678. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/route.js +3 -3
  679. package/web/.next/standalone/packages/web/.next/server/app/api/repositories/route.js.nft.json +1 -1
  680. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/actions/route.js +3 -3
  681. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/actions/route.js.nft.json +1 -1
  682. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route.js +3 -3
  683. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/archive/route.js.nft.json +1 -1
  684. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/checks/route.js +3 -3
  685. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/checks/route.js.nft.json +1 -1
  686. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/diff/route.js +3 -3
  687. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/diff/route.js.nft.json +1 -1
  688. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/route.js +3 -3
  689. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/route.js.nft.json +1 -1
  690. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/stream/route/app-paths-manifest.json +3 -0
  691. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/stream/route/build-manifest.json +11 -0
  692. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/stream/route/server-reference-manifest.json +4 -0
  693. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/stream/route.js +10 -0
  694. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/stream/route.js.map +5 -0
  695. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/stream/route.js.nft.json +1 -0
  696. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feed/stream/route_client-reference-manifest.js +2 -0
  697. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feedback/route.js +3 -3
  698. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/feedback/route.js.nft.json +1 -1
  699. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/files/route.js +3 -3
  700. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/files/route.js.nft.json +1 -1
  701. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/interrupt/route/app-paths-manifest.json +3 -0
  702. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/interrupt/route/build-manifest.json +11 -0
  703. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/interrupt/route/server-reference-manifest.json +4 -0
  704. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/interrupt/route.js +10 -0
  705. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/interrupt/route.js.map +5 -0
  706. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/interrupt/route.js.nft.json +1 -0
  707. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/interrupt/route_client-reference-manifest.js +2 -0
  708. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/keys/route.js +3 -3
  709. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/keys/route.js.nft.json +1 -1
  710. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/kill/route.js +3 -3
  711. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/kill/route.js.nft.json +1 -1
  712. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/route.js +3 -3
  713. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/route.js.nft.json +1 -1
  714. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/stream/route.js +3 -3
  715. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/output/stream/route.js.nft.json +1 -1
  716. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/dom/route/app-paths-manifest.json +3 -0
  717. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/dom/route/build-manifest.json +11 -0
  718. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/dom/route/server-reference-manifest.json +4 -0
  719. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/dom/route.js +10 -0
  720. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/dom/route.js.map +5 -0
  721. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/dom/route.js.nft.json +1 -0
  722. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/dom/route_client-reference-manifest.js +2 -0
  723. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/route/app-paths-manifest.json +3 -0
  724. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/route/build-manifest.json +11 -0
  725. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/route/server-reference-manifest.json +4 -0
  726. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/route.js +10 -0
  727. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/route.js.map +5 -0
  728. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/route.js.nft.json +1 -0
  729. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/route_client-reference-manifest.js +2 -0
  730. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/screenshot/route/app-paths-manifest.json +3 -0
  731. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/screenshot/route/build-manifest.json +11 -0
  732. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/screenshot/route/server-reference-manifest.json +4 -0
  733. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/screenshot/route.js +10 -0
  734. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/screenshot/route.js.map +5 -0
  735. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/screenshot/route.js.nft.json +1 -0
  736. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/preview/screenshot/route_client-reference-manifest.js +2 -0
  737. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/restore/route.js +3 -3
  738. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/restore/route.js.nft.json +1 -1
  739. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/route.js +3 -3
  740. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  741. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/send/route.js +3 -3
  742. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/[id]/send/route.js.nft.json +1 -1
  743. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/route.js +3 -3
  744. package/web/.next/standalone/packages/web/.next/server/app/api/sessions/route.js.nft.json +1 -1
  745. package/web/.next/standalone/packages/web/.next/server/app/api/spawn/route.js +3 -3
  746. package/web/.next/standalone/packages/web/.next/server/app/api/spawn/route.js.nft.json +1 -1
  747. package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/branches/route.js +3 -3
  748. package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/branches/route.js.nft.json +1 -1
  749. package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/route.js +3 -3
  750. package/web/.next/standalone/packages/web/.next/server/app/api/workspaces/route.js.nft.json +1 -1
  751. package/web/.next/standalone/packages/web/.next/server/app/auth/grant/route.js +1 -1
  752. package/web/.next/standalone/packages/web/.next/server/app/auth/grant/route.js.nft.json +1 -1
  753. package/web/.next/standalone/packages/web/.next/server/app/icon.svg/route.js +1 -1
  754. package/web/.next/standalone/packages/web/.next/server/app/icon.svg/route.js.nft.json +1 -1
  755. package/web/.next/standalone/packages/web/.next/server/app/page/build-manifest.json +4 -4
  756. package/web/.next/standalone/packages/web/.next/server/app/page/react-loadable-manifest.json +4 -3
  757. package/web/.next/standalone/packages/web/.next/server/app/page/server-reference-manifest.json +7 -7
  758. package/web/.next/standalone/packages/web/.next/server/app/page.js +13 -9
  759. package/web/.next/standalone/packages/web/.next/server/app/page.js.nft.json +1 -1
  760. package/web/.next/standalone/packages/web/.next/server/app/page_client-reference-manifest.js +1 -1
  761. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page/build-manifest.json +4 -4
  762. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page/server-reference-manifest.json +7 -7
  763. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page.js +13 -9
  764. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
  765. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
  766. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page/build-manifest.json +4 -4
  767. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page/server-reference-manifest.json +7 -7
  768. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page.js +10 -7
  769. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page.js.nft.json +1 -1
  770. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page_client-reference-manifest.js +1 -1
  771. package/web/.next/standalone/packages/web/.next/server/app/unlock/page/build-manifest.json +4 -4
  772. package/web/.next/standalone/packages/web/.next/server/app/unlock/page/server-reference-manifest.json +7 -7
  773. package/web/.next/standalone/packages/web/.next/server/app/unlock/page.js +11 -8
  774. package/web/.next/standalone/packages/web/.next/server/app/unlock/page.js.nft.json +1 -1
  775. package/web/.next/standalone/packages/web/.next/server/app/unlock/page_client-reference-manifest.js +1 -1
  776. package/web/.next/standalone/packages/web/.next/server/app-paths-manifest.json +10 -0
  777. package/web/.next/standalone/packages/web/.next/server/chunks/26076_server_app_api_sessions_[id]_preview_screenshot_route_actions_dcbbcaf6.js +3 -0
  778. package/web/.next/standalone/packages/web/.next/server/chunks/29f24__next-internal_server_app_api_sessions_[id]_feed_stream_route_actions_1262f517.js +3 -0
  779. package/web/.next/standalone/packages/web/.next/server/chunks/29f24__next-internal_server_app_api_sessions_[id]_interrupt_route_actions_89990829.js +3 -0
  780. package/web/.next/standalone/packages/web/.next/server/chunks/29f24__next-internal_server_app_api_sessions_[id]_preview_dom_route_actions_fb81dadb.js +3 -0
  781. package/web/.next/standalone/packages/web/.next/server/chunks/730ea_web__next-internal_server_app_api_boards_comments_route_actions_7acfa960.js +3 -0
  782. package/web/.next/standalone/packages/web/.next/server/chunks/730ea_web__next-internal_server_app_api_context-files_open_route_actions_ffa7eab4.js +3 -0
  783. package/web/.next/standalone/packages/web/.next/server/chunks/730ea_web__next-internal_server_app_api_sessions_[id]_preview_route_actions_9f632c66.js +3 -0
  784. package/web/.next/standalone/packages/web/.next/server/chunks/[externals]__06cd15c5._.js +3 -0
  785. package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__0c7f79b1._.js → [root-of-the-server]__025155ac._.js} +1 -1
  786. package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__144e8e60._.js → [root-of-the-server]__03277e82._.js} +1 -1
  787. package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__16d4a78f._.js → [root-of-the-server]__03d02e36._.js} +1 -1
  788. package/web/.next/standalone/packages/web/.next/server/chunks/{[root-of-the-server]__095ffdaa._.js → [root-of-the-server]__06d0fa23._.js} +1 -1
  789. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__07d320fc._.js +3 -0
  790. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__09d81126._.js +3 -0
  791. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__0a4bdecd._.js +3 -0
  792. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__0d3270b2._.js +3 -0
  793. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__0f87f848._.js +3 -0
  794. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__120e7cdf._.js +3 -0
  795. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__186317eb._.js +3 -0
  796. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1888a793._.js +3 -0
  797. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1ae07be2._.js +3 -0
  798. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1b995ded._.js +3 -0
  799. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1c1c0e68._.js +3 -0
  800. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1ce34a21._.js +3 -0
  801. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__228603ec._.js +3 -0
  802. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__256d4deb._.js +3 -0
  803. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2a02fc49._.js +3 -0
  804. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2ce39d51._.js +1 -1
  805. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2d6ad93c._.js +3 -0
  806. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__31703e2b._.js +3 -0
  807. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__394943dc._.js +3 -0
  808. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3bab2cf7._.js +3 -0
  809. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3f48e8a2._.js +3 -0
  810. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__405fc5bc._.js +3 -0
  811. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__412dec17._.js +3 -0
  812. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__428f1837._.js +3 -0
  813. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__446f586e._.js +3 -0
  814. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__46ba5636._.js +3 -0
  815. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__49e358a8._.js +3 -0
  816. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4a3e9ddd._.js +3 -0
  817. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4d8a3fa3._.js +3 -0
  818. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5dc7cf0d._.js +3 -0
  819. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5fd67791._.js +3 -0
  820. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__61a55b93._.js +3 -0
  821. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__621d9bca._.js +3 -0
  822. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6313c91e._.js +28 -0
  823. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__65fcccc8._.js +3 -0
  824. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__668ff2cd._.js +3 -0
  825. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__66e8ccce._.js +3 -0
  826. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6b163dd7._.js +3 -0
  827. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6c5a5852._.js +3 -0
  828. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__73601621._.js +3 -0
  829. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__747ac51a._.js +3 -0
  830. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__78d6e137._.js +3 -0
  831. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7dac9015._.js +3 -0
  832. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7e929085._.js +3 -0
  833. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7fcfdb86._.js +3 -0
  834. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__80fb443b._.js +3 -0
  835. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__85538066._.js +3 -0
  836. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__85b114a2._.js +3 -0
  837. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__865615a6._.js +3 -0
  838. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__893cfe3c._.js +3 -0
  839. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__90d02df4._.js +3 -0
  840. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__925bed49._.js +3 -0
  841. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__95440fe8._.js +3 -0
  842. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__968aabbd._.js +3 -0
  843. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__97658502._.js +3 -0
  844. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__9b2f424f._.js +3 -0
  845. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__9ca51739._.js +3 -0
  846. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a45d3a1d._.js +3 -0
  847. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b5c89bad._.js +3 -0
  848. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b73a3118._.js +3 -0
  849. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c06cb06b._.js +3 -0
  850. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c624410f._.js +3 -0
  851. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c6ecf2e6._.js +3 -0
  852. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c9626ece._.js +3 -0
  853. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c9b787f4._.js +3 -0
  854. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cb1e2942._.js +3 -0
  855. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cb29be7d._.js +3 -0
  856. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cc4964a5._.js +3 -0
  857. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cdcdbbe3._.js +3 -0
  858. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ce529f57._.js +3 -0
  859. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cfaae401._.js +3 -0
  860. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d2afbd4e._.js +3 -0
  861. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d62bf196._.js +3 -0
  862. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d8cd86c9._.js +3 -0
  863. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__de098ee1._.js +3 -0
  864. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e0d759be._.js +3 -0
  865. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e6181b22._.js +3 -0
  866. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__e633102f._.js +3 -0
  867. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ea845f9f._.js +7 -0
  868. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__eabdec9e._.js +3 -0
  869. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__eb0c88b2._.js +3 -0
  870. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ececfccf._.js +3 -0
  871. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ed83cdf3._.js +3 -0
  872. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__eda7b9ea._.js +3 -0
  873. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ef38eeb2._.js +3 -0
  874. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__efbfac9f._.js +3 -0
  875. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__efd26bfc._.js +3 -0
  876. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f12a3bd3._.js +3 -0
  877. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f4786ce9._.js +3 -0
  878. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f4d63c18._.js +3 -0
  879. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f8ebc9db._.js +3 -0
  880. package/web/.next/standalone/packages/web/.next/server/chunks/_2c837d66._.js +80 -0
  881. package/web/.next/standalone/packages/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_5eb57175.js +6 -0
  882. package/web/.next/standalone/packages/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_eaad1f33.js +3 -0
  883. package/web/.next/standalone/packages/web/.next/server/chunks/packages_web__next-internal_server_app_api_app-update_route_actions_67fa9ca7.js +3 -0
  884. package/web/.next/standalone/packages/web/.next/server/chunks/packages_web__next-internal_server_app_api_github_webhook_route_actions_16ed82df.js +3 -0
  885. package/web/.next/standalone/packages/web/.next/server/chunks/packages_web__next-internal_server_app_api_remote-access_route_actions_5ebfaea6.js +3 -0
  886. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[externals]_node:async_hooks_b485b2a4._.js +3 -0
  887. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__000b8c99._.js +4 -0
  888. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__009ce29c._.js +3 -0
  889. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__010700d3._.js +3 -0
  890. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__0aa08967._.js +3 -0
  891. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__11ca851a._.js +3 -0
  892. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__29091976._.js +3 -0
  893. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__29d8d063._.js +4 -0
  894. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__4168e031._.js +3 -0
  895. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__5fccda2c._.js +3 -0
  896. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{[root-of-the-server]__525ee5d4._.js → [root-of-the-server]__85aece6a._.js} +2 -2
  897. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__8a6b25f0._.js +3 -0
  898. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__8bcf983b._.js +1 -1
  899. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__a3c8291e._.js +3 -0
  900. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__b388693f._.js +1 -1
  901. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__d1efcbf0._.js +3 -0
  902. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__d800fc87._.js +3 -0
  903. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__e6f079d9._.js +3 -0
  904. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_0e1412de._.js +1 -1
  905. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_1f2460d5._.js +3 -0
  906. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_230c0c14._.js +80 -0
  907. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_27fe5f5d._.js +1 -1
  908. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_69e05fca._.js +1 -1
  909. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_6cfd06c2._.js +3 -0
  910. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_7321b77f._.js +1 -1
  911. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_80efe193._.js +1 -1
  912. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_8982bbf3._.js +3 -0
  913. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_9f3d31e1._.js +1 -1
  914. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_b214b154._.js +3 -0
  915. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_b6d31783._.js +1 -1
  916. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_c0f0e227._.js +1 -1
  917. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_c9612a3a._.js +1 -1
  918. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_e1c18705._.js +3 -0
  919. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_f36ddaa9._.js +1 -1
  920. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_270cb834._.js +1 -1
  921. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_8d94411c._.js +3 -0
  922. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_3d65ee57._.js +24 -0
  923. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_902120fe._.js +31 -0
  924. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{node_modules_@clerk_nextjs_dist_esm_app-router_57153687._.js → node_modules_@clerk_nextjs_dist_esm_app-router_0a811c5a._.js} +2 -2
  925. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_2c78c2f3._.js +3 -0
  926. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_server_index_a054612e.js +3 -0
  927. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@radix-ui_02f0d3f0._.js +3 -0
  928. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_message-square_2e76b8d9.js +3 -0
  929. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_next_a9871523._.js +14 -0
  930. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_next_ae5d7b42._.js +3 -0
  931. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{node_modules_next_2a43e292._.js → node_modules_next_c73d6895._.js} +2 -2
  932. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_next_dist_08570d7f._.js +1 -1
  933. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_next_dist_65e60196._.js +1 -1
  934. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_next_dist_891f7b49._.js +6 -0
  935. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_cd51dad4.js +1 -1
  936. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js +1 -1
  937. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_components_board_WorkspaceKanban_tsx_735b7999._.js +1 -1
  938. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_components_ui_Tooltip_tsx_6becc8ca._.js +3 -0
  939. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_features_dashboard_DashboardClient_tsx_81ae42b0._.js +3 -0
  940. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_lib_cn_ts_d08d265f._.js +3 -0
  941. package/web/.next/standalone/packages/web/.next/server/functions-config-manifest.json +7 -5
  942. package/web/.next/standalone/packages/web/.next/server/middleware-build-manifest.js +4 -4
  943. package/web/.next/standalone/packages/web/.next/server/middleware.js +2 -4
  944. package/web/.next/standalone/packages/web/.next/server/pages/404.html +1 -1
  945. package/web/.next/standalone/packages/web/.next/server/pages/500.html +2 -2
  946. package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.js +1 -1
  947. package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.json +8 -8
  948. package/web/.next/standalone/packages/web/.next/static/{8a_zZln8ezVAo0jAilwbF → E4-NvSai1Ps20r9dtdpps}/_clientMiddlewareManifest.json +0 -4
  949. package/web/.next/standalone/packages/web/.next/static/chunks/006a91a252482204.js +1 -0
  950. package/web/.next/standalone/packages/web/.next/static/chunks/07f3b9a104ce0ff4.js +1 -0
  951. package/web/.next/standalone/packages/web/.next/static/chunks/1004422d31074d62.js +1 -0
  952. package/web/.next/standalone/packages/web/.next/static/chunks/{12d9b4273416fe9b.js → 28eac764d6544827.js} +1 -1
  953. package/web/.next/standalone/packages/web/.next/static/chunks/2e2e8fd2ceca47dc.js +6 -0
  954. package/web/.next/standalone/packages/web/.next/static/chunks/30ababddac1b82dc.js +1 -0
  955. package/web/.next/standalone/packages/web/.next/static/chunks/3349bdab17ed1183.js +1 -0
  956. package/web/.next/standalone/packages/web/.next/static/chunks/3770166bed1577ce.js +4 -0
  957. package/web/.next/standalone/packages/web/.next/static/chunks/4c3afea55dd8bc93.js +1 -0
  958. package/web/.next/standalone/packages/web/.next/static/chunks/57858ac28cbf124d.js +1 -0
  959. package/web/.next/standalone/packages/web/.next/static/chunks/7fd2a83e9e74f215.js +1 -0
  960. package/web/.next/standalone/packages/web/.next/static/chunks/91e9e111a2536f92.js +1 -0
  961. package/web/.next/standalone/packages/web/.next/static/chunks/aabc80195233b4da.js +1 -0
  962. package/web/.next/standalone/packages/web/.next/static/chunks/bf82908a598c6de5.css +3 -0
  963. package/web/.next/standalone/packages/web/.next/static/chunks/d6a81d2f8b98b4be.js +1 -0
  964. package/web/.next/standalone/packages/web/.next/static/chunks/e9d0e95bbaa0f4fb.js +1 -0
  965. package/web/.next/standalone/packages/web/.next/static/chunks/ebaa0c535c4135f1.js +1 -0
  966. package/web/.next/standalone/packages/web/.next/static/chunks/{turbopack-57373a2ee9f56180.js → turbopack-49f4119854e8206e.js} +1 -1
  967. package/web/.next/standalone/packages/web/package.json +2 -1
  968. package/web/.next/standalone/packages/web/src/app/api/agents/route.ts +196 -2
  969. package/web/.next/standalone/packages/web/src/app/api/app-update/route.ts +6 -0
  970. package/web/.next/standalone/packages/web/src/app/api/auth/session/route.ts +38 -3
  971. package/web/.next/standalone/packages/web/src/app/api/boards/comments/route.ts +8 -0
  972. package/web/.next/standalone/packages/web/src/app/api/boards/route.ts +1 -0
  973. package/web/.next/standalone/packages/web/src/app/api/context-files/open/route.ts +8 -0
  974. package/web/.next/standalone/packages/web/src/app/api/github/webhook/route.ts +5 -0
  975. package/web/.next/standalone/packages/web/src/app/api/remote-access/route.ts +115 -0
  976. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/feed/stream/route.ts +8 -0
  977. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/interrupt/route.ts +8 -0
  978. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/preview/dom/route.ts +37 -0
  979. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/preview/route.test.ts +141 -0
  980. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/preview/route.ts +90 -0
  981. package/web/.next/standalone/packages/web/src/app/api/sessions/[id]/preview/screenshot/route.ts +43 -0
  982. package/web/.next/standalone/packages/web/src/app/auth/grant/route.ts +3 -28
  983. package/web/.next/standalone/packages/web/src/app/layout.tsx +4 -2
  984. package/web/.next/standalone/packages/web/src/app/page.tsx +32 -3
  985. package/web/.next/standalone/packages/web/src/app/sessions/[id]/page.tsx +36 -3
  986. package/web/.next/standalone/packages/web/src/app/sign-in/[[...sign-in]]/page.tsx +20 -2
  987. package/web/.next/standalone/packages/web/src/app/unlock/page.tsx +29 -7
  988. package/web/.next/standalone/packages/web/src/components/Dashboard.tsx +8 -4
  989. package/web/.next/standalone/packages/web/src/components/board/WorkspaceKanban.tsx +1524 -213
  990. package/web/.next/standalone/packages/web/src/components/layout/AppShell.tsx +30 -14
  991. package/web/.next/standalone/packages/web/src/components/layout/AppUpdateNotice.tsx +345 -0
  992. package/web/.next/standalone/packages/web/src/components/layout/WorkspaceSidebarPanel.tsx +1 -1
  993. package/web/.next/standalone/packages/web/src/components/sessions/ChatPanel.tsx +614 -130
  994. package/web/.next/standalone/packages/web/src/components/sessions/SessionDetail.tsx +33 -6
  995. package/web/.next/standalone/packages/web/src/components/sessions/SessionOverview.tsx +0 -57
  996. package/web/.next/standalone/packages/web/src/components/sessions/SessionPreview.tsx +1143 -0
  997. package/web/.next/standalone/packages/web/src/components/sessions/SessionRuntimeStatusBar.tsx +215 -0
  998. package/web/.next/standalone/packages/web/src/features/dashboard/DashboardClient.tsx +1049 -329
  999. package/web/.next/standalone/packages/web/src/features/sessions/SessionPageClient.tsx +9 -17
  1000. package/web/.next/standalone/packages/web/src/hooks/useAgents.ts +5 -0
  1001. package/web/.next/standalone/packages/web/src/hooks/usePreferences.ts +4 -8
  1002. package/web/.next/standalone/packages/web/src/hooks/useResponsiveSidebarState.ts +46 -0
  1003. package/web/.next/standalone/packages/web/src/hooks/useSessionFeed.ts +57 -3
  1004. package/web/.next/standalone/packages/web/src/lib/auth.test.ts +98 -0
  1005. package/web/.next/standalone/packages/web/src/lib/auth.ts +88 -54
  1006. package/web/.next/standalone/packages/web/src/lib/chatFeed.ts +4 -4
  1007. package/web/.next/standalone/packages/web/src/lib/devPreviewBrowser.ts +608 -0
  1008. package/web/.next/standalone/packages/web/src/lib/edgeAuth.test.ts +14 -25
  1009. package/web/.next/standalone/packages/web/src/lib/edgeAuth.ts +39 -52
  1010. package/web/.next/standalone/packages/web/src/lib/guardedRustProxy.ts +30 -2
  1011. package/web/.next/standalone/packages/web/src/lib/knownAgents.ts +125 -0
  1012. package/web/.next/standalone/packages/web/src/lib/liveEvents.ts +50 -3
  1013. package/web/.next/standalone/packages/web/src/lib/modelAccess.ts +7 -0
  1014. package/web/.next/standalone/packages/web/src/lib/previewSession.test.ts +109 -0
  1015. package/web/.next/standalone/packages/web/src/lib/previewSession.ts +216 -0
  1016. package/web/.next/standalone/packages/web/src/lib/previewTypes.ts +75 -0
  1017. package/web/.next/standalone/packages/web/src/lib/projectConfigSync.ts +13 -2
  1018. package/web/.next/standalone/packages/web/src/lib/proxyRoutes.ts +1 -1
  1019. package/web/.next/standalone/packages/web/src/lib/remoteAccess.test.ts +118 -0
  1020. package/web/.next/standalone/packages/web/src/lib/remoteAccess.ts +245 -0
  1021. package/web/.next/standalone/packages/web/src/lib/remoteAccessManager.ts +513 -0
  1022. package/web/.next/standalone/packages/web/src/lib/remoteAccessRuntime.ts +117 -0
  1023. package/web/.next/standalone/packages/web/src/lib/remoteAuth.test.ts +15 -0
  1024. package/web/.next/standalone/packages/web/src/lib/remoteAuth.ts +8 -65
  1025. package/web/.next/standalone/packages/web/src/lib/runtimeAgentModels/amp.ts +42 -0
  1026. package/web/.next/standalone/packages/web/src/lib/runtimeAgentModels/ccr.ts +47 -0
  1027. package/web/.next/standalone/packages/web/src/lib/runtimeAgentModels/claude.ts +179 -0
  1028. package/web/.next/standalone/packages/web/src/lib/runtimeAgentModels/codex.ts +211 -0
  1029. package/web/.next/standalone/packages/web/src/lib/runtimeAgentModels/copilot.ts +136 -0
  1030. package/web/.next/standalone/packages/web/src/lib/runtimeAgentModels/cursor.ts +39 -0
  1031. package/web/.next/standalone/packages/web/src/lib/runtimeAgentModels/droid.ts +103 -0
  1032. package/web/.next/standalone/packages/web/src/lib/runtimeAgentModels/gemini.ts +65 -0
  1033. package/web/.next/standalone/packages/web/src/lib/runtimeAgentModels/helpers.ts +409 -0
  1034. package/web/.next/standalone/packages/web/src/lib/runtimeAgentModels/index.ts +127 -0
  1035. package/web/.next/standalone/packages/web/src/lib/runtimeAgentModels/opencode.ts +138 -0
  1036. package/web/.next/standalone/packages/web/src/lib/runtimeAgentModels/qwen.ts +50 -0
  1037. package/web/.next/standalone/packages/web/src/lib/runtimeAgentModels/types.ts +78 -0
  1038. package/web/.next/standalone/packages/web/src/lib/runtimeAgentModelsShared.ts +9 -0
  1039. package/web/.next/standalone/packages/web/src/lib/rustBackendProxy.ts +29 -3
  1040. package/web/.next/standalone/packages/web/src/lib/sessionModelCatalog.ts +56 -0
  1041. package/web/.next/standalone/packages/web/src/lib/sessionRuntimeStatus.ts +152 -0
  1042. package/web/.next/standalone/packages/web/src/lib/types.ts +32 -0
  1043. package/web/.next/standalone/packages/web/src/proxy.ts +2 -98
  1044. package/web/.next/static/{8a_zZln8ezVAo0jAilwbF → E4-NvSai1Ps20r9dtdpps}/_clientMiddlewareManifest.json +0 -4
  1045. package/web/.next/static/chunks/006a91a252482204.js +1 -0
  1046. package/web/.next/static/chunks/07f3b9a104ce0ff4.js +1 -0
  1047. package/web/.next/static/chunks/1004422d31074d62.js +1 -0
  1048. package/web/.next/static/chunks/{12d9b4273416fe9b.js → 28eac764d6544827.js} +1 -1
  1049. package/web/.next/static/chunks/2e2e8fd2ceca47dc.js +6 -0
  1050. package/web/.next/static/chunks/30ababddac1b82dc.js +1 -0
  1051. package/web/.next/static/chunks/3349bdab17ed1183.js +1 -0
  1052. package/web/.next/static/chunks/3770166bed1577ce.js +4 -0
  1053. package/web/.next/static/chunks/4c3afea55dd8bc93.js +1 -0
  1054. package/web/.next/static/chunks/57858ac28cbf124d.js +1 -0
  1055. package/web/.next/static/chunks/7fd2a83e9e74f215.js +1 -0
  1056. package/web/.next/static/chunks/91e9e111a2536f92.js +1 -0
  1057. package/web/.next/static/chunks/aabc80195233b4da.js +1 -0
  1058. package/web/.next/static/chunks/bf82908a598c6de5.css +3 -0
  1059. package/web/.next/static/chunks/d6a81d2f8b98b4be.js +1 -0
  1060. package/web/.next/static/chunks/e9d0e95bbaa0f4fb.js +1 -0
  1061. package/web/.next/static/chunks/ebaa0c535c4135f1.js +1 -0
  1062. package/web/.next/static/chunks/{turbopack-57373a2ee9f56180.js → turbopack-49f4119854e8206e.js} +1 -1
  1063. package/web/.next/standalone/packages/web/.next/server/app/index.html +0 -1
  1064. package/web/.next/standalone/packages/web/.next/server/app/index.meta +0 -14
  1065. package/web/.next/standalone/packages/web/.next/server/app/index.rsc +0 -24
  1066. package/web/.next/standalone/packages/web/.next/server/app/index.segments/__PAGE__.segment.rsc +0 -9
  1067. package/web/.next/standalone/packages/web/.next/server/app/index.segments/_full.segment.rsc +0 -24
  1068. package/web/.next/standalone/packages/web/.next/server/app/index.segments/_head.segment.rsc +0 -6
  1069. package/web/.next/standalone/packages/web/.next/server/app/index.segments/_index.segment.rsc +0 -6
  1070. package/web/.next/standalone/packages/web/.next/server/app/index.segments/_tree.segment.rsc +0 -7
  1071. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__0074ebac._.js +0 -3
  1072. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__03a6b3e6._.js +0 -3
  1073. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__049daed6._.js +0 -3
  1074. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__09c3bdaf._.js +0 -7
  1075. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__137c9740._.js +0 -3
  1076. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__14949257._.js +0 -80
  1077. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__15594e11._.js +0 -3
  1078. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__159ecc1b._.js +0 -3
  1079. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__171dd44e._.js +0 -3
  1080. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__177505ca._.js +0 -3
  1081. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__18aa1fa3._.js +0 -3
  1082. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1c3521a3._.js +0 -3
  1083. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__1c793b78._.js +0 -3
  1084. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__22fbbc7b._.js +0 -3
  1085. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__25bbe81a._.js +0 -3
  1086. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__2d10de49._.js +0 -3
  1087. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__30442998._.js +0 -3
  1088. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__31d22800._.js +0 -3
  1089. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3d6b30a3._.js +0 -14
  1090. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__3d7ad620._.js +0 -3
  1091. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__44892736._.js +0 -3
  1092. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__495221b1._.js +0 -3
  1093. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__4ff9e8b0._.js +0 -3
  1094. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__54eb1ef0._.js +0 -3
  1095. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__5c375e13._.js +0 -3
  1096. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6362697f._.js +0 -3
  1097. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__69b36e36._.js +0 -3
  1098. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6badbf4e._.js +0 -3
  1099. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6c4cd852._.js +0 -3
  1100. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__6f7b329b._.js +0 -3
  1101. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__70b7af90._.js +0 -3
  1102. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__71077192._.js +0 -3
  1103. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__758687ca._.js +0 -3
  1104. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__7604e43b._.js +0 -3
  1105. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__77b23eae._.js +0 -3
  1106. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__78650ac9._.js +0 -3
  1107. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__789107eb._.js +0 -3
  1108. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__78c062a8._.js +0 -3
  1109. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__78c4bb1e._.js +0 -3
  1110. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__790d1d4b._.js +0 -3
  1111. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__8132442f._.js +0 -3
  1112. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__833a2cd9._.js +0 -3
  1113. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__85d6ae4c._.js +0 -3
  1114. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__8d933120._.js +0 -3
  1115. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__90ac5665._.js +0 -3
  1116. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__92a4f9bf._.js +0 -3
  1117. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__93d550e2._.js +0 -3
  1118. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__96e59c1f._.js +0 -3
  1119. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__9c1d09aa._.js +0 -3
  1120. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__9d98fee2._.js +0 -3
  1121. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__9fcf6265._.js +0 -3
  1122. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a5b78741._.js +0 -3
  1123. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a8a4b101._.js +0 -3
  1124. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__a8d11727._.js +0 -3
  1125. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__b2e0e81c._.js +0 -3
  1126. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__bf756716._.js +0 -3
  1127. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c09452b3._.js +0 -3
  1128. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c3c6a7bf._.js +0 -3
  1129. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c43dcff1._.js +0 -3
  1130. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__c923cbdc._.js +0 -3
  1131. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ce993e7b._.js +0 -3
  1132. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__cfbdd2bf._.js +0 -3
  1133. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d1d8bfb5._.js +0 -3
  1134. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d4d1744d._.js +0 -3
  1135. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__d8852803._.js +0 -3
  1136. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ea1961bd._.js +0 -3
  1137. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ee8a3221._.js +0 -3
  1138. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ef8c815b._.js +0 -3
  1139. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__ef918d06._.js +0 -3
  1140. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f3693403._.js +0 -3
  1141. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f62cac3a._.js +0 -3
  1142. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f73117e9._.js +0 -3
  1143. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__f7651519._.js +0 -3
  1144. package/web/.next/standalone/packages/web/.next/server/chunks/[root-of-the-server]__fc6ffe6c._.js +0 -3
  1145. package/web/.next/standalone/packages/web/.next/server/chunks/node_modules_c59ce641._.js +0 -52
  1146. package/web/.next/standalone/packages/web/.next/server/chunks/node_modules_next_3f8eedde._.js +0 -3
  1147. package/web/.next/standalone/packages/web/.next/server/chunks/node_modules_next_9a15df2c._.js +0 -14
  1148. package/web/.next/standalone/packages/web/.next/server/chunks/node_modules_next_dist_2175c4f5._.js +0 -6
  1149. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__09178ceb._.js +0 -3
  1150. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__404c1aeb._.js +0 -3
  1151. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__4c215c94._.js +0 -3
  1152. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__504277b5._.js +0 -3
  1153. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__6622b514._.js +0 -4
  1154. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__869d9ac0._.js +0 -4
  1155. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__9dc23e5a._.js +0 -3
  1156. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__b3463b25._.js +0 -3
  1157. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__d6c32514._.js +0 -3
  1158. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__dd8d1ff5._.js +0 -3
  1159. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__e93a8bf2._.js +0 -3
  1160. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__f3a0805b._.js +0 -26
  1161. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__f9e4d8f6._.js +0 -3
  1162. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_3acfb388._.js +0 -3
  1163. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_54e5c07e._.js +0 -3
  1164. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_5edc4d99._.js +0 -3
  1165. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_668c9201._.js +0 -3
  1166. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_5c577fb4._.js +0 -22
  1167. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_a719fbda._.js +0 -3
  1168. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_f2ebd7a9._.js +0 -3
  1169. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_next_06f89723._.js +0 -6
  1170. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_next_dist_aa203534._.js +0 -3
  1171. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_79316445._.js +0 -3
  1172. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_a078c137._.js +0 -3
  1173. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_app_page_tsx_cd282e82._.js +0 -3
  1174. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_app_unlock_UnlockForm_tsx_ce3149a7._.js +0 -3
  1175. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_components_556f498f._.js +0 -3
  1176. package/web/.next/standalone/packages/web/.next/static/chunks/25438e9094804f85.js +0 -1
  1177. package/web/.next/standalone/packages/web/.next/static/chunks/38c2e6a114505dfb.js +0 -1
  1178. package/web/.next/standalone/packages/web/.next/static/chunks/42170782dc03a5a6.js +0 -1
  1179. package/web/.next/standalone/packages/web/.next/static/chunks/4f46b791ea244c81.js +0 -6
  1180. package/web/.next/standalone/packages/web/.next/static/chunks/524a7c2a8e85ea2f.js +0 -1
  1181. package/web/.next/standalone/packages/web/.next/static/chunks/5672ef74a562c5dd.js +0 -1
  1182. package/web/.next/standalone/packages/web/.next/static/chunks/710591a828e2bb9d.js +0 -1
  1183. package/web/.next/standalone/packages/web/.next/static/chunks/72c822cfe5b6f4f2.js +0 -4
  1184. package/web/.next/standalone/packages/web/.next/static/chunks/870a993d28314a90.js +0 -1
  1185. package/web/.next/standalone/packages/web/.next/static/chunks/8c120e4e5b844646.js +0 -1
  1186. package/web/.next/standalone/packages/web/.next/static/chunks/8ec81b945f12169b.js +0 -1
  1187. package/web/.next/standalone/packages/web/.next/static/chunks/aa158726d4a10331.js +0 -1
  1188. package/web/.next/standalone/packages/web/.next/static/chunks/adf48bd54f32b061.js +0 -1
  1189. package/web/.next/standalone/packages/web/.next/static/chunks/c5caacf383990e7b.js +0 -1
  1190. package/web/.next/standalone/packages/web/.next/static/chunks/d3cd3cf58c908ec9.js +0 -1
  1191. package/web/.next/standalone/packages/web/.next/static/chunks/df9658182f4f7d54.css +0 -3
  1192. package/web/.next/standalone/packages/web/src/app/unlock/UnlockForm.tsx +0 -98
  1193. package/web/.next/standalone/packages/web/src/lib/editorLinks.ts +0 -51
  1194. package/web/.next/standalone/packages/web/src/lib/runtimeAgentModels.ts +0 -788
  1195. package/web/.next/static/chunks/25438e9094804f85.js +0 -1
  1196. package/web/.next/static/chunks/38c2e6a114505dfb.js +0 -1
  1197. package/web/.next/static/chunks/42170782dc03a5a6.js +0 -1
  1198. package/web/.next/static/chunks/4f46b791ea244c81.js +0 -6
  1199. package/web/.next/static/chunks/524a7c2a8e85ea2f.js +0 -1
  1200. package/web/.next/static/chunks/5672ef74a562c5dd.js +0 -1
  1201. package/web/.next/static/chunks/710591a828e2bb9d.js +0 -1
  1202. package/web/.next/static/chunks/72c822cfe5b6f4f2.js +0 -4
  1203. package/web/.next/static/chunks/870a993d28314a90.js +0 -1
  1204. package/web/.next/static/chunks/8c120e4e5b844646.js +0 -1
  1205. package/web/.next/static/chunks/8ec81b945f12169b.js +0 -1
  1206. package/web/.next/static/chunks/aa158726d4a10331.js +0 -1
  1207. package/web/.next/static/chunks/adf48bd54f32b061.js +0 -1
  1208. package/web/.next/static/chunks/c5caacf383990e7b.js +0 -1
  1209. package/web/.next/static/chunks/d3cd3cf58c908ec9.js +0 -1
  1210. package/web/.next/static/chunks/df9658182f4f7d54.css +0 -3
  1211. /package/web/.next/standalone/packages/web/.next/static/{8a_zZln8ezVAo0jAilwbF → E4-NvSai1Ps20r9dtdpps}/_buildManifest.js +0 -0
  1212. /package/web/.next/standalone/packages/web/.next/static/{8a_zZln8ezVAo0jAilwbF → E4-NvSai1Ps20r9dtdpps}/_ssgManifest.js +0 -0
  1213. /package/web/.next/static/{8a_zZln8ezVAo0jAilwbF → E4-NvSai1Ps20r9dtdpps}/_buildManifest.js +0 -0
  1214. /package/web/.next/static/{8a_zZln8ezVAo0jAilwbF → E4-NvSai1Ps20r9dtdpps}/_ssgManifest.js +0 -0
@@ -0,0 +1,1143 @@
1
+ "use client";
2
+
3
+ import {
4
+ useCallback,
5
+ useEffect,
6
+ useMemo,
7
+ useRef,
8
+ useState,
9
+ type MouseEvent as ReactMouseEvent,
10
+ } from "react";
11
+ import {
12
+ AlertTriangle,
13
+ Boxes,
14
+ Copy,
15
+ Eye,
16
+ FileJson2,
17
+ Globe,
18
+ Loader2,
19
+ MousePointerClick,
20
+ RefreshCw,
21
+ Send,
22
+ TerminalSquare,
23
+ Waypoints,
24
+ X,
25
+ } from "lucide-react";
26
+ import { Badge } from "@/components/ui/Badge";
27
+ import { Button } from "@/components/ui/Button";
28
+ import { Card, CardContent, CardHeader } from "@/components/ui/Card";
29
+ import { ScrollArea } from "@/components/ui/ScrollArea";
30
+ import { cn } from "@/lib/cn";
31
+ import type {
32
+ PreviewCommandRequest,
33
+ PreviewDomNode,
34
+ PreviewDomResponse,
35
+ PreviewStatusResponse,
36
+ } from "@/lib/previewTypes";
37
+
38
+ const STATUS_POLL_INTERVAL_MS = 4_000;
39
+ const AUTO_CONNECT_RETRY_MS = 5_000;
40
+ const SELECTION_COMPOSER_WIDTH_PX = 340;
41
+ const SELECTION_COMPOSER_HEIGHT_PX = 280;
42
+ const SELECTION_COMPOSER_MARGIN_PX = 12;
43
+ const MOBILE_SELECTION_COMPOSER_BREAKPOINT_PX = 520;
44
+
45
+ interface SessionPreviewProps {
46
+ sessionId: string;
47
+ projectId?: string | null;
48
+ }
49
+
50
+ type PreviewSendTarget = "selection" | "console" | "network";
51
+ type PreviewInteractionMode = "navigate" | "inspect";
52
+ type SelectionComposerState = {
53
+ anchorX: number;
54
+ anchorY: number;
55
+ pending: boolean;
56
+ };
57
+
58
+ function formatTime(value: string): string {
59
+ const parsed = Date.parse(value);
60
+ if (Number.isNaN(parsed)) return value;
61
+ return new Intl.DateTimeFormat(undefined, {
62
+ hour: "numeric",
63
+ minute: "2-digit",
64
+ second: "2-digit",
65
+ }).format(new Date(parsed));
66
+ }
67
+
68
+ function truncate(value: string, max = 120): string {
69
+ if (value.length <= max) return value;
70
+ return `${value.slice(0, max - 1)}…`;
71
+ }
72
+
73
+ function pointWithinBounds(
74
+ x: number,
75
+ y: number,
76
+ bounds: { x: number; y: number; width: number; height: number },
77
+ ): boolean {
78
+ return x >= bounds.x
79
+ && x <= bounds.x + bounds.width
80
+ && y >= bounds.y
81
+ && y <= bounds.y + bounds.height;
82
+ }
83
+
84
+ async function uploadPreviewAttachments(projectId: string, files: File[]): Promise<string[]> {
85
+ if (!files.length) return [];
86
+
87
+ const formData = new FormData();
88
+ formData.append("projectId", projectId);
89
+ for (const file of files) {
90
+ formData.append("files", file);
91
+ }
92
+
93
+ const response = await fetch("/api/attachments", {
94
+ method: "POST",
95
+ body: formData,
96
+ });
97
+
98
+ const payload = await response.json().catch(() => null) as
99
+ | { error?: string; files?: Array<Record<string, unknown>> }
100
+ | null;
101
+
102
+ if (!response.ok) {
103
+ throw new Error(payload?.error ?? `Failed to upload preview attachments: ${response.status}`);
104
+ }
105
+
106
+ const fileRecords = Array.isArray(payload?.files) ? payload?.files : [];
107
+ const paths = fileRecords.flatMap((record) => {
108
+ const candidates = [
109
+ record.absolutePath,
110
+ record.path,
111
+ record.filePath,
112
+ ];
113
+ return candidates.filter((candidate): candidate is string => typeof candidate === "string" && candidate.trim().length > 0);
114
+ });
115
+
116
+ if (!paths.length) {
117
+ throw new Error("Attachment upload did not return file paths");
118
+ }
119
+
120
+ return paths;
121
+ }
122
+
123
+ export function SessionPreview({ sessionId, projectId }: SessionPreviewProps) {
124
+ const [status, setStatus] = useState<PreviewStatusResponse | null>(null);
125
+ const [domNodes, setDomNodes] = useState<PreviewDomNode[]>([]);
126
+ const [domLoading, setDomLoading] = useState(false);
127
+ const [busy, setBusy] = useState(false);
128
+ const [loading, setLoading] = useState(true);
129
+ const [interactiveOnly, setInteractiveOnly] = useState(true);
130
+ const [commandError, setCommandError] = useState<string | null>(null);
131
+ const [sendError, setSendError] = useState<string | null>(null);
132
+ const [sendSuccess, setSendSuccess] = useState<string | null>(null);
133
+ const [sendingTarget, setSendingTarget] = useState<PreviewSendTarget | null>(null);
134
+ const [previewMode, setPreviewMode] = useState<PreviewInteractionMode>("navigate");
135
+ const [selectionComposer, setSelectionComposer] = useState<SelectionComposerState | null>(null);
136
+ const [urlInput, setUrlInput] = useState("");
137
+ const [instruction, setInstruction] = useState("");
138
+ const [imageMetrics, setImageMetrics] = useState({
139
+ naturalWidth: 0,
140
+ naturalHeight: 0,
141
+ renderedWidth: 0,
142
+ renderedHeight: 0,
143
+ });
144
+
145
+ const autoConnectRef = useRef<{ candidate: string; attemptedAt: number } | null>(null);
146
+ const imageRef = useRef<HTMLImageElement | null>(null);
147
+ const instructionRef = useRef<HTMLTextAreaElement | null>(null);
148
+
149
+ const loadStatus = useCallback(async () => {
150
+ const response = await fetch(`/api/sessions/${encodeURIComponent(sessionId)}/preview`, {
151
+ cache: "no-store",
152
+ });
153
+ const payload = await response.json().catch(() => null) as
154
+ | PreviewStatusResponse
155
+ | { error?: string }
156
+ | null;
157
+
158
+ if (!response.ok) {
159
+ throw new Error(payload && "error" in payload ? payload.error ?? "Failed to load preview state" : `Failed to load preview state: ${response.status}`);
160
+ }
161
+
162
+ setStatus(payload as PreviewStatusResponse);
163
+ setCommandError(null);
164
+ setUrlInput((current) => {
165
+ if (current.trim().length > 0 && current !== status?.currentUrl) {
166
+ return current;
167
+ }
168
+ return (payload as PreviewStatusResponse).currentUrl
169
+ ?? (payload as PreviewStatusResponse).candidateUrls[0]
170
+ ?? current;
171
+ });
172
+ }, [sessionId, status?.currentUrl]);
173
+
174
+ const runCommand = useCallback(async (command: PreviewCommandRequest) => {
175
+ setBusy(true);
176
+ setCommandError(null);
177
+ try {
178
+ const response = await fetch(`/api/sessions/${encodeURIComponent(sessionId)}/preview`, {
179
+ method: "POST",
180
+ headers: {
181
+ "Content-Type": "application/json",
182
+ },
183
+ body: JSON.stringify(command),
184
+ });
185
+ const payload = await response.json().catch(() => null) as
186
+ | PreviewStatusResponse
187
+ | { error?: string; status?: PreviewStatusResponse }
188
+ | null;
189
+
190
+ if (!response.ok) {
191
+ if (payload && typeof payload === "object" && "status" in payload && payload.status) {
192
+ setStatus(payload.status);
193
+ }
194
+ throw new Error(payload && "error" in payload ? payload.error ?? "Preview command failed" : `Preview command failed: ${response.status}`);
195
+ }
196
+
197
+ setStatus(payload as PreviewStatusResponse);
198
+ } finally {
199
+ setBusy(false);
200
+ }
201
+ }, [sessionId]);
202
+
203
+ const loadDom = useCallback(async (frameId?: string | null) => {
204
+ if (!status?.connected) {
205
+ setDomNodes([]);
206
+ return;
207
+ }
208
+
209
+ setDomLoading(true);
210
+ try {
211
+ const searchParams = new URLSearchParams();
212
+ if (frameId) searchParams.set("frameId", frameId);
213
+ if (interactiveOnly) searchParams.set("interactiveOnly", "1");
214
+ const response = await fetch(`/api/sessions/${encodeURIComponent(sessionId)}/preview/dom?${searchParams.toString()}`, {
215
+ cache: "no-store",
216
+ });
217
+ const payload = await response.json().catch(() => null) as
218
+ | PreviewDomResponse
219
+ | { error?: string }
220
+ | null;
221
+ if (!response.ok) {
222
+ throw new Error(payload && "error" in payload ? payload.error ?? "Failed to inspect DOM" : `Failed to inspect DOM: ${response.status}`);
223
+ }
224
+ setDomNodes((payload as PreviewDomResponse).nodes);
225
+ } catch (error) {
226
+ setCommandError(error instanceof Error ? error.message : "Failed to inspect DOM");
227
+ setDomNodes([]);
228
+ } finally {
229
+ setDomLoading(false);
230
+ }
231
+ }, [interactiveOnly, sessionId, status?.connected]);
232
+
233
+ useEffect(() => {
234
+ let mounted = true;
235
+
236
+ (async () => {
237
+ try {
238
+ await loadStatus();
239
+ } catch (error) {
240
+ if (mounted) {
241
+ setCommandError(error instanceof Error ? error.message : "Failed to load preview");
242
+ }
243
+ } finally {
244
+ if (mounted) {
245
+ setLoading(false);
246
+ }
247
+ }
248
+ })();
249
+
250
+ const intervalId = window.setInterval(() => {
251
+ void loadStatus().catch((error: unknown) => {
252
+ if (mounted) {
253
+ setCommandError(error instanceof Error ? error.message : "Failed to refresh preview");
254
+ }
255
+ });
256
+ }, STATUS_POLL_INTERVAL_MS);
257
+
258
+ return () => {
259
+ mounted = false;
260
+ window.clearInterval(intervalId);
261
+ };
262
+ }, [loadStatus]);
263
+
264
+ useEffect(() => {
265
+ if (!status?.connected) {
266
+ setDomNodes([]);
267
+ return;
268
+ }
269
+ void loadDom(status.activeFrameId);
270
+ }, [interactiveOnly, loadDom, status?.activeFrameId, status?.connected, status?.screenshotKey]);
271
+
272
+ useEffect(() => {
273
+ if (status?.connected) {
274
+ autoConnectRef.current = null;
275
+ return;
276
+ }
277
+
278
+ setSelectionComposer(null);
279
+
280
+ const candidate = status?.candidateUrls[0];
281
+ if (!candidate) return;
282
+ const lastAttempt = autoConnectRef.current?.attemptedAt ?? Number.NaN;
283
+ const lastCandidate = autoConnectRef.current?.candidate ?? null;
284
+ const now = Date.now();
285
+ if (lastCandidate === candidate && Number.isFinite(lastAttempt) && now - lastAttempt < AUTO_CONNECT_RETRY_MS) {
286
+ return;
287
+ }
288
+
289
+ autoConnectRef.current = { candidate, attemptedAt: now };
290
+ void runCommand({ command: "connect", url: candidate }).catch((error: unknown) => {
291
+ setCommandError(error instanceof Error ? error.message : "Failed to connect preview");
292
+ });
293
+ }, [runCommand, status?.candidateUrls, status?.connected]);
294
+
295
+ const screenshotUrl = useMemo(() => (
296
+ status?.connected
297
+ ? `/api/sessions/${encodeURIComponent(sessionId)}/preview/screenshot?ts=${encodeURIComponent(status.screenshotKey)}`
298
+ : null
299
+ ), [sessionId, status?.connected, status?.screenshotKey]);
300
+
301
+ const activeFrame = useMemo(
302
+ () => status?.frames.find((frame) => frame.id === status.activeFrameId) ?? null,
303
+ [status?.activeFrameId, status?.frames],
304
+ );
305
+
306
+ const mainFrame = useMemo(
307
+ () => status?.frames.find((frame) => frame.isMain) ?? null,
308
+ [status?.frames],
309
+ );
310
+
311
+ const sending = sendingTarget !== null;
312
+ const canSelectByPoint = Boolean(activeFrame?.isMain);
313
+
314
+ const selectionOverlayStyle = useMemo(() => {
315
+ const bounds = status?.selectedElement?.bounds;
316
+ if (!status?.selectedElement || !bounds || !mainFrame || status.selectedElement.frameId !== mainFrame.id) {
317
+ return null;
318
+ }
319
+ if (!imageMetrics.naturalWidth || !imageMetrics.naturalHeight || !imageMetrics.renderedWidth || !imageMetrics.renderedHeight) {
320
+ return null;
321
+ }
322
+
323
+ const scaleX = imageMetrics.renderedWidth / imageMetrics.naturalWidth;
324
+ const scaleY = imageMetrics.renderedHeight / imageMetrics.naturalHeight;
325
+ return {
326
+ left: `${bounds.x * scaleX}px`,
327
+ top: `${bounds.y * scaleY}px`,
328
+ width: `${Math.max(bounds.width * scaleX, 2)}px`,
329
+ height: `${Math.max(bounds.height * scaleY, 2)}px`,
330
+ };
331
+ }, [imageMetrics, mainFrame, status?.selectedElement]);
332
+
333
+ const selectedElementRenderedBounds = useMemo(() => {
334
+ const bounds = status?.selectedElement?.bounds;
335
+ if (!status?.selectedElement || !bounds || !mainFrame || status.selectedElement.frameId !== mainFrame.id) {
336
+ return null;
337
+ }
338
+ if (!imageMetrics.naturalWidth || !imageMetrics.naturalHeight || !imageMetrics.renderedWidth || !imageMetrics.renderedHeight) {
339
+ return null;
340
+ }
341
+
342
+ const scaleX = imageMetrics.renderedWidth / imageMetrics.naturalWidth;
343
+ const scaleY = imageMetrics.renderedHeight / imageMetrics.naturalHeight;
344
+
345
+ return {
346
+ x: bounds.x * scaleX,
347
+ y: bounds.y * scaleY,
348
+ width: Math.max(bounds.width * scaleX, 2),
349
+ height: Math.max(bounds.height * scaleY, 2),
350
+ };
351
+ }, [imageMetrics, mainFrame, status?.selectedElement]);
352
+
353
+ const handleConnect = useCallback(async () => {
354
+ const trimmed = urlInput.trim();
355
+ if (!trimmed) return;
356
+ try {
357
+ await runCommand({ command: "connect", url: trimmed });
358
+ } catch (error) {
359
+ setCommandError(error instanceof Error ? error.message : "Failed to connect preview");
360
+ }
361
+ }, [runCommand, urlInput]);
362
+
363
+ const openSelectionComposer = useCallback((anchorX: number, anchorY: number, pending = false) => {
364
+ setSelectionComposer({ anchorX, anchorY, pending });
365
+ setSendError(null);
366
+ setSendSuccess(null);
367
+ }, []);
368
+
369
+ const handlePreviewModeChange = useCallback((mode: PreviewInteractionMode) => {
370
+ setPreviewMode(mode);
371
+ setSelectionComposer(null);
372
+ setSendError(null);
373
+ setSendSuccess(null);
374
+ }, []);
375
+
376
+ const selectionComposerStyle = useMemo(() => {
377
+ if (!selectionComposer) return null;
378
+
379
+ const availableWidth = imageMetrics.renderedWidth || SELECTION_COMPOSER_WIDTH_PX;
380
+ const availableHeight = imageMetrics.renderedHeight || SELECTION_COMPOSER_HEIGHT_PX;
381
+ const maxHeight = Math.max(220, availableHeight - (SELECTION_COMPOSER_MARGIN_PX * 2));
382
+ if (availableWidth <= MOBILE_SELECTION_COMPOSER_BREAKPOINT_PX) {
383
+ return {
384
+ left: `${SELECTION_COMPOSER_MARGIN_PX}px`,
385
+ top: `${Math.max(SELECTION_COMPOSER_MARGIN_PX, availableHeight - Math.min(SELECTION_COMPOSER_HEIGHT_PX, maxHeight) - SELECTION_COMPOSER_MARGIN_PX)}px`,
386
+ width: `${Math.max(availableWidth - (SELECTION_COMPOSER_MARGIN_PX * 2), 220)}px`,
387
+ maxHeight: `${maxHeight}px`,
388
+ };
389
+ }
390
+
391
+ const popupWidth = Math.min(
392
+ SELECTION_COMPOSER_WIDTH_PX,
393
+ Math.max(availableWidth - (SELECTION_COMPOSER_MARGIN_PX * 2), 240),
394
+ );
395
+ const maxLeft = Math.max(
396
+ SELECTION_COMPOSER_MARGIN_PX,
397
+ availableWidth - popupWidth - SELECTION_COMPOSER_MARGIN_PX,
398
+ );
399
+ const maxTop = Math.max(
400
+ SELECTION_COMPOSER_MARGIN_PX,
401
+ availableHeight - SELECTION_COMPOSER_HEIGHT_PX - SELECTION_COMPOSER_MARGIN_PX,
402
+ );
403
+ const preferredLeft = selectionComposer.anchorX + 18;
404
+ const preferredTop = selectionComposer.anchorY + 18;
405
+ const left = preferredLeft > maxLeft
406
+ ? Math.max(
407
+ SELECTION_COMPOSER_MARGIN_PX,
408
+ selectionComposer.anchorX - popupWidth - 18,
409
+ )
410
+ : preferredLeft;
411
+ const top = preferredTop > maxTop
412
+ ? Math.max(
413
+ SELECTION_COMPOSER_MARGIN_PX,
414
+ selectionComposer.anchorY - SELECTION_COMPOSER_HEIGHT_PX - 18,
415
+ )
416
+ : preferredTop;
417
+
418
+ return {
419
+ left: `${Math.min(Math.max(left, SELECTION_COMPOSER_MARGIN_PX), maxLeft)}px`,
420
+ top: `${Math.min(Math.max(top, SELECTION_COMPOSER_MARGIN_PX), maxTop)}px`,
421
+ width: `${popupWidth}px`,
422
+ maxHeight: `${maxHeight}px`,
423
+ };
424
+ }, [imageMetrics.renderedHeight, imageMetrics.renderedWidth, selectionComposer]);
425
+
426
+ useEffect(() => {
427
+ if (!selectionComposer || selectionComposer.pending) return;
428
+ instructionRef.current?.focus();
429
+ }, [selectionComposer]);
430
+
431
+ useEffect(() => {
432
+ if (!selectionComposer) return;
433
+
434
+ const handleKeyDown = (event: KeyboardEvent) => {
435
+ if (event.key === "Escape") {
436
+ setSelectionComposer(null);
437
+ }
438
+ };
439
+
440
+ window.addEventListener("keydown", handleKeyDown);
441
+ return () => {
442
+ window.removeEventListener("keydown", handleKeyDown);
443
+ };
444
+ }, [selectionComposer]);
445
+
446
+ const handleImageClick = useCallback(async (event: ReactMouseEvent<HTMLImageElement>) => {
447
+ if (!imageRef.current || busy) return;
448
+
449
+ const rect = imageRef.current.getBoundingClientRect();
450
+ if (!rect.width || !rect.height || !imageRef.current.naturalWidth || !imageRef.current.naturalHeight) {
451
+ return;
452
+ }
453
+
454
+ const anchorX = event.clientX - rect.left;
455
+ const anchorY = event.clientY - rect.top;
456
+ const x = (anchorX / rect.width) * imageRef.current.naturalWidth;
457
+ const y = (anchorY / rect.height) * imageRef.current.naturalHeight;
458
+
459
+ setSelectionComposer(null);
460
+ setSendError(null);
461
+ setSendSuccess(null);
462
+
463
+ if (previewMode === "navigate") {
464
+ try {
465
+ await runCommand({ command: "clickAtPoint", x, y });
466
+ } catch (error) {
467
+ setCommandError(error instanceof Error ? error.message : "Failed to interact with preview");
468
+ }
469
+ return;
470
+ }
471
+
472
+ if (!canSelectByPoint) return;
473
+
474
+ if (
475
+ selectedElementRenderedBounds
476
+ && !selectionComposer?.pending
477
+ && pointWithinBounds(anchorX, anchorY, selectedElementRenderedBounds)
478
+ ) {
479
+ openSelectionComposer(anchorX, anchorY, false);
480
+ return;
481
+ }
482
+
483
+ try {
484
+ await runCommand({ command: "selectAtPoint", x, y });
485
+ } catch (error) {
486
+ setCommandError(error instanceof Error ? error.message : "Failed to select element");
487
+ }
488
+ }, [
489
+ busy,
490
+ canSelectByPoint,
491
+ openSelectionComposer,
492
+ previewMode,
493
+ runCommand,
494
+ selectedElementRenderedBounds,
495
+ selectionComposer?.pending,
496
+ ]);
497
+
498
+ const handleSendContext = useCallback(async (target: PreviewSendTarget) => {
499
+ if (!projectId) {
500
+ setSendError("Preview attachments require a project-backed session.");
501
+ return;
502
+ }
503
+ if (!status) {
504
+ setSendError("Preview state is not loaded yet.");
505
+ return;
506
+ }
507
+
508
+ const recentConsoleLogs = status.consoleLogs.slice(-80);
509
+ const recentNetworkLogs = status.networkLogs.slice(-80);
510
+
511
+ if (target === "selection" && !status.selectedElement) {
512
+ setSendError("Select an element before sending preview context to the agent.");
513
+ return;
514
+ }
515
+
516
+ if (target === "console" && !recentConsoleLogs.length) {
517
+ setSendError("There are no console logs to send yet.");
518
+ return;
519
+ }
520
+
521
+ if (target === "network" && !recentNetworkLogs.length) {
522
+ setSendError("There are no network logs to send yet.");
523
+ return;
524
+ }
525
+
526
+ setSendingTarget(target);
527
+ setSendError(null);
528
+ setSendSuccess(null);
529
+
530
+ try {
531
+ const basePreviewPayload = {
532
+ sessionId,
533
+ currentUrl: status.currentUrl,
534
+ activeFrameId: status.activeFrameId,
535
+ selectedElement: status.selectedElement,
536
+ frames: status.frames,
537
+ };
538
+
539
+ const payloadByTarget = {
540
+ selection: {
541
+ ...basePreviewPayload,
542
+ recentConsoleLogs,
543
+ recentNetworkLogs,
544
+ },
545
+ console: {
546
+ ...basePreviewPayload,
547
+ recentConsoleLogs,
548
+ },
549
+ network: {
550
+ ...basePreviewPayload,
551
+ recentNetworkLogs,
552
+ },
553
+ } satisfies Record<PreviewSendTarget, Record<string, unknown>>;
554
+
555
+ const jsonPayload = {
556
+ generatedAt: new Date().toISOString(),
557
+ target,
558
+ preview: payloadByTarget[target],
559
+ };
560
+
561
+ const files: File[] = [
562
+ new File(
563
+ [JSON.stringify(jsonPayload, null, 2)],
564
+ `${sessionId}-preview-${target}.json`,
565
+ { type: "application/json" },
566
+ ),
567
+ ];
568
+
569
+ if (screenshotUrl) {
570
+ const screenshotResponse = await fetch(screenshotUrl, { cache: "no-store" });
571
+ if (screenshotResponse.ok) {
572
+ const screenshotBlob = await screenshotResponse.blob();
573
+ files.push(new File([screenshotBlob], `${sessionId}-preview-${target}.png`, { type: "image/png" }));
574
+ }
575
+ }
576
+
577
+ const attachmentPaths = await uploadPreviewAttachments(projectId, files);
578
+ const messageByTarget = {
579
+ selection: [
580
+ "Use the attached preview context JSON and screenshot to update the UI.",
581
+ `Selected element selector: ${status.selectedElement?.selector ?? "n/a"}`,
582
+ `Selected frame: ${status.selectedElement?.frameName ?? "n/a"} (${status.selectedElement?.frameUrl ?? "n/a"})`,
583
+ instruction.trim() || "Apply the requested UI change to the selected element and surrounding layout as needed.",
584
+ ],
585
+ console: [
586
+ "Use the attached preview console logs and screenshot to debug the current page state.",
587
+ `Preview URL: ${status.currentUrl ?? "unavailable"}`,
588
+ status.selectedElement ? `Current selected element: ${status.selectedElement.selector}` : null,
589
+ instruction.trim() || "Investigate the console output, identify the root cause, and apply the needed fix.",
590
+ ],
591
+ network: [
592
+ "Use the attached preview network logs and screenshot to debug failed or unexpected requests.",
593
+ `Preview URL: ${status.currentUrl ?? "unavailable"}`,
594
+ status.selectedElement ? `Current selected element: ${status.selectedElement.selector}` : null,
595
+ instruction.trim() || "Investigate the network activity, identify the failing request or sequencing issue, and apply the needed fix.",
596
+ ],
597
+ } satisfies Record<PreviewSendTarget, Array<string | null>>;
598
+
599
+ const successMessageByTarget = {
600
+ selection: "Preview context sent to the session agent.",
601
+ console: "Console logs sent to the session agent.",
602
+ network: "Network logs sent to the session agent.",
603
+ } satisfies Record<PreviewSendTarget, string>;
604
+
605
+ const elementSummary = messageByTarget[target].filter((line): line is string => Boolean(line)).join("\n");
606
+
607
+ const response = await fetch(`/api/sessions/${encodeURIComponent(sessionId)}/send`, {
608
+ method: "POST",
609
+ headers: {
610
+ "Content-Type": "application/json",
611
+ },
612
+ body: JSON.stringify({
613
+ message: elementSummary,
614
+ attachments: attachmentPaths,
615
+ }),
616
+ });
617
+
618
+ const payload = await response.json().catch(() => null) as { error?: string } | null;
619
+ if (!response.ok) {
620
+ throw new Error(payload?.error ?? `Failed to send preview context: ${response.status}`);
621
+ }
622
+
623
+ setInstruction("");
624
+ if (target === "selection") {
625
+ setSelectionComposer(null);
626
+ }
627
+ setSendSuccess(successMessageByTarget[target]);
628
+ } catch (error) {
629
+ setSendError(error instanceof Error ? error.message : "Failed to send preview context");
630
+ } finally {
631
+ setSendingTarget(null);
632
+ }
633
+ }, [
634
+ instruction,
635
+ projectId,
636
+ screenshotUrl,
637
+ sessionId,
638
+ status,
639
+ ]);
640
+
641
+ const handleCopySelector = useCallback(async () => {
642
+ const selector = status?.selectedElement?.selector;
643
+ if (!selector) return;
644
+ try {
645
+ await navigator.clipboard.writeText(selector);
646
+ setSendSuccess("Selector copied to clipboard.");
647
+ setSendError(null);
648
+ } catch {
649
+ setSendError("Clipboard access is unavailable.");
650
+ }
651
+ }, [status?.selectedElement?.selector]);
652
+
653
+ return (
654
+ <div className="flex h-full min-h-0 flex-col gap-2 overflow-auto">
655
+ <Card>
656
+ <CardHeader className="flex flex-col items-start gap-2 lg:flex-row lg:items-center lg:justify-between">
657
+ <div className="flex items-center gap-2">
658
+ <Globe className="h-4 w-4 text-[var(--vk-text-muted)]" />
659
+ <span className="text-[13px] font-medium text-[var(--vk-text-normal)]">Dev preview browser</span>
660
+ {status?.connected
661
+ ? <Badge variant="success">connected</Badge>
662
+ : <Badge variant="outline">idle</Badge>}
663
+ {activeFrame
664
+ ? <Badge variant="outline">{activeFrame.isMain ? "main frame" : "nested frame"}</Badge>
665
+ : null}
666
+ </div>
667
+ <div className="flex flex-wrap items-center gap-2">
668
+ <Button
669
+ type="button"
670
+ variant="outline"
671
+ size="sm"
672
+ onClick={() => void loadStatus().catch((error: unknown) => {
673
+ setCommandError(error instanceof Error ? error.message : "Failed to refresh preview");
674
+ })}
675
+ disabled={loading || busy}
676
+ >
677
+ <RefreshCw className={cn("h-3.5 w-3.5", busy && "animate-spin")} />
678
+ Refresh
679
+ </Button>
680
+ <Button
681
+ type="button"
682
+ variant="outline"
683
+ size="sm"
684
+ onClick={() => void runCommand({ command: "reload" }).catch((error: unknown) => {
685
+ setCommandError(error instanceof Error ? error.message : "Failed to reload preview");
686
+ })}
687
+ disabled={!status?.connected || busy}
688
+ >
689
+ <Waypoints className="h-3.5 w-3.5" />
690
+ Reload page
691
+ </Button>
692
+ </div>
693
+ </CardHeader>
694
+ <CardContent className="space-y-3">
695
+ <div className="flex flex-col gap-2 lg:flex-row">
696
+ <input
697
+ value={urlInput}
698
+ onChange={(event) => setUrlInput(event.target.value)}
699
+ placeholder={status?.candidateUrls[0] ?? "http://127.0.0.1:3000"}
700
+ className="h-9 min-w-0 flex-1 rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-3 text-[13px] text-[var(--vk-text-normal)] outline-none focus:border-[var(--vk-orange)]"
701
+ />
702
+ <Button
703
+ type="button"
704
+ variant="primary"
705
+ onClick={() => void handleConnect()}
706
+ disabled={busy || !urlInput.trim()}
707
+ >
708
+ {busy ? <Loader2 className="h-4 w-4 animate-spin" /> : <MousePointerClick className="h-4 w-4" />}
709
+ Connect
710
+ </Button>
711
+ </div>
712
+
713
+ {status?.candidateUrls.length ? (
714
+ <div className="flex flex-wrap items-center gap-2">
715
+ {status.candidateUrls.map((candidate) => (
716
+ <button
717
+ key={candidate}
718
+ type="button"
719
+ className="inline-flex max-w-full items-center gap-1 rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] px-2 py-1 text-left text-[11px] text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)] hover:text-[var(--vk-text-normal)]"
720
+ onClick={() => {
721
+ setUrlInput(candidate);
722
+ void runCommand({ command: "connect", url: candidate }).catch((error: unknown) => {
723
+ setCommandError(error instanceof Error ? error.message : "Failed to connect preview");
724
+ });
725
+ }}
726
+ >
727
+ <Globe className="h-3 w-3 shrink-0" />
728
+ <span className="truncate">{candidate}</span>
729
+ </button>
730
+ ))}
731
+ </div>
732
+ ) : null}
733
+
734
+ {commandError || status?.lastError ? (
735
+ <div className="flex items-start gap-2 rounded-[4px] border border-[color:color-mix(in_srgb,var(--vk-red)_45%,transparent)] bg-[color:color-mix(in_srgb,var(--vk-red)_12%,transparent)] px-3 py-2 text-[12px] text-[var(--vk-red)]">
736
+ <AlertTriangle className="mt-0.5 h-4 w-4 shrink-0" />
737
+ <span>{commandError ?? status?.lastError}</span>
738
+ </div>
739
+ ) : null}
740
+ </CardContent>
741
+ </Card>
742
+
743
+ <Card className="min-h-0 shrink-0 overflow-hidden">
744
+ <CardHeader className="flex flex-col items-start gap-2 lg:flex-row lg:items-center lg:justify-between">
745
+ <div className="flex items-center gap-2">
746
+ <Eye className="h-4 w-4 text-[var(--vk-text-muted)]" />
747
+ <span className="text-[13px] font-medium text-[var(--vk-text-normal)]">Preview</span>
748
+ </div>
749
+ <div className="flex flex-wrap items-center gap-2">
750
+ <div className="flex items-center gap-1 rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] p-1">
751
+ <Button
752
+ type="button"
753
+ size="sm"
754
+ variant={previewMode === "navigate" ? "primary" : "ghost"}
755
+ onClick={() => handlePreviewModeChange("navigate")}
756
+ >
757
+ <MousePointerClick className="h-3.5 w-3.5" />
758
+ Navigate
759
+ </Button>
760
+ <Button
761
+ type="button"
762
+ size="sm"
763
+ variant={previewMode === "inspect" ? "primary" : "ghost"}
764
+ onClick={() => handlePreviewModeChange("inspect")}
765
+ >
766
+ <Eye className="h-3.5 w-3.5" />
767
+ Inspect
768
+ </Button>
769
+ </div>
770
+ <div className="flex flex-wrap items-center gap-2 text-[11px] text-[var(--vk-text-muted)]">
771
+ <Badge variant="outline">{status?.title ? truncate(status.title, 40) : "Untitled page"}</Badge>
772
+ <Badge variant="outline">
773
+ {previewMode === "navigate"
774
+ ? "navigate mode: clicks interact with the page"
775
+ : canSelectByPoint
776
+ ? "inspect mode: click once to select, again to message"
777
+ : "inspect mode: use DOM list for this frame"}
778
+ </Badge>
779
+ </div>
780
+ </div>
781
+ </CardHeader>
782
+ <CardContent className="min-h-0">
783
+ <div className="flex h-[56vh] min-h-[280px] max-h-[620px] items-center justify-center overflow-auto rounded-[6px] border border-[var(--vk-border)] bg-[#111] p-2 sm:h-[72vh] sm:min-h-[360px] sm:max-h-[760px] sm:p-3">
784
+ {loading ? (
785
+ <div className="flex items-center gap-2 text-[13px] text-[var(--vk-text-muted)]">
786
+ <Loader2 className="h-4 w-4 animate-spin" />
787
+ Loading preview…
788
+ </div>
789
+ ) : screenshotUrl ? (
790
+ <div className="relative flex max-h-full max-w-full items-start justify-center overflow-auto">
791
+ <img
792
+ ref={imageRef}
793
+ src={screenshotUrl}
794
+ alt="Session preview"
795
+ className={cn(
796
+ "max-h-full max-w-full rounded-[4px] object-contain shadow-[0_18px_36px_rgba(0,0,0,0.28)]",
797
+ previewMode === "navigate"
798
+ ? "cursor-pointer"
799
+ : canSelectByPoint
800
+ ? "cursor-crosshair"
801
+ : "cursor-default",
802
+ )}
803
+ onClick={(event) => void handleImageClick(event)}
804
+ onLoad={(event) => {
805
+ const target = event.currentTarget;
806
+ setImageMetrics({
807
+ naturalWidth: target.naturalWidth,
808
+ naturalHeight: target.naturalHeight,
809
+ renderedWidth: target.clientWidth,
810
+ renderedHeight: target.clientHeight,
811
+ });
812
+ }}
813
+ />
814
+ {previewMode === "inspect" && selectionOverlayStyle ? (
815
+ <div
816
+ className="pointer-events-none absolute border-2 border-[var(--vk-orange)] bg-[color:color-mix(in_srgb,var(--vk-orange)_18%,transparent)] shadow-[0_0_0_1px_rgba(0,0,0,0.5)]"
817
+ style={selectionOverlayStyle}
818
+ />
819
+ ) : null}
820
+ {previewMode === "inspect" && selectionComposer && selectionComposerStyle ? (
821
+ <div
822
+ className="pointer-events-auto absolute z-20 flex flex-col overflow-hidden rounded-[10px] border border-[var(--vk-border)] bg-[color:color-mix(in_srgb,var(--vk-bg-panel)_94%,black_6%)] shadow-[0_20px_44px_rgba(0,0,0,0.42)] backdrop-blur"
823
+ style={selectionComposerStyle}
824
+ >
825
+ <div className="flex items-start justify-between gap-3 border-b border-[var(--vk-border)] px-3 py-3">
826
+ <div className="min-w-0">
827
+ <div className="text-[10px] uppercase tracking-[0.16em] text-[var(--vk-text-muted)]">Current chat</div>
828
+ <div className="mt-1 text-[13px] font-medium text-[var(--vk-text-normal)]">
829
+ {selectionComposer.pending ? "Selecting element…" : "Send to current agent"}
830
+ </div>
831
+ </div>
832
+ <div className="flex items-center gap-1">
833
+ <Button
834
+ type="button"
835
+ variant="ghost"
836
+ size="sm"
837
+ onClick={() => void handleCopySelector()}
838
+ disabled={selectionComposer.pending || !status?.selectedElement}
839
+ >
840
+ <Copy className="h-3.5 w-3.5" />
841
+ </Button>
842
+ <Button
843
+ type="button"
844
+ variant="ghost"
845
+ size="sm"
846
+ onClick={() => setSelectionComposer(null)}
847
+ >
848
+ <X className="h-3.5 w-3.5" />
849
+ </Button>
850
+ </div>
851
+ </div>
852
+ <div className="flex-1 space-y-3 overflow-y-auto px-3 py-3">
853
+ {selectionComposer.pending ? (
854
+ <div className="flex items-center gap-2 rounded-[6px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] px-3 py-3 text-[12px] text-[var(--vk-text-muted)]">
855
+ <Loader2 className="h-4 w-4 animate-spin" />
856
+ Capturing the selected element from the preview…
857
+ </div>
858
+ ) : status?.selectedElement ? (
859
+ <>
860
+ <div className="rounded-[6px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] px-3 py-2">
861
+ <div className="flex items-center gap-2">
862
+ <span className="font-mono text-[12px] text-[var(--vk-text-normal)]">{status.selectedElement.tag}</span>
863
+ {status.selectedElement.role ? <Badge variant="outline">{status.selectedElement.role}</Badge> : null}
864
+ </div>
865
+ <div className="mt-2 text-[12px] text-[var(--vk-text-normal)]">
866
+ {truncate(status.selectedElement.name || status.selectedElement.text || "Selected element", 140)}
867
+ </div>
868
+ <div className="mt-2 break-all font-mono text-[11px] text-[var(--vk-text-muted)]">
869
+ {status.selectedElement.selector}
870
+ </div>
871
+ </div>
872
+ <div className="space-y-2">
873
+ <label className="text-[11px] uppercase tracking-[0.14em] text-[var(--vk-text-muted)]">
874
+ Instruction
875
+ </label>
876
+ <textarea
877
+ ref={instructionRef}
878
+ value={instruction}
879
+ onChange={(event) => setInstruction(event.target.value)}
880
+ placeholder="Describe the change and send it straight to this agent session…"
881
+ className="min-h-[108px] w-full rounded-[6px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] px-3 py-2 text-[13px] text-[var(--vk-text-normal)] outline-none focus:border-[var(--vk-orange)]"
882
+ />
883
+ </div>
884
+ {sendError ? (
885
+ <div className="text-[12px] text-[var(--vk-red)]">{sendError}</div>
886
+ ) : null}
887
+ <Button
888
+ type="button"
889
+ variant="primary"
890
+ className="w-full"
891
+ onClick={() => void handleSendContext("selection")}
892
+ disabled={sending || !status.selectedElement}
893
+ >
894
+ {sendingTarget === "selection" ? <Loader2 className="h-4 w-4 animate-spin" /> : <Send className="h-4 w-4" />}
895
+ Send to current agent
896
+ </Button>
897
+ </>
898
+ ) : (
899
+ <div className="rounded-[6px] border border-dashed border-[var(--vk-border)] px-3 py-3 text-[12px] text-[var(--vk-text-muted)]">
900
+ Click the current selection again to open the composer and send it into the current session chat.
901
+ </div>
902
+ )}
903
+ </div>
904
+ </div>
905
+ ) : null}
906
+ </div>
907
+ ) : (
908
+ <div className="max-w-md text-center text-[13px] text-[var(--vk-text-muted)]">
909
+ Connect a local dev URL to start the preview browser. Use Navigate mode to click through the running app, or switch to Inspect mode to select an element and send it to the current agent.
910
+ </div>
911
+ )}
912
+ </div>
913
+ </CardContent>
914
+ </Card>
915
+
916
+ {sendSuccess ? (
917
+ <div className="rounded-[6px] border border-[color:color-mix(in_srgb,var(--vk-green)_35%,transparent)] bg-[color:color-mix(in_srgb,var(--vk-green)_10%,transparent)] px-3 py-2 text-[12px] text-[var(--vk-green)]">
918
+ {sendSuccess}
919
+ </div>
920
+ ) : null}
921
+ {!selectionComposer && sendError ? (
922
+ <div className="rounded-[6px] border border-[color:color-mix(in_srgb,var(--vk-red)_35%,transparent)] bg-[color:color-mix(in_srgb,var(--vk-red)_10%,transparent)] px-3 py-2 text-[12px] text-[var(--vk-red)]">
923
+ {sendError}
924
+ </div>
925
+ ) : null}
926
+
927
+ <div className="grid gap-2">
928
+ <Card className="min-h-0">
929
+ <CardHeader className="flex items-center justify-between">
930
+ <div className="flex items-center gap-2">
931
+ <Boxes className="h-4 w-4 text-[var(--vk-text-muted)]" />
932
+ <span className="text-[13px] font-medium text-[var(--vk-text-normal)]">Frames and DOM</span>
933
+ <Badge variant="outline">{previewMode === "inspect" ? "inspect" : "read-only in navigate mode"}</Badge>
934
+ </div>
935
+ <Button
936
+ type="button"
937
+ variant={interactiveOnly ? "primary" : "outline"}
938
+ size="sm"
939
+ onClick={() => setInteractiveOnly((current) => !current)}
940
+ >
941
+ {interactiveOnly ? "Interactive only" : "All nodes"}
942
+ </Button>
943
+ </CardHeader>
944
+ <CardContent className="grid gap-2 xl:grid-cols-[220px_minmax(0,1fr)]">
945
+ <div className="space-y-2">
946
+ {status?.frames.map((frame) => (
947
+ <button
948
+ key={frame.id}
949
+ type="button"
950
+ onClick={() => {
951
+ void runCommand({ command: "selectFrame", frameId: frame.id }).catch((error: unknown) => {
952
+ setCommandError(error instanceof Error ? error.message : "Failed to select frame");
953
+ });
954
+ }}
955
+ className={cn(
956
+ "flex w-full flex-col items-start gap-1 rounded-[4px] border px-2 py-2 text-left transition-colors",
957
+ status.activeFrameId === frame.id
958
+ ? "border-[var(--vk-orange)] bg-[color:color-mix(in_srgb,var(--vk-orange)_10%,transparent)]"
959
+ : "border-[var(--vk-border)] bg-[var(--vk-bg-main)] hover:bg-[var(--vk-bg-hover)]",
960
+ )}
961
+ >
962
+ <div className="flex items-center gap-2">
963
+ <Badge variant="outline">{frame.isMain ? "main" : "frame"}</Badge>
964
+ <span className="truncate text-[12px] text-[var(--vk-text-normal)]">{frame.name}</span>
965
+ </div>
966
+ <span className="w-full truncate text-[11px] text-[var(--vk-text-muted)]">
967
+ {frame.url || "about:blank"}
968
+ </span>
969
+ </button>
970
+ ))}
971
+ </div>
972
+
973
+ <div className="rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)]">
974
+ <ScrollArea className="h-[240px] sm:h-[300px] xl:h-[360px]">
975
+ <div className="space-y-1 p-2">
976
+ {previewMode === "navigate" ? (
977
+ <div className="rounded-[4px] border border-dashed border-[var(--vk-border)] px-2 py-2 text-[11px] text-[var(--vk-text-muted)]">
978
+ Switch to Inspect mode to pick DOM nodes or send selected UI context to the current agent.
979
+ </div>
980
+ ) : null}
981
+ {domLoading ? (
982
+ <div className="flex items-center gap-2 px-2 py-2 text-[12px] text-[var(--vk-text-muted)]">
983
+ <Loader2 className="h-4 w-4 animate-spin" />
984
+ Inspecting frame DOM…
985
+ </div>
986
+ ) : domNodes.length ? (
987
+ domNodes.map((node, index) => (
988
+ <button
989
+ key={`${node.id ?? "node"}-${index}-${node.selector}-${node.tag}-${node.text}`}
990
+ type="button"
991
+ className={cn(
992
+ "w-full rounded-[4px] border border-[transparent] px-2 py-2 text-left",
993
+ previewMode === "inspect"
994
+ ? "hover:border-[var(--vk-border)] hover:bg-[var(--vk-bg-hover)]"
995
+ : "cursor-not-allowed opacity-60",
996
+ )}
997
+ disabled={previewMode !== "inspect"}
998
+ onClick={() => {
999
+ if (
1000
+ status?.selectedElement
1001
+ && status.selectedElement.selector === node.selector
1002
+ && status.selectedElement.frameId === status.activeFrameId
1003
+ ) {
1004
+ openSelectionComposer(
1005
+ Math.max(imageMetrics.renderedWidth - 44, SELECTION_COMPOSER_MARGIN_PX),
1006
+ SELECTION_COMPOSER_MARGIN_PX,
1007
+ false,
1008
+ );
1009
+ return;
1010
+ }
1011
+
1012
+ setSelectionComposer(null);
1013
+ setSendError(null);
1014
+ setSendSuccess(null);
1015
+ void runCommand({
1016
+ command: "selectBySelector",
1017
+ selector: node.selector,
1018
+ frameId: status?.activeFrameId,
1019
+ })
1020
+ .catch((error: unknown) => {
1021
+ setCommandError(error instanceof Error ? error.message : "Failed to select DOM node");
1022
+ });
1023
+ }}
1024
+ >
1025
+ <div className="flex items-center gap-2">
1026
+ <span className="font-mono text-[12px] text-[var(--vk-text-normal)]">{node.tag}</span>
1027
+ {node.interactive ? <Badge variant="warning">interactive</Badge> : null}
1028
+ {node.role ? <Badge variant="outline">{node.role}</Badge> : null}
1029
+ </div>
1030
+ <div className="mt-1 break-all font-mono text-[11px] text-[var(--vk-text-muted)]">
1031
+ {node.selector}
1032
+ </div>
1033
+ {node.text ? (
1034
+ <div className="mt-1 text-[12px] text-[var(--vk-text-normal)]">
1035
+ {truncate(node.text, 180)}
1036
+ </div>
1037
+ ) : null}
1038
+ </button>
1039
+ ))
1040
+ ) : (
1041
+ <div className="px-2 py-3 text-[12px] text-[var(--vk-text-muted)]">
1042
+ No DOM nodes to show for the current frame yet.
1043
+ </div>
1044
+ )}
1045
+ </div>
1046
+ </ScrollArea>
1047
+ </div>
1048
+ </CardContent>
1049
+ </Card>
1050
+
1051
+ <div className="grid gap-2 lg:grid-cols-2">
1052
+ <Card className="min-h-0">
1053
+ <CardHeader className="flex items-center justify-between gap-2">
1054
+ <div className="flex items-center gap-2">
1055
+ <TerminalSquare className="h-4 w-4 text-[var(--vk-text-muted)]" />
1056
+ <span className="text-[13px] font-medium text-[var(--vk-text-normal)]">Console</span>
1057
+ <Badge variant="outline">{status?.consoleLogs.length ?? 0}</Badge>
1058
+ </div>
1059
+ <Button
1060
+ type="button"
1061
+ variant="ghost"
1062
+ size="sm"
1063
+ onClick={() => void handleSendContext("console")}
1064
+ disabled={sending || !status?.consoleLogs.length}
1065
+ >
1066
+ {sendingTarget === "console" ? <Loader2 className="h-3.5 w-3.5 animate-spin" /> : <Send className="h-3.5 w-3.5" />}
1067
+ Send to agent
1068
+ </Button>
1069
+ </CardHeader>
1070
+ <CardContent>
1071
+ <ScrollArea className="h-[220px] sm:h-[260px] rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)]">
1072
+ <div className="space-y-1 p-2">
1073
+ {status?.consoleLogs.length ? status.consoleLogs.map((entry) => (
1074
+ <div
1075
+ key={entry.id}
1076
+ className="rounded-[3px] px-2 py-1.5 text-[11px] text-[var(--vk-text-normal)]"
1077
+ >
1078
+ <div className="flex items-center gap-2 text-[10px] uppercase tracking-wide text-[var(--vk-text-muted)]">
1079
+ <span>{entry.level}</span>
1080
+ <span>{formatTime(entry.timestamp)}</span>
1081
+ </div>
1082
+ <div className="mt-1 whitespace-pre-wrap break-all font-mono">
1083
+ {entry.message}
1084
+ </div>
1085
+ </div>
1086
+ )) : (
1087
+ <div className="px-2 py-3 text-[12px] text-[var(--vk-text-muted)]">
1088
+ Console output appears here once the page loads.
1089
+ </div>
1090
+ )}
1091
+ </div>
1092
+ </ScrollArea>
1093
+ </CardContent>
1094
+ </Card>
1095
+
1096
+ <Card className="min-h-0">
1097
+ <CardHeader className="flex items-center justify-between gap-2">
1098
+ <div className="flex items-center gap-2">
1099
+ <FileJson2 className="h-4 w-4 text-[var(--vk-text-muted)]" />
1100
+ <span className="text-[13px] font-medium text-[var(--vk-text-normal)]">Network</span>
1101
+ <Badge variant="outline">{status?.networkLogs.length ?? 0}</Badge>
1102
+ </div>
1103
+ <Button
1104
+ type="button"
1105
+ variant="ghost"
1106
+ size="sm"
1107
+ onClick={() => void handleSendContext("network")}
1108
+ disabled={sending || !status?.networkLogs.length}
1109
+ >
1110
+ {sendingTarget === "network" ? <Loader2 className="h-3.5 w-3.5 animate-spin" /> : <Send className="h-3.5 w-3.5" />}
1111
+ Send to agent
1112
+ </Button>
1113
+ </CardHeader>
1114
+ <CardContent>
1115
+ <ScrollArea className="h-[220px] sm:h-[260px] rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)]">
1116
+ <div className="space-y-1 p-2">
1117
+ {status?.networkLogs.length ? status.networkLogs.map((entry) => (
1118
+ <div
1119
+ key={entry.id}
1120
+ className="rounded-[3px] px-2 py-1.5 text-[11px] text-[var(--vk-text-normal)]"
1121
+ >
1122
+ <div className="flex items-center gap-2 text-[10px] uppercase tracking-wide text-[var(--vk-text-muted)]">
1123
+ <span>{entry.method ?? "GET"}</span>
1124
+ {typeof entry.status === "number" ? <span>{entry.status}</span> : null}
1125
+ {entry.resourceType ? <span>{entry.resourceType}</span> : null}
1126
+ <span>{formatTime(entry.timestamp)}</span>
1127
+ </div>
1128
+ <div className="mt-1 break-all font-mono">{entry.url ?? entry.message}</div>
1129
+ </div>
1130
+ )) : (
1131
+ <div className="px-2 py-3 text-[12px] text-[var(--vk-text-muted)]">
1132
+ Network requests appear here after the preview loads.
1133
+ </div>
1134
+ )}
1135
+ </div>
1136
+ </ScrollArea>
1137
+ </CardContent>
1138
+ </Card>
1139
+ </div>
1140
+ </div>
1141
+ </div>
1142
+ );
1143
+ }