@seqyuan/annovibe 0.8.35 → 0.8.37

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 (203) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +6 -5
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/required-server-files.js +1 -1
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/routes-manifest.json +6 -0
  8. package/.next/server/app/_global-error/page.js +3 -3
  9. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/_global-error.html +1 -1
  11. package/.next/server/app/_global-error.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/.next/server/app/_not-found/page.js +2 -2
  19. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next/server/app/_not-found.html +1 -1
  21. package/.next/server/app/_not-found.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  25. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  26. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  27. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  28. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  29. package/.next/server/app/api/agent/[id]/route.js +1 -1
  30. package/.next/server/app/api/agent/new/route.js +1 -1
  31. package/.next/server/app/api/agent/runtime/route.js +1 -1
  32. package/.next/server/app/api/apps/[id]/[[...path]]/route.js +1 -1
  33. package/.next/server/app/api/apps/route.js +1 -1
  34. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  35. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  36. package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
  37. package/.next/server/app/api/auth/login/route.js +1 -1
  38. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  39. package/.next/server/app/api/auth/providers/route.js +1 -1
  40. package/.next/server/app/api/auth/status/route.js +1 -1
  41. package/.next/server/app/api/default-cwd/route.js +1 -1
  42. package/.next/server/app/api/files/[...path]/route.js +3 -3
  43. package/.next/server/app/api/harness/route.js +1 -1
  44. package/.next/server/app/api/home/route.js +1 -1
  45. package/.next/server/app/api/internal/runtime/route.js +1 -1
  46. package/.next/server/app/api/memory/promote/route.js +7 -0
  47. package/.next/server/app/api/memory/promote/route_client-reference-manifest.js +1 -0
  48. package/.next/server/app/api/models/route.js +1 -1
  49. package/.next/server/app/api/models-config/discover/route.js +1 -1
  50. package/.next/server/app/api/models-config/route.js +1 -1
  51. package/.next/server/app/api/models-config/test/route.js +1 -1
  52. package/.next/server/app/api/plot-kernels/route.js +1 -1
  53. package/.next/server/app/api/plot-kernels/status/route.js +1 -1
  54. package/.next/server/app/api/plot-kernels/stop/route.js +1 -1
  55. package/.next/server/app/api/projects/browse/route.js +1 -1
  56. package/.next/server/app/api/projects/route.js +1 -1
  57. package/.next/server/app/api/reports/[id]/route.js +2 -2
  58. package/.next/server/app/api/search/route.js +2 -2
  59. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  60. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  61. package/.next/server/app/api/sessions/new/route.js +1 -1
  62. package/.next/server/app/api/sessions/route.js +2 -2
  63. package/.next/server/app/api/settings/route.js +1 -1
  64. package/.next/server/app/api/skills/install/route.js +2 -2
  65. package/.next/server/app/api/skills/route.js +2 -2
  66. package/.next/server/app/api/skills/search/route.js +1 -1
  67. package/.next/server/app/api/soul/route.js +1 -1
  68. package/.next/server/app/api/subagents/status/route.js +1 -1
  69. package/.next/server/app/api/version/route.js +1 -1
  70. package/.next/server/app/favicon.ico/route.js +1 -1
  71. package/.next/server/app/icon.svg/route.js +1 -1
  72. package/.next/server/app/index.html +1 -1
  73. package/.next/server/app/index.rsc +2 -2
  74. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  75. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  76. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  77. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  78. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  79. package/.next/server/app/login/page.js +2 -2
  80. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  81. package/.next/server/app/login.html +1 -1
  82. package/.next/server/app/login.rsc +1 -1
  83. package/.next/server/app/login.segments/_full.segment.rsc +1 -1
  84. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  85. package/.next/server/app/login.segments/_index.segment.rsc +1 -1
  86. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  87. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  88. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  89. package/.next/server/app/page.js +5 -5
  90. package/.next/server/app/page_client-reference-manifest.js +1 -1
  91. package/.next/server/app/smoke/page.js +2 -2
  92. package/.next/server/app/smoke/page_client-reference-manifest.js +1 -1
  93. package/.next/server/app/smoke.html +8 -8
  94. package/.next/server/app/smoke.rsc +2 -2
  95. package/.next/server/app/smoke.segments/_full.segment.rsc +2 -2
  96. package/.next/server/app/smoke.segments/_head.segment.rsc +1 -1
  97. package/.next/server/app/smoke.segments/_index.segment.rsc +1 -1
  98. package/.next/server/app/smoke.segments/_tree.segment.rsc +1 -1
  99. package/.next/server/app/smoke.segments/smoke/__PAGE__.segment.rsc +2 -2
  100. package/.next/server/app/smoke.segments/smoke.segment.rsc +1 -1
  101. package/.next/server/app-paths-manifest.json +6 -5
  102. package/.next/server/chunks/7358.js +1 -1
  103. package/.next/server/chunks/7601.js +8 -4
  104. package/.next/server/middleware-build-manifest.js +1 -1
  105. package/.next/server/pages/404.html +1 -1
  106. package/.next/server/pages/500.html +1 -1
  107. package/.next/server/server-reference-manifest.json +1 -1
  108. package/.next/static/LPDY7d1rQxff1OqgbwTWa/_buildManifest.js +1 -0
  109. package/.next/static/chunks/{3041-1971241af702452f.js → 3041-2a1bf2ba5b31db24.js} +3 -3
  110. package/.next/static/chunks/app/{api/agent/[id]/events/route-8b0cc8e365bd9f53.js → _global-error/page-412387d4b52026c9.js} +1 -1
  111. package/.next/static/chunks/app/api/agent/[id]/{route-8b0cc8e365bd9f53.js → events/route-412387d4b52026c9.js} +1 -1
  112. package/.next/static/chunks/app/api/agent/{new/route-8b0cc8e365bd9f53.js → [id]/route-412387d4b52026c9.js} +1 -1
  113. package/.next/static/chunks/app/{_global-error/page-8b0cc8e365bd9f53.js → api/agent/new/route-412387d4b52026c9.js} +1 -1
  114. package/.next/static/chunks/app/api/agent/runtime/route-412387d4b52026c9.js +1 -0
  115. package/.next/static/chunks/app/api/apps/[id]/[[...path]]/route-412387d4b52026c9.js +1 -0
  116. package/.next/static/chunks/app/api/apps/route-412387d4b52026c9.js +1 -0
  117. package/.next/static/chunks/app/api/auth/all-providers/route-412387d4b52026c9.js +1 -0
  118. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-412387d4b52026c9.js +1 -0
  119. package/.next/static/chunks/app/api/auth/login/[provider]/route-412387d4b52026c9.js +1 -0
  120. package/.next/static/chunks/app/api/auth/login/route-412387d4b52026c9.js +1 -0
  121. package/.next/static/chunks/app/api/auth/logout/[provider]/route-412387d4b52026c9.js +1 -0
  122. package/.next/static/chunks/app/api/auth/providers/route-412387d4b52026c9.js +1 -0
  123. package/.next/static/chunks/app/api/auth/status/route-412387d4b52026c9.js +1 -0
  124. package/.next/static/chunks/app/api/default-cwd/route-412387d4b52026c9.js +1 -0
  125. package/.next/static/chunks/app/api/files/[...path]/route-412387d4b52026c9.js +1 -0
  126. package/.next/static/chunks/app/api/harness/route-412387d4b52026c9.js +1 -0
  127. package/.next/static/chunks/app/api/home/route-412387d4b52026c9.js +1 -0
  128. package/.next/static/chunks/app/api/internal/runtime/route-412387d4b52026c9.js +1 -0
  129. package/.next/static/chunks/app/api/memory/promote/route-412387d4b52026c9.js +1 -0
  130. package/.next/static/chunks/app/api/models/route-412387d4b52026c9.js +1 -0
  131. package/.next/static/chunks/app/api/models-config/discover/route-412387d4b52026c9.js +1 -0
  132. package/.next/static/chunks/app/api/models-config/route-412387d4b52026c9.js +1 -0
  133. package/.next/static/chunks/app/api/models-config/test/route-412387d4b52026c9.js +1 -0
  134. package/.next/static/chunks/app/api/plot-kernels/route-412387d4b52026c9.js +1 -0
  135. package/.next/static/chunks/app/api/plot-kernels/status/route-412387d4b52026c9.js +1 -0
  136. package/.next/static/chunks/app/api/plot-kernels/stop/route-412387d4b52026c9.js +1 -0
  137. package/.next/static/chunks/app/api/projects/browse/route-412387d4b52026c9.js +1 -0
  138. package/.next/static/chunks/app/api/projects/route-412387d4b52026c9.js +1 -0
  139. package/.next/static/chunks/app/api/reports/[id]/route-412387d4b52026c9.js +1 -0
  140. package/.next/static/chunks/app/api/search/route-412387d4b52026c9.js +1 -0
  141. package/.next/static/chunks/app/api/sessions/[id]/context/route-412387d4b52026c9.js +1 -0
  142. package/.next/static/chunks/app/api/sessions/[id]/route-412387d4b52026c9.js +1 -0
  143. package/.next/static/chunks/app/api/sessions/new/route-412387d4b52026c9.js +1 -0
  144. package/.next/static/chunks/app/api/sessions/route-412387d4b52026c9.js +1 -0
  145. package/.next/static/chunks/app/api/settings/route-412387d4b52026c9.js +1 -0
  146. package/.next/static/chunks/app/api/skills/install/route-412387d4b52026c9.js +1 -0
  147. package/.next/static/chunks/app/api/skills/route-412387d4b52026c9.js +1 -0
  148. package/.next/static/chunks/app/api/skills/search/route-412387d4b52026c9.js +1 -0
  149. package/.next/static/chunks/app/api/soul/route-412387d4b52026c9.js +1 -0
  150. package/.next/static/chunks/app/api/subagents/status/route-412387d4b52026c9.js +1 -0
  151. package/.next/static/chunks/app/api/version/route-412387d4b52026c9.js +1 -0
  152. package/.next/static/chunks/app/favicon.ico/route-412387d4b52026c9.js +1 -0
  153. package/.next/static/chunks/app/page-fb7e974c7c588911.js +27 -0
  154. package/.next/static/chunks/next/dist/client/components/builtin/app-error-412387d4b52026c9.js +1 -0
  155. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-412387d4b52026c9.js +1 -0
  156. package/.next/static/chunks/next/dist/client/components/builtin/not-found-412387d4b52026c9.js +1 -0
  157. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-412387d4b52026c9.js +1 -0
  158. package/package.json +3 -3
  159. package/.next/static/SAAV2xXOo01Y4ntjlAyTA/_buildManifest.js +0 -1
  160. package/.next/static/chunks/app/api/agent/runtime/route-8b0cc8e365bd9f53.js +0 -1
  161. package/.next/static/chunks/app/api/apps/[id]/[[...path]]/route-8b0cc8e365bd9f53.js +0 -1
  162. package/.next/static/chunks/app/api/apps/route-8b0cc8e365bd9f53.js +0 -1
  163. package/.next/static/chunks/app/api/auth/all-providers/route-8b0cc8e365bd9f53.js +0 -1
  164. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-8b0cc8e365bd9f53.js +0 -1
  165. package/.next/static/chunks/app/api/auth/login/[provider]/route-8b0cc8e365bd9f53.js +0 -1
  166. package/.next/static/chunks/app/api/auth/login/route-8b0cc8e365bd9f53.js +0 -1
  167. package/.next/static/chunks/app/api/auth/logout/[provider]/route-8b0cc8e365bd9f53.js +0 -1
  168. package/.next/static/chunks/app/api/auth/providers/route-8b0cc8e365bd9f53.js +0 -1
  169. package/.next/static/chunks/app/api/auth/status/route-8b0cc8e365bd9f53.js +0 -1
  170. package/.next/static/chunks/app/api/default-cwd/route-8b0cc8e365bd9f53.js +0 -1
  171. package/.next/static/chunks/app/api/files/[...path]/route-8b0cc8e365bd9f53.js +0 -1
  172. package/.next/static/chunks/app/api/harness/route-8b0cc8e365bd9f53.js +0 -1
  173. package/.next/static/chunks/app/api/home/route-8b0cc8e365bd9f53.js +0 -1
  174. package/.next/static/chunks/app/api/internal/runtime/route-8b0cc8e365bd9f53.js +0 -1
  175. package/.next/static/chunks/app/api/models/route-8b0cc8e365bd9f53.js +0 -1
  176. package/.next/static/chunks/app/api/models-config/discover/route-8b0cc8e365bd9f53.js +0 -1
  177. package/.next/static/chunks/app/api/models-config/route-8b0cc8e365bd9f53.js +0 -1
  178. package/.next/static/chunks/app/api/models-config/test/route-8b0cc8e365bd9f53.js +0 -1
  179. package/.next/static/chunks/app/api/plot-kernels/route-8b0cc8e365bd9f53.js +0 -1
  180. package/.next/static/chunks/app/api/plot-kernels/status/route-8b0cc8e365bd9f53.js +0 -1
  181. package/.next/static/chunks/app/api/plot-kernels/stop/route-8b0cc8e365bd9f53.js +0 -1
  182. package/.next/static/chunks/app/api/projects/browse/route-8b0cc8e365bd9f53.js +0 -1
  183. package/.next/static/chunks/app/api/projects/route-8b0cc8e365bd9f53.js +0 -1
  184. package/.next/static/chunks/app/api/reports/[id]/route-8b0cc8e365bd9f53.js +0 -1
  185. package/.next/static/chunks/app/api/search/route-8b0cc8e365bd9f53.js +0 -1
  186. package/.next/static/chunks/app/api/sessions/[id]/context/route-8b0cc8e365bd9f53.js +0 -1
  187. package/.next/static/chunks/app/api/sessions/[id]/route-8b0cc8e365bd9f53.js +0 -1
  188. package/.next/static/chunks/app/api/sessions/new/route-8b0cc8e365bd9f53.js +0 -1
  189. package/.next/static/chunks/app/api/sessions/route-8b0cc8e365bd9f53.js +0 -1
  190. package/.next/static/chunks/app/api/settings/route-8b0cc8e365bd9f53.js +0 -1
  191. package/.next/static/chunks/app/api/skills/install/route-8b0cc8e365bd9f53.js +0 -1
  192. package/.next/static/chunks/app/api/skills/route-8b0cc8e365bd9f53.js +0 -1
  193. package/.next/static/chunks/app/api/skills/search/route-8b0cc8e365bd9f53.js +0 -1
  194. package/.next/static/chunks/app/api/soul/route-8b0cc8e365bd9f53.js +0 -1
  195. package/.next/static/chunks/app/api/subagents/status/route-8b0cc8e365bd9f53.js +0 -1
  196. package/.next/static/chunks/app/api/version/route-8b0cc8e365bd9f53.js +0 -1
  197. package/.next/static/chunks/app/favicon.ico/route-8b0cc8e365bd9f53.js +0 -1
  198. package/.next/static/chunks/app/page-a79fd5f7c6fbd787.js +0 -27
  199. package/.next/static/chunks/next/dist/client/components/builtin/app-error-8b0cc8e365bd9f53.js +0 -1
  200. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-8b0cc8e365bd9f53.js +0 -1
  201. package/.next/static/chunks/next/dist/client/components/builtin/not-found-8b0cc8e365bd9f53.js +0 -1
  202. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-8b0cc8e365bd9f53.js +0 -1
  203. /package/.next/static/{SAAV2xXOo01Y4ntjlAyTA → LPDY7d1rQxff1OqgbwTWa}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html><html lang="en" class="__variable_66b8ca"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/7deddc85b7ffd1dc-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/ec14413c594b3356-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/88714c00e109ce28.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/5a346973ceb3dbc6.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-19a6d5696c9d0290.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-123fdf632563f469.js" async=""></script><script src="/_next/static/chunks/main-app-8d81a93b58bb990f.js" async=""></script><script src="/_next/static/chunks/app/layout-5608bfe5e8f4e4c0.js" async=""></script><script src="/_next/static/chunks/d3ac728e-7964f816a1ca64e5.js" async=""></script><script src="/_next/static/chunks/363642f4-043c1475ab9af70e.js" async=""></script><script src="/_next/static/chunks/73972abe-9ff83c7d1a6ea9f7.js" async=""></script><script src="/_next/static/chunks/0b9a0da7-9075af772487e743.js" async=""></script><script src="/_next/static/chunks/6236-1f7433425e0ceda5.js" async=""></script><script src="/_next/static/chunks/3041-1971241af702452f.js" async=""></script><script src="/_next/static/chunks/app/smoke/page-57d2b282f9b2d200.js" async=""></script><meta name="next-size-adjust" content=""/><title>AnnoVibe</title><meta name="description" content="AI-native bioinformatics workspace by Annoroad"/><link rel="shortcut icon" href="/icon.svg" type="image/svg+xml"/><link rel="icon" href="/icon.svg" type="image/svg+xml"/><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"(function(){try{var t=localStorage.getItem(\"pi-theme\");if(t===\"dark\")document.documentElement.classList.add(\"dark\")}catch(e){}})();","id":"theme-init"}])</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body style="height:100dvh;display:flex;flex-direction:column"><div hidden=""><!--$--><!--/$--></div><main style="min-height:100vh;background:var(--bg);color:var(--text);padding:24px 20px 56px"><div style="max-width:1120px;margin:0 auto;display:flex;flex-direction:column;gap:20px"><div style="display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap"><div><h1 style="margin:0;font-size:22px;line-height:1.2">Generative UI Smoke</h1><div style="margin-top:6px;color:var(--text-muted);font-size:13px">Fixed fixture for Streamdown, Shiki, widgets, mermaid, ANSI, and folding behavior.</div></div><div style="display:flex;align-items:center;gap:8px;flex-wrap:wrap"><button type="button" data-smoke-control="streaming-toggle" style="min-height:32px;padding:0 12px;border-radius:6px;border:1px solid var(--border);background:var(--bg-panel);color:var(--text);cursor:pointer">Streaming On</button><button type="button" data-smoke-control="theme-toggle" style="min-height:32px;padding:0 12px;border-radius:6px;border:1px solid var(--border);background:var(--bg-panel);color:var(--text);cursor:pointer">Light</button><button type="button" data-smoke-control="reduced-motion-toggle" style="min-height:32px;padding:0 12px;border-radius:6px;border:1px solid var(--border);background:var(--bg-panel);color:var(--text);cursor:pointer">Reduced Motion Off</button></div></div><section style="display:grid;grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));gap:12px"><div data-smoke="text-shimmer" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);padding:12px;display:flex;flex-direction:column;gap:10px;min-height:92px"><div style="font-size:12px;color:var(--text-muted);font-weight:600">Text Shimmer</div><div><span style="display:inline-block;background-image:linear-gradient(90deg, var(--text-dim) 25%, var(--text-muted) 50%, var(--text-dim) 75%);background-size:200% 100%;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:text-shimmer 2s linear infinite">Thinking</span></div></div><div data-smoke="surface-shimmer" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);padding:12px;display:flex;flex-direction:column;gap:10px;min-height:92px"><div style="font-size:12px;color:var(--text-muted);font-weight:600">Surface Shimmer</div><div><div style="border-radius:6px;background:var(--bg-panel);overflow:hidden;height:56px"><div style="width:100%;height:100%;background:linear-gradient(90deg, transparent 0%, var(--bg-hover) 50%, transparent 100%);background-size:200% 100%;animation:surface-shimmer 1.5s ease-in-out infinite"></div></div></div></div><div data-smoke="status-badges" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);padding:12px;display:flex;flex-direction:column;gap:10px;min-height:92px"><div style="font-size:12px;color:var(--text-muted);font-weight:600">Status Badge</div><div><div style="display:flex;gap:8px;flex-wrap:wrap"><span style="display:inline-flex;align-items:center;gap:5px;min-height:18px;padding:0 6px;border-radius:999px;border:1px solid color-mix(in srgb, #f59e0b 35%, transparent);background:color-mix(in srgb, #f59e0b 10%, transparent);color:#f59e0b;font-size:10px;font-weight:600;white-space:nowrap;flex-shrink:0" title="Running"><span style="width:6px;height:6px;border-radius:999px;background:#f59e0b;animation:pulse 1.2s ease-in-out infinite"></span><span>Running</span></span><span style="display:inline-flex;align-items:center;gap:5px;min-height:18px;padding:0 6px;border-radius:999px;border:1px solid color-mix(in srgb, #16a34a 35%, transparent);background:color-mix(in srgb, #16a34a 10%, transparent);color:#16a34a;font-size:10px;font-weight:600;white-space:nowrap;flex-shrink:0" title="Done"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg><span>Done</span></span><span style="display:inline-flex;align-items:center;gap:5px;min-height:18px;padding:0 6px;border-radius:999px;border:1px solid color-mix(in srgb, #f87171 35%, transparent);background:color-mix(in srgb, #f87171 10%, transparent);color:#f87171;font-size:10px;font-weight:600;white-space:nowrap;flex-shrink:0" title="Error"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m18 6-12 12"></path><path d="m6 6 12 12"></path></svg><span>Error</span></span><span style="display:inline-flex;align-items:center;gap:5px;min-height:18px;padding:0 6px;border-radius:999px;border:1px solid color-mix(in srgb, var(--text-dim) 35%, transparent);background:color-mix(in srgb, var(--text-dim) 10%, transparent);color:var(--text-dim);font-size:10px;font-weight:600;white-space:nowrap;flex-shrink:0" title="Unknown"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="9"></circle><path d="M12 8v5"></path><path d="M12 16h.01"></path></svg><span>Unknown</span></span></div></div></div></section><section data-smoke="assistant-markdown" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">Assistant Markdown</div><div style="padding:14px"><div class="markdown-body"><div class="space-y-4 whitespace-normal [&amp;&gt;*:first-child]:mt-0 [&amp;&gt;*:last-child]:mb-0"><h1 class="mt-6 mb-2 font-semibold text-3xl" data-streamdown="heading-1">Generative UI Smoke</h1><p>Inline code: <code style="background:var(--bg-selected);padding:1px 4px;border-radius:3px;font-family:var(--font-mono);font-size:0.9em">const answer = 42</code></p><p>Inline math: $E=mc^2$</p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msubsup><mo>∫</mo><mn>0</mn><mn>1</mn></msubsup><msup><mi>x</mi><mn>2</mn></msup><mtext> </mtext><mi>d</mi><mi>x</mi><mo>=</mo><mfrac><mn>1</mn><mn>3</mn></mfrac></mrow><annotation encoding="application/x-tex">\int_0^1 x^2 \, dx = \frac{1}{3}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.476em;vertical-align:-0.9119em"></span><span class="mop"><span class="mop op-symbol large-op" style="margin-right:0.4445em;position:relative;top:-0.0011em">∫</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.564em"><span style="top:-1.7881em;margin-left:-0.4445em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span><span style="top:-3.8129em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.9119em"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em"><span style="top:-3.113em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em"></span><span class="mord mathnormal">d</span><span class="mord mathnormal">x</span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em"></span></span><span class="base"><span class="strut" style="height:2.0074em;vertical-align:-0.686em"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em"><span style="top:-2.314em"><span class="pstrut" style="height:3em"></span><span class="mord"><span class="mord">3</span></span></span><span style="top:-3.23em"><span class="pstrut" style="height:3em"></span><span class="frac-line" style="border-bottom-width:0.04em"></span></span><span style="top:-3.677em"><span class="pstrut" style="height:3em"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span><h2 class="mt-6 mb-2 font-semibold text-2xl" data-streamdown="heading-2">JavaScript</h2><div class="markdown-code-block markdown-code-block-chat" style="border-radius:6px;overflow:hidden;border:1px solid var(--border);margin-top:4px;margin-bottom:4px"><div style="padding:3px 10px;background:var(--bg-panel);border-bottom:1px solid var(--border);font-size:11px;color:var(--text-dim);display:flex;justify-content:space-between;align-items:center;gap:8px"><span>js</span><div style="display:flex;gap:8px;align-items:center"><button type="button" title="Copy as Markdown fence" aria-label="Copy as Markdown fence" style="background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px">markdown</button><button type="button" aria-label="Copy code" style="background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px">copy</button></div></div><pre data-highlight-source="raw" data-highlight-language="js" style="margin:0;padding:10px 12px;font-size:12.5px;line-height:1.6;overflow:auto;background:var(--bg);font-family:var(--font-mono);white-space:pre-wrap;word-break:break-all;color:var(--text)"><code>export function sum(a, b) {
1
+ <!DOCTYPE html><html lang="en" class="__variable_66b8ca"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/7deddc85b7ffd1dc-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/ec14413c594b3356-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/88714c00e109ce28.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/5a346973ceb3dbc6.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-19a6d5696c9d0290.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-123fdf632563f469.js" async=""></script><script src="/_next/static/chunks/main-app-8d81a93b58bb990f.js" async=""></script><script src="/_next/static/chunks/app/layout-5608bfe5e8f4e4c0.js" async=""></script><script src="/_next/static/chunks/d3ac728e-7964f816a1ca64e5.js" async=""></script><script src="/_next/static/chunks/363642f4-043c1475ab9af70e.js" async=""></script><script src="/_next/static/chunks/73972abe-9ff83c7d1a6ea9f7.js" async=""></script><script src="/_next/static/chunks/0b9a0da7-9075af772487e743.js" async=""></script><script src="/_next/static/chunks/6236-1f7433425e0ceda5.js" async=""></script><script src="/_next/static/chunks/3041-2a1bf2ba5b31db24.js" async=""></script><script src="/_next/static/chunks/app/smoke/page-57d2b282f9b2d200.js" async=""></script><meta name="next-size-adjust" content=""/><title>AnnoVibe</title><meta name="description" content="AI-native bioinformatics workspace by Annoroad"/><link rel="shortcut icon" href="/icon.svg" type="image/svg+xml"/><link rel="icon" href="/icon.svg" type="image/svg+xml"/><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"(function(){try{var t=localStorage.getItem(\"pi-theme\");if(t===\"dark\")document.documentElement.classList.add(\"dark\")}catch(e){}})();","id":"theme-init"}])</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body style="height:100dvh;display:flex;flex-direction:column"><div hidden=""><!--$--><!--/$--></div><main style="min-height:100vh;background:var(--bg);color:var(--text);padding:24px 20px 56px"><div style="max-width:1120px;margin:0 auto;display:flex;flex-direction:column;gap:20px"><div style="display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap"><div><h1 style="margin:0;font-size:22px;line-height:1.2">Generative UI Smoke</h1><div style="margin-top:6px;color:var(--text-muted);font-size:13px">Fixed fixture for Streamdown, Shiki, widgets, mermaid, ANSI, and folding behavior.</div></div><div style="display:flex;align-items:center;gap:8px;flex-wrap:wrap"><button type="button" data-smoke-control="streaming-toggle" style="min-height:32px;padding:0 12px;border-radius:6px;border:1px solid var(--border);background:var(--bg-panel);color:var(--text);cursor:pointer">Streaming On</button><button type="button" data-smoke-control="theme-toggle" style="min-height:32px;padding:0 12px;border-radius:6px;border:1px solid var(--border);background:var(--bg-panel);color:var(--text);cursor:pointer">Light</button><button type="button" data-smoke-control="reduced-motion-toggle" style="min-height:32px;padding:0 12px;border-radius:6px;border:1px solid var(--border);background:var(--bg-panel);color:var(--text);cursor:pointer">Reduced Motion Off</button></div></div><section style="display:grid;grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));gap:12px"><div data-smoke="text-shimmer" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);padding:12px;display:flex;flex-direction:column;gap:10px;min-height:92px"><div style="font-size:12px;color:var(--text-muted);font-weight:600">Text Shimmer</div><div><span style="display:inline-block;background-image:linear-gradient(90deg, var(--text-dim) 25%, var(--text-muted) 50%, var(--text-dim) 75%);background-size:200% 100%;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:text-shimmer 2s linear infinite">Thinking</span></div></div><div data-smoke="surface-shimmer" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);padding:12px;display:flex;flex-direction:column;gap:10px;min-height:92px"><div style="font-size:12px;color:var(--text-muted);font-weight:600">Surface Shimmer</div><div><div style="border-radius:6px;background:var(--bg-panel);overflow:hidden;height:56px"><div style="width:100%;height:100%;background:linear-gradient(90deg, transparent 0%, var(--bg-hover) 50%, transparent 100%);background-size:200% 100%;animation:surface-shimmer 1.5s ease-in-out infinite"></div></div></div></div><div data-smoke="status-badges" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);padding:12px;display:flex;flex-direction:column;gap:10px;min-height:92px"><div style="font-size:12px;color:var(--text-muted);font-weight:600">Status Badge</div><div><div style="display:flex;gap:8px;flex-wrap:wrap"><span style="display:inline-flex;align-items:center;gap:5px;min-height:18px;padding:0 6px;border-radius:999px;border:1px solid color-mix(in srgb, #f59e0b 35%, transparent);background:color-mix(in srgb, #f59e0b 10%, transparent);color:#f59e0b;font-size:10px;font-weight:600;white-space:nowrap;flex-shrink:0" title="Running"><span style="width:6px;height:6px;border-radius:999px;background:#f59e0b;animation:pulse 1.2s ease-in-out infinite"></span><span>Running</span></span><span style="display:inline-flex;align-items:center;gap:5px;min-height:18px;padding:0 6px;border-radius:999px;border:1px solid color-mix(in srgb, #16a34a 35%, transparent);background:color-mix(in srgb, #16a34a 10%, transparent);color:#16a34a;font-size:10px;font-weight:600;white-space:nowrap;flex-shrink:0" title="Done"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg><span>Done</span></span><span style="display:inline-flex;align-items:center;gap:5px;min-height:18px;padding:0 6px;border-radius:999px;border:1px solid color-mix(in srgb, #f87171 35%, transparent);background:color-mix(in srgb, #f87171 10%, transparent);color:#f87171;font-size:10px;font-weight:600;white-space:nowrap;flex-shrink:0" title="Error"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m18 6-12 12"></path><path d="m6 6 12 12"></path></svg><span>Error</span></span><span style="display:inline-flex;align-items:center;gap:5px;min-height:18px;padding:0 6px;border-radius:999px;border:1px solid color-mix(in srgb, var(--text-dim) 35%, transparent);background:color-mix(in srgb, var(--text-dim) 10%, transparent);color:var(--text-dim);font-size:10px;font-weight:600;white-space:nowrap;flex-shrink:0" title="Unknown"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="9"></circle><path d="M12 8v5"></path><path d="M12 16h.01"></path></svg><span>Unknown</span></span></div></div></div></section><section data-smoke="assistant-markdown" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">Assistant Markdown</div><div style="padding:14px"><div class="markdown-body"><div class="space-y-4 whitespace-normal [&amp;&gt;*:first-child]:mt-0 [&amp;&gt;*:last-child]:mb-0"><h1 class="mt-6 mb-2 font-semibold text-3xl" data-streamdown="heading-1">Generative UI Smoke</h1><p>Inline code: <code style="background:var(--bg-selected);padding:1px 4px;border-radius:3px;font-family:var(--font-mono);font-size:0.9em">const answer = 42</code></p><p>Inline math: $E=mc^2$</p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msubsup><mo>∫</mo><mn>0</mn><mn>1</mn></msubsup><msup><mi>x</mi><mn>2</mn></msup><mtext> </mtext><mi>d</mi><mi>x</mi><mo>=</mo><mfrac><mn>1</mn><mn>3</mn></mfrac></mrow><annotation encoding="application/x-tex">\int_0^1 x^2 \, dx = \frac{1}{3}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.476em;vertical-align:-0.9119em"></span><span class="mop"><span class="mop op-symbol large-op" style="margin-right:0.4445em;position:relative;top:-0.0011em">∫</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.564em"><span style="top:-1.7881em;margin-left:-0.4445em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span><span style="top:-3.8129em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.9119em"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em"><span style="top:-3.113em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em"></span><span class="mord mathnormal">d</span><span class="mord mathnormal">x</span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em"></span></span><span class="base"><span class="strut" style="height:2.0074em;vertical-align:-0.686em"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em"><span style="top:-2.314em"><span class="pstrut" style="height:3em"></span><span class="mord"><span class="mord">3</span></span></span><span style="top:-3.23em"><span class="pstrut" style="height:3em"></span><span class="frac-line" style="border-bottom-width:0.04em"></span></span><span style="top:-3.677em"><span class="pstrut" style="height:3em"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span><h2 class="mt-6 mb-2 font-semibold text-2xl" data-streamdown="heading-2">JavaScript</h2><div class="markdown-code-block markdown-code-block-chat" style="border-radius:6px;overflow:hidden;border:1px solid var(--border);margin-top:4px;margin-bottom:4px"><div style="padding:3px 10px;background:var(--bg-panel);border-bottom:1px solid var(--border);font-size:11px;color:var(--text-dim);display:flex;justify-content:space-between;align-items:center;gap:8px"><span>js</span><div style="display:flex;gap:8px;align-items:center"><button type="button" title="Copy as Markdown fence" aria-label="Copy as Markdown fence" style="background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px">markdown</button><button type="button" aria-label="Copy code" style="background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px">copy</button></div></div><pre data-highlight-source="raw" data-highlight-language="js" style="margin:0;padding:10px 12px;font-size:12.5px;line-height:1.6;overflow:auto;background:var(--bg);font-family:var(--font-mono);white-space:pre-wrap;word-break:break-all;color:var(--text)"><code>export function sum(a, b) {
2
2
  return a + b;
3
3
  }
4
4
 
@@ -264,7 +264,7 @@ input[type=&quot;range&quot;] { accent-color: var(--accent, #2563eb); }
264
264
  </span></code></pre></div></div></div><div data-smoke-cache-block="cached"><div style="border-radius:6px;background:var(--bg-panel);overflow:hidden;height:88px"><div style="width:100%;height:100%;background:linear-gradient(90deg, transparent 0%, var(--bg-hover) 50%, transparent 100%);background-size:200% 100%;animation:surface-shimmer 1.5s ease-in-out infinite"></div></div></div></div></div></section><section data-smoke="shiki-async" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">Shiki Async</div><div style="padding:14px"><div style="display:flex;flex-direction:column;gap:12px"><button type="button" data-smoke-control="mount-async-shiki" style="align-self:flex-start;min-height:30px;padding:0 12px;border-radius:6px;border:1px solid var(--border);background:var(--bg-panel);color:var(--text);cursor:pointer">Mount Async Block</button><div data-smoke-async-block="empty"><div style="border-radius:6px;background:var(--bg-panel);overflow:hidden;height:88px"><div style="width:100%;height:100%;background:linear-gradient(90deg, transparent 0%, var(--bg-hover) 50%, transparent 100%);background-size:200% 100%;animation:surface-shimmer 1.5s ease-in-out infinite"></div></div></div></div></div></section><section data-smoke="shiki-fallback" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">Unknown Language Fallback</div><div style="padding:14px"><div class="markdown-body"><div class="markdown-code-block markdown-code-block-chat" style="border-radius:6px;overflow:hidden;border:1px solid var(--border);margin-top:4px;margin-bottom:4px"><div style="padding:3px 10px;background:var(--bg-panel);border-bottom:1px solid var(--border);font-size:11px;color:var(--text-dim);display:flex;justify-content:space-between;align-items:center;gap:8px"><span>mysterydsl</span><div style="display:flex;gap:8px;align-items:center"><button type="button" title="Copy as Markdown fence" aria-label="Copy as Markdown fence" style="background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px">markdown</button><button type="button" aria-label="Copy code" style="background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px">copy</button></div></div><pre data-highlight-source="raw" data-highlight-language="mysterydsl" style="margin:0;padding:10px 12px;font-size:12.5px;line-height:1.6;overflow:auto;background:var(--bg);font-family:var(--font-mono)"><code><span style="display:block"><span style="display:inline-block;width:2rem;text-align:right;margin-right:1rem;color:var(--text-dim);user-select:none;font-family:var(--font-mono)">1</span><span style="color:inherit">foo: alpha</span></span><span style="display:block"><span style="display:inline-block;width:2rem;text-align:right;margin-right:1rem;color:var(--text-dim);user-select:none;font-family:var(--font-mono)">2</span><span style="color:inherit">bar -&gt; beta</span></span><span style="display:block"><span style="display:inline-block;width:2rem;text-align:right;margin-right:1rem;color:var(--text-dim);user-select:none;font-family:var(--font-mono)">3</span><span style="color:inherit">emit &quot;plain text fallback&quot;</span></span></code></pre></div></div></div></section><section data-smoke="clipboard-mock" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">Clipboard Mock</div><div style="padding:14px"><div style="display:flex;flex-direction:column;gap:12px"><div data-smoke-clipboard-case="basic"><div class="markdown-body"><div class="markdown-code-block markdown-code-block-chat" style="border-radius:6px;overflow:hidden;border:1px solid var(--border);margin-top:4px;margin-bottom:4px"><div style="padding:3px 10px;background:var(--bg-panel);border-bottom:1px solid var(--border);font-size:11px;color:var(--text-dim);display:flex;justify-content:space-between;align-items:center;gap:8px"><span>ts</span><div style="display:flex;gap:8px;align-items:center"><button type="button" title="Copy as Markdown fence" aria-label="Copy as Markdown fence" style="background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px">markdown</button><button type="button" aria-label="Copy code" style="background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px">copy</button></div></div><pre data-highlight-source="raw" data-highlight-language="ts" style="margin:0;padding:10px 12px;font-size:12.5px;line-height:1.6;overflow:auto;background:var(--bg);font-family:var(--font-mono)"><code><span style="display:block"><span style="display:inline-block;width:2rem;text-align:right;margin-right:1rem;color:var(--text-dim);user-select:none;font-family:var(--font-mono)">1</span><span style="color:inherit">const clipboardProbe = true;</span></span></code></pre></div></div></div><div data-smoke-clipboard-case="edge"><div class="markdown-body"><div class="markdown-code-block markdown-code-block-chat" style="border-radius:6px;overflow:hidden;border:1px solid var(--border);margin-top:4px;margin-bottom:4px"><div style="padding:3px 10px;background:var(--bg-panel);border-bottom:1px solid var(--border);font-size:11px;color:var(--text-dim);display:flex;justify-content:space-between;align-items:center;gap:8px"><span>text</span><div style="display:flex;gap:8px;align-items:center"><button type="button" title="Copy as Markdown fence" aria-label="Copy as Markdown fence" style="background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px">markdown</button><button type="button" aria-label="Copy code" style="background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px">copy</button></div></div><pre data-highlight-source="raw" data-highlight-language="text" style="margin:0;padding:10px 12px;font-size:12.5px;line-height:1.6;overflow:auto;background:var(--bg);font-family:var(--font-mono)"><code><span style="display:block"><span style="display:inline-block;width:2rem;text-align:right;margin-right:1rem;color:var(--text-dim);user-select:none;font-family:var(--font-mono)">1</span><span style="color:inherit">line with ``` inside</span></span></code></pre></div></div></div><div data-smoke-clipboard-case="no-lang"><div class="markdown-body"><div class="markdown-code-block markdown-code-block-chat" style="border-radius:6px;overflow:hidden;border:1px solid var(--border);margin-top:4px;margin-bottom:4px"><div style="padding:3px 10px;background:var(--bg-panel);border-bottom:1px solid var(--border);font-size:11px;color:var(--text-dim);display:flex;justify-content:space-between;align-items:center;gap:8px"><span>text</span><div style="display:flex;gap:8px;align-items:center"><button type="button" title="Copy as Markdown fence" aria-label="Copy as Markdown fence" style="background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px">markdown</button><button type="button" aria-label="Copy code" style="background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px">copy</button></div></div><pre data-highlight-source="raw" data-highlight-language="text" style="margin:0;padding:10px 12px;font-size:12.5px;line-height:1.6;overflow:auto;background:var(--bg);font-family:var(--font-mono)"><code><span style="display:block"><span style="display:inline-block;width:2rem;text-align:right;margin-right:1rem;color:var(--text-dim);user-select:none;font-family:var(--font-mono)">1</span><span style="color:inherit">const unlabeledFence = true;</span></span></code></pre></div></div></div></div></div></section><section data-smoke="local-paths" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">Local Paths</div><div style="padding:14px"><div style="display:flex;flex-direction:column;gap:12px"><div data-smoke-local-opened="none" style="min-height:24px;padding:4px 8px;border-radius:6px;border:1px solid var(--border);background:var(--bg-panel);color:var(--text-dim);font-size:11px;font-family:var(--font-mono)">No local file opened yet</div><div class="markdown-body"><p><a href="/api/files/Volumes/data/github/seqyuan/annovibe/docs/generative-ui-upgrade-plan.md?type=read" title="/Volumes/data/github/seqyuan/annovibe/docs/generative-ui-upgrade-plan.md">Open plan</a></p>
265
265
  <div class="report-image-gallery" style="display:grid;grid-template-columns:repeat(auto-fit, minmax(min(100%, 240px), 1fr));gap:12px;margin:16px 0"><figure style="margin:0;min-width:0"><button type="button" title="Open /Volumes/data/github/seqyuan/annovibe/public/file.svg" style="display:block;width:100%;padding:0;border:none;background:none;cursor:zoom-in"><img src="/api/files/Volumes/data/github/seqyuan/annovibe/public/file.svg?type=read" alt="Local file" loading="lazy" title="/Volumes/data/github/seqyuan/annovibe/public/file.svg" style="display:block;width:100%;max-height:340px;object-fit:contain;border:1px solid var(--border);border-radius:6px;background:var(--bg-panel)"/></button><figcaption style="margin-top:6px;color:var(--text-muted);font-size:12px;line-height:1.45">Local file asset</figcaption></figure><figure style="margin:0;min-width:0"><button type="button" title="Open /Volumes/data/github/seqyuan/annovibe/public/globe.svg" style="display:block;width:100%;padding:0;border:none;background:none;cursor:zoom-in"><img src="/api/files/Volumes/data/github/seqyuan/annovibe/public/globe.svg?type=read" alt="Local globe" loading="lazy" title="/Volumes/data/github/seqyuan/annovibe/public/globe.svg" style="display:block;width:100%;max-height:340px;object-fit:contain;border:1px solid var(--border);border-radius:6px;background:var(--bg-panel)"/></button><figcaption style="margin-top:6px;color:var(--text-muted);font-size:12px;line-height:1.45">Local globe asset</figcaption></figure></div></div></div></div></section><section data-smoke="local-preview-paths" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">Local Preview Paths</div><div style="padding:14px"><div style="margin-bottom:16px" data-message-hovered="false"><div style="font-size:11px;color:var(--text-dim);margin-bottom:4px;display:flex;align-items:center;gap:6px"><span>Smoke GPT-5</span></div><div style="display:flex;flex-direction:column;gap:8px"><div style="display:flex;flex-direction:column;gap:8px"><div class="markdown-body"><div class="space-y-4 whitespace-normal [&amp;&gt;*:first-child]:mt-0 [&amp;&gt;*:last-child]:mb-0"><p>Generated local preview assets:
266
266
  public/file.svg
267
- public/globe.svg</p></div></div><div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(180px, 1fr));gap:8px;min-width:0"><a href="/api/files/Volumes/data/github/seqyuan/annovibe/public/file.svg?type=read" target="_blank" rel="noreferrer" title="/Volumes/data/github/seqyuan/annovibe/public/file.svg" style="display:block;min-width:0;border:1px solid var(--border);border-radius:6px;overflow:hidden;background:var(--bg)"><img src="/api/files/Volumes/data/github/seqyuan/annovibe/public/file.svg?type=read" alt="file.svg" loading="lazy" style="display:block;width:100%;max-height:360px;object-fit:contain"/><div style="padding:4px 6px;border-top:1px solid var(--border);color:var(--text-dim);font-size:10px;font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap">file.svg</div></a><a href="/api/files/Volumes/data/github/seqyuan/annovibe/public/globe.svg?type=read" target="_blank" rel="noreferrer" title="/Volumes/data/github/seqyuan/annovibe/public/globe.svg" style="display:block;min-width:0;border:1px solid var(--border);border-radius:6px;overflow:hidden;background:var(--bg)"><img src="/api/files/Volumes/data/github/seqyuan/annovibe/public/globe.svg?type=read" alt="globe.svg" loading="lazy" style="display:block;width:100%;max-height:360px;object-fit:contain"/><div style="padding:4px 6px;border-top:1px solid var(--border);color:var(--text-dim);font-size:10px;font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap">globe.svg</div></a></div></div></div><div data-message-surface="footer" style="display:flex;align-items:center;justify-content:flex-start;gap:8px;margin-top:4px"><div style="display:flex;gap:3px;opacity:0;pointer-events:none;transition:opacity 0.12s"><button title="Copy message" style="display:flex;align-items:center;gap:4px;padding:3px 8px;height:22px;background:none;border:none;border-radius:5px;color:var(--text-dim);cursor:pointer;font-size:11px;font-weight:400;white-space:nowrap;transition:color 0.12s"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>Copy</button></div></div></div></div></section><section data-smoke="svg-visual-code" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">SVG Visual Code</div><div style="padding:14px"><div style="margin-bottom:16px" data-message-hovered="false"><div style="font-size:11px;color:var(--text-dim);margin-bottom:4px;display:flex;align-items:center;gap:6px"><span>Smoke GPT-5</span></div><div style="display:flex;flex-direction:column;gap:8px"><div style="display:flex;flex-direction:column;gap:0"><div class="markdown-body"><div class="space-y-4 whitespace-normal [&amp;&gt;*:first-child]:mt-0 [&amp;&gt;*:last-child]:mb-0"><div class="widget-frame" style="position:relative;margin-top:4px;margin-bottom:4px;border-radius:6px"><div style="display:flex;align-items:center;gap:6px;padding:4px 10px;background:var(--bg-panel);border:1px solid var(--border);border-bottom:none;border-radius:6px 6px 0 0;font-size:11px;color:var(--text-dim);min-height:26px;flex-shrink:0"><span style="font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">svg preview</span><div style="display:flex;align-items:center;gap:4px;margin-left:auto;flex-shrink:0"><button type="button" title="Copy show-widget source" aria-label="Copy show-widget source" style="width:24px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg></button><button type="button" title="Copy widget HTML/SVG" aria-label="Copy widget HTML/SVG" style="width:24px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg></button><button type="button" title="Export widget as PNG" aria-label="Export widget as PNG" style="width:24px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg></button><button type="button" title="View full screen" aria-label="View full screen" style="width:24px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" y1="3" x2="14" y2="10"></line><line x1="3" y1="21" x2="10" y2="14"></line></svg></button><button type="button" title="Show widget code" aria-pressed="false" style="width:48px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:10px;white-space:nowrap">Code</button></div></div><iframe sandbox="allow-scripts" srcDoc="&lt;!DOCTYPE html&gt;
267
+ public/globe.svg</p></div></div><div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(180px, 1fr));gap:8px;min-width:0"><a href="/api/files/Volumes/data/github/seqyuan/annovibe/public/file.svg?type=read" target="_blank" rel="noreferrer" title="/Volumes/data/github/seqyuan/annovibe/public/file.svg" style="display:block;min-width:0;border:1px solid var(--border);border-radius:6px;overflow:hidden;background:var(--bg)"><img src="/api/files/Volumes/data/github/seqyuan/annovibe/public/file.svg?type=read" alt="file.svg" loading="lazy" style="display:block;width:100%;max-height:360px;object-fit:contain"/><div style="padding:4px 6px;border-top:1px solid var(--border);color:var(--text-dim);font-size:10px;font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap">file.svg</div></a><a href="/api/files/Volumes/data/github/seqyuan/annovibe/public/globe.svg?type=read" target="_blank" rel="noreferrer" title="/Volumes/data/github/seqyuan/annovibe/public/globe.svg" style="display:block;min-width:0;border:1px solid var(--border);border-radius:6px;overflow:hidden;background:var(--bg)"><img src="/api/files/Volumes/data/github/seqyuan/annovibe/public/globe.svg?type=read" alt="globe.svg" loading="lazy" style="display:block;width:100%;max-height:360px;object-fit:contain"/><div style="padding:4px 6px;border-top:1px solid var(--border);color:var(--text-dim);font-size:10px;font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap">globe.svg</div></a></div></div></div><div data-message-surface="footer" style="display:flex;align-items:center;justify-content:flex-start;gap:8px;margin-top:4px"><div style="display:flex;gap:3px;opacity:0;pointer-events:none;transition:opacity 0.12s"><button title="Copy message" style="display:flex;align-items:center;gap:4px;padding:3px 8px;height:22px;background:none;border:none;border-radius:5px;color:var(--text-dim);cursor:pointer;font-size:11px;font-weight:400;white-space:nowrap;transition:color 0.12s"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg><span>Copy</span></button></div></div></div></div></section><section data-smoke="svg-visual-code" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">SVG Visual Code</div><div style="padding:14px"><div style="margin-bottom:16px" data-message-hovered="false"><div style="font-size:11px;color:var(--text-dim);margin-bottom:4px;display:flex;align-items:center;gap:6px"><span>Smoke GPT-5</span></div><div style="display:flex;flex-direction:column;gap:8px"><div style="display:flex;flex-direction:column;gap:0"><div class="markdown-body"><div class="space-y-4 whitespace-normal [&amp;&gt;*:first-child]:mt-0 [&amp;&gt;*:last-child]:mb-0"><div class="widget-frame" style="position:relative;margin-top:4px;margin-bottom:4px;border-radius:6px"><div style="display:flex;align-items:center;gap:6px;padding:4px 10px;background:var(--bg-panel);border:1px solid var(--border);border-bottom:none;border-radius:6px 6px 0 0;font-size:11px;color:var(--text-dim);min-height:26px;flex-shrink:0"><span style="font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">svg preview</span><div style="display:flex;align-items:center;gap:4px;margin-left:auto;flex-shrink:0"><button type="button" title="Copy show-widget source" aria-label="Copy show-widget source" style="width:24px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg></button><button type="button" title="Copy widget HTML/SVG" aria-label="Copy widget HTML/SVG" style="width:24px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg></button><button type="button" title="Export widget as PNG" aria-label="Export widget as PNG" style="width:24px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg></button><button type="button" title="View full screen" aria-label="View full screen" style="width:24px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" y1="3" x2="14" y2="10"></line><line x1="3" y1="21" x2="10" y2="14"></line></svg></button><button type="button" title="Show widget code" aria-pressed="false" style="width:48px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:10px;white-space:nowrap">Code</button></div></div><iframe sandbox="allow-scripts" srcDoc="&lt;!DOCTYPE html&gt;
268
268
  &lt;html class=&quot;&quot;&gt;
269
269
  &lt;head&gt;
270
270
  &lt;meta charset=&quot;utf-8&quot;&gt;
@@ -515,7 +515,7 @@ input[type=&quot;range&quot;] { accent-color: var(--accent, #2563eb); }
515
515
  })();
516
516
  &lt;/script&gt;
517
517
  &lt;/body&gt;
518
- &lt;/html&gt;" title="svg preview" style="width:100%;height:0;min-height:80px;border:1px solid var(--border);border-radius:0 0 6px 6px;display:block;overflow:hidden;background:transparent;transition:none"></iframe></div></div></div></div></div><div data-message-surface="footer" style="display:flex;align-items:center;justify-content:flex-start;gap:8px;margin-top:4px"><div style="display:flex;gap:3px;opacity:0;pointer-events:none;transition:opacity 0.12s"><button title="Copy message" style="display:flex;align-items:center;gap:4px;padding:3px 8px;height:22px;background:none;border:none;border-radius:5px;color:var(--text-dim);cursor:pointer;font-size:11px;font-weight:400;white-space:nowrap;transition:color 0.12s"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>Copy</button></div></div></div></div></section><section data-smoke="compound-components" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">Compound Components</div><div style="padding:14px"><div style="display:flex;flex-direction:column;gap:12px"><div style="border-radius:6px;overflow:hidden;border:1px solid var(--border)"><div style="padding:3px 10px;background:var(--bg-panel);border-bottom:1px solid var(--border);font-size:11px;color:var(--text-dim);display:flex;justify-content:space-between;align-items:center;gap:8px"><span>compound-ts</span><div style="display:flex;gap:8px;align-items:center"><button type="button" style="background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px">copy</button></div></div><div><div style="position:relative;max-height:15.5rem;overflow:hidden"><pre style="margin:0;padding:10px 12px;background:var(--bg);color:var(--text);font-size:12.5px;line-height:1.6"><code>compound line 1
518
+ &lt;/html&gt;" title="svg preview" style="width:100%;height:0;min-height:80px;border:1px solid var(--border);border-radius:0 0 6px 6px;display:block;overflow:hidden;background:transparent;transition:none"></iframe></div></div></div></div></div><div data-message-surface="footer" style="display:flex;align-items:center;justify-content:flex-start;gap:8px;margin-top:4px"><div style="display:flex;gap:3px;opacity:0;pointer-events:none;transition:opacity 0.12s"><button title="Copy message" style="display:flex;align-items:center;gap:4px;padding:3px 8px;height:22px;background:none;border:none;border-radius:5px;color:var(--text-dim);cursor:pointer;font-size:11px;font-weight:400;white-space:nowrap;transition:color 0.12s"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg><span>Copy</span></button></div></div></div></div></section><section data-smoke="compound-components" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">Compound Components</div><div style="padding:14px"><div style="display:flex;flex-direction:column;gap:12px"><div style="border-radius:6px;overflow:hidden;border:1px solid var(--border)"><div style="padding:3px 10px;background:var(--bg-panel);border-bottom:1px solid var(--border);font-size:11px;color:var(--text-dim);display:flex;justify-content:space-between;align-items:center;gap:8px"><span>compound-ts</span><div style="display:flex;gap:8px;align-items:center"><button type="button" style="background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px">copy</button></div></div><div><div style="position:relative;max-height:15.5rem;overflow:hidden"><pre style="margin:0;padding:10px 12px;background:var(--bg);color:var(--text);font-size:12.5px;line-height:1.6"><code>compound line 1
519
519
  compound line 2
520
520
  compound line 3
521
521
  compound line 4
@@ -822,12 +822,12 @@ input[type=&quot;range&quot;] { accent-color: var(--accent, #2563eb); }
822
822
  })();
823
823
  &lt;/script&gt;
824
824
  &lt;/body&gt;
825
- &lt;/html&gt;" title="html preview" style="width:100%;height:0;min-height:80px;border:1px solid var(--border);border-radius:0 0 6px 6px;display:block;overflow:hidden;background:transparent;transition:none"></iframe></div></div></div></div></div><div data-message-surface="footer" style="display:flex;align-items:center;justify-content:flex-start;gap:8px;margin-top:4px"></div></div></div></section><section data-smoke="user-image-message" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">User Image Message</div><div style="padding:14px"><div style="margin-bottom:16px;display:flex;flex-direction:column;align-items:flex-end" data-message-hovered="false"><div style="display:flex;align-items:flex-end;gap:6px;max-width:85%"><div style="flex:1;min-width:0;background:var(--user-bg);border:1px solid rgba(59,130,246,0.2);border-radius:12px;padding:8px 12px;font-size:14px;line-height:1.6;color:var(--text);white-space:pre-wrap;word-break:break-word"><div style="display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px"><a href="data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22640%22%20height%3D%22360%22%20viewBox%3D%220%200%20640%20360%22%3E%3Crect%20width%3D%22640%22%20height%3D%22360%22%20rx%3D%2224%22%20fill%3D%22%23f3f4f6%22%2F%3E%3Crect%20x%3D%2232%22%20y%3D%2232%22%20width%3D%22576%22%20height%3D%22296%22%20rx%3D%2220%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23d1d5db%22%2F%3E%3Ccircle%20cx%3D%22132%22%20cy%3D%22140%22%20r%3D%2256%22%20fill%3D%22%2360a5fa%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%2296%22%20width%3D%22272%22%20height%3D%2220%22%20rx%3D%2210%22%20fill%3D%22%23111827%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22132%22%20width%3D%22208%22%20height%3D%2216%22%20rx%3D%228%22%20fill%3D%22%236b7280%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22162%22%20width%3D%22168%22%20height%3D%2216%22%20rx%3D%228%22%20fill%3D%22%239ca3af%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22214%22%20width%3D%22128%22%20height%3D%2236%22%20rx%3D%2210%22%20fill%3D%22%232563eb%22%2F%3E%3Ctext%20x%3D%22280%22%20y%3D%22237%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2216%22%20text-anchor%3D%22middle%22%20fill%3D%22%23ffffff%22%3EAlpha%3C%2Ftext%3E%3C%2Fsvg%3E" target="_blank" rel="noreferrer" title="Open image" style="display:block;cursor:zoom-in"><img src="data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22640%22%20height%3D%22360%22%20viewBox%3D%220%200%20640%20360%22%3E%3Crect%20width%3D%22640%22%20height%3D%22360%22%20rx%3D%2224%22%20fill%3D%22%23f3f4f6%22%2F%3E%3Crect%20x%3D%2232%22%20y%3D%2232%22%20width%3D%22576%22%20height%3D%22296%22%20rx%3D%2220%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23d1d5db%22%2F%3E%3Ccircle%20cx%3D%22132%22%20cy%3D%22140%22%20r%3D%2256%22%20fill%3D%22%2360a5fa%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%2296%22%20width%3D%22272%22%20height%3D%2220%22%20rx%3D%2210%22%20fill%3D%22%23111827%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22132%22%20width%3D%22208%22%20height%3D%2216%22%20rx%3D%228%22%20fill%3D%22%236b7280%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22162%22%20width%3D%22168%22%20height%3D%2216%22%20rx%3D%228%22%20fill%3D%22%239ca3af%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22214%22%20width%3D%22128%22%20height%3D%2236%22%20rx%3D%2210%22%20fill%3D%22%232563eb%22%2F%3E%3Ctext%20x%3D%22280%22%20y%3D%22237%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2216%22%20text-anchor%3D%22middle%22%20fill%3D%22%23ffffff%22%3EAlpha%3C%2Ftext%3E%3C%2Fsvg%3E" alt="" style="max-width:240px;max-height:240px;border-radius:6px;object-fit:contain;display:block;border:1px solid rgba(59,130,246,0.15)"/></a></div>Uploaded image preview</div></div><div data-message-surface="footer" style="display:flex;align-items:center;justify-content:flex-end;gap:6px;margin-top:3px"><div style="display:flex;gap:3px;opacity:0;pointer-events:none;transition:opacity 0.12s"><button title="Copy message" style="display:flex;align-items:center;gap:4px;padding:3px 8px;height:22px;background:none;border:none;border-radius:5px;color:var(--text-dim);cursor:pointer;font-size:11px;font-weight:400;white-space:nowrap;transition:color 0.12s"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>Copy</button></div><span data-message-surface="timestamp" style="font-size:10px;color:var(--text-dim)">06:26</span></div></div></div></section><section data-smoke="custom-message-view" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">Custom MessageView</div><div style="padding:14px"><div style="display:flex;flex-direction:column;gap:12px"><div style="margin-bottom:12px"><div data-message-surface="custom-card" data-message-accent="subagent" style="padding:8px 14px;border-radius:8px;border:1px solid rgba(99,102,241,0.25);background:rgba(99,102,241,0.05);font-size:13px;line-height:1.6;color:var(--text-muted)"><div data-message-surface="custom-icon-row" style="display:flex;align-items:flex-start;gap:8px"><span style="flex-shrink:0;font-size:14px">🤖</span><div style="flex:1;min-width:0"><div data-message-surface="custom-body"><div class="markdown-body" style="font-size:13px"><p>Subagent finished the review pass.</p>
825
+ &lt;/html&gt;" title="html preview" style="width:100%;height:0;min-height:80px;border:1px solid var(--border);border-radius:0 0 6px 6px;display:block;overflow:hidden;background:transparent;transition:none"></iframe></div></div></div></div></div><div data-message-surface="footer" style="display:flex;align-items:center;justify-content:flex-start;gap:8px;margin-top:4px"></div></div></div></section><section data-smoke="user-image-message" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">User Image Message</div><div style="padding:14px"><div style="margin-bottom:16px;display:flex;flex-direction:column;align-items:flex-end" data-message-hovered="false"><div style="display:flex;align-items:flex-end;gap:6px;max-width:85%"><div style="flex:1;min-width:0;background:var(--user-bg);border:1px solid rgba(59,130,246,0.2);border-radius:12px;padding:8px 12px;font-size:14px;line-height:1.6;color:var(--text);white-space:pre-wrap;word-break:break-word"><div style="display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px"><a href="data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22640%22%20height%3D%22360%22%20viewBox%3D%220%200%20640%20360%22%3E%3Crect%20width%3D%22640%22%20height%3D%22360%22%20rx%3D%2224%22%20fill%3D%22%23f3f4f6%22%2F%3E%3Crect%20x%3D%2232%22%20y%3D%2232%22%20width%3D%22576%22%20height%3D%22296%22%20rx%3D%2220%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23d1d5db%22%2F%3E%3Ccircle%20cx%3D%22132%22%20cy%3D%22140%22%20r%3D%2256%22%20fill%3D%22%2360a5fa%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%2296%22%20width%3D%22272%22%20height%3D%2220%22%20rx%3D%2210%22%20fill%3D%22%23111827%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22132%22%20width%3D%22208%22%20height%3D%2216%22%20rx%3D%228%22%20fill%3D%22%236b7280%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22162%22%20width%3D%22168%22%20height%3D%2216%22%20rx%3D%228%22%20fill%3D%22%239ca3af%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22214%22%20width%3D%22128%22%20height%3D%2236%22%20rx%3D%2210%22%20fill%3D%22%232563eb%22%2F%3E%3Ctext%20x%3D%22280%22%20y%3D%22237%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2216%22%20text-anchor%3D%22middle%22%20fill%3D%22%23ffffff%22%3EAlpha%3C%2Ftext%3E%3C%2Fsvg%3E" target="_blank" rel="noreferrer" title="Open image" style="display:block;cursor:zoom-in"><img src="data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22640%22%20height%3D%22360%22%20viewBox%3D%220%200%20640%20360%22%3E%3Crect%20width%3D%22640%22%20height%3D%22360%22%20rx%3D%2224%22%20fill%3D%22%23f3f4f6%22%2F%3E%3Crect%20x%3D%2232%22%20y%3D%2232%22%20width%3D%22576%22%20height%3D%22296%22%20rx%3D%2220%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23d1d5db%22%2F%3E%3Ccircle%20cx%3D%22132%22%20cy%3D%22140%22%20r%3D%2256%22%20fill%3D%22%2360a5fa%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%2296%22%20width%3D%22272%22%20height%3D%2220%22%20rx%3D%2210%22%20fill%3D%22%23111827%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22132%22%20width%3D%22208%22%20height%3D%2216%22%20rx%3D%228%22%20fill%3D%22%236b7280%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22162%22%20width%3D%22168%22%20height%3D%2216%22%20rx%3D%228%22%20fill%3D%22%239ca3af%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22214%22%20width%3D%22128%22%20height%3D%2236%22%20rx%3D%2210%22%20fill%3D%22%232563eb%22%2F%3E%3Ctext%20x%3D%22280%22%20y%3D%22237%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2216%22%20text-anchor%3D%22middle%22%20fill%3D%22%23ffffff%22%3EAlpha%3C%2Ftext%3E%3C%2Fsvg%3E" alt="" style="max-width:240px;max-height:240px;border-radius:6px;object-fit:contain;display:block;border:1px solid rgba(59,130,246,0.15)"/></a></div>Uploaded image preview</div></div><div data-message-surface="footer" style="display:flex;align-items:center;justify-content:flex-end;gap:6px;margin-top:3px"><div style="display:flex;gap:3px;opacity:0;pointer-events:none;transition:opacity 0.12s"><button title="Copy message" style="display:flex;align-items:center;gap:4px;padding:3px 8px;height:22px;background:none;border:none;border-radius:5px;color:var(--text-dim);cursor:pointer;font-size:11px;font-weight:400;white-space:nowrap;transition:color 0.12s"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg><span>Copy</span></button></div><span data-message-surface="timestamp" style="font-size:10px;color:var(--text-dim)">Jun 6 06:26</span></div></div></div></section><section data-smoke="custom-message-view" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">Custom MessageView</div><div style="padding:14px"><div style="display:flex;flex-direction:column;gap:12px"><div style="margin-bottom:12px"><div data-message-surface="custom-card" data-message-accent="subagent" style="padding:8px 14px;border-radius:8px;border:1px solid rgba(99,102,241,0.25);background:rgba(99,102,241,0.05);font-size:13px;line-height:1.6;color:var(--text-muted)"><div data-message-surface="custom-icon-row" style="display:flex;align-items:flex-start;gap:8px"><span style="flex-shrink:0;font-size:14px">🤖</span><div style="flex:1;min-width:0"><div data-message-surface="custom-body"><div class="markdown-body" style="font-size:13px"><p>Subagent finished the review pass.</p>
826
826
  <ul>
827
827
  <li>Updated shared message shell</li>
828
828
  <li>Preserved markdown body rendering</li>
829
- </ul></div></div></div></div></div><div data-message-surface="footer" style="display:flex;align-items:center;justify-content:flex-end;gap:6px;margin-top:3px"><span data-message-surface="timestamp" style="font-size:10px;color:var(--text-dim)">06:32</span></div></div><div style="margin-bottom:12px"><div data-message-surface="custom-card" data-message-accent="subagent" style="padding:8px 14px;border-radius:8px;border:1px solid rgba(99,102,241,0.25);background:rgba(99,102,241,0.05);font-size:13px;line-height:1.6;color:var(--text-muted)"><div data-message-surface="custom-icon-row" style="display:flex;align-items:flex-start;gap:8px"><span style="flex-shrink:0;font-size:14px">✅</span><div style="flex:1;min-width:0"><div data-message-surface="custom-body"><div class="markdown-body" style="font-size:13px"><p>Background task completed: <strong>Compound coverage expansion</strong> (Custom message shell)</p>
830
- <p>Shared custom message surface is now reused in MessageView.</p></div></div></div></div></div><div data-message-surface="footer" style="display:flex;align-items:center;justify-content:flex-end;gap:6px;margin-top:3px"><span data-message-surface="timestamp" style="font-size:10px;color:var(--text-dim)">Compound coverage expansion</span><span data-message-surface="timestamp" style="font-size:10px;color:var(--text-dim)">06:33</span></div></div></div></div></section><section data-smoke="widget-streaming" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">Widget Streaming Placeholder</div><div style="padding:14px"><div style="margin-bottom:16px" data-message-hovered="false"><div style="font-size:11px;color:var(--text-dim);margin-bottom:4px;display:flex;align-items:center;gap:6px"><span>Smoke GPT-5</span><span style="display:flex;align-items:center;gap:4px;color:var(--text)" title="预估 token 数(流式接收中)"><span style="display:flex;align-items:center;gap:2px;font-size:11px;font-weight:400"><svg width="10" height="10" viewBox="0 0 10 10" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="1.5" x2="5" y2="8.5"></line><polyline points="2 6 5 8.5 8 6"></polyline></svg>36</span></span></div><div style="display:flex;flex-direction:column;gap:8px"><div style="display:flex;flex-direction:column;gap:0"><div class="markdown-body"><div class="space-y-4 whitespace-normal [&amp;&gt;*:first-child]:mt-0 [&amp;&gt;*:last-child]:mb-0"><p>Streaming widget prelude.</p></div></div></div><div class="widget-frame" style="position:relative;margin-top:4px;margin-bottom:4px;border-radius:6px"><div style="display:flex;align-items:center;gap:6px;padding:4px 10px;background:var(--bg-panel);border:1px solid var(--border);border-bottom:none;border-radius:6px 6px 0 0;font-size:11px;color:var(--text-dim);min-height:26px;flex-shrink:0"><span style="font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">Streaming Widget</span><span style="font-size:10px;color:var(--accent);animation:pulse 1.5s infinite;flex-shrink:0">streaming…</span><div style="display:flex;align-items:center;gap:4px;margin-left:auto;flex-shrink:0"><button type="button" title="Copy show-widget source" aria-label="Copy show-widget source" style="width:24px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg></button><button type="button" title="Copy widget HTML/SVG" aria-label="Copy widget HTML/SVG" style="width:24px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg></button><button type="button" disabled="" title="PNG export is available after streaming finishes" aria-label="Export widget as PNG" style="width:24px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:not-allowed;display:flex;align-items:center;justify-content:center;flex-shrink:0;opacity:0.45"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg></button><button type="button" title="View full screen" aria-label="View full screen" style="width:24px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" y1="3" x2="14" y2="10"></line><line x1="3" y1="21" x2="10" y2="14"></line></svg></button><button type="button" title="Show widget code" aria-pressed="false" style="width:48px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:10px;white-space:nowrap">Code</button></div></div><iframe sandbox="allow-scripts" srcDoc="&lt;!DOCTYPE html&gt;
829
+ </ul></div></div></div></div></div><div data-message-surface="footer" style="display:flex;align-items:center;justify-content:flex-end;gap:6px;margin-top:3px"><span data-message-surface="timestamp" style="font-size:10px;color:var(--text-dim)">Jun 6 06:32</span></div></div><div style="margin-bottom:12px"><div data-message-surface="custom-card" data-message-accent="subagent" style="padding:8px 14px;border-radius:8px;border:1px solid rgba(99,102,241,0.25);background:rgba(99,102,241,0.05);font-size:13px;line-height:1.6;color:var(--text-muted)"><div data-message-surface="custom-icon-row" style="display:flex;align-items:flex-start;gap:8px"><span style="flex-shrink:0;font-size:14px">✅</span><div style="flex:1;min-width:0"><div data-message-surface="custom-body"><div class="markdown-body" style="font-size:13px"><p>Background task completed: <strong>Compound coverage expansion</strong> (Custom message shell)</p>
830
+ <p>Shared custom message surface is now reused in MessageView.</p></div></div></div></div></div><div data-message-surface="footer" style="display:flex;align-items:center;justify-content:flex-end;gap:6px;margin-top:3px"><span data-message-surface="timestamp" style="font-size:10px;color:var(--text-dim)">Compound coverage expansion</span><span data-message-surface="timestamp" style="font-size:10px;color:var(--text-dim)">Jun 6 06:33</span></div></div></div></div></section><section data-smoke="widget-streaming" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">Widget Streaming Placeholder</div><div style="padding:14px"><div style="margin-bottom:16px" data-message-hovered="false"><div style="font-size:11px;color:var(--text-dim);margin-bottom:4px;display:flex;align-items:center;gap:6px"><span>Smoke GPT-5</span><span style="display:flex;align-items:center;gap:4px;color:var(--text)" title="预估 token 数(流式接收中)"><span style="display:flex;align-items:center;gap:2px;font-size:11px;font-weight:400"><svg width="10" height="10" viewBox="0 0 10 10" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="1.5" x2="5" y2="8.5"></line><polyline points="2 6 5 8.5 8 6"></polyline></svg>36</span></span></div><div style="display:flex;flex-direction:column;gap:8px"><div style="display:flex;flex-direction:column;gap:0"><div class="markdown-body"><div class="space-y-4 whitespace-normal [&amp;&gt;*:first-child]:mt-0 [&amp;&gt;*:last-child]:mb-0"><p>Streaming widget prelude.</p></div></div></div><div class="widget-frame" style="position:relative;margin-top:4px;margin-bottom:4px;border-radius:6px"><div style="display:flex;align-items:center;gap:6px;padding:4px 10px;background:var(--bg-panel);border:1px solid var(--border);border-bottom:none;border-radius:6px 6px 0 0;font-size:11px;color:var(--text-dim);min-height:26px;flex-shrink:0"><span style="font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">Streaming Widget</span><span style="font-size:10px;color:var(--accent);animation:pulse 1.5s infinite;flex-shrink:0">streaming…</span><div style="display:flex;align-items:center;gap:4px;margin-left:auto;flex-shrink:0"><button type="button" title="Copy show-widget source" aria-label="Copy show-widget source" style="width:24px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg></button><button type="button" title="Copy widget HTML/SVG" aria-label="Copy widget HTML/SVG" style="width:24px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg></button><button type="button" disabled="" title="PNG export is available after streaming finishes" aria-label="Export widget as PNG" style="width:24px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:not-allowed;display:flex;align-items:center;justify-content:center;flex-shrink:0;opacity:0.45"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg></button><button type="button" title="View full screen" aria-label="View full screen" style="width:24px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" y1="3" x2="14" y2="10"></line><line x1="3" y1="21" x2="10" y2="14"></line></svg></button><button type="button" title="Show widget code" aria-pressed="false" style="width:48px;height:22px;padding:0;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:10px;white-space:nowrap">Code</button></div></div><iframe sandbox="allow-scripts" srcDoc="&lt;!DOCTYPE html&gt;
831
831
  &lt;html class=&quot;&quot;&gt;
832
832
  &lt;head&gt;
833
833
  &lt;meta charset=&quot;utf-8&quot;&gt;
@@ -1329,7 +1329,7 @@ input[type=&quot;range&quot;] { accent-color: var(--accent, #2563eb); }
1329
1329
  })();
1330
1330
  &lt;/script&gt;
1331
1331
  &lt;/body&gt;
1332
- &lt;/html&gt;" title="Local Widget" style="width:100%;height:0;min-height:80px;border:1px solid var(--border);border-radius:0 0 6px 6px;display:block;overflow:hidden;background:transparent;transition:none"></iframe></div></div><div data-message-surface="footer" style="display:flex;align-items:center;justify-content:flex-start;gap:8px;margin-top:4px"><div style="display:flex;gap:3px;opacity:0;pointer-events:none;transition:opacity 0.12s"><button title="Copy message" style="display:flex;align-items:center;gap:4px;padding:3px 8px;height:22px;background:none;border:none;border-radius:5px;color:var(--text-dim);cursor:pointer;font-size:11px;font-weight:400;white-space:nowrap;transition:color 0.12s"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>Copy</button></div></div></div></div></section><section data-smoke="report-update" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">Report Update Placeholder</div><div style="padding:14px"><div style="margin-bottom:16px" data-message-hovered="false"><div style="font-size:11px;color:var(--text-dim);margin-bottom:4px;display:flex;align-items:center;gap:6px"><span>Smoke GPT-5</span></div><div style="display:flex;flex-direction:column;gap:8px"><div style="border:1px solid var(--border);border-radius:6px;padding:8px 10px;background:var(--bg-panel);color:var(--text-muted);font-size:12px">Analysis report updated</div></div><div data-message-surface="footer" style="display:flex;align-items:center;justify-content:flex-start;gap:8px;margin-top:4px"><div style="display:flex;gap:3px;opacity:0;pointer-events:none;transition:opacity 0.12s"><button title="Copy message" style="display:flex;align-items:center;gap:4px;padding:3px 8px;height:22px;background:none;border:none;border-radius:5px;color:var(--text-dim);cursor:pointer;font-size:11px;font-weight:400;white-space:nowrap;transition:color 0.12s"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>Copy</button></div></div></div></div></section><section data-smoke="file-viewer" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">FileViewer Integration</div><div style="padding:14px"><div style="height:520px;border:1px solid var(--border);border-radius:8px;overflow:hidden"><div style="border-radius:6px;background:var(--bg-panel);overflow:hidden;height:100%"><div style="width:100%;height:100%;background:linear-gradient(90deg, transparent 0%, var(--bg-hover) 50%, transparent 100%);background-size:200% 100%;animation:surface-shimmer 1.5s ease-in-out infinite"></div></div></div></div></section><section style="display:grid;grid-template-columns:repeat(auto-fit, minmax(320px, 1fr));gap:16px"><section data-smoke="terminal-output" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">TerminalOutput ANSI</div><div style="padding:14px"><div><div style="position:relative;max-height:15.5rem;overflow:hidden"><div style="font-family:var(--font-mono);font-size:12px;line-height:1.55;white-space:pre-wrap;word-break:break-word;overflow-x:auto;padding:8px 10px;background:var(--bg-panel);color:var(--text-muted);opacity:1;font-style:normal"><code><span style="color:rgb(0, 187, 0)">PASS</span><span> npm run lint
1332
+ &lt;/html&gt;" title="Local Widget" style="width:100%;height:0;min-height:80px;border:1px solid var(--border);border-radius:0 0 6px 6px;display:block;overflow:hidden;background:transparent;transition:none"></iframe></div></div><div data-message-surface="footer" style="display:flex;align-items:center;justify-content:flex-start;gap:8px;margin-top:4px"><div style="display:flex;gap:3px;opacity:0;pointer-events:none;transition:opacity 0.12s"><button title="Copy message" style="display:flex;align-items:center;gap:4px;padding:3px 8px;height:22px;background:none;border:none;border-radius:5px;color:var(--text-dim);cursor:pointer;font-size:11px;font-weight:400;white-space:nowrap;transition:color 0.12s"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg><span>Copy</span></button></div></div></div></div></section><section data-smoke="report-update" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">Report Update Placeholder</div><div style="padding:14px"><div style="margin-bottom:16px" data-message-hovered="false"><div style="font-size:11px;color:var(--text-dim);margin-bottom:4px;display:flex;align-items:center;gap:6px"><span>Smoke GPT-5</span></div><div style="display:flex;flex-direction:column;gap:8px"><div style="border:1px solid var(--border);border-radius:6px;padding:8px 10px;background:var(--bg-panel);color:var(--text-muted);font-size:12px">Analysis report updated</div></div><div data-message-surface="footer" style="display:flex;align-items:center;justify-content:flex-start;gap:8px;margin-top:4px"><div style="display:flex;gap:3px;opacity:0;pointer-events:none;transition:opacity 0.12s"><button title="Copy message" style="display:flex;align-items:center;gap:4px;padding:3px 8px;height:22px;background:none;border:none;border-radius:5px;color:var(--text-dim);cursor:pointer;font-size:11px;font-weight:400;white-space:nowrap;transition:color 0.12s"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg><span>Copy</span></button></div></div></div></div></section><section data-smoke="file-viewer" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">FileViewer Integration</div><div style="padding:14px"><div style="height:520px;border:1px solid var(--border);border-radius:8px;overflow:hidden"><div style="border-radius:6px;background:var(--bg-panel);overflow:hidden;height:100%"><div style="width:100%;height:100%;background:linear-gradient(90deg, transparent 0%, var(--bg-hover) 50%, transparent 100%);background-size:200% 100%;animation:surface-shimmer 1.5s ease-in-out infinite"></div></div></div></div></section><section style="display:grid;grid-template-columns:repeat(auto-fit, minmax(320px, 1fr));gap:16px"><section data-smoke="terminal-output" style="border:1px solid var(--border);border-radius:8px;background:var(--assistant-bg);overflow:hidden"><div style="padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel);font-size:12px;color:var(--text-muted);font-weight:600">TerminalOutput ANSI</div><div style="padding:14px"><div><div style="position:relative;max-height:15.5rem;overflow:hidden"><div style="font-family:var(--font-mono);font-size:12px;line-height:1.55;white-space:pre-wrap;word-break:break-word;overflow-x:auto;padding:8px 10px;background:var(--bg-panel);color:var(--text-muted);opacity:1;font-style:normal"><code><span style="color:rgb(0, 187, 0)">PASS</span><span> npm run lint
1333
1333
  </span><span style="color:rgb(187, 187, 0)">WARN</span><span> long output collapsed below
1334
1334
  </span><span style="color:rgb(187, 0, 0)">ERR</span><span> simulated stderr line
1335
1335
  line 01 = 1
@@ -1397,4 +1397,4 @@ line 28 = 28
1397
1397
  line 29 = 29
1398
1398
  line 30 = 30
1399
1399
  line 31 = 31
1400
- line 32 = 32</span></code></div><div style="position:absolute;inset-inline:0;bottom:0;height:3.5rem;background:linear-gradient(to top, var(--bg) 0%, transparent 100%);pointer-events:none"></div></div><button type="button" aria-expanded="false" style="display:flex;align-items:center;gap:4px;width:100%;min-height:28px;padding:4px 8px;justify-content:center;background:var(--bg);border:none;border-top:1px solid var(--border);color:var(--text-dim);cursor:pointer;font-size:11px">Show all 35 lines</button></div></div></div></section></section></div></main><!--$--><!--/$--><script src="/_next/static/chunks/webpack-19a6d5696c9d0290.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[42593,[\"7177\",\"static/chunks/app/layout-5608bfe5e8f4e4c0.js\"],\"\"]\n3:I[57121,[],\"\"]\n4:I[74581,[],\"\"]\n5:I[61304,[],\"ClientPageRoot\"]\n6:I[54833,[\"7330\",\"static/chunks/d3ac728e-7964f816a1ca64e5.js\",\"6079\",\"static/chunks/363642f4-043c1475ab9af70e.js\",\"2941\",\"static/chunks/73972abe-9ff83c7d1a6ea9f7.js\",\"2995\",\"static/chunks/0b9a0da7-9075af772487e743.js\",\"6236\",\"static/chunks/6236-1f7433425e0ceda5.js\",\"3041\",\"static/chunks/3041-1971241af702452f.js\",\"2444\",\"static/chunks/app/smoke/page-57d2b282f9b2d200.js\"],\"default\"]\n9:I[90484,[],\"OutletBoundary\"]\na:\"$Sreact.suspense\"\nd:I[90484,[],\"ViewportBoundary\"]\nf:I[90484,[],\"MetadataBoundary\"]\n11:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/7deddc85b7ffd1dc-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/ec14413c594b3356-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/88714c00e109ce28.css\",\"style\"]\n:HL[\"/_next/static/css/5a346973ceb3dbc6.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"smoke\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"smoke\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/88714c00e109ce28.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/5a346973ceb3dbc6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"__variable_66b8ca\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"$L2\",null,{\"id\":\"theme-init\",\"strategy\":\"beforeInteractive\",\"children\":\"(function(){try{var t=localStorage.getItem(\\\"pi-theme\\\");if(t===\\\"dark\\\")document.documentElement.classList.add(\\\"dark\\\")}catch(e){}})();\"}]}],[\"$\",\"body\",null,{\"style\":{\"height\":\"100dvh\",\"display\":\"flex\",\"flexDirection\":\"column\"},\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L5\",null,{\"Component\":\"$6\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@7\",\"$@8\"]}}],null,[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@b\"}]}]]}],{},null,false,null]},null,false,\"$@c\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L10\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"SAAV2xXOo01Y4ntjlAyTA\"}\n"])</script><script>self.__next_f.push([1,"12:[]\nc:\"$W12\"\n7:{}\n8:\"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params\"\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"13:I[86869,[],\"IconMark\"]\nb:null\n10:[[\"$\",\"title\",\"0\",{\"children\":\"AnnoVibe\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"AI-native bioinformatics workspace by Annoroad\"}],[\"$\",\"link\",\"2\",{\"rel\":\"shortcut icon\",\"href\":\"/icon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/icon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"$L13\",\"4\",{}]]\n"])</script></body></html>
1400
+ line 32 = 32</span></code></div><div style="position:absolute;inset-inline:0;bottom:0;height:3.5rem;background:linear-gradient(to top, var(--bg) 0%, transparent 100%);pointer-events:none"></div></div><button type="button" aria-expanded="false" style="display:flex;align-items:center;gap:4px;width:100%;min-height:28px;padding:4px 8px;justify-content:center;background:var(--bg);border:none;border-top:1px solid var(--border);color:var(--text-dim);cursor:pointer;font-size:11px">Show all 35 lines</button></div></div></div></section></section></div></main><!--$--><!--/$--><script src="/_next/static/chunks/webpack-19a6d5696c9d0290.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[42593,[\"7177\",\"static/chunks/app/layout-5608bfe5e8f4e4c0.js\"],\"\"]\n3:I[57121,[],\"\"]\n4:I[74581,[],\"\"]\n5:I[61304,[],\"ClientPageRoot\"]\n6:I[54833,[\"7330\",\"static/chunks/d3ac728e-7964f816a1ca64e5.js\",\"6079\",\"static/chunks/363642f4-043c1475ab9af70e.js\",\"2941\",\"static/chunks/73972abe-9ff83c7d1a6ea9f7.js\",\"2995\",\"static/chunks/0b9a0da7-9075af772487e743.js\",\"6236\",\"static/chunks/6236-1f7433425e0ceda5.js\",\"3041\",\"static/chunks/3041-2a1bf2ba5b31db24.js\",\"2444\",\"static/chunks/app/smoke/page-57d2b282f9b2d200.js\"],\"default\"]\n9:I[90484,[],\"OutletBoundary\"]\na:\"$Sreact.suspense\"\nd:I[90484,[],\"ViewportBoundary\"]\nf:I[90484,[],\"MetadataBoundary\"]\n11:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/7deddc85b7ffd1dc-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/ec14413c594b3356-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/88714c00e109ce28.css\",\"style\"]\n:HL[\"/_next/static/css/5a346973ceb3dbc6.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"smoke\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"smoke\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/88714c00e109ce28.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/5a346973ceb3dbc6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"__variable_66b8ca\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"$L2\",null,{\"id\":\"theme-init\",\"strategy\":\"beforeInteractive\",\"children\":\"(function(){try{var t=localStorage.getItem(\\\"pi-theme\\\");if(t===\\\"dark\\\")document.documentElement.classList.add(\\\"dark\\\")}catch(e){}})();\"}]}],[\"$\",\"body\",null,{\"style\":{\"height\":\"100dvh\",\"display\":\"flex\",\"flexDirection\":\"column\"},\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L5\",null,{\"Component\":\"$6\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@7\",\"$@8\"]}}],null,[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@b\"}]}]]}],{},null,false,null]},null,false,\"$@c\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L10\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"LPDY7d1rQxff1OqgbwTWa\"}\n"])</script><script>self.__next_f.push([1,"12:[]\nc:\"$W12\"\n7:{}\n8:\"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params\"\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"13:I[86869,[],\"IconMark\"]\nb:null\n10:[[\"$\",\"title\",\"0\",{\"children\":\"AnnoVibe\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"AI-native bioinformatics workspace by Annoroad\"}],[\"$\",\"link\",\"2\",{\"rel\":\"shortcut icon\",\"href\":\"/icon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/icon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"$L13\",\"4\",{}]]\n"])</script></body></html>
@@ -3,7 +3,7 @@
3
3
  3:I[57121,[],""]
4
4
  4:I[74581,[],""]
5
5
  5:I[61304,[],"ClientPageRoot"]
6
- 6:I[54833,["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","6079","static/chunks/363642f4-043c1475ab9af70e.js","2941","static/chunks/73972abe-9ff83c7d1a6ea9f7.js","2995","static/chunks/0b9a0da7-9075af772487e743.js","6236","static/chunks/6236-1f7433425e0ceda5.js","3041","static/chunks/3041-1971241af702452f.js","2444","static/chunks/app/smoke/page-57d2b282f9b2d200.js"],"default"]
6
+ 6:I[54833,["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","6079","static/chunks/363642f4-043c1475ab9af70e.js","2941","static/chunks/73972abe-9ff83c7d1a6ea9f7.js","2995","static/chunks/0b9a0da7-9075af772487e743.js","6236","static/chunks/6236-1f7433425e0ceda5.js","3041","static/chunks/3041-2a1bf2ba5b31db24.js","2444","static/chunks/app/smoke/page-57d2b282f9b2d200.js"],"default"]
7
7
  9:I[90484,[],"OutletBoundary"]
8
8
  a:"$Sreact.suspense"
9
9
  d:I[90484,[],"ViewportBoundary"]
@@ -13,7 +13,7 @@ f:I[90484,[],"MetadataBoundary"]
13
13
  :HL["/_next/static/media/ec14413c594b3356-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
14
14
  :HL["/_next/static/css/88714c00e109ce28.css","style"]
15
15
  :HL["/_next/static/css/5a346973ceb3dbc6.css","style"]
16
- 0:{"P":null,"c":["","smoke"],"q":"","i":false,"f":[[["",{"children":["smoke",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/88714c00e109ce28.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/5a346973ceb3dbc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__variable_66b8ca","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","$L2",null,{"id":"theme-init","strategy":"beforeInteractive","children":"(function(){try{var t=localStorage.getItem(\"pi-theme\");if(t===\"dark\")document.documentElement.classList.add(\"dark\")}catch(e){}})();"}]}],["$","body",null,{"style":{"height":"100dvh","display":"flex","flexDirection":"column"},"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],null,["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,null]},null,false,"$@c"]},null,false,null],["$","$1","h",{"children":[null,["$","$Ld",null,{"children":"$Le"}],["$","div",null,{"hidden":true,"children":["$","$Lf",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$L10"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$11",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"SAAV2xXOo01Y4ntjlAyTA"}
16
+ 0:{"P":null,"c":["","smoke"],"q":"","i":false,"f":[[["",{"children":["smoke",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/88714c00e109ce28.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/5a346973ceb3dbc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__variable_66b8ca","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","$L2",null,{"id":"theme-init","strategy":"beforeInteractive","children":"(function(){try{var t=localStorage.getItem(\"pi-theme\");if(t===\"dark\")document.documentElement.classList.add(\"dark\")}catch(e){}})();"}]}],["$","body",null,{"style":{"height":"100dvh","display":"flex","flexDirection":"column"},"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],null,["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,null]},null,false,"$@c"]},null,false,null],["$","$1","h",{"children":[null,["$","$Ld",null,{"children":"$Le"}],["$","div",null,{"hidden":true,"children":["$","$Lf",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$L10"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$11",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"LPDY7d1rQxff1OqgbwTWa"}
17
17
  12:[]
18
18
  c:"$W12"
19
19
  7:{}
@@ -3,7 +3,7 @@
3
3
  3:I[57121,[],""]
4
4
  4:I[74581,[],""]
5
5
  5:I[61304,[],"ClientPageRoot"]
6
- 6:I[54833,["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","6079","static/chunks/363642f4-043c1475ab9af70e.js","2941","static/chunks/73972abe-9ff83c7d1a6ea9f7.js","2995","static/chunks/0b9a0da7-9075af772487e743.js","6236","static/chunks/6236-1f7433425e0ceda5.js","3041","static/chunks/3041-1971241af702452f.js","2444","static/chunks/app/smoke/page-57d2b282f9b2d200.js"],"default"]
6
+ 6:I[54833,["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","6079","static/chunks/363642f4-043c1475ab9af70e.js","2941","static/chunks/73972abe-9ff83c7d1a6ea9f7.js","2995","static/chunks/0b9a0da7-9075af772487e743.js","6236","static/chunks/6236-1f7433425e0ceda5.js","3041","static/chunks/3041-2a1bf2ba5b31db24.js","2444","static/chunks/app/smoke/page-57d2b282f9b2d200.js"],"default"]
7
7
  9:I[90484,[],"OutletBoundary"]
8
8
  a:"$Sreact.suspense"
9
9
  d:I[90484,[],"ViewportBoundary"]
@@ -13,7 +13,7 @@ f:I[90484,[],"MetadataBoundary"]
13
13
  :HL["/_next/static/media/ec14413c594b3356-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
14
14
  :HL["/_next/static/css/88714c00e109ce28.css","style"]
15
15
  :HL["/_next/static/css/5a346973ceb3dbc6.css","style"]
16
- 0:{"P":null,"c":["","smoke"],"q":"","i":false,"f":[[["",{"children":["smoke",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/88714c00e109ce28.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/5a346973ceb3dbc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__variable_66b8ca","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","$L2",null,{"id":"theme-init","strategy":"beforeInteractive","children":"(function(){try{var t=localStorage.getItem(\"pi-theme\");if(t===\"dark\")document.documentElement.classList.add(\"dark\")}catch(e){}})();"}]}],["$","body",null,{"style":{"height":"100dvh","display":"flex","flexDirection":"column"},"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],null,["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,null]},null,false,"$@c"]},null,false,null],["$","$1","h",{"children":[null,["$","$Ld",null,{"children":"$Le"}],["$","div",null,{"hidden":true,"children":["$","$Lf",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$L10"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$11",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"SAAV2xXOo01Y4ntjlAyTA"}
16
+ 0:{"P":null,"c":["","smoke"],"q":"","i":false,"f":[[["",{"children":["smoke",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/88714c00e109ce28.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/5a346973ceb3dbc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__variable_66b8ca","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","$L2",null,{"id":"theme-init","strategy":"beforeInteractive","children":"(function(){try{var t=localStorage.getItem(\"pi-theme\");if(t===\"dark\")document.documentElement.classList.add(\"dark\")}catch(e){}})();"}]}],["$","body",null,{"style":{"height":"100dvh","display":"flex","flexDirection":"column"},"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],null,["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,null]},null,false,"$@c"]},null,false,null],["$","$1","h",{"children":[null,["$","$Ld",null,{"children":"$Le"}],["$","div",null,{"hidden":true,"children":["$","$Lf",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$L10"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$11",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"LPDY7d1rQxff1OqgbwTWa"}
17
17
  12:[]
18
18
  c:"$W12"
19
19
  7:{}
@@ -3,4 +3,4 @@
3
3
  3:I[90484,[],"MetadataBoundary"]
4
4
  4:"$Sreact.suspense"
5
5
  5:I[86869,[],"IconMark"]
6
- 0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"AnnoVibe"}],["$","meta","1",{"name":"description","content":"AI-native bioinformatics workspace by Annoroad"}],["$","link","2",{"rel":"shortcut icon","href":"/icon.svg","type":"image/svg+xml"}],["$","link","3",{"rel":"icon","href":"/icon.svg","type":"image/svg+xml"}],["$","$L5","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"SAAV2xXOo01Y4ntjlAyTA"}
6
+ 0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"AnnoVibe"}],["$","meta","1",{"name":"description","content":"AI-native bioinformatics workspace by Annoroad"}],["$","link","2",{"rel":"shortcut icon","href":"/icon.svg","type":"image/svg+xml"}],["$","link","3",{"rel":"icon","href":"/icon.svg","type":"image/svg+xml"}],["$","$L5","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"LPDY7d1rQxff1OqgbwTWa"}
@@ -4,4 +4,4 @@
4
4
  4:I[74581,[],""]
5
5
  :HL["/_next/static/css/88714c00e109ce28.css","style"]
6
6
  :HL["/_next/static/css/5a346973ceb3dbc6.css","style"]
7
- 0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/88714c00e109ce28.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/5a346973ceb3dbc6.css","precedence":"next"}]],["$","html",null,{"lang":"en","className":"__variable_66b8ca","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","$L2",null,{"id":"theme-init","strategy":"beforeInteractive","children":"(function(){try{var t=localStorage.getItem(\"pi-theme\");if(t===\"dark\")document.documentElement.classList.add(\"dark\")}catch(e){}})();"}]}],["$","body",null,{"style":{"height":"100dvh","display":"flex","flexDirection":"column"},"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"SAAV2xXOo01Y4ntjlAyTA"}
7
+ 0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/88714c00e109ce28.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/5a346973ceb3dbc6.css","precedence":"next"}]],["$","html",null,{"lang":"en","className":"__variable_66b8ca","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","$L2",null,{"id":"theme-init","strategy":"beforeInteractive","children":"(function(){try{var t=localStorage.getItem(\"pi-theme\");if(t===\"dark\")document.documentElement.classList.add(\"dark\")}catch(e){}})();"}]}],["$","body",null,{"style":{"height":"100dvh","display":"flex","flexDirection":"column"},"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"LPDY7d1rQxff1OqgbwTWa"}
@@ -2,4 +2,4 @@
2
2
  :HL["/_next/static/media/ec14413c594b3356-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
3
3
  :HL["/_next/static/css/88714c00e109ce28.css","style"]
4
4
  :HL["/_next/static/css/5a346973ceb3dbc6.css","style"]
5
- 0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"smoke","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"SAAV2xXOo01Y4ntjlAyTA"}
5
+ 0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"smoke","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"LPDY7d1rQxff1OqgbwTWa"}
@@ -1,9 +1,9 @@
1
1
  1:"$Sreact.fragment"
2
2
  2:I[61304,[],"ClientPageRoot"]
3
- 3:I[54833,["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","6079","static/chunks/363642f4-043c1475ab9af70e.js","2941","static/chunks/73972abe-9ff83c7d1a6ea9f7.js","2995","static/chunks/0b9a0da7-9075af772487e743.js","6236","static/chunks/6236-1f7433425e0ceda5.js","3041","static/chunks/3041-1971241af702452f.js","2444","static/chunks/app/smoke/page-57d2b282f9b2d200.js"],"default"]
3
+ 3:I[54833,["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","6079","static/chunks/363642f4-043c1475ab9af70e.js","2941","static/chunks/73972abe-9ff83c7d1a6ea9f7.js","2995","static/chunks/0b9a0da7-9075af772487e743.js","6236","static/chunks/6236-1f7433425e0ceda5.js","3041","static/chunks/3041-2a1bf2ba5b31db24.js","2444","static/chunks/app/smoke/page-57d2b282f9b2d200.js"],"default"]
4
4
  6:I[90484,[],"OutletBoundary"]
5
5
  7:"$Sreact.suspense"
6
- 0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],null,["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"SAAV2xXOo01Y4ntjlAyTA"}
6
+ 0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],null,["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"LPDY7d1rQxff1OqgbwTWa"}
7
7
  4:{}
8
8
  5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
9
9
  8:null
@@ -2,4 +2,4 @@
2
2
  2:I[57121,[],""]
3
3
  3:I[74581,[],""]
4
4
  4:[]
5
- 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"SAAV2xXOo01Y4ntjlAyTA"}
5
+ 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"LPDY7d1rQxff1OqgbwTWa"}
@@ -19,31 +19,32 @@
19
19
  "/api/soul/route": "app/api/soul/route.js",
20
20
  "/favicon.ico/route": "app/favicon.ico/route.js",
21
21
  "/icon.svg/route": "app/icon.svg/route.js",
22
- "/api/agent/[id]/events/route": "app/api/agent/[id]/events/route.js",
23
22
  "/api/agent/runtime/route": "app/api/agent/runtime/route.js",
24
23
  "/api/apps/[id]/[[...path]]/route": "app/api/apps/[id]/[[...path]]/route.js",
25
24
  "/api/apps/route": "app/api/apps/route.js",
26
25
  "/api/auth/all-providers/route": "app/api/auth/all-providers/route.js",
27
26
  "/api/auth/api-key/[provider]/route": "app/api/auth/api-key/[provider]/route.js",
28
- "/api/auth/login/[provider]/route": "app/api/auth/login/[provider]/route.js",
27
+ "/api/agent/[id]/events/route": "app/api/agent/[id]/events/route.js",
29
28
  "/api/auth/logout/[provider]/route": "app/api/auth/logout/[provider]/route.js",
30
29
  "/api/auth/providers/route": "app/api/auth/providers/route.js",
31
30
  "/api/internal/runtime/route": "app/api/internal/runtime/route.js",
31
+ "/api/memory/promote/route": "app/api/memory/promote/route.js",
32
32
  "/api/models-config/discover/route": "app/api/models-config/discover/route.js",
33
33
  "/api/models-config/route": "app/api/models-config/route.js",
34
- "/api/models-config/test/route": "app/api/models-config/test/route.js",
35
34
  "/api/models/route": "app/api/models/route.js",
36
35
  "/api/plot-kernels/route": "app/api/plot-kernels/route.js",
37
36
  "/api/plot-kernels/status/route": "app/api/plot-kernels/status/route.js",
38
37
  "/api/plot-kernels/stop/route": "app/api/plot-kernels/stop/route.js",
39
- "/api/reports/[id]/route": "app/api/reports/[id]/route.js",
40
38
  "/api/settings/route": "app/api/settings/route.js",
41
39
  "/api/skills/install/route": "app/api/skills/install/route.js",
42
40
  "/api/skills/route": "app/api/skills/route.js",
43
41
  "/api/skills/search/route": "app/api/skills/search/route.js",
44
42
  "/api/subagents/status/route": "app/api/subagents/status/route.js",
45
- "/api/version/route": "app/api/version/route.js",
43
+ "/api/auth/login/[provider]/route": "app/api/auth/login/[provider]/route.js",
44
+ "/api/models-config/test/route": "app/api/models-config/test/route.js",
46
45
  "/login/page": "app/login/page.js",
47
46
  "/page": "app/page.js",
47
+ "/api/reports/[id]/route": "app/api/reports/[id]/route.js",
48
+ "/api/version/route": "app/api/version/route.js",
48
49
  "/smoke/page": "app/smoke/page.js"
49
50
  }