@ailog/cli 0.2.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +12 -0
  3. package/README.md +115 -18
  4. package/bin/cli.js +9 -0
  5. package/dist/client/assets/index-BBTm7Mxn.js +160 -0
  6. package/dist/client/assets/index-x-B7u97h.css +1 -0
  7. package/dist/client/index.html +19 -0
  8. package/dist/index.d.ts +122 -0
  9. package/dist/index.js +681 -0
  10. package/dist/viewer/server.js +413 -0
  11. package/package.json +65 -45
  12. package/dist/bin/cli.js +0 -1980
  13. package/dist/standalone/.next/BUILD_ID +0 -1
  14. package/dist/standalone/.next/app-path-routes-manifest.json +0 -10
  15. package/dist/standalone/.next/build-manifest.json +0 -21
  16. package/dist/standalone/.next/package.json +0 -1
  17. package/dist/standalone/.next/prerender-manifest.json +0 -118
  18. package/dist/standalone/.next/required-server-files.json +0 -333
  19. package/dist/standalone/.next/routes-manifest.json +0 -102
  20. package/dist/standalone/.next/server/app/_global-error/page/app-paths-manifest.json +0 -3
  21. package/dist/standalone/.next/server/app/_global-error/page/build-manifest.json +0 -18
  22. package/dist/standalone/.next/server/app/_global-error/page/next-font-manifest.json +0 -6
  23. package/dist/standalone/.next/server/app/_global-error/page/react-loadable-manifest.json +0 -1
  24. package/dist/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +0 -4
  25. package/dist/standalone/.next/server/app/_global-error/page.js +0 -11
  26. package/dist/standalone/.next/server/app/_global-error/page.js.map +0 -5
  27. package/dist/standalone/.next/server/app/_global-error/page.js.nft.json +0 -1
  28. package/dist/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +0 -2
  29. package/dist/standalone/.next/server/app/_global-error.html +0 -2
  30. package/dist/standalone/.next/server/app/_global-error.meta +0 -15
  31. package/dist/standalone/.next/server/app/_global-error.rsc +0 -13
  32. package/dist/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +0 -5
  33. package/dist/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +0 -13
  34. package/dist/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +0 -8
  35. package/dist/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +0 -4
  36. package/dist/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +0 -1
  37. package/dist/standalone/.next/server/app/_not-found/page/app-paths-manifest.json +0 -3
  38. package/dist/standalone/.next/server/app/_not-found/page/build-manifest.json +0 -18
  39. package/dist/standalone/.next/server/app/_not-found/page/next-font-manifest.json +0 -12
  40. package/dist/standalone/.next/server/app/_not-found/page/react-loadable-manifest.json +0 -1
  41. package/dist/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +0 -4
  42. package/dist/standalone/.next/server/app/_not-found/page.js +0 -14
  43. package/dist/standalone/.next/server/app/_not-found/page.js.map +0 -5
  44. package/dist/standalone/.next/server/app/_not-found/page.js.nft.json +0 -1
  45. package/dist/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +0 -2
  46. package/dist/standalone/.next/server/app/_not-found.html +0 -1
  47. package/dist/standalone/.next/server/app/_not-found.meta +0 -16
  48. package/dist/standalone/.next/server/app/_not-found.rsc +0 -19
  49. package/dist/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +0 -19
  50. package/dist/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +0 -8
  51. package/dist/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +0 -10
  52. package/dist/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +0 -5
  53. package/dist/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +0 -4
  54. package/dist/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +0 -2
  55. package/dist/standalone/.next/server/app/api/[[...route]]/route/app-paths-manifest.json +0 -3
  56. package/dist/standalone/.next/server/app/api/[[...route]]/route/build-manifest.json +0 -11
  57. package/dist/standalone/.next/server/app/api/[[...route]]/route/server-reference-manifest.json +0 -4
  58. package/dist/standalone/.next/server/app/api/[[...route]]/route.js +0 -7
  59. package/dist/standalone/.next/server/app/api/[[...route]]/route.js.map +0 -5
  60. package/dist/standalone/.next/server/app/api/[[...route]]/route.js.nft.json +0 -1
  61. package/dist/standalone/.next/server/app/api/[[...route]]/route_client-reference-manifest.js +0 -2
  62. package/dist/standalone/.next/server/app/apps/[appId]/page/app-paths-manifest.json +0 -3
  63. package/dist/standalone/.next/server/app/apps/[appId]/page/build-manifest.json +0 -18
  64. package/dist/standalone/.next/server/app/apps/[appId]/page/next-font-manifest.json +0 -12
  65. package/dist/standalone/.next/server/app/apps/[appId]/page/react-loadable-manifest.json +0 -1
  66. package/dist/standalone/.next/server/app/apps/[appId]/page/server-reference-manifest.json +0 -4
  67. package/dist/standalone/.next/server/app/apps/[appId]/page.js +0 -17
  68. package/dist/standalone/.next/server/app/apps/[appId]/page.js.map +0 -5
  69. package/dist/standalone/.next/server/app/apps/[appId]/page.js.nft.json +0 -1
  70. package/dist/standalone/.next/server/app/apps/[appId]/page_client-reference-manifest.js +0 -2
  71. package/dist/standalone/.next/server/app/apps/[appId]/settings/page/app-paths-manifest.json +0 -3
  72. package/dist/standalone/.next/server/app/apps/[appId]/settings/page/build-manifest.json +0 -18
  73. package/dist/standalone/.next/server/app/apps/[appId]/settings/page/next-font-manifest.json +0 -12
  74. package/dist/standalone/.next/server/app/apps/[appId]/settings/page/react-loadable-manifest.json +0 -1
  75. package/dist/standalone/.next/server/app/apps/[appId]/settings/page/server-reference-manifest.json +0 -4
  76. package/dist/standalone/.next/server/app/apps/[appId]/settings/page.js +0 -17
  77. package/dist/standalone/.next/server/app/apps/[appId]/settings/page.js.map +0 -5
  78. package/dist/standalone/.next/server/app/apps/[appId]/settings/page.js.nft.json +0 -1
  79. package/dist/standalone/.next/server/app/apps/[appId]/settings/page_client-reference-manifest.js +0 -2
  80. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page/app-paths-manifest.json +0 -3
  81. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page/build-manifest.json +0 -18
  82. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page/next-font-manifest.json +0 -12
  83. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page/react-loadable-manifest.json +0 -1
  84. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page/server-reference-manifest.json +0 -4
  85. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page.js +0 -17
  86. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page.js.map +0 -5
  87. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page.js.nft.json +0 -1
  88. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page_client-reference-manifest.js +0 -2
  89. package/dist/standalone/.next/server/app/favicon.ico/route/app-paths-manifest.json +0 -3
  90. package/dist/standalone/.next/server/app/favicon.ico/route/build-manifest.json +0 -11
  91. package/dist/standalone/.next/server/app/favicon.ico/route.js +0 -7
  92. package/dist/standalone/.next/server/app/favicon.ico/route.js.map +0 -5
  93. package/dist/standalone/.next/server/app/favicon.ico/route.js.nft.json +0 -1
  94. package/dist/standalone/.next/server/app/favicon.ico.body +0 -0
  95. package/dist/standalone/.next/server/app/favicon.ico.meta +0 -1
  96. package/dist/standalone/.next/server/app/index.html +0 -1
  97. package/dist/standalone/.next/server/app/index.meta +0 -14
  98. package/dist/standalone/.next/server/app/index.rsc +0 -26
  99. package/dist/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +0 -9
  100. package/dist/standalone/.next/server/app/index.segments/_full.segment.rsc +0 -26
  101. package/dist/standalone/.next/server/app/index.segments/_head.segment.rsc +0 -8
  102. package/dist/standalone/.next/server/app/index.segments/_index.segment.rsc +0 -10
  103. package/dist/standalone/.next/server/app/index.segments/_tree.segment.rsc +0 -5
  104. package/dist/standalone/.next/server/app/page/app-paths-manifest.json +0 -3
  105. package/dist/standalone/.next/server/app/page/build-manifest.json +0 -18
  106. package/dist/standalone/.next/server/app/page/next-font-manifest.json +0 -12
  107. package/dist/standalone/.next/server/app/page/react-loadable-manifest.json +0 -1
  108. package/dist/standalone/.next/server/app/page/server-reference-manifest.json +0 -4
  109. package/dist/standalone/.next/server/app/page.js +0 -16
  110. package/dist/standalone/.next/server/app/page.js.map +0 -5
  111. package/dist/standalone/.next/server/app/page.js.nft.json +0 -1
  112. package/dist/standalone/.next/server/app/page_client-reference-manifest.js +0 -2
  113. package/dist/standalone/.next/server/app-paths-manifest.json +0 -10
  114. package/dist/standalone/.next/server/chunks/32a5c_next_0375a1f1._.js +0 -17
  115. package/dist/standalone/.next/server/chunks/[root-of-the-server]__5f8f2b74._.js +0 -3
  116. package/dist/standalone/.next/server/chunks/[root-of-the-server]__7970807c._.js +0 -7
  117. package/dist/standalone/.next/server/chunks/[root-of-the-server]__a0f47697._.js +0 -28
  118. package/dist/standalone/.next/server/chunks/[root-of-the-server]__b89b5a39._.js +0 -3
  119. package/dist/standalone/.next/server/chunks/[turbopack]_runtime.js +0 -770
  120. package/dist/standalone/.next/server/chunks/apps_web__next-internal_server_app_api_[[___route]]_route_actions_ad756856.js +0 -3
  121. package/dist/standalone/.next/server/chunks/apps_web__next-internal_server_app_favicon_ico_route_actions_63c3b0d9.js +0 -3
  122. package/dist/standalone/.next/server/chunks/ssr/32a5c_next_dist_c1a879d9._.js +0 -4
  123. package/dist/standalone/.next/server/chunks/ssr/32a5c_next_dist_c1fdfc17._.js +0 -3
  124. package/dist/standalone/.next/server/chunks/ssr/32a5c_next_dist_client_components_9085e245._.js +0 -3
  125. package/dist/standalone/.next/server/chunks/ssr/32a5c_next_dist_client_components_builtin_forbidden_3bc2a141.js +0 -3
  126. package/dist/standalone/.next/server/chunks/ssr/32a5c_next_dist_client_components_builtin_global-error_4bb26d7f.js +0 -3
  127. package/dist/standalone/.next/server/chunks/ssr/32a5c_next_dist_client_components_builtin_unauthorized_5c95c9e3.js +0 -3
  128. package/dist/standalone/.next/server/chunks/ssr/32a5c_next_dist_esm_af731943._.js +0 -6
  129. package/dist/standalone/.next/server/chunks/ssr/32a5c_next_dist_esm_build_templates_app-page_5d311e9f.js +0 -4
  130. package/dist/standalone/.next/server/chunks/ssr/37f04__next-internal_server_app_apps_[appId]_threads_[threadId]_page_actions_0a164142.js +0 -3
  131. package/dist/standalone/.next/server/chunks/ssr/8eb43_sonner_dist_index_mjs_a249e53a._.js +0 -3
  132. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__15021a09._.js +0 -3
  133. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__1764fab0._.js +0 -3
  134. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__1d8f92d3._.js +0 -3
  135. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__277f3037._.js +0 -3
  136. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__379bd934._.js +0 -3
  137. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__42df4b63._.js +0 -3
  138. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__5064350d._.js +0 -3
  139. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__659dbfe7._.js +0 -4
  140. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__80ea63f6._.js +0 -4
  141. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__9f3ff72e._.js +0 -3
  142. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__b6cee269._.js +0 -3
  143. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__e55c02ca._.js +0 -3
  144. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__f7807403._.js +0 -3
  145. package/dist/standalone/.next/server/chunks/ssr/[turbopack]_runtime.js +0 -770
  146. package/dist/standalone/.next/server/chunks/ssr/_1db4c18c._.js +0 -4
  147. package/dist/standalone/.next/server/chunks/ssr/_203f0b29._.js +0 -7
  148. package/dist/standalone/.next/server/chunks/ssr/_289820d0._.js +0 -3
  149. package/dist/standalone/.next/server/chunks/ssr/_442031f8._.js +0 -7
  150. package/dist/standalone/.next/server/chunks/ssr/_4b4df737._.js +0 -4
  151. package/dist/standalone/.next/server/chunks/ssr/_5066b883._.js +0 -4
  152. package/dist/standalone/.next/server/chunks/ssr/_70dfbe56._.js +0 -3
  153. package/dist/standalone/.next/server/chunks/ssr/_8c0bfb07._.js +0 -3
  154. package/dist/standalone/.next/server/chunks/ssr/_b00f40b3._.js +0 -3
  155. package/dist/standalone/.next/server/chunks/ssr/_d81226f8._.js +0 -4
  156. package/dist/standalone/.next/server/chunks/ssr/_e5c457a7._.js +0 -3
  157. package/dist/standalone/.next/server/chunks/ssr/_fce9eb14._.js +0 -6
  158. package/dist/standalone/.next/server/chunks/ssr/apps_web__next-internal_server_app__global-error_page_actions_e7650f86.js +0 -3
  159. package/dist/standalone/.next/server/chunks/ssr/apps_web__next-internal_server_app__not-found_page_actions_3df07a96.js +0 -3
  160. package/dist/standalone/.next/server/chunks/ssr/apps_web__next-internal_server_app_apps_[appId]_page_actions_3e495976.js +0 -3
  161. package/dist/standalone/.next/server/chunks/ssr/apps_web__next-internal_server_app_apps_[appId]_settings_page_actions_e98061b7.js +0 -3
  162. package/dist/standalone/.next/server/chunks/ssr/apps_web__next-internal_server_app_page_actions_a0623280.js +0 -3
  163. package/dist/standalone/.next/server/chunks/ssr/apps_web_app_apps_[appId]_layout_tsx_4c06ec7f._.js +0 -3
  164. package/dist/standalone/.next/server/chunks/ssr/apps_web_app_apps_[appId]_page_tsx_15e4fa55._.js +0 -3
  165. package/dist/standalone/.next/server/chunks/ssr/apps_web_app_apps_[appId]_settings_page_tsx_c072e295._.js +0 -3
  166. package/dist/standalone/.next/server/chunks/ssr/apps_web_app_apps_[appId]_threads_[threadId]_page_tsx_7dd7d764._.js +0 -39
  167. package/dist/standalone/.next/server/chunks/ssr/apps_web_app_e92ffe16._.js +0 -3
  168. package/dist/standalone/.next/server/chunks/ssr/apps_web_app_page_tsx_66bf978b._.js +0 -3
  169. package/dist/standalone/.next/server/chunks/ssr/apps_web_components_ui_9822aec4._.js +0 -3
  170. package/dist/standalone/.next/server/chunks/ssr/apps_web_components_ui_alert-dialog_tsx_9188904e._.js +0 -9
  171. package/dist/standalone/.next/server/chunks/ssr/apps_web_components_ui_c8132c43._.js +0 -9
  172. package/dist/standalone/.next/server/chunks/ssr/apps_web_components_ui_card_tsx_2c0359d4._.js +0 -3
  173. package/dist/standalone/.next/server/chunks/ssr/apps_web_components_ui_cbe5b2b9._.js +0 -3
  174. package/dist/standalone/.next/server/chunks/ssr/apps_web_components_ui_cc5b288d._.js +0 -3
  175. package/dist/standalone/.next/server/chunks/ssr/node_modules__bun_2e4b1ed0._.js +0 -3
  176. package/dist/standalone/.next/server/chunks/ssr/node_modules__bun_4bd60410._.js +0 -6
  177. package/dist/standalone/.next/server/chunks/ssr/node_modules__bun_930fb349._.js +0 -3
  178. package/dist/standalone/.next/server/chunks/ssr/node_modules__bun_d2520564._.js +0 -3
  179. package/dist/standalone/.next/server/functions-config-manifest.json +0 -4
  180. package/dist/standalone/.next/server/middleware-build-manifest.js +0 -22
  181. package/dist/standalone/.next/server/middleware-manifest.json +0 -6
  182. package/dist/standalone/.next/server/next-font-manifest.js +0 -1
  183. package/dist/standalone/.next/server/next-font-manifest.json +0 -32
  184. package/dist/standalone/.next/server/pages/404.html +0 -1
  185. package/dist/standalone/.next/server/pages/500.html +0 -2
  186. package/dist/standalone/.next/server/pages-manifest.json +0 -4
  187. package/dist/standalone/.next/server/server-reference-manifest.js +0 -1
  188. package/dist/standalone/.next/server/server-reference-manifest.json +0 -5
  189. package/dist/standalone/.next/static/chunks/001d990e82d317e7.js +0 -1
  190. package/dist/standalone/.next/static/chunks/26aa014f0977bc3a.js +0 -4
  191. package/dist/standalone/.next/static/chunks/3468e573c929d9d3.js +0 -1
  192. package/dist/standalone/.next/static/chunks/3815bbfffdbb534d.js +0 -1
  193. package/dist/standalone/.next/static/chunks/3c1f17874396f056.js +0 -1
  194. package/dist/standalone/.next/static/chunks/5521918d58602ba4.css +0 -4
  195. package/dist/standalone/.next/static/chunks/61ce30fe62669a20.js +0 -1
  196. package/dist/standalone/.next/static/chunks/6a4ccd90d00f8188.js +0 -2
  197. package/dist/standalone/.next/static/chunks/6de1dc14b2653311.js +0 -2
  198. package/dist/standalone/.next/static/chunks/6ee1158d12a0c765.js +0 -1
  199. package/dist/standalone/.next/static/chunks/8bd29684c211a1e1.js +0 -37
  200. package/dist/standalone/.next/static/chunks/8eae4355671b488f.js +0 -1
  201. package/dist/standalone/.next/static/chunks/8ef339e3fd7a82de.js +0 -1
  202. package/dist/standalone/.next/static/chunks/a6dad97d9634a72d.js +0 -1
  203. package/dist/standalone/.next/static/chunks/ab703521ea4f2141.js +0 -1
  204. package/dist/standalone/.next/static/chunks/b337946fdc3c17b3.js +0 -1
  205. package/dist/standalone/.next/static/chunks/b46c6c394477214a.js +0 -1
  206. package/dist/standalone/.next/static/chunks/b8bc41a0b408222e.js +0 -5
  207. package/dist/standalone/.next/static/chunks/bbf59b867827b224.js +0 -7
  208. package/dist/standalone/.next/static/chunks/c416de6f3efbbe15.js +0 -7
  209. package/dist/standalone/.next/static/chunks/d70eda393c3966c3.js +0 -1
  210. package/dist/standalone/.next/static/chunks/f8e57df1af00077e.js +0 -5
  211. package/dist/standalone/.next/static/chunks/turbopack-e09224df42d3769a.js +0 -3
  212. package/dist/standalone/.next/static/media/13bf9871fe164e7f-s.f2220059.woff2 +0 -0
  213. package/dist/standalone/.next/static/media/3fe682a82f50d426-s.23358719.woff2 +0 -0
  214. package/dist/standalone/.next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
  215. package/dist/standalone/.next/static/media/70bc3e132a0a741e-s.p.15008bfb.woff2 +0 -0
  216. package/dist/standalone/.next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
  217. package/dist/standalone/.next/static/media/71b036adf157cdcf-s.bd5f4d11.woff2 +0 -0
  218. package/dist/standalone/.next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
  219. package/dist/standalone/.next/static/media/89b21bb081cb7469-s.51c18f09.woff2 +0 -0
  220. package/dist/standalone/.next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
  221. package/dist/standalone/.next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
  222. package/dist/standalone/.next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
  223. package/dist/standalone/.next/static/media/cc545e633e20c56d-s.f6f1950f.woff2 +0 -0
  224. package/dist/standalone/.next/static/media/favicon.0b3bf435.ico +0 -0
  225. package/dist/standalone/.next/static/p6HYmiCvyNSugdZfDkX0R/_buildManifest.js +0 -11
  226. package/dist/standalone/.next/static/p6HYmiCvyNSugdZfDkX0R/_clientMiddlewareManifest.json +0 -1
  227. package/dist/standalone/.next/static/p6HYmiCvyNSugdZfDkX0R/_ssgManifest.js +0 -1
  228. package/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  229. package/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  230. package/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  231. package/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  232. package/dist/standalone/components/apps-table.tsx +0 -274
  233. package/dist/standalone/components.json +0 -24
  234. package/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  235. package/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  236. package/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  237. package/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  238. package/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  239. package/dist/standalone/dist/standalone/components.json +0 -24
  240. package/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  241. package/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  242. package/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  243. package/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  244. package/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  245. package/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  246. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  247. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  248. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  249. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  250. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  251. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  252. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  253. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  254. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  255. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  256. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  257. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  258. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  259. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  260. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  261. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  262. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  263. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  264. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  265. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  266. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  267. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  268. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  269. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  270. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  271. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  272. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  273. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  274. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  275. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  276. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  277. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  278. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  279. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  280. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  281. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  282. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  283. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  284. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  285. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  286. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  287. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  288. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  289. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  290. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  291. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  292. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  293. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  294. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/package.json +0 -66
  295. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  296. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/package.json +0 -65
  297. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  298. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/package.json +0 -65
  299. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  300. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/package.json +0 -65
  301. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  302. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/package.json +0 -65
  303. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  304. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/package.json +0 -66
  305. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  306. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/package.json +0 -66
  307. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  308. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/package.json +0 -66
  309. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  310. package/dist/standalone/dist/standalone/dist/standalone/package.json +0 -66
  311. package/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  312. package/dist/standalone/dist/standalone/package.json +0 -66
  313. package/dist/standalone/dist/standalone/tsconfig.json +0 -34
  314. package/dist/standalone/package.json +0 -66
  315. package/dist/standalone/public/file.svg +0 -1
  316. package/dist/standalone/public/globe.svg +0 -1
  317. package/dist/standalone/public/next.svg +0 -1
  318. package/dist/standalone/public/vercel.svg +0 -1
  319. package/dist/standalone/public/window.svg +0 -1
  320. package/dist/standalone/server.js +0 -44
  321. package/dist/standalone/tsconfig.json +0 -34
@@ -0,0 +1 @@
1
+ *{box-sizing:border-box}:root{--bg-0: oklch(.145 .005 264);--bg-1: oklch(.175 .006 264);--bg-2: oklch(.205 .007 264);--bg-3: oklch(.235 .008 264);--bg-4: oklch(.265 .009 264);--bg-input: oklch(.195 .007 264);--border: oklch(.27 .01 264);--border-strong: oklch(.34 .012 264);--border-subtle: oklch(.22 .008 264);--fg: oklch(.965 .002 264);--fg-muted: oklch(.74 .006 264);--fg-dim: oklch(.55 .008 264);--fg-faint: oklch(.42 .008 264);--accent: oklch(.72 .16 254);--accent-soft: oklch(.72 .16 254 / .14);--accent-fg: oklch(.78 .13 254);--tool: oklch(.74 .16 305);--tool-soft: oklch(.74 .16 305 / .14);--text-out: oklch(.78 .14 165);--text-out-soft: oklch(.78 .14 165 / .14);--reasoning: oklch(.82 .13 80);--reasoning-soft: oklch(.82 .13 80 / .14);--subagent: oklch(.78 .13 200);--subagent-soft: oklch(.78 .13 200 / .14);--error: oklch(.7 .18 25);--error-soft: oklch(.7 .18 25 / .16);--warn: oklch(.78 .13 80);--warn-soft: oklch(.78 .13 80 / .14);--ok: oklch(.74 .13 152);--ok-soft: oklch(.74 .13 152 / .14);--radius-sm: 4px;--radius: 6px;--radius-md: 8px;--radius-lg: 10px;--shadow-card: 0 1px 0 0 oklch(1 0 0 / .03) inset, 0 1px 2px oklch(0 0 0 / .4);--mono: ui-monospace, "JetBrains Mono", "SF Mono", Menlo, Consolas, monospace;--sans: ui-sans-serif, "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif}html,body,#root{height:100%;margin:0}body{background:var(--bg-0);color:var(--fg);font-family:var(--sans);font-size:13px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden;font-feature-settings:"cv11","ss01","ss03"}.dot-bg{background-image:radial-gradient(oklch(1 0 0 / .025) 1px,transparent 1px);background-size:24px 24px;background-position:-1px -1px}.app{display:grid;grid-template-rows:44px 1fr;height:100vh}.topbar{display:flex;align-items:center;gap:12px;padding:0 12px;border-bottom:1px solid var(--border);background:var(--bg-1);-webkit-app-region:drag}.brand{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12px;letter-spacing:.02em;color:var(--fg)}.brand .logo{width:22px;height:22px;border-radius:var(--radius-sm);background:linear-gradient(135deg,var(--accent),var(--tool));display:grid;place-items:center;color:#0f1216;font-weight:700;font-size:11px;letter-spacing:0}.brand .sep{width:1px;height:14px;background:var(--border-strong);margin:0 4px}.brand .ver{color:var(--fg-faint);font-size:11px}.topbar .url{font-family:var(--mono);font-size:11px;color:var(--fg-dim);padding:3px 8px;border-radius:999px;background:var(--bg-2);border:1px solid var(--border);display:inline-flex;align-items:center;gap:6px}.topbar .url .dot{width:6px;height:6px;border-radius:999px;background:var(--ok);box-shadow:0 0 8px var(--ok)}.topbar-spacer{flex:1}.topbar-actions{display:flex;gap:4px;align-items:center;-webkit-app-region:no-drag}.btn{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:var(--radius);font-family:var(--sans);font-size:12px;background:transparent;border:1px solid transparent;color:var(--fg-muted);cursor:pointer;transition:.1s ease;-webkit-user-select:none;user-select:none;white-space:nowrap}.btn:hover{background:var(--bg-2);color:var(--fg)}.btn:active{background:var(--bg-3)}.btn.ghost-border{border-color:var(--border);background:var(--bg-2)}.btn.ghost-border:hover{background:var(--bg-3);border-color:var(--border-strong)}.btn.danger:hover{color:var(--error);border-color:var(--error-soft);background:var(--error-soft)}.btn .sh{font-family:var(--mono);font-size:10px;color:var(--fg-faint);padding:1px 4px;border-radius:3px;background:#ffffff0a;border:1px solid var(--border-subtle);margin-left:4px}.btn.icon{padding:5px 6px}.tabs{display:flex;padding:2px;background:var(--bg-2);border-radius:var(--radius);border:1px solid var(--border)}.tabs button{background:transparent;border:0;color:var(--fg-dim);font-size:12px;padding:4px 10px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;font-family:var(--sans)}.tabs button.active{background:var(--bg-3);color:var(--fg);box-shadow:0 0 0 1px var(--border-strong)}.body{display:grid;grid-template-columns:260px 1fr 1.35fr;grid-template-rows:auto 1fr;height:100%;min-height:0}.body .sidebar{grid-row:1 / 3;grid-column:1}.body .thread-head-full{grid-column:2 / 4;grid-row:1}.body .middle{grid-column:2;grid-row:2;min-height:0;overflow:hidden;display:grid;grid-template-rows:1fr;background:var(--bg-0);border-right:1px solid var(--border)}.body .middle>*{min-height:0}.body .run-details-pane{grid-column:3;grid-row:2;min-height:0;border-left:1px solid var(--border);display:grid;grid-template-rows:1fr;overflow:hidden}.body .run-details-pane>*{min-height:0;min-width:0}.body>.empty-spread{grid-column:2 / 4;grid-row:2}.app.focus-thread .sidebar .run-card.active,.app.focus-step .middle .step-group.selected,.app.focus-step .middle .run-row-compact.selected,.app.focus-step .middle .ttl-runline.selected{background:var(--accent-soft)}.focus-hint{position:fixed;bottom:12px;left:50%;transform:translate(-50%);display:inline-flex;align-items:center;gap:6px;padding:5px 10px;background:var(--bg-2);border:1px solid var(--border);border-radius:999px;font-family:var(--mono);font-size:10.5px;color:var(--fg-muted);pointer-events:none;opacity:0;transition:opacity .18s;z-index:50}.focus-hint.visible{opacity:1}.focus-hint .kbd{font-family:var(--mono);font-size:9.5px;background:var(--bg-3);border:1px solid var(--border-strong);border-radius:3px;padding:1px 4px;color:var(--fg)}.thread-head-full{display:flex;flex-direction:column;gap:4px;padding:6px 18px;border-bottom:1px solid var(--border);background:var(--bg-1)}.th-row1{display:flex;align-items:center;gap:12px;min-height:22px}.thread-head-title{font-size:13px;font-weight:600;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;line-height:22px}.th-row1 .tabs{flex-shrink:0;padding:1px;border-radius:4px}.th-row1 .tabs button{font-size:10.5px;padding:2px 7px;gap:4px;border-radius:3px}.th-row1 .tabs button svg{width:10px;height:10px}.th-row2{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);white-space:nowrap;overflow-x:auto;overflow-y:hidden;min-height:18px;scrollbar-width:none}.th-row2::-webkit-scrollbar{display:none}.th-row2>*{flex-shrink:0}.th-sep{width:1px;height:11px;background:var(--border)}.th-id{cursor:pointer;border-radius:3px;padding:1px 4px;margin:0 -4px;transition:background .1s}.th-id:hover{background:var(--bg-2)}.th-id .mono.auto{color:var(--fg-faint);font-style:italic}.th-stat{color:var(--fg-faint)}.th-stat .v{color:var(--fg-muted)}.th-stat .th-k{color:var(--fg-faint);opacity:.7;margin-right:1px}.th-bad{color:var(--error);background:var(--error-soft);border-radius:3px;padding:1px 5px;font-size:10px}.th-meta-label{color:var(--fg-faint);letter-spacing:.04em;font-size:9.5px;text-transform:uppercase}.th-meta-empty{color:var(--fg-faint);opacity:.55;font-style:italic}.th-meta-pills{display:inline-flex;gap:4px}.th-pill{background:var(--bg-2);border:1px solid var(--border);border-radius:3px;padding:0 5px;font-size:10px;display:inline-flex;gap:3px;align-items:baseline;line-height:14px}.th-pill .k{color:var(--fg-faint)}.th-pill .v{color:var(--fg-muted)}.sidebar{border-right:1px solid var(--border);background:var(--bg-1);display:grid;grid-template-rows:36px 36px 1fr;min-height:0}.sidebar-head{display:flex;align-items:center;justify-content:space-between;padding:0 12px;font-size:11px;font-family:var(--mono);letter-spacing:.08em;color:var(--fg-faint);text-transform:uppercase;border-bottom:1px solid var(--border)}.sidebar-head .count{font-family:var(--mono);font-size:11px;color:var(--fg-dim);background:var(--bg-2);padding:1px 6px;border-radius:999px;border:1px solid var(--border)}.sidebar-search{display:flex;align-items:center;gap:6px;padding:0 10px;border-bottom:1px solid var(--border)}.sidebar-search input{flex:1;background:transparent;border:0;color:var(--fg);font:inherit;outline:none;padding:6px 0}.sidebar-search input::placeholder{color:var(--fg-faint)}.sidebar-search .kbd{font-family:var(--mono);font-size:10px;color:var(--fg-faint);border:1px solid var(--border);padding:1px 5px;border-radius:3px;background:var(--bg-2)}.runs{overflow-y:auto;padding:4px}.run-card{display:block;padding:9px 10px;border-radius:var(--radius);cursor:pointer;position:relative;border:1px solid transparent}.run-card+.run-card{margin-top:1px}.run-card:hover{background:var(--bg-2)}.run-card.active{border-color:transparent}.run-card.active:before{content:"";position:absolute;left:-1px;top:8px;bottom:8px;width:2px;border-radius:2px;background:var(--accent)}.run-status{display:none}@keyframes pulse{0%,to{box-shadow:0 0 0 3px #5da7ff29;box-shadow:0 0 0 3px oklch(.72 .16 254 / .16)}50%{box-shadow:0 0 0 6px #5da7ff05;box-shadow:0 0 0 6px oklch(.72 .16 254 / .02)}}.run-main{min-width:0}.run-title{font-size:12.5px;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.35}.run-meta{font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);display:flex;gap:8px;margin-top:4px;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.run-meta .fn{color:var(--fg-dim)}.run-meta .sep{color:var(--fg-faint);opacity:.6}.run-meta .err{color:var(--error)}.run-meta .warn{color:var(--warn)}.run-time{font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);align-self:start;padding-top:1px}.type-badge{font-family:var(--mono);font-size:9.5px;letter-spacing:.05em;padding:1px 5px;border-radius:3px;border:1px solid var(--border);color:var(--fg-dim);background:var(--bg-2);text-transform:uppercase}.type-badge.stream{color:#59e0ad;border-color:#49d3a159;background:#49d3a11a}.type-badge.generate{color:#d5b1ff;color:oklch(.82 .14 305);border-color:#c28efb59;background:#c28efb1a}.chat-scroll{overflow-y:auto;padding:14px 16px 80px}.chat-inner{display:grid;gap:8px}.run-divider{text-align:center;font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);margin:12px 0 6px;position:relative}.run-divider:before,.run-divider:after{content:"";position:absolute;top:50%;width:calc(50% - 36px);height:1px;background:var(--border)}.run-divider:before{left:0}.run-divider:after{right:0}.run-divider span{background:var(--bg-0);padding:0 8px;position:relative;z-index:1}.chat-scroll .md pre{white-space:pre-wrap;word-break:break-word;overflow-x:hidden}.chat-scroll .cm-tool-line,.chat-scroll .cm-body{overflow-wrap:anywhere;word-break:break-word}.step-group{position:relative;padding:6px 10px 6px 14px;border-radius:8px;border-left:2px solid transparent;display:grid;gap:6px;cursor:pointer;transition:background .12s,border-color .12s}.step-group:hover{border-left-color:var(--border-strong);background:#ffffff04}.step-group.selected{border-left-color:var(--accent)}.step-group .cm{cursor:pointer}.step-group .cm.focused{outline:1px dashed var(--accent);outline-offset:-1px}.cm{border-radius:8px;padding:8px 12px;border:1px solid var(--border);background:var(--bg-1);cursor:pointer;font-size:13px;line-height:1.55;transition:border-color .1s ease,background .1s ease}.cm:hover{border-color:var(--border-strong)}.cm.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.cm-meta{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;color:var(--fg-faint);margin-bottom:4px;text-transform:uppercase;letter-spacing:.04em}.cm-meta>*{white-space:nowrap}.cm-meta .sep{opacity:.55;text-transform:none}.cm-meta .tc-id{font-family:var(--mono);font-size:9.5px;padding:0 5px;border-radius:3px;background:#c28efb29;color:#d5b1ff;color:oklch(.82 .14 305);text-transform:none;letter-spacing:0}.cm-meta .tc-id.matched{background:#49d3a129;color:#70e9b9}.cm-body{color:var(--fg)}.cm-body .md{font-size:13px}.cm-user{justify-self:end;max-width:86%;background:var(--accent-soft);border-color:#5da7ff59;border-color:oklch(.72 .16 254 / .35);margin-left:14%}.cm-user .cm-meta{color:#83bbff;color:oklch(.78 .13 254)}.cm-user .cm-body{color:var(--fg);white-space:pre-wrap}.cm-text{background:var(--bg-1)}.cm-tool-call{background:#c28efb12;border-color:#c28efb40}.cm-tool-call .cm-meta{color:var(--tool)}.cm-tool-call .cm-tool-line{font-family:var(--mono);font-size:12.5px;color:var(--fg)}.cm-tool-call .tc-name{color:#dcbfff;color:oklch(.85 .14 305);font-weight:600}.cm-tool-call .tc-args{color:var(--fg-muted)}.cm-tool-result{background:#49d3a10f;border-color:#49d3a138}.cm-tool-result .cm-meta{color:var(--text-out)}.cm-tool-result .cm-tool-line{font-family:var(--mono);font-size:12.5px;color:var(--fg)}.cm-tool-result .tc-name{color:#70e9b9;font-weight:600}.cm-tool-result .tc-args{color:var(--fg-muted)}.cm-reasoning{background:#f0ba590d;border-color:#f0ba5938}.cm-reasoning .cm-meta{color:var(--reasoning)}.cm-reasoning-text{color:var(--fg-muted);font-style:italic;font-size:12.5px;line-height:1.5}.cm-error{background:#fa686314;border-color:#fa68634d}.cm-error .cm-meta{color:var(--error)}.cm-error .cm-body{color:var(--error);font-family:var(--mono);font-size:12px}.cm-aborted{background:#e3ad4b12;border-color:#e3ad4b4d}.cm-aborted .cm-meta{color:var(--warn)}.cm-aborted .cm-body{color:var(--warn);font-family:var(--mono);font-size:12px}.rv{display:grid;grid-template-rows:auto 1fr;min-height:0;min-width:0;height:100%;background:var(--bg-0);overflow:hidden}.rv.rv-inspector{grid-template-rows:auto auto 1fr auto}.rh{padding:12px 16px 10px;border-bottom:1px solid var(--border);background:var(--bg-1);display:grid;gap:8px;min-width:0}.rh-row1{display:flex;align-items:center;gap:10px;min-width:0}.rh-title{font-size:14px;font-weight:600;color:var(--fg);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.rh-row2{display:flex;flex-wrap:wrap;gap:12px;font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);align-items:center}.rh-row2>span{white-space:nowrap}.rh-row2 .k{color:var(--fg-faint);margin-right:3px}.rh-row2 .v{color:var(--fg-muted)}.rh-more{background:transparent;border:1px solid var(--border);color:var(--fg-faint);font-family:var(--mono);font-size:10px;padding:2px 8px;border-radius:3px;cursor:pointer;margin-left:auto}.rh-more:hover{color:var(--fg-muted);border-color:var(--border-strong)}.rh-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding-top:4px}.rh-id{font-family:var(--mono);font-size:10.5px;color:var(--fg-dim);padding:2px 6px;background:var(--bg-2);border:1px solid var(--border);border-radius:3px;cursor:pointer;display:inline-flex;align-items:center;gap:4px}.rh-id:hover{color:var(--fg)}.rv-body{overflow-y:auto;min-height:0}.rv-toolbar{display:flex;align-items:center;gap:4px;margin-bottom:10px;padding:0 2px}.rv-toolbar-muted{font-family:var(--mono);font-size:11px;color:var(--fg-faint)}.rv-mini-btn{background:var(--bg-2);border:1px solid var(--border);color:var(--fg-dim);font-family:var(--mono);font-size:10.5px;padding:3px 9px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px}.rv-mini-btn:hover{color:var(--fg);border-color:var(--border-strong)}.rv-mini-btn:disabled{opacity:.4;cursor:not-allowed}.rv-compact-body{padding:14px 14px 60px;display:grid;gap:4px}.rv-compact-body .step-body{grid-template-columns:1fr}.rv-compact-body .step-pane+.step-pane{border-left:0;border-top:1px solid var(--border)}.rv-compact-body .step-summary-aside{gap:8px;font-size:10.5px}.rv-notebook-body{padding:14px 14px 60px;display:grid;gap:12px}.nb-cell{display:grid;grid-template-columns:28px 1fr;gap:12px;position:relative}.nb-cell-rail{display:grid;justify-content:center;position:relative}.nb-cell-rail:after{content:"";position:absolute;top:28px;bottom:-12px;left:50%;transform:translate(-50%);width:2px;background:var(--border)}.nb-cell:last-child .nb-cell-rail:after{display:none}.nb-cell-rail .step-num{width:24px;height:24px;font-size:11px;z-index:1}.nb-cell-card{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;transition:border-color .12s,box-shadow .12s}.nb-cell.focused .nb-cell-card{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.nb-cell.err .nb-cell-card{border-color:#fa686366}.nb-cell.ab .nb-cell-card{border-color:#e3ad4b66}.nb-cell-head{display:flex;align-items:center;gap:8px;padding:9px 12px;background:var(--bg-2);border-bottom:1px solid var(--border)}.nb-cell.sub .nb-cell-head{background:#17d0d80f}.nb-meta{font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);white-space:nowrap}.nb-meta .k{color:var(--fg-faint)}.nb-cell-sec{padding:12px 14px}.nb-cell-sec+.nb-cell-sec{border-top:1px dashed var(--border-subtle)}.nb-sec-head{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-faint);margin-bottom:8px}.nb-sec-aside{color:var(--fg-dim);font-family:var(--mono);text-transform:none;letter-spacing:0}.rv-inspector{grid-template-rows:auto 1fr}.rv-inspector-body{padding:14px 14px 60px;display:grid;grid-template-columns:minmax(0,1fr);gap:8px}.rv-inspector-body>*{min-width:0}.ic{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-1);overflow:hidden;transition:border-color .12s}.ic:hover{border-color:var(--border-strong)}.ic.focused{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.ic.err{border-color:#fa686366}.ic.ab{border-color:#e3ad4b66}.ic.sub .ic-head{background:linear-gradient(90deg,oklch(.78 .13 200 / .06),transparent 240px)}.ic-head{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;-webkit-user-select:none;user-select:none;min-width:0}.ic-head:hover{background:var(--bg-2)}.ic.open .ic-head{border-bottom:1px solid var(--border)}.ic-chev{color:var(--fg-faint);transition:transform .12s;flex-shrink:0}.ic-chev.open{transform:rotate(90deg)}.ic-meta{font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);white-space:nowrap;flex-shrink:0}.ic-summary{font-size:12px;color:var(--fg-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1;font-family:var(--sans);margin-left:6px}.ic-body{background:var(--bg-0)}.ic-finish{padding:8px 14px;font-family:var(--mono);font-size:10.5px;color:var(--fg-muted);border-bottom:1px dashed var(--border-subtle);background:var(--bg-1);display:flex;gap:5px;flex-wrap:wrap;align-items:center}.ic-finish .k{color:var(--fg-faint);margin-right:2px}.ic-finish .sep{opacity:.5}.ic-io{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.ic-io>.ic-section{padding:12px 14px}.ic-io>.ic-section+.ic-section{border-top:1px solid var(--border);border-left:0}@supports (selector(:has(*))){.ic-io:has(>.ic-section:nth-child(2))>.ic-section+.ic-section{border-top:1px solid var(--border)}}@container (min-width: 580px){.ic-io>.ic-section+.ic-section{border-top:0;border-left:1px solid var(--border)}}.ic-body{container-type:inline-size}.ic-section{padding:12px 14px}.ic-section-head{display:flex;gap:8px;align-items:center;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-faint);margin-bottom:10px}.ic-section-aside{color:var(--fg-dim);text-transform:none;letter-spacing:0;font-size:10.5px}.rv-mini-btn.icon-only{padding:4px 6px;width:28px;justify-content:center}.step-pane-root{display:grid;grid-template-rows:auto auto 1fr;min-height:0;background:var(--bg-0);overflow:hidden}.step-pane-head{padding:7px 12px;background:var(--bg-1);border-bottom:1px solid var(--border);display:grid;gap:0}.sph-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-height:26px}.sph-row-main{gap:14px}.sph-row-crumb{gap:6px 10px;font-size:11.5px;color:var(--fg-muted);min-width:0;justify-content:space-between}.sph-row-left,.sph-row-right{display:flex;align-items:center;gap:7px;flex-wrap:nowrap;min-width:0}.sph-row-left{flex:0 1 auto;min-width:0}.sph-row-right{flex:0 0 auto}.sph-sep{width:1px;height:14px;background:var(--border);display:inline-block}.sph-row-crumb svg{color:var(--fg-faint);flex-shrink:0}.sph-crumb-thread{color:var(--fg);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:240px}.sph-crumb-run,.sph-crumb-step{color:var(--fg-muted);white-space:nowrap}.sph-crumb-run .mono,.sph-crumb-step .mono{color:var(--fg);font-variant-numeric:tabular-nums;font-weight:500}.sph-crumb-of{color:var(--fg-faint);font-family:var(--mono);font-variant-numeric:tabular-nums}.sph-crumb-fn{font-family:var(--mono);font-size:10.5px;color:var(--fg-muted);background:var(--bg-2);border:1px solid var(--border);padding:1px 5px;border-radius:3px;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis}.sph-status{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;font-weight:500;padding:2px 6px;border-radius:3px;margin-left:4px}.sph-status.err{background:var(--error-soft);color:var(--error)}.sph-status.ab{background:var(--warn-soft);color:var(--warn)}.sph-ts{font-family:var(--mono);font-size:11px;color:var(--fg-faint);white-space:nowrap;margin-left:4px}.sph-id-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;background:transparent;border:1px solid var(--border);color:var(--fg-muted);border-radius:4px;cursor:pointer;padding:0;margin-left:2px;transition:color .12s,background .12s,border-color .12s}.sph-id-btn:hover{color:var(--fg);background:var(--bg-2);border-color:var(--border-strong)}.sph-title{display:inline-flex;align-items:center;gap:7px;min-width:0;color:var(--fg-muted)}.sph-step-label{font-size:12px;font-weight:500;color:var(--fg-muted);letter-spacing:.01em;line-height:1;white-space:nowrap}.sph-step-n{color:var(--fg);font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:600}.sph-step-of{color:var(--fg-faint);font-family:var(--mono);font-variant-numeric:tabular-nums}.sph-metric{display:inline-flex;align-items:baseline;gap:5px;font-family:var(--mono);font-size:12.5px;color:var(--fg);white-space:nowrap;font-variant-numeric:tabular-nums;letter-spacing:-.005em}.sph-metric-l{font-size:9.5px;color:var(--fg-faint);text-transform:uppercase;letter-spacing:.06em;font-weight:500}.sph-metric-v{color:var(--fg);font-weight:500}.sph-row-sub{gap:8px;font-family:var(--mono);font-size:10.5px;color:var(--fg-faint)}.sph-sub{display:inline-flex;align-items:center;gap:4px}.sph-sub svg{color:var(--fg-faint)}.sph-sub-sep{color:var(--fg-faint);opacity:.5}.sph-id{cursor:pointer;color:var(--fg-dim);border-radius:3px;padding:1px 4px;margin:-1px -4px;transition:color .12s,background .12s}.sph-id:hover{color:var(--fg-muted);background:var(--bg-2)}.sph-id svg{color:var(--fg-faint);opacity:.7}.sph-id:hover svg{opacity:1}.sph-meta{font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);white-space:nowrap}.sph-tabs{background:var(--bg-1);border-bottom:1px solid var(--border);padding:0 12px}.step-pane-body{overflow-y:auto;min-height:0}.sp-io{padding:14px;display:grid;gap:12px}.sp-meta-strip{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:2px 0 0}.sp-meta-item{font-family:var(--mono);font-size:11px;color:var(--fg-muted);white-space:nowrap}.sp-meta-item .sp-meta-k{color:var(--fg-faint);text-transform:uppercase;letter-spacing:.05em;font-size:9.5px;margin-right:4px}.sp-section{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px 14px}.sp-section-head{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--fg-faint);margin-bottom:10px}.sp-padded{padding:14px 18px 60px}.sp-meta-grid{margin-top:12px;padding:10px 12px;background:var(--bg-2);border:1px solid var(--border);border-radius:6px;font-family:var(--mono);font-size:11.5px;color:var(--fg-muted);display:grid;grid-template-columns:auto 1fr;gap:6px 14px}.sp-meta-grid .k{color:var(--fg-faint)}.sp-block-head{margin-top:18px;margin-bottom:6px;font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);letter-spacing:.04em;text-transform:uppercase}.sp-empty{font-family:var(--mono);font-size:11.5px;color:var(--fg-faint);font-style:italic;padding:6px 10px;background:var(--bg-2);border:1px dashed var(--border);border-radius:4px;width:fit-content}.sp-raw-grid{display:flex;flex-direction:column;gap:4px}.raw-row{display:flex;align-items:center;gap:10px;padding:5px 10px;background:var(--bg-2);border:1px solid var(--border);border-radius:4px;font-family:var(--mono);font-size:11.5px}.raw-row.blob{border-left:2px solid var(--accent)}.raw-row-k{color:var(--fg-faint);min-width:110px;flex-shrink:0}.raw-row-empty{color:var(--fg-faint);opacity:.6;font-style:italic}.raw-blob-chip{display:inline-flex;align-items:center;gap:4px;color:var(--fg-muted);background:var(--accent-soft);padding:2px 6px;border-radius:3px;font-size:11px}.raw-row-inline{display:flex;gap:8px;align-items:baseline;color:var(--fg-muted);flex:1;min-width:0}.raw-inline-len{color:var(--fg-faint);font-size:10.5px;flex-shrink:0}.raw-inline-peek{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;color:var(--fg-muted);opacity:.85}.run-meta .mono.tiny{font-family:var(--mono);font-size:9.5px;color:var(--fg-faint);letter-spacing:-.01em}.run-meta .mono.tiny.auto{font-style:italic;opacity:.7}.step-list{overflow-y:auto;padding:12px 14px 60px;display:grid;gap:14px}.step-list-run{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-1);overflow:hidden}.step-list-run-head{padding:9px 12px;border-bottom:1px solid var(--border);background:var(--bg-2);display:flex;align-items:center;gap:10px}.step-list-run-title{font-size:12.5px;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.step-list-run-meta{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);flex-shrink:0}.step-list-run-meta .sep{opacity:.5}.step-list-rows{display:grid}.step-list-row{display:flex;align-items:center;gap:8px;padding:8px 12px;border-top:1px solid var(--border-subtle);cursor:pointer;transition:background .1s;min-width:0}.step-list-row:first-child{border-top:0}.step-list-row:hover{background:var(--bg-2)}.step-list-row.selected{background:var(--accent-soft);box-shadow:inset 2px 0 0 var(--accent)}.step-list-row.errored{box-shadow:inset 2px 0 0 var(--error)}.step-list-row.aborted{box-shadow:inset 2px 0 0 var(--warn)}.step-list-row .step-num{width:20px;height:20px;font-size:10.5px;border-radius:4px}.step-list-row .model-badge{flex-shrink:0;color:var(--fg-dim)}.step-list-summary{font-size:12px;color:var(--fg-muted);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.step-list-aside{display:inline-flex;gap:4px;font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);white-space:nowrap;flex-shrink:0}.step-list-aside .sep{opacity:.5}.step-num.small{width:18px;height:18px;font-size:10px;border-radius:4px}.step-num.err{background:var(--error-soft);color:var(--error);border-color:#fa686380}.step-num.ab{background:var(--warn-soft);color:var(--warn);border-color:#e3ad4b80}.step-num.sub{background:var(--subagent-soft);color:var(--subagent);border-color:#17d0d880}.run-list-mid{overflow-y:auto;padding:8px 12px 60px;display:flex;flex-direction:column;gap:1px;align-content:flex-start}.run-row-compact{display:grid;grid-template-columns:20px 1fr auto auto auto;gap:10px;align-items:center;padding:3px 10px;height:26px;border-radius:4px;cursor:pointer;border-left:2px solid transparent;min-width:0;line-height:1}.run-row-compact:hover{background:var(--bg-2)}.run-row-compact.selected{border-left-color:var(--accent)}.run-row-compact.errored{border-left-color:var(--error)}.run-row-compact.aborted{border-left-color:var(--warn)}.rrc-idx{font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);text-align:right}.rrc-title{font-size:12.5px;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.rrc-meta{font-family:var(--mono);font-size:10.5px;color:var(--fg-dim);white-space:nowrap}.rrc-time{font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);white-space:nowrap}.ttl-scroll{overflow-y:auto;padding:12px 16px 60px;display:flex;flex-direction:column;gap:14px}.ttl-axis-wrap{position:sticky;top:0;background:var(--bg-0);padding-bottom:6px;z-index:2}.ttl-axis{position:relative;height:18px;border-bottom:1px solid var(--border)}.ttl-tick{position:absolute;top:0;height:18px;font-family:var(--mono);font-size:10px;color:var(--fg-faint);padding-left:4px;border-left:1px solid var(--border)}.ttl-runs{display:flex;flex-direction:column;gap:4px}.ttl-runline{display:grid;grid-template-columns:180px 1fr auto;gap:10px;align-items:center;flex-shrink:0;cursor:pointer;padding:3px 6px;border-radius:4px;border-left:2px solid transparent}.ttl-runline:hover{background:var(--bg-2)}.ttl-runline.selected{border-left-color:var(--accent)}.ttl-rl-label{display:flex;align-items:center;gap:6px;min-width:0}.ttl-rl-idx{font-family:var(--mono);font-size:10px;color:var(--fg-faint);background:var(--bg-2);border:1px solid var(--border);padding:0 5px;border-radius:3px;flex-shrink:0}.ttl-rl-title{font-size:12px;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.ttl-rl-track{position:relative;height:22px;background:linear-gradient(90deg,var(--border-subtle) 1px,transparent 1px) 0 0 / 10% 100% repeat-x,var(--bg-1);border:1px solid var(--border);border-radius:4px}.ttl-rl-bar{position:absolute;top:2px;bottom:2px;background:var(--accent);border-radius:3px;min-width:4px;cursor:pointer;display:flex;align-items:center;padding:0 6px;gap:6px;overflow:hidden;transition:filter .1s}.ttl-rl-bar:hover{filter:brightness(1.2)}.ttl-rl-bar.has-sub{background:linear-gradient(90deg,var(--accent) 60%,var(--subagent))}.ttl-rl-bar.err{background:var(--error)}.ttl-rl-bar.ab{background:var(--warn)}.ttl-rl-bar.selected{outline:2px solid var(--accent-fg);outline-offset:1px;z-index:2}.ttl-rl-bar-inner{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:9.5px;font-weight:700;color:#0a0b0d;white-space:nowrap;pointer-events:none}.ttl-rl-bar-steps{opacity:.75;font-weight:600}.ttl-rl-meta{font-family:var(--mono);font-size:10px;color:var(--fg-faint);white-space:nowrap}.ttl-legend{display:flex;gap:14px;flex-wrap:wrap;padding:8px 0 0;border-top:1px solid var(--border);font-family:var(--mono);font-size:10px;color:var(--fg-faint)}.ttl-legend span{display:inline-flex;align-items:center;gap:6px}.ttl-legend .dot{width:10px;height:10px;border-radius:2px}.ttl-legend .dot.orch{background:var(--accent)}.ttl-legend .dot.sub{background:var(--subagent)}.ttl-legend .dot.err{background:var(--error)}.ttl-legend .dot.ab{background:var(--warn)}.run-row{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-md);padding:10px 12px;cursor:pointer;transition:border-color .1s,background .1s}.run-row:hover{border-color:var(--border-strong);background:var(--bg-2)}.run-row.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.run-row.errored{border-color:#fa686366}.run-row.aborted{border-color:#e3ad4b66}.run-row-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}.run-row-idx{font-family:var(--mono);font-size:11px;color:var(--fg-faint);background:var(--bg-3);border:1px solid var(--border);padding:1px 6px;border-radius:4px;flex-shrink:0}.run-row-title{font-size:12.5px;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.run-row-meta{display:flex;gap:6px;align-items:center;font-family:var(--mono);font-size:10.5px;color:var(--fg-faint)}.run-row-meta .sep{opacity:.5}.details{display:grid;grid-template-rows:auto 1fr;min-height:0;background:var(--bg-0);overflow:hidden}.details.empty{display:grid;place-items:center;background:var(--bg-0)}.details-head{padding:12px 18px;border-bottom:1px solid var(--border);background:var(--bg-1);min-height:78px;display:grid;gap:6px;align-content:center}.d-kind{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;white-space:nowrap}.d-bread{margin-top:4px;display:flex;align-items:center;gap:4px;font-family:var(--mono);font-size:11px;color:var(--fg-faint);white-space:nowrap;overflow:hidden}.d-bread>*{flex-shrink:0}.d-bread .d-bread-item:first-child{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;min-width:0}.d-bread svg{color:var(--fg-faint)}.d-bread-item.mono{color:var(--fg-dim)}.details-scroll{overflow-y:auto;padding:14px 18px 60px;display:grid;gap:12px}.d-section{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px 14px}.d-section-head{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-faint);margin-bottom:10px;min-width:0}.d-section-head .model-badge{text-transform:none;letter-spacing:0;margin-left:auto}.d-section-head svg{color:var(--fg-faint);flex-shrink:0}.d-section-head .d-small{overflow:hidden;text-overflow:ellipsis;min-width:0;white-space:nowrap}.d-section-head .d-small .copy-btn{flex-shrink:0}.d-quote{font-size:14px;line-height:1.55;color:var(--fg);padding-left:10px;border-left:2px solid var(--accent);white-space:pre-wrap}.d-prose{font-size:13px;line-height:1.6;color:var(--fg)}.d-prose.d-reasoning{color:var(--fg-muted);font-style:italic}.d-kv{display:flex;gap:8px;align-items:baseline;margin-bottom:8px;font-size:12px}.d-kv .k{color:var(--fg-faint);font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.06em;width:60px}.d-kv .v{color:var(--fg)}.d-kv .v.mono{font-family:var(--mono);font-size:12px}.d-sub-label{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--fg-faint);margin-bottom:4px}.d-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;font-family:var(--mono);font-size:11.5px}.d-grid>div{display:flex;justify-content:space-between;padding:2px 0;border-bottom:1px dashed var(--border-subtle)}.d-grid .k{color:var(--fg-faint)}.d-grid .v{color:var(--fg)}.d-jump{margin-top:10px;display:inline-flex}.d-note{font-size:11.5px;color:var(--fg-faint);font-style:italic;padding:6px 0}.d-pre{font-family:var(--mono);font-size:12px;background:var(--bg-4);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;white-space:pre-wrap;color:var(--fg);max-height:360px;overflow-y:auto;margin:0}.d-small{font-family:var(--mono);font-size:10.5px;color:var(--fg-muted);display:inline-flex;align-items:center}.d-small-btn{background:var(--bg-3);border:1px solid var(--border);color:var(--fg-dim);font-family:var(--mono);font-size:10px;padding:1px 6px;border-radius:3px;cursor:pointer}.d-small-btn:hover{color:var(--fg);border-color:var(--border-strong)}.d-prompt{margin-top:8px}.run-detail-embedded{display:grid;grid-template-rows:auto 1fr}.run-detail-embedded .detail-head{padding:12px 16px;background:var(--bg-1)}.run-detail-embedded .detail-title{font-size:13.5px}.run-detail-embedded .stat-row{gap:10px}.run-detail-embedded .steps-scroll{padding:12px 14px 60px}.run-detail-embedded .step-summary{padding:8px 10px;gap:8px}.run-detail-embedded .timeline{padding:12px 14px 60px}.run-detail-embedded .tl-head,.run-detail-embedded .tl-row{grid-template-columns:140px 1fr}.run-detail-embedded .step-summary-aside{display:none}.main{min-height:0;display:grid;grid-template-rows:auto 1fr;background:var(--bg-0)}.empty{display:grid;place-items:center;height:100%}.empty-card{max-width:480px;padding:32px;text-align:center}.empty-card h2{margin:0 0 6px;font-size:16px;font-weight:600;color:var(--fg)}.empty-card p{margin:0;color:var(--fg-dim);font-size:13px}.empty-card .install{margin-top:18px;text-align:left;background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-md);padding:10px 12px;font-family:var(--mono);font-size:12px;color:var(--fg-muted)}.empty-card .install .c{color:var(--accent-fg)}.empty-card .install .d{color:var(--fg-faint)}.detail-head{padding:16px 24px 14px;border-bottom:1px solid var(--border);background:var(--bg-1);display:grid;gap:8px}.detail-title-row{display:flex;align-items:flex-start;gap:12px;justify-content:space-between}.detail-title{font-size:16px;font-weight:600;color:var(--fg);line-height:1.4;flex:1;text-wrap:pretty}.detail-title .quote{color:var(--fg-muted);font-weight:500}.detail-id{font-family:var(--mono);font-size:11px;color:var(--fg-faint);display:inline-flex;align-items:center;gap:6px}.detail-id .copy-btn{color:var(--fg-faint);cursor:pointer;padding:2px;border-radius:3px}.detail-id .copy-btn:hover{color:var(--fg);background:var(--bg-3)}.stat-row{display:flex;gap:18px;flex-wrap:wrap;align-items:center}.stat{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11.5px;color:var(--fg-muted);white-space:nowrap}.stat .l{color:var(--fg-faint)}.stat .v{color:var(--fg)}.stat svg{color:var(--fg-faint)}.pill-row{display:flex;gap:6px;flex-wrap:wrap}.pill{font-family:var(--mono);font-size:11px;padding:2px 8px;border-radius:999px;background:var(--bg-2);border:1px solid var(--border);color:var(--fg-muted);display:inline-flex;gap:4px}.pill .k{color:var(--fg-faint)}.pill .v{color:var(--fg)}.state-chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-family:var(--mono);padding:2px 9px;border-radius:999px;border:1px solid var(--border);color:var(--fg-muted);background:var(--bg-2);text-transform:uppercase;letter-spacing:.04em}.state-chip .d{display:none}.state-chip.ok{color:var(--ok);border-color:#65c28159;background:var(--ok-soft)}.state-chip.err{color:var(--error);border-color:#fa686359;background:var(--error-soft)}.state-chip.warn{color:var(--warn);border-color:#e3ad4b59;background:var(--warn-soft)}.state-chip.running{color:var(--accent-fg);border-color:#5da7ff66;border-color:oklch(.72 .16 254 / .4);background:var(--accent-soft)}.steps-scroll{overflow-y:auto;padding:18px 24px 80px}.step{position:relative}.step+.step{margin-top:4px}.step-num{width:22px;height:22px;border-radius:6px;background:var(--bg-3);border:1px solid var(--border);color:var(--fg-muted);font-family:var(--mono);font-size:11px;display:grid;place-items:center;flex-shrink:0}.step.subagent .step-num{border-color:#17d0d880;color:var(--subagent);background:var(--subagent-soft)}.step.errored .step-num{border-color:#fa686380;color:var(--error);background:var(--error-soft)}.step.aborted .step-num{border-color:#e3ad4b80;color:var(--warn);background:var(--warn-soft)}.step-card{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;transition:border-color .1s ease}.step-card:hover{border-color:var(--border-strong)}.step.errored .step-card{border-color:#fa686359}.step-summary{display:grid;grid-template-columns:auto auto 1fr auto;gap:10px;align-items:center;padding:9px 12px;cursor:pointer;-webkit-user-select:none;user-select:none}.step-summary:hover{background:var(--bg-2)}.step.subagent .step-card{background:linear-gradient(90deg,oklch(.78 .13 200 / .06) 0%,var(--bg-1) 220px);border-left:2px solid oklch(.78 .13 200 / .5)}.chev{width:14px;height:14px;color:var(--fg-faint);transition:transform .12s ease;flex-shrink:0}.step.open .chev{transform:rotate(90deg)}.step-summary-main{display:flex;align-items:center;gap:10px;min-width:0}.fn-badge{font-family:var(--mono);font-size:10.5px;color:var(--fg-muted);background:var(--bg-3);border:1px solid var(--border);padding:1px 6px;border-radius:4px;white-space:nowrap}.fn-badge.subagent{color:var(--subagent);background:var(--subagent-soft);border-color:#17d0d84d}.model-badge{font-family:var(--mono);font-size:11px;color:var(--fg-muted);display:inline-flex;align-items:center;gap:5px;flex-shrink:0;white-space:nowrap}.model-badge .dot{display:none}.snip{font-size:12px;color:var(--fg-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--sans);min-width:0}.snip .arrow{color:var(--fg-faint);margin:0 4px}.snip .out{color:var(--fg-muted)}.snip .tag{color:var(--tool);font-family:var(--mono);font-size:11px}.snip .tag.text{color:var(--text-out)}.snip .tag.reason{color:var(--reasoning)}.step-summary-aside{display:flex;align-items:center;gap:12px;font-family:var(--mono);font-size:11px;color:var(--fg-faint);flex-shrink:0}.step-summary-aside .v{color:var(--fg-muted)}.step-body{border-top:1px solid var(--border);display:grid;grid-template-columns:1fr 1fr;gap:0}.step-pane{padding:14px;min-width:0}.step-pane+.step-pane{border-left:1px solid var(--border)}.pane-head{display:flex;align-items:center;justify-content:space-between;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-faint);margin-bottom:10px}.pane-head .actions{display:flex;gap:4px}.pane-head .actions button{color:var(--fg-faint);background:transparent;border:0;font:inherit;cursor:pointer;padding:2px 4px;border-radius:3px}.pane-head .actions button:hover{color:var(--fg);background:var(--bg-3)}.msg{border-radius:var(--radius);background:var(--bg-2);border:1px solid var(--border);padding:8px 10px;margin-bottom:6px;font-size:12.5px}.msg.system{background:#23262c66}.msg-role{font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:var(--fg-faint);text-transform:uppercase;margin-bottom:4px;display:flex;align-items:center;gap:6px}.msg-content{font-family:var(--sans);color:var(--fg);line-height:1.5;white-space:pre-wrap;word-break:break-word}.msg.system .msg-content{color:var(--fg-muted);font-size:12px}.part{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:6px;overflow:hidden}.part-head{display:flex;align-items:center;gap:8px;padding:7px 10px;cursor:pointer;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase}.part-head .ico{width:12px;height:12px}.part-head .name{color:var(--fg);font-weight:500}.part-head .tail{margin-left:auto;font-family:var(--mono);font-size:10px;color:var(--fg-faint);text-transform:none;letter-spacing:0}.part-head .chev{width:11px;height:11px;color:var(--fg-faint)}.part.tool-call .part-head{background:#c28efb14;color:var(--tool);border-bottom:1px solid oklch(.74 .16 305 / .15)}.part.tool-result .part-head{background:#49d3a112;color:var(--text-out);border-bottom:1px solid oklch(.78 .14 165 / .15)}.part.reasoning .part-head{background:#f0ba5912;color:var(--reasoning);border-bottom:1px solid oklch(.82 .13 80 / .18)}.part.text-out .part-head{background:#49d3a10f;color:var(--text-out);border-bottom:1px solid oklch(.78 .14 165 / .15)}.part.collapsed .part-head{border-bottom:0}.part-body{padding:10px 12px;font-size:12.5px;color:var(--fg)}.part-body .reasoning-text{color:var(--fg-muted);font-style:italic;line-height:1.6;white-space:pre-wrap}.tool-call-id{font-family:var(--mono);font-size:10px;padding:1px 5px;border-radius:3px;background:#c28efb24;color:#d5b1ff;color:oklch(.82 .14 305);cursor:pointer;border:1px solid transparent}.tool-call-id.matched{background:#49d3a129;color:#70e9b9}.tool-call-id:hover{border-color:currentColor}.tool-call-id.highlight{outline:2px solid var(--accent);outline-offset:1px}.json{font-family:var(--mono);font-size:11.5px;color:var(--fg);background:var(--bg-4);border-radius:var(--radius-sm);padding:8px 10px;white-space:pre;overflow-x:auto;line-height:1.55;max-height:360px;overflow-y:auto}.json .k{color:#83bbff;color:oklch(.78 .13 254)}.json .s{color:#7fdc9a}.json .n{color:#f0ba59}.json .b{color:#cc9fff;color:oklch(.78 .16 305)}.json .nu,.json .p{color:var(--fg-faint)}.md{font-size:13px;line-height:1.6;color:var(--fg)}.md p{margin:0 0 8px}.md p:last-child{margin-bottom:0}.md strong{color:var(--fg);font-weight:600}.md em{color:var(--fg-muted)}.md code{font-family:var(--mono);font-size:12px;background:var(--bg-4);border:1px solid var(--border);padding:0 5px;border-radius:3px;color:#f0ba59}.md pre{font-family:var(--mono);font-size:12px;background:var(--bg-4);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;margin:8px 0;overflow-x:auto;color:var(--fg);line-height:1.55}.md pre code{background:transparent;border:0;padding:0;color:inherit}.md ul,.md ol{margin:0 0 8px 18px;padding:0}.md li{margin-bottom:2px}.md h2,.md h3{margin:8px 0 6px;font-size:14px;font-weight:600}.stream-cursor{display:inline-block;width:7px;height:14px;background:var(--accent);margin-left:2px;vertical-align:text-bottom;animation:blink 1s steps(2,end) infinite}@keyframes blink{50%{opacity:0}}.usage-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.usage-card{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px}.usage-card .l{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--fg-faint)}.usage-card .v{font-family:var(--mono);font-size:18px;color:var(--fg);margin-top:4px}.usage-card .bd{margin-top:6px;font-family:var(--mono);font-size:10.5px;color:var(--fg-dim);display:flex;flex-direction:column;gap:2px}.error-pane{margin-top:8px;border:1px solid oklch(.7 .18 25 / .35);background:var(--error-soft);border-radius:var(--radius);padding:10px 12px;display:flex;gap:10px;align-items:flex-start;color:var(--error);font-family:var(--mono);font-size:12px}.error-pane.warn{border-color:#e3ad4b59;background:var(--warn-soft);color:var(--warn)}.error-pane svg{flex-shrink:0;margin-top:1px}.step-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);padding:0 12px;background:var(--bg-1)}.step-tabs button{background:transparent;border:0;font-family:var(--sans);font-size:11.5px;color:var(--fg-dim);padding:8px 12px;cursor:pointer;position:relative;display:inline-flex;align-items:center;gap:6px;border-bottom:2px solid transparent;margin-bottom:-1px}.step-tabs button:hover{color:var(--fg)}.step-tabs button.active{color:var(--fg);border-bottom-color:var(--accent)}.step-tabs button .ct{font-family:var(--mono);font-size:10px;color:var(--fg-faint);background:var(--bg-3);padding:0 5px;border-radius:999px}.step-single{padding:14px}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:#ffffff0f;border-radius:999px;border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:#ffffff1f;border:2px solid transparent;background-clip:padding-box}.timeline{padding:16px 24px 80px;overflow-y:auto}.tl-head{display:grid;grid-template-columns:200px 1fr;gap:12px;position:sticky;top:0;background:var(--bg-0);z-index:2;padding-bottom:8px;border-bottom:1px solid var(--border)}.tl-axis{position:relative;height:22px}.tl-tick{position:absolute;top:0;font-family:var(--mono);font-size:10px;color:var(--fg-faint);padding-left:4px;border-left:1px solid var(--border);height:22px}.tl-rows{display:grid;gap:6px;padding-top:12px}.tl-row{display:grid;grid-template-columns:200px 1fr;gap:12px;align-items:center;min-height:32px}.tl-label{font-size:12px;color:var(--fg-muted);display:flex;align-items:center;gap:8px;min-width:0}.tl-label .step-num{width:22px;height:22px;font-size:10.5px}.tl-label .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--mono);font-size:11px}.tl-track{position:relative;height:28px;background:linear-gradient(90deg,var(--border-subtle) 1px,transparent 1px) 0 0 / 10% 100% repeat-x,var(--bg-1);border-radius:var(--radius-sm);border:1px solid var(--border)}.tl-bar{position:absolute;top:4px;bottom:4px;border-radius:3px;background:var(--accent);border:1px solid oklch(1 0 0 / .1);cursor:pointer;transition:filter .1s ease}.tl-bar:hover{filter:brightness(1.15)}.tl-bar.subagent{background:var(--subagent)}.tl-bar.errored{background:var(--error)}.tl-bar.aborted{background:var(--warn)}.tl-bar.running{background:linear-gradient(90deg,var(--accent),oklch(.72 .16 254 / .3));animation:shimmer 2s ease-in-out infinite}@keyframes shimmer{0%,to{opacity:.95}50%{opacity:.6}}.tl-bar-label{position:absolute;left:6px;top:50%;transform:translateY(-50%);font-family:var(--mono);font-size:10px;color:#0a0b0d;white-space:nowrap;pointer-events:none;font-weight:600;letter-spacing:.02em}.tweaks-anchor{position:fixed;bottom:16px;right:16px;z-index:50}.chat-scroll{overflow-y:auto;padding:18px 24px 80px}.chat-inner{max-width:820px;margin:0 auto;display:grid;gap:14px}.chat-turn{display:grid;gap:6px}.chat-bubble{border-radius:10px;padding:10px 14px;background:var(--bg-1);border:1px solid var(--border);font-size:13px;line-height:1.55;max-width:92%}.chat-bubble.user{justify-self:end;background:var(--accent-soft);border-color:#5da7ff59;border-color:oklch(.72 .16 254 / .35);color:var(--fg);max-width:72%}.chat-bubble.assistant{justify-self:start;background:var(--bg-1);width:100%}.chat-bubble.assistant.error{border-color:#fa68634d}.chat-bubble.assistant.aborted{border-color:#e3ad4b4d}.bubble-meta{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);margin-bottom:6px;flex-wrap:wrap}.bubble-meta>*{white-space:nowrap}.bubble-meta .sep{opacity:.55}.bubble-meta .model-extra{color:var(--fg-dim);background:var(--bg-3);padding:0 5px;border-radius:999px;font-size:10px}.chat-bubble.user .bubble-meta{color:#83bbff;color:oklch(.78 .13 254)}.bubble-body{color:var(--fg)}.bubble-body .md{font-size:13px}.bubble-empty{color:var(--fg-faint);font-style:italic;font-size:12.5px;display:inline-flex;align-items:center;gap:6px}.bubble-empty.err{color:var(--error);font-style:normal}.bubble-foot{margin-top:10px;padding-top:8px;border-top:1px dashed var(--border);display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);cursor:pointer;-webkit-user-select:none;user-select:none}.bubble-foot:hover{color:var(--fg-muted)}.bubble-foot .run-id-chip{margin-left:auto;font-size:10px;color:var(--fg-faint);background:var(--bg-3);border:1px solid var(--border);padding:0 6px;border-radius:999px}.inline-steps{margin-top:12px;padding-top:12px;border-top:1px solid var(--border);display:grid;gap:4px}.thread-run{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:6px}.thread-run:hover,.thread-run.open{border-color:var(--border-strong)}.thread-run.errored{border-color:#fa68634d}.thread-run-head{display:grid;grid-template-columns:auto auto 1fr auto;gap:10px;align-items:center;padding:10px 14px;cursor:pointer;-webkit-user-select:none;user-select:none}.thread-run-head .chev{color:var(--fg-faint);transition:transform .12s ease}.thread-run.open .thread-run-head .chev{transform:rotate(90deg)}.thread-run-title{font-size:12.5px;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.thread-run-aside{display:flex;gap:14px;font-family:var(--mono);font-size:11px;color:var(--fg-faint)}.thread-run .inline-steps{margin:0;padding:12px 14px;border-top:1px solid var(--border)}.kbd-inline{font-family:var(--mono);font-size:10.5px;background:var(--bg-3);border:1px solid var(--border-strong);border-radius:3px;padding:0 4px;color:var(--fg-muted)}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:grid;place-items:center;z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.dialog{background:var(--bg-1);border:1px solid var(--border-strong);border-radius:var(--radius-lg);padding:20px;width:380px;box-shadow:0 16px 40px #00000080}.dialog h3{margin:0 0 6px;font-size:14px;font-weight:600}.dialog p{margin:0 0 16px;color:var(--fg-muted);font-size:13px}.dialog .actions{display:flex;justify-content:flex-end;gap:8px}.btn.primary{background:var(--accent);color:#0f1216;border-color:var(--accent);font-weight:500}.btn.primary:hover{background:#77b4ff;background:oklch(.76 .16 254)}.btn.dangerous{background:var(--error);color:#0f1216;border-color:var(--error);font-weight:500}.btn.dangerous:hover{background:#ff7e77;background:oklch(.74 .18 25)}.app.dense .run-card{padding:7px 10px 7px 6px}.app.dense .step+.step{margin-top:2px}.app.dense .steps-scroll{padding:12px 18px 60px}.app.dense .detail-head{padding:12px 18px}.sidebar-load-more{display:block;width:calc(100% - 16px);margin:8px;padding:8px 10px;font-family:var(--mono);font-size:11px;color:var(--fg-muted);background:var(--bg-2);border:1px dashed var(--border);border-radius:6px;cursor:pointer;text-align:center;letter-spacing:.04em;text-transform:uppercase}.sidebar-load-more:hover:not(:disabled){border-style:solid;border-color:var(--border-strong);color:var(--fg)}.sidebar-load-more:disabled{opacity:.5;cursor:progress}.cm.subagent{border-left:2px solid var(--subagent)}.cm.subagent .cm-meta{color:var(--subagent)}.sub-badge{font-family:var(--mono);font-size:9px;padding:0 5px;border-radius:3px;background:var(--subagent-soft);color:var(--subagent);letter-spacing:.04em;text-transform:uppercase}.run-row-compact.subagent .rrc-idx{background:var(--subagent-soft);color:var(--subagent);border-color:#17d0d880}.run-row-compact.subagent .rrc-title{color:var(--subagent)}.ttl-rl-idx.subagent{background:var(--subagent-soft);color:var(--subagent);border-color:#17d0d880}.ttl-rl-bar.subagent{background:var(--subagent-soft);border-color:var(--subagent)}.ttl-rl-bar.subagent .ttl-rl-bar-dur,.ttl-rl-bar.subagent .ttl-rl-bar-steps{color:var(--subagent)}
@@ -0,0 +1,19 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>ailog — LLM viewer</title>
7
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
8
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
+ <link
10
+ href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap"
11
+ rel="stylesheet"
12
+ />
13
+ <script type="module" crossorigin src="/assets/index-BBTm7Mxn.js"></script>
14
+ <link rel="stylesheet" crossorigin href="/assets/index-x-B7u97h.css">
15
+ </head>
16
+ <body>
17
+ <div id="root"></div>
18
+ </body>
19
+ </html>
@@ -0,0 +1,122 @@
1
+ import { LanguageModelV4Middleware } from '@ai-sdk/provider';
2
+
3
+ interface AiSdkMiddlewareOptions {
4
+ /**
5
+ * Optional label stored on the run, surfaced as `function_id` in the
6
+ * viewer. Honored only when the run is created (first writer wins).
7
+ */
8
+ functionId?: string;
9
+ /**
10
+ * Optional thread id. When provided, every run produced by this
11
+ * middleware instance is tagged with this thread, so orchestrator and
12
+ * subagent runs that share the same `threadId` show up side-by-side
13
+ * under one Thread in the viewer. **If omitted**, an `auto-<short>`
14
+ * thread is generated for each run.
15
+ */
16
+ threadId?: string;
17
+ /**
18
+ * Caller-supplied metadata stored on the **Thread** (e.g. `userId`,
19
+ * `organizationId`, `topic`, `persona`). First-writer-wins: only the
20
+ * call that creates the Thread record sets this; subsequent runs
21
+ * joining the same thread can't change it.
22
+ */
23
+ metadata?: Record<string, unknown> | null;
24
+ }
25
+ /**
26
+ * AI SDK `LanguageModelV4Middleware` that records every `generateText`
27
+ * / `streamText` call to ailog.
28
+ *
29
+ * Each middleware instance owns one Run. Within a single `generateText`
30
+ * invocation (incl. multi-step tool-calling) every step lands in that
31
+ * Run. To group multiple Runs (e.g. orchestrator + subagent calls that
32
+ * each construct their own wrapped model), share a `threadId`:
33
+ *
34
+ * ```ts
35
+ * import { aiSdkMiddleware } from '@ailog/cli';
36
+ *
37
+ * const orchestrator = wrapLanguageModel({
38
+ * middleware: aiSdkMiddleware({ threadId: 'tokyo', functionId: 'plan-trip' }),
39
+ * model,
40
+ * });
41
+ *
42
+ * // Inside a tool's execute callback — share the threadId, not the run:
43
+ * const subagent = wrapLanguageModel({
44
+ * middleware: aiSdkMiddleware({ threadId: 'tokyo' }),
45
+ * model,
46
+ * });
47
+ * ```
48
+ */
49
+ declare const aiSdkMiddleware: (options?: AiSdkMiddlewareOptions) => LanguageModelV4Middleware;
50
+
51
+ interface StartStepInput {
52
+ type?: 'generate' | 'stream';
53
+ modelId: string;
54
+ provider?: string | null;
55
+ input: unknown;
56
+ providerOptions?: unknown;
57
+ }
58
+ interface EndStepInput {
59
+ output?: unknown;
60
+ usage?: unknown;
61
+ error?: unknown;
62
+ rawRequest?: unknown;
63
+ rawResponse?: unknown;
64
+ rawChunks?: unknown;
65
+ }
66
+ interface StepHandle {
67
+ id: string;
68
+ end(result: EndStepInput): Promise<void>;
69
+ }
70
+ interface RunHandle {
71
+ id: string;
72
+ step(input: StartStepInput): Promise<StepHandle>;
73
+ }
74
+ interface CreateLoggerOptions {
75
+ /**
76
+ * Run label shown in the viewer. Honored only when the run is being
77
+ * created (first writer wins).
78
+ */
79
+ functionId?: string;
80
+ /**
81
+ * Optional thread id. When provided, the run is tagged with this id
82
+ * and a `Thread` record is created or updated. **If omitted**, an
83
+ * `auto-<short>` thread is generated. Two loggers that share a
84
+ * `threadId` create two distinct Runs that show up side-by-side in
85
+ * the same Thread (run-level merging across loggers is intentionally
86
+ * not supported — share a Thread, not a Run).
87
+ */
88
+ threadId?: string;
89
+ /**
90
+ * Caller-supplied metadata stored on the **Thread** (e.g. `userId`,
91
+ * `topic`, `persona`). First-writer-wins — only the call that
92
+ * actually creates the Thread record sets this.
93
+ */
94
+ metadata?: Record<string, unknown> | null;
95
+ }
96
+ /**
97
+ * Provider-agnostic logger. Use this to record LLM calls from any SDK
98
+ * or provider, not just the Vercel AI SDK. Each `createLogger()` call
99
+ * creates a fresh Run; pass a shared `threadId` to group several Runs
100
+ * (orchestrator + subagent loggers) under one Thread in the viewer.
101
+ *
102
+ * ```ts
103
+ * import { createLogger } from '@ailog/cli';
104
+ *
105
+ * const run = await createLogger({ functionId: 'chat' });
106
+ * const step = await run.step({
107
+ * modelId: 'claude-opus-4-7',
108
+ * provider: 'anthropic',
109
+ * input: { messages },
110
+ * });
111
+ * try {
112
+ * const response = await callAnthropic(messages);
113
+ * await step.end({ output: response, usage: response.usage });
114
+ * } catch (error) {
115
+ * await step.end({ error });
116
+ * throw error;
117
+ * }
118
+ * ```
119
+ */
120
+ declare function createLogger(options?: CreateLoggerOptions): Promise<RunHandle>;
121
+
122
+ export { aiSdkMiddleware, createLogger };