@qredence/fleet 0.7.4 → 0.9.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 (227) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +5 -4
  3. package/bin/fleet-prime.mjs +33 -6
  4. package/bin/prime-runtime.mjs +79 -0
  5. package/dist/runtime-manifest.json +32 -0
  6. package/dist/web/client/assets/DialogTitle-BlVq-tcv.js +1 -0
  7. package/dist/web/client/assets/FloatingPortal-D8-EPDs2.js +1 -0
  8. package/dist/web/client/assets/activity-BPIKUzOU.js +1 -0
  9. package/dist/web/client/assets/agents-CGjUBYX7.js +2 -0
  10. package/dist/web/client/assets/agents-page-CTuFJL9H.js +1 -0
  11. package/dist/web/client/assets/alert-CzWGeumf.js +1 -0
  12. package/dist/web/client/assets/alert-dialog-D-e1Pr4q.js +1 -0
  13. package/dist/web/client/assets/arrow-up-right-CG9RNk4p.js +1 -0
  14. package/dist/web/client/assets/artifacts-panel-6JEdy6jU.js +1 -0
  15. package/dist/web/client/assets/badge-CzQFgmVK.js +1 -0
  16. package/dist/web/client/assets/button-CWYjn8Zk.js +1 -0
  17. package/dist/web/client/assets/{card-Hngi3HGC.js → card-Dj1SnGUU.js} +1 -1
  18. package/dist/web/client/assets/chat-command-palette-Bxr5EkO6.js +1 -0
  19. package/dist/web/client/assets/chat-hpzV6IA6.js +57 -0
  20. package/dist/web/client/assets/chat-queries-CfZiupub.js +3 -0
  21. package/dist/web/client/assets/clock-3-BwWCSCm_.js +1 -0
  22. package/dist/web/client/assets/code-block-pKKmFZ5w.js +3 -0
  23. package/dist/web/client/assets/collapsible-Bk6zCsRX.js +1 -0
  24. package/dist/web/client/assets/{command-CmtCIDdH.js → command-xo-NK4xO.js} +1 -1
  25. package/dist/web/client/assets/connectors-CFxLqG2x.js +2 -0
  26. package/dist/web/client/assets/connectors-page-DQJdoAnl.js +1 -0
  27. package/dist/web/client/assets/create-project-dialog-Db-WhUmP.js +1 -0
  28. package/dist/web/client/assets/createBaseUIEventDetails-DIxvaz-Y.js +1 -0
  29. package/dist/web/client/assets/dialog-CK8dym6z.js +1 -0
  30. package/dist/web/client/assets/eye-iNSvs0UA.js +1 -0
  31. package/dist/web/client/assets/file-code-corner-BkDULqko.js +1 -0
  32. package/dist/web/client/assets/{fork-picker-dialog-DfGlB17w.js → fork-picker-dialog-DSaFeUii.js} +1 -1
  33. package/dist/web/client/assets/globals-DJhWyayo.css +2 -0
  34. package/dist/web/client/assets/index-C9FHZDGw.js +13 -0
  35. package/dist/web/client/assets/input-CBoTMPC_.js +1 -0
  36. package/dist/web/client/assets/{input-group-EPMGh55u.js → input-group-BFubAtz9.js} +1 -1
  37. package/dist/web/client/assets/{ipython-tool-CMhnRVrC.js → ipython-tool-bieUhw9K.js} +1 -1
  38. package/dist/web/client/assets/markdown-CvBfbPCn.js +2 -0
  39. package/dist/web/client/assets/markdown-code-rFOkzN5N.js +4 -0
  40. package/dist/web/client/assets/mcp-connections-section-DEo6Kemv.js +2 -0
  41. package/dist/web/client/assets/message-queue-Btjt9wK2.js +1 -0
  42. package/dist/web/client/assets/{model-selector-list-BiU_7ivt.js → model-selector-list-CbDAT0Rw.js} +1 -1
  43. package/dist/web/client/assets/mutation-Da9zdeWr.js +1 -0
  44. package/dist/web/client/assets/notify-BIL0-CGy.js +1 -0
  45. package/dist/web/client/assets/open-panel-action-message-SdA1VU42.js +1 -0
  46. package/dist/web/client/assets/openui-renderer-DG-iML7M.js +291 -0
  47. package/dist/web/client/assets/pencil-Cbgq3ybX.js +1 -0
  48. package/dist/web/client/assets/plus-DUP2JPVG.js +1 -0
  49. package/dist/web/client/assets/product-page-header-Ck6I13CE.js +1 -0
  50. package/dist/web/client/assets/{prompt-input-Dy-DSPqF.js → prompt-input-CoV1gTUQ.js} +1 -1
  51. package/dist/web/client/assets/{prompt-suggestions-CrpAiKeB.js → prompt-suggestions-CAY5JI-C.js} +1 -1
  52. package/dist/web/client/assets/provider-catalog-CLEDlH_v.js +1 -0
  53. package/dist/web/client/assets/provider-label-BItazQ6H.js +1 -0
  54. package/dist/web/client/assets/reasoning-line-DGdPUMwT.js +1 -0
  55. package/dist/web/client/assets/rehype-katex-DITkIpVl.js +259 -0
  56. package/dist/web/client/assets/{repl-panel-DN5kZAcB.js → repl-panel-5xgkDXO5.js} +1 -1
  57. package/dist/web/client/assets/{resources-panel-DD6iWOF3.js → resources-panel-aJCKt9eF.js} +1 -1
  58. package/dist/web/client/assets/right-panel-context-CjX-HkDO.js +1 -0
  59. package/dist/web/client/assets/right-panel-registry-BAJ6TuEY.js +2 -0
  60. package/dist/web/client/assets/rotate-ccw-DLkfsmG9.js +1 -0
  61. package/dist/web/client/assets/routes-ja_liP8Z.js +14 -0
  62. package/dist/web/client/assets/select-DYh951qi.js +1 -0
  63. package/dist/web/client/assets/session-activity-panel-DwaXiSrS.js +1 -0
  64. package/dist/web/client/assets/{session-insights-panel-D0v_DKcb.js → session-insights-panel-BXEmuJKf.js} +1 -1
  65. package/dist/web/client/assets/session-reasoning-panel-CjJJK_bq.js +1 -0
  66. package/dist/web/client/assets/session-tool-renderer-DEABxZG3.js +166 -0
  67. package/dist/web/client/assets/{session-tree-panel-BBwP_EK2.js → session-tree-panel-5QgMvXoX.js} +1 -1
  68. package/dist/web/client/assets/settings-dialog-DiikSLhF.js +1 -0
  69. package/dist/web/client/assets/shield-check-7HDd-2Fn.js +1 -0
  70. package/dist/web/client/assets/{skeleton-DNAr5ULI.js → skeleton-B_Lq2XFl.js} +1 -1
  71. package/dist/web/client/assets/{skeleton-loaders-B28mF4tJ.js → skeleton-loaders-DWc1eDL3.js} +1 -1
  72. package/dist/web/client/assets/sparkles-CASAe1AI.js +1 -0
  73. package/dist/web/client/assets/{spinner-CSBXk3Lo.js → spinner-B5TaKP7k.js} +1 -1
  74. package/dist/web/client/assets/{subagent-chat-panel-DhvBO4dQ.js → subagent-chat-panel-R2RoX1Yt.js} +1 -1
  75. package/dist/web/client/assets/subagent-transcript-DVZhMo7a.js +1 -0
  76. package/dist/web/client/assets/{subagents-panel-DRo8Xs6j.js → subagents-panel-CMMRUP8F.js} +1 -1
  77. package/dist/web/client/assets/surfaces-BUjUJTyD.js +1 -0
  78. package/dist/web/client/assets/switch-BrxDfsX6.js +1 -0
  79. package/dist/web/client/assets/toast-BNWkgZ0u.js +1 -0
  80. package/dist/web/client/assets/tool-output-normalizer-DDU09Zc6.js +4 -0
  81. package/dist/web/client/assets/tool-part-normalizer-CF6bmJ0s.js +4 -0
  82. package/dist/web/client/assets/tool-result-7qREIVv_.js +5 -0
  83. package/dist/web/client/assets/tool-timeline-CGhwMeNl.js +2 -0
  84. package/dist/web/client/assets/trace-IsV5RRvM.js +1 -0
  85. package/dist/web/client/assets/trash-sm2UyOxe.js +1 -0
  86. package/dist/web/client/assets/types-gIgIxnnG.js +1 -0
  87. package/dist/web/client/assets/ui-preferences-B-PNDkyY.js +1 -0
  88. package/dist/web/client/assets/use-hover-capable-CLq8BADD.js +1 -0
  89. package/dist/web/client/assets/useBaseUiId-lKfDDIcw.js +1 -0
  90. package/dist/web/client/assets/useButton-CvcmqA2s.js +1 -0
  91. package/dist/web/client/assets/useNavigate-CVhM7pag.js +1 -0
  92. package/dist/web/client/assets/useRender-CzJUrRlB.js +1 -0
  93. package/dist/web/client/assets/useScrollLock-BcsteNzT.js +1 -0
  94. package/dist/web/client/assets/{utils-CFDGLzf6.js → utils-oBThwhjm.js} +1 -1
  95. package/dist/web/client/assets/with-selector-B_VDO56x.js +1 -0
  96. package/dist/web/client/assets/{workspace-panel-DdZutYnd.js → workspace-panel-Da5I4p_t.js} +1 -1
  97. package/dist/web/client/assets/workspace-path-nav-D-77sJ_A.js +2 -0
  98. package/dist/web/client/assets/wrench-BXX_Ah2s.js +1 -0
  99. package/dist/web/client/bundle-budget.json +6 -6
  100. package/dist/web/server/_tanstack-start-manifest_v-B6ne-00G-OFX7UD4K.js +119 -0
  101. package/dist/web/server/agents-BwzqhPjK-ANFHE5AG.js +22 -0
  102. package/dist/web/server/agents-page-DEqPV-eG-BR5MR74O.js +215 -0
  103. package/dist/web/server/{artifacts-panel-COSC8o7j-GKW2HH2G.js → artifacts-panel-DLO8OfXb-B2ZWCDFP.js} +35 -29
  104. package/dist/web/server/{chat-command-palette-CuOWdzkk-PKZQ5EZP.js → chat-command-palette-CaDQAMAu-KDH7BTDS.js} +22 -15
  105. package/dist/web/server/chunk-2ETDIMNM.js +40 -0
  106. package/dist/web/server/{chunk-2VKVSL6Y.js → chunk-35RIM6VP.js} +128 -127
  107. package/dist/web/server/chunk-5IE54MRG.js +207 -0
  108. package/dist/web/server/{chunk-VUBITQ5X.js → chunk-5MOXRFX6.js} +180 -7
  109. package/dist/web/server/{chunk-6GTTTYSE.js → chunk-6AFVCERK.js} +72 -79
  110. package/dist/web/server/chunk-6GYLXDX3.js +588 -0
  111. package/dist/web/server/chunk-7DQQMT5V.js +8993 -0
  112. package/dist/web/server/chunk-APOS34PW.js +8965 -0
  113. package/dist/web/server/{chunk-BUKOEXE7.js → chunk-AXN2OBPF.js} +2 -4
  114. package/dist/web/server/{chunk-WCKKN5BR.js → chunk-B5FKCW75.js} +357 -910
  115. package/dist/web/server/chunk-BD7YKYWL.js +1007 -0
  116. package/dist/web/server/{chunk-36CAMOVG.js → chunk-BZ2EAUZZ.js} +10 -12
  117. package/dist/web/server/chunk-CE7U5QB2.js +42 -0
  118. package/dist/web/server/chunk-FNV3WZXL.js +125 -0
  119. package/dist/web/server/{chunk-GLSR4ZI2.js → chunk-FSQWWR2M.js} +698 -832
  120. package/dist/web/server/chunk-FT7HNDR5.js +143 -0
  121. package/dist/web/server/chunk-GNXIDE26.js +44 -0
  122. package/dist/web/server/{chunk-ORCOCCER.js → chunk-HAFELESQ.js} +5 -7
  123. package/dist/web/server/{chunk-LLO4MNGE.js → chunk-HUHUPGHT.js} +53 -45
  124. package/dist/web/server/{chunk-QSM3BRMA.js → chunk-KBMRRJQN.js} +256 -157
  125. package/dist/web/server/chunk-KDCSEISZ.js +6890 -0
  126. package/dist/web/server/chunk-KSGGSGOA.js +50 -0
  127. package/dist/web/server/chunk-PQVTLG3E.js +270 -0
  128. package/dist/web/server/{chunk-YU6RHHK6.js → chunk-Q4ECIATK.js} +65 -53
  129. package/dist/web/server/{chunk-IN2ATSEG.js → chunk-R4BS3KYI.js} +2 -4
  130. package/dist/web/server/chunk-RX2ZJARF.js +73 -0
  131. package/dist/web/server/{chunk-AKSDWYJY.js → chunk-SYS5FDNA.js} +5 -5
  132. package/dist/web/server/chunk-TOJA3X5N.js +421 -0
  133. package/dist/web/server/chunk-TQ2RECTH.js +193 -0
  134. package/dist/web/server/{chunk-KHHXJZK7.js → chunk-TTNONWZZ.js} +16001 -14668
  135. package/dist/web/server/chunk-TXZDDJCT.js +5115 -0
  136. package/dist/web/server/{chunk-XA7EOCHM.js → chunk-UDUG3MYZ.js} +2 -2
  137. package/dist/web/server/{chunk-EBC7QORX.js → chunk-V2GCVTDP.js} +5056 -12556
  138. package/dist/web/server/{chunk-TMQ3MT3D.js → chunk-VDEUVEWL.js} +2255 -1
  139. package/dist/web/server/chunk-VM3U6PUU.js +769 -0
  140. package/dist/web/server/connectors-C0xm91Ss-DJVBGD73.js +22 -0
  141. package/dist/web/server/connectors-page-B6tJNZ6c-R5K4NSAT.js +66 -0
  142. package/dist/web/server/{create-project-dialog-0-arQpsX-ZELQKHS5.js → create-project-dialog-PFPHHWIV-GH7JR5IK.js} +27 -18
  143. package/dist/web/server/{dist-7G2NZPF4.js → dist-GQUZLXN5.js} +2 -2
  144. package/dist/web/server/{dist-E5637ZAY.js → dist-MN5NWCX6.js} +1 -1
  145. package/dist/web/server/{fork-picker-dialog-fj9p33Mq-I5SA3GLJ.js → fork-picker-dialog-DFpKOdAw-JPLJSYYU.js} +7 -12
  146. package/dist/web/server/{markdown-CShfYRVO-RBTK7TRB.js → markdown-Cc8V9dOF-JTNTJKQU.js} +7 -5
  147. package/dist/web/server/{markdown-code-BDV_2b2T-6JYA5FWZ.js → markdown-code-gaRnbgNM-V5LIRYCD.js} +46 -8
  148. package/dist/web/server/{message-queue-BBC843IU-GY4ZIMM4.js → message-queue-nQ2_kU82-KKSLYR4S.js} +7 -16
  149. package/dist/web/server/{model-selector-list-DE6aLNXt-LJZMCYOI.js → model-selector-list-By_G7_Hr-GXT27BZO.js} +12 -16
  150. package/dist/web/server/{openui-renderer-C3aqSKuS-PWLWJFYO.js → openui-renderer-B9D8-Av--LFZP4U5V.js} +20 -15
  151. package/dist/web/server/{prompt-suggestions-CpTK_fHV-UKJDTLVM.js → prompt-suggestions-B67Uy5Rk-5SMTSIFQ.js} +5 -4
  152. package/dist/web/server/{rehype-katex-IDPYWU6M.js → rehype-katex-CYHGKI6Q.js} +490 -843
  153. package/dist/web/server/{repl-panel-1kSS1UGd-U64BPA7X.js → repl-panel-1kSS1UGd-POXRYDDJ.js} +2 -3
  154. package/dist/web/server/{resources-panel-DWb0eGKa-K4EM3H7Y.js → resources-panel-CTzOOKPz-5G6RS2D6.js} +18 -12
  155. package/dist/web/server/router-CnBux_Ld-YTVBMJFL.js +23 -0
  156. package/dist/web/server/routes-BUGzvQoO-WW43X7W2.js +124 -0
  157. package/dist/web/server/server.js +3 -3
  158. package/dist/web/server/session-activity-panel-f0d3fCm7-I6L5IKFQ.js +181 -0
  159. package/dist/web/server/{session-insights-panel-CfMX2NRu-6HWZTTAC.js → session-insights-panel-BiVObm_6-AP4FITT7.js} +2 -12
  160. package/dist/web/server/session-reasoning-panel-QIt_xjP0-FKJWMNHO.js +70 -0
  161. package/dist/web/server/session-tool-renderer-Cg_ZPHxS-BNQKNJNZ.js +34 -0
  162. package/dist/web/server/{session-tree-panel-HNl6R9VZ-4JUF34M7.js → session-tree-panel-B--el8O5-NZOZJM5L.js} +18 -13
  163. package/dist/web/server/{settings-dialog-DGZBA5Z_-6HYFMPNZ.js → settings-dialog-D_eJN2ia-W47Y474K.js} +104 -795
  164. package/dist/web/server/{subagent-chat-panel-DuB4hqUk-LDCAJOCL.js → subagent-chat-panel-C9nWP21E-D5C2TTYD.js} +22 -17
  165. package/dist/web/server/{subagents-panel-wAvx3-Rs-L6UTDFUX.js → subagents-panel-fAKvBNRG-O7QHXNE2.js} +26 -22
  166. package/dist/web/server/{workspace-panel-CPzJZwgv-YS7PTI5C.js → workspace-panel-CZMNMU63-SYOSM3B7.js} +23 -17
  167. package/package.json +2 -2
  168. package/dist/web/client/assets/DialogTitle-D-zqaHvF.js +0 -1
  169. package/dist/web/client/assets/FloatingPortal-73ZRZeD9.js +0 -1
  170. package/dist/web/client/assets/action-swap-BcFwS6is.js +0 -1
  171. package/dist/web/client/assets/alert-dialog-DtXvVhsF.js +0 -1
  172. package/dist/web/client/assets/artifacts-panel-Bseg97yQ.js +0 -1
  173. package/dist/web/client/assets/badge-C--lf3bb.js +0 -57
  174. package/dist/web/client/assets/button-BJZe4vNJ.js +0 -1
  175. package/dist/web/client/assets/chat-command-palette-D_rm1r9d.js +0 -1
  176. package/dist/web/client/assets/chevron-up-CqeJYyZO.js +0 -1
  177. package/dist/web/client/assets/collapsible-DauSnbYp.js +0 -1
  178. package/dist/web/client/assets/create-project-dialog-m-9aoobN.js +0 -1
  179. package/dist/web/client/assets/createBaseUIEventDetails-DklXWq23.js +0 -1
  180. package/dist/web/client/assets/dialog-Ddouieuu.js +0 -1
  181. package/dist/web/client/assets/eye-Cs0lNChA.js +0 -1
  182. package/dist/web/client/assets/globals-C961mr-b.css +0 -2
  183. package/dist/web/client/assets/index-Bz5W4EOn.js +0 -13
  184. package/dist/web/client/assets/input-Def1xOZz.js +0 -1
  185. package/dist/web/client/assets/markdown-Big27m-v.js +0 -2
  186. package/dist/web/client/assets/markdown-code-7L4RiS50.js +0 -3
  187. package/dist/web/client/assets/message-queue-Bg2MiJHM.js +0 -1
  188. package/dist/web/client/assets/mutation-DOi2Qgfa.js +0 -1
  189. package/dist/web/client/assets/notify-DhtmUPfE.js +0 -1
  190. package/dist/web/client/assets/openui-renderer-MIB3JKYa.js +0 -291
  191. package/dist/web/client/assets/provider-label-B_vy60P0.js +0 -1
  192. package/dist/web/client/assets/rehype-katex-A4PtQgTX.js +0 -259
  193. package/dist/web/client/assets/right-panel-context-DHKWoetk.js +0 -1
  194. package/dist/web/client/assets/right-panel-registry-hKJN__3l.js +0 -2
  195. package/dist/web/client/assets/routes-C3h32Lj_.js +0 -16
  196. package/dist/web/client/assets/select-Buvv1tIo.js +0 -1
  197. package/dist/web/client/assets/session-reasoning-panel-DmEbXOrR.js +0 -1
  198. package/dist/web/client/assets/session-tool-renderer-Daol5fJw.js +0 -169
  199. package/dist/web/client/assets/settings-dialog-DYbx3xuq.js +0 -2
  200. package/dist/web/client/assets/sparkles-D_ANe-HY.js +0 -1
  201. package/dist/web/client/assets/subagent-transcript-Bx-rHni-.js +0 -1
  202. package/dist/web/client/assets/surfaces-B8xTOFeK.js +0 -1
  203. package/dist/web/client/assets/switch-CDfAwEvs.js +0 -1
  204. package/dist/web/client/assets/terminal-Ceucj7us.js +0 -1
  205. package/dist/web/client/assets/toast-9zXN-yVk.js +0 -1
  206. package/dist/web/client/assets/tool-part-normalizer-NbPs9kd1.js +0 -4
  207. package/dist/web/client/assets/tool-result-BccnO34D.js +0 -4
  208. package/dist/web/client/assets/tool-timeline-DlBZyd4j.js +0 -1
  209. package/dist/web/client/assets/types-D5hZ8IyV.js +0 -1
  210. package/dist/web/client/assets/ui-preferences-1YaENqef.js +0 -1
  211. package/dist/web/client/assets/use-hover-capable-MwFjBLZQ.js +0 -1
  212. package/dist/web/client/assets/workspace-path-nav-BRwuLsFl.js +0 -2
  213. package/dist/web/client/assets/wrench-BYnD147U.js +0 -1
  214. package/dist/web/server/_tanstack-start-manifest_v-YlngJGUa-YTWBGR7L.js +0 -93
  215. package/dist/web/server/chunk-2PAW6K4Q.js +0 -56
  216. package/dist/web/server/chunk-CHSKEU3V.js +0 -166
  217. package/dist/web/server/chunk-FB3UHLLN.js +0 -49
  218. package/dist/web/server/chunk-GLH2GWMG.js +0 -2182
  219. package/dist/web/server/chunk-OXEAXEWD.js +0 -13
  220. package/dist/web/server/chunk-SIJVVYQT.js +0 -234
  221. package/dist/web/server/chunk-UQV2NU63.js +0 -163
  222. package/dist/web/server/chunk-ZUZPJNLY.js +0 -25217
  223. package/dist/web/server/router-DZYr-9uT-AEXHEFXF.js +0 -31
  224. package/dist/web/server/routes-vYxWRhis-AAZ73SNP.js +0 -120
  225. package/dist/web/server/session-reasoning-panel-XXU2yIOW-XXCKHISS.js +0 -192
  226. package/dist/web/server/session-tool-renderer-Dtt74Mts-7YYNSWRV.js +0 -29
  227. package/dist/web/server/tool-timeline-BKWsrZHK-3LGCOTPH.js +0 -12
@@ -1,13 +1,22 @@
1
1
  import {
2
- ActionSwapRollText,
3
- AgentDisclosure,
2
+ EASE_OUT,
3
+ EASE_OUT_CSS,
4
4
  SPRING_PRESS,
5
5
  SPRING_SWAP
6
- } from "./chunk-EBC7QORX.js";
6
+ } from "./chunk-RX2ZJARF.js";
7
7
  import {
8
+ AnimatePresence,
8
9
  m,
9
10
  useReducedMotion
10
- } from "./chunk-ZUZPJNLY.js";
11
+ } from "./chunk-7DQQMT5V.js";
12
+ import {
13
+ CodeBlock,
14
+ CodeBlockActions,
15
+ CodeBlockContent,
16
+ CodeBlockCopyButton,
17
+ CodeBlockHeader,
18
+ CodeBlockTitle
19
+ } from "./chunk-FNV3WZXL.js";
11
20
  import {
12
21
  Ban,
13
22
  Braces,
@@ -19,13 +28,11 @@ import {
19
28
  FileCodeCorner,
20
29
  LoaderCircle,
21
30
  SquareTerminal,
22
- Wrench
23
- } from "./chunk-GLH2GWMG.js";
24
- import {
31
+ Wrench,
25
32
  cn
26
- } from "./chunk-TMQ3MT3D.js";
33
+ } from "./chunk-VDEUVEWL.js";
27
34
 
28
- // web/app/dist/server/assets/tool-result-CWKqHr9Q.js
35
+ // web/app/dist/server/assets/tool-result-B10zDHzv.js
29
36
  import { useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from "react";
30
37
  import { jsx, jsxs } from "react/jsx-runtime";
31
38
  var LIGHT_THEME = "github-light-high-contrast";
@@ -113,127 +120,42 @@ function useAgentCodeTokens(code, language) {
113
120
  if (result?.language === language && code.startsWith(result.code)) return result.lines;
114
121
  return null;
115
122
  }
116
- function AgentCodeLine({ code, tokens, className }) {
117
- return /* @__PURE__ */ jsx("span", {
123
+ function AgentCodeLine({ code, tokens, suffix, className }) {
124
+ return /* @__PURE__ */ jsxs("span", {
118
125
  className,
119
- children: tokens ? tokens.map((token) => /* @__PURE__ */ jsx("span", {
126
+ children: [tokens ? tokens.map((token) => /* @__PURE__ */ jsx("span", {
120
127
  style: {
121
128
  "--agent-code-light": token.light ?? "currentColor",
122
129
  "--agent-code-dark": token.dark ?? token.light ?? "currentColor"
123
130
  },
124
131
  className: "text-[var(--agent-code-light)] dark:text-[var(--agent-code-dark)]",
125
132
  children: token.content
126
- }, `${token.offset}-${token.content}`)) : code
133
+ }, `${token.offset}-${token.content}`)) : code, suffix]
127
134
  });
128
135
  }
129
- var EMPTY_HIGHLIGHT_LINES = [];
130
- function CodeBlock({ code, language = "typescript", languageLabel, filename, status = "complete", showStatus = true, showLineNumbers = true, highlightLines = EMPTY_HIGHLIGHT_LINES, maxHeight = 280, wrap = false, copyable = true, onCopy, className }) {
136
+ function AgentDisclosure({ open, openHeight = "auto", className, style, transition, ...props }) {
131
137
  const reduce = useReducedMotion() ?? false;
132
- const viewportRef = useRef(null);
133
- const copyTimer = useRef(void 0);
134
- const [copied, setCopied] = useState(false);
135
- const streaming = status === "streaming";
136
- const tokens = useAgentCodeTokens(code, language);
137
- const highlighted = useMemo(() => new Set(highlightLines), [highlightLines]);
138
- let offset = 0;
139
- const lines = code.split("\n").map((content) => {
140
- const line = {
141
- content,
142
- offset
143
- };
144
- offset += content.length + 1;
145
- return line;
146
- });
147
- const resolvedLanguageLabel = languageLabel ?? {
148
- bash: "Bash",
149
- diff: "Diff",
150
- json: "JSON",
151
- python: "Python",
152
- text: "Text",
153
- tsx: "TSX",
154
- typescript: "TypeScript"
155
- }[language];
156
- useEffect(() => () => {
157
- if (copyTimer.current) window.clearTimeout(copyTimer.current);
158
- }, []);
159
- useLayoutEffect(() => {
160
- const viewport = viewportRef.current;
161
- if (!viewport || !streaming) return;
162
- const frame = requestAnimationFrame(() => {
163
- if (viewport.scrollHeight <= viewport.clientHeight) return;
164
- if (typeof viewport.scrollTo === "function") viewport.scrollTo({
165
- top: viewport.scrollHeight,
166
- behavior: reduce ? "auto" : "smooth"
167
- });
168
- else viewport.scrollTop = viewport.scrollHeight;
169
- });
170
- return () => cancelAnimationFrame(frame);
171
- });
172
- const handleCopy = useCallback(async () => {
173
- if (onCopy) await onCopy();
174
- else await navigator.clipboard?.writeText(code);
175
- setCopied(true);
176
- if (copyTimer.current) window.clearTimeout(copyTimer.current);
177
- copyTimer.current = window.setTimeout(() => setCopied(false), 1600);
178
- }, [code, onCopy]);
179
- return /* @__PURE__ */ jsxs("div", {
180
- "data-state": status,
181
- "aria-busy": streaming,
182
- className: cn("w-full overflow-hidden rounded-2xl bg-muted/80 text-sm", className),
183
- children: [/* @__PURE__ */ jsxs("div", {
184
- className: "flex h-10 items-center gap-2.5 px-3",
185
- children: [
186
- /* @__PURE__ */ jsx(FileCodeCorner, {
187
- "aria-hidden": "true",
188
- className: "size-3.5 shrink-0 text-muted-foreground/70"
189
- }),
190
- filename ? /* @__PURE__ */ jsx("span", {
191
- className: "min-w-0 truncate font-mono text-xs text-foreground/80",
192
- children: filename
193
- }) : null,
194
- /* @__PURE__ */ jsx("span", {
195
- className: "text-micro font-medium uppercase tracking-wide text-muted-foreground/55",
196
- children: resolvedLanguageLabel
197
- }),
198
- showStatus ? /* @__PURE__ */ jsxs("span", {
199
- className: cn("ml-auto inline-flex shrink-0 items-center gap-1 text-micro font-medium", streaming ? "text-info" : "text-success"),
200
- children: [streaming ? /* @__PURE__ */ jsx(LoaderCircle, { className: cn("size-3", !reduce && "animate-spin") }) : /* @__PURE__ */ jsx(Check, { className: "size-3" }), streaming ? "Writing" : "Ready"]
201
- }) : null,
202
- copyable || onCopy ? /* @__PURE__ */ jsx(m.button, {
203
- type: "button",
204
- "aria-label": copied ? "Copied" : "Copy code",
205
- title: copied ? "Copied" : "Copy code",
206
- onClick: handleCopy,
207
- whileTap: reduce ? void 0 : { scale: 0.96 },
208
- transition: SPRING_PRESS,
209
- className: cn("grid size-7 shrink-0 place-items-center rounded-full text-muted-foreground outline-none transition-colors hover:bg-background/70 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring", !showStatus && "ml-auto"),
210
- children: copied ? /* @__PURE__ */ jsx(Check, { className: "size-3.5" }) : /* @__PURE__ */ jsx(Copy, { className: "size-3.5" })
211
- }) : null
212
- ]
213
- }), /* @__PURE__ */ jsx("div", {
214
- ref: viewportRef,
215
- role: streaming ? "log" : void 0,
216
- "aria-live": streaming ? "off" : void 0,
217
- className: "overflow-auto border-t border-foreground/[0.06] py-2 [scrollbar-color:color-mix(in_oklab,var(--muted-foreground)_35%,transparent)_transparent] [scrollbar-width:thin]",
218
- style: { maxHeight },
219
- children: /* @__PURE__ */ jsx("pre", {
220
- className: "m-0 min-w-max font-mono text-xs leading-5 text-foreground/85",
221
- children: /* @__PURE__ */ jsx("code", { children: lines.map((line, index) => {
222
- const lineNumber = index + 1;
223
- return /* @__PURE__ */ jsxs("span", {
224
- className: cn("grid min-h-5", showLineNumbers ? "grid-cols-[2.75rem_minmax(0,1fr)]" : "grid-cols-1", highlighted.has(lineNumber) && "bg-primary/[0.07]"),
225
- children: [showLineNumbers ? /* @__PURE__ */ jsx("span", {
226
- className: "select-none pr-3 text-right tabular-nums text-muted-foreground/35",
227
- children: lineNumber
228
- }) : null, /* @__PURE__ */ jsx(AgentCodeLine, {
229
- code: line.content,
230
- tokens: tokens?.[index],
231
- className: cn("pr-4", showLineNumbers ? "pl-1" : "pl-4", wrap ? "whitespace-pre-wrap break-words" : "whitespace-pre")
232
- })]
233
- }, line.offset);
234
- }) })
235
- })
236
- })]
138
+ return /* @__PURE__ */ jsx(m.div, {
139
+ ...props,
140
+ "aria-hidden": !open,
141
+ inert: !open,
142
+ initial: false,
143
+ animate: reduce ? { opacity: open ? 1 : 0 } : {
144
+ opacity: open ? 1 : 0,
145
+ clipPath: open ? "inset(0 0 0% 0)" : "inset(0 0 100% 0)",
146
+ y: open ? 0 : -4
147
+ },
148
+ transition: transition ?? {
149
+ duration: reduce ? 0 : open ? 0.22 : 0.14,
150
+ ease: EASE_OUT
151
+ },
152
+ className: cn("overflow-hidden", className),
153
+ style: {
154
+ ...style,
155
+ height: open ? openHeight : 0,
156
+ pointerEvents: open ? void 0 : "none",
157
+ transformOrigin: "top"
158
+ }
237
159
  });
238
160
  }
239
161
  function ChangeCount({ value, type }) {
@@ -413,6 +335,177 @@ function FileDiff({ file, lines, status = "streaming", open, defaultOpen = true,
413
335
  })]
414
336
  });
415
337
  }
338
+ var EMPTY_HIGHLIGHT_LINES = [];
339
+ function CodeBlock2({ code, language = "typescript", languageLabel, filename, status = "complete", showStatus = true, showLineNumbers = true, highlightLines = EMPTY_HIGHLIGHT_LINES, maxHeight = 280, wrap = false, copyable = true, onCopy }) {
340
+ const reduce = useReducedMotion() ?? false;
341
+ const viewportRef = useRef(null);
342
+ const copyTimer = useRef(void 0);
343
+ const [copied, setCopied] = useState(false);
344
+ const streaming = status === "streaming";
345
+ const tokens = useAgentCodeTokens(code, language);
346
+ const highlighted = useMemo(() => new Set(highlightLines), [highlightLines]);
347
+ let offset = 0;
348
+ const lines = code.split("\n").map((content) => {
349
+ const line = {
350
+ content,
351
+ offset
352
+ };
353
+ offset += content.length + 1;
354
+ return line;
355
+ });
356
+ const resolvedLanguageLabel = languageLabel ?? {
357
+ bash: "Bash",
358
+ diff: "Diff",
359
+ json: "JSON",
360
+ python: "Python",
361
+ text: "Text",
362
+ tsx: "TSX",
363
+ typescript: "TypeScript"
364
+ }[language];
365
+ useEffect(() => () => {
366
+ if (copyTimer.current) window.clearTimeout(copyTimer.current);
367
+ }, []);
368
+ useLayoutEffect(() => {
369
+ const viewport = viewportRef.current;
370
+ if (!viewport || !streaming) return;
371
+ const frame = requestAnimationFrame(() => {
372
+ if (viewport.scrollHeight <= viewport.clientHeight) return;
373
+ if (typeof viewport.scrollTo === "function") viewport.scrollTo({
374
+ top: viewport.scrollHeight,
375
+ behavior: reduce ? "auto" : "smooth"
376
+ });
377
+ else viewport.scrollTop = viewport.scrollHeight;
378
+ });
379
+ return () => cancelAnimationFrame(frame);
380
+ });
381
+ const handleCopy = useCallback(async () => {
382
+ if (onCopy) await onCopy();
383
+ else await navigator.clipboard?.writeText(code);
384
+ setCopied(true);
385
+ if (copyTimer.current) window.clearTimeout(copyTimer.current);
386
+ copyTimer.current = window.setTimeout(() => setCopied(false), 1600);
387
+ }, [code, onCopy]);
388
+ return /* @__PURE__ */ jsxs(CodeBlock, {
389
+ "data-state": status,
390
+ "aria-busy": streaming,
391
+ size: "sm",
392
+ className: "bg-muted/80",
393
+ children: [/* @__PURE__ */ jsxs(CodeBlockHeader, {
394
+ className: "h-10 gap-2.5 px-3 pt-0",
395
+ children: [
396
+ /* @__PURE__ */ jsx(FileCodeCorner, {
397
+ "aria-hidden": "true",
398
+ className: "size-3.5 shrink-0 text-muted-foreground/70"
399
+ }),
400
+ filename ? /* @__PURE__ */ jsx(CodeBlockTitle, {
401
+ className: "font-mono text-xs text-foreground/80",
402
+ children: filename
403
+ }) : null,
404
+ /* @__PURE__ */ jsx("span", {
405
+ className: "text-micro font-medium uppercase tracking-wide text-muted-foreground/55",
406
+ children: resolvedLanguageLabel
407
+ }),
408
+ showStatus ? /* @__PURE__ */ jsxs("span", {
409
+ className: cn(!copyable && !onCopy && "ml-auto", "inline-flex shrink-0 items-center gap-1 text-micro font-medium", streaming ? "text-info" : "text-success"),
410
+ children: [streaming ? /* @__PURE__ */ jsx(LoaderCircle, { className: cn("size-3", !reduce && "animate-spin") }) : /* @__PURE__ */ jsx(Check, { className: "size-3" }), streaming ? "Writing" : "Ready"]
411
+ }) : null,
412
+ copyable || onCopy ? /* @__PURE__ */ jsx(CodeBlockActions, {
413
+ className: cn("-my-0 -me-0", showStatus ? "ms-0" : "ms-auto"),
414
+ children: /* @__PURE__ */ jsx(m.button, {
415
+ type: "button",
416
+ "aria-label": copied ? "Copied" : "Copy code",
417
+ title: copied ? "Copied" : "Copy code",
418
+ onClick: handleCopy,
419
+ whileTap: reduce ? void 0 : { scale: 0.96 },
420
+ transition: SPRING_PRESS,
421
+ className: "grid size-7 shrink-0 place-items-center rounded-full text-muted-foreground outline-none transition-colors hover:bg-background/70 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring",
422
+ children: copied ? /* @__PURE__ */ jsx(Check, { className: "size-3.5" }) : /* @__PURE__ */ jsx(Copy, { className: "size-3.5" })
423
+ })
424
+ }) : null
425
+ ]
426
+ }), /* @__PURE__ */ jsx(CodeBlockContent, {
427
+ ref: viewportRef,
428
+ role: streaming ? "log" : void 0,
429
+ "aria-live": streaming ? "off" : void 0,
430
+ className: "max-w-full overflow-auto border-t border-foreground/[0.06] px-0 py-2 font-mono text-xs leading-5 text-foreground/85 [scrollbar-color:color-mix(in_oklab,var(--muted-foreground)_35%,transparent)_transparent] [scrollbar-width:thin]",
431
+ style: { maxHeight },
432
+ wrap,
433
+ children: lines.map((line, index) => {
434
+ const lineNumber = index + 1;
435
+ return /* @__PURE__ */ jsx("span", {
436
+ "data-line-number": showLineNumbers ? lineNumber : void 0,
437
+ className: cn("grid min-h-5", showLineNumbers ? "grid-cols-[2.75rem_minmax(0,1fr)] before:content-[attr(data-line-number)] before:select-none before:pr-3 before:text-right before:tabular-nums before:text-muted-foreground/35" : "grid-cols-1", highlighted.has(lineNumber) && "bg-primary/[0.07]"),
438
+ children: /* @__PURE__ */ jsx(AgentCodeLine, {
439
+ code: line.content,
440
+ tokens: tokens?.[index],
441
+ suffix: index < lines.length - 1 ? "\n" : void 0,
442
+ className: cn("pr-4", showLineNumbers ? "pl-1" : "pl-4", wrap ? "whitespace-pre-wrap break-words" : "whitespace-pre")
443
+ })
444
+ }, line.offset);
445
+ })
446
+ })]
447
+ });
448
+ }
449
+ var ROLL_VARIANTS = {
450
+ initial: {
451
+ opacity: 0,
452
+ y: "90%",
453
+ filter: "blur(3px)"
454
+ },
455
+ animate: {
456
+ opacity: 1,
457
+ y: "0%",
458
+ filter: "blur(0px)",
459
+ transition: SPRING_SWAP
460
+ },
461
+ exit: {
462
+ opacity: 0,
463
+ y: "-90%",
464
+ filter: "blur(3px)",
465
+ transition: {
466
+ duration: 0.14,
467
+ ease: EASE_OUT
468
+ }
469
+ }
470
+ };
471
+ function ActionSwapRollText({ value, children, className }) {
472
+ const reduce = useReducedMotion();
473
+ const measureRef = useRef(null);
474
+ const [width, setWidth] = useState();
475
+ useLayoutEffect(() => {
476
+ const nextWidth = measureRef.current?.offsetWidth;
477
+ if (!nextWidth) return;
478
+ setWidth((currentWidth) => currentWidth === nextWidth ? currentWidth : nextWidth);
479
+ });
480
+ return /* @__PURE__ */ jsxs("span", {
481
+ className: cn("relative inline-block overflow-hidden whitespace-nowrap align-bottom", className),
482
+ style: {
483
+ width,
484
+ transition: reduce ? void 0 : `width 220ms ${EASE_OUT_CSS}`
485
+ },
486
+ children: [/* @__PURE__ */ jsx("span", {
487
+ ref: measureRef,
488
+ "aria-hidden": true,
489
+ className: "invisible inline-block whitespace-nowrap",
490
+ children
491
+ }), /* @__PURE__ */ jsx(AnimatePresence, {
492
+ initial: false,
493
+ children: /* @__PURE__ */ jsx(m.span, {
494
+ variants: ROLL_VARIANTS,
495
+ initial: reduce ? false : "initial",
496
+ animate: reduce ? {
497
+ opacity: 1,
498
+ filter: "blur(0px)",
499
+ scale: 1,
500
+ y: 0
501
+ } : "animate",
502
+ exit: reduce ? void 0 : "exit",
503
+ className: "absolute left-0 top-0 inline-block",
504
+ children
505
+ }, `roll-${value}`)
506
+ })]
507
+ });
508
+ }
416
509
  function getStatusLabel(status) {
417
510
  if (status === "running") return "Running";
418
511
  if (status === "success") return "Completed";
@@ -449,15 +542,25 @@ function ToolResultAction({ label, onClick, children }) {
449
542
  children
450
543
  });
451
544
  }
452
- function ToolResultOutput({ children, language: _language = "bash", label, className }) {
453
- return /* @__PURE__ */ jsxs("div", {
454
- className: "space-y-1.5",
455
- children: [label ? /* @__PURE__ */ jsx("div", {
456
- className: "px-0.5 text-micro font-medium uppercase tracking-[0.12em] text-muted-foreground/60",
457
- children: label
458
- }) : null, /* @__PURE__ */ jsx("pre", {
459
- className: cn("m-0 whitespace-pre-wrap break-words font-mono text-xs leading-5 text-foreground/80", className),
460
- children: /* @__PURE__ */ jsx("code", { children })
545
+ function ToolResultOutput({ children, language: _language = "bash", label, error = false, className }) {
546
+ return /* @__PURE__ */ jsxs(CodeBlock, {
547
+ "data-error": error || void 0,
548
+ variant: error ? "destructive" : "default",
549
+ size: "sm",
550
+ className,
551
+ children: [/* @__PURE__ */ jsxs(CodeBlockHeader, {
552
+ className: "py-1",
553
+ children: [label ? /* @__PURE__ */ jsx(CodeBlockTitle, {
554
+ className: cn("text-micro uppercase tracking-[0.12em]", error ? "text-destructive" : "text-muted-foreground/60"),
555
+ children: error ? "Reported error" : label
556
+ }) : null, /* @__PURE__ */ jsx(CodeBlockActions, { children: /* @__PURE__ */ jsx(CodeBlockCopyButton, {
557
+ value: children,
558
+ "aria-label": "Copy result"
559
+ }) })]
560
+ }), /* @__PURE__ */ jsx(CodeBlockContent, {
561
+ wrap: true,
562
+ className: cn("max-h-60 text-xs leading-5", error ? "text-destructive" : "text-foreground/80"),
563
+ children
461
564
  })]
462
565
  });
463
566
  }
@@ -519,7 +622,7 @@ function ToolResult({ tool, title, children, status = "running", kind = "custom"
519
622
  "aria-expanded": currentOpen,
520
623
  "aria-controls": contentId,
521
624
  onClick: () => setOpen(!currentOpen),
522
- className: "group flex min-h-9 w-full items-center gap-2 rounded-md py-1 text-left outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
625
+ className: "group flex min-h-9 w-full items-center gap-2 py-1 text-left outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
523
626
  children: [
524
627
  /* @__PURE__ */ jsx("span", {
525
628
  "aria-hidden": "true",
@@ -568,41 +671,37 @@ function ToolResult({ tool, title, children, status = "running", kind = "custom"
568
671
  open: currentOpen,
569
672
  children: /* @__PURE__ */ jsx("div", {
570
673
  className: "pl-6 pt-1.5",
571
- children: /* @__PURE__ */ jsxs("div", {
572
- className: "overflow-hidden rounded-xl bg-muted/80",
573
- children: [/* @__PURE__ */ jsx("div", {
574
- ref: viewportRef,
575
- role: "log",
576
- "aria-live": "polite",
577
- className: "scrollbar-hide overflow-y-auto overscroll-contain",
578
- style: { maxHeight },
579
- children: /* @__PURE__ */ jsx("div", {
580
- className: "p-3",
581
- children
674
+ children: /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
675
+ ref: viewportRef,
676
+ role: "log",
677
+ "aria-live": "polite",
678
+ className: "scrollbar-hide overflow-y-auto overscroll-contain",
679
+ style: { maxHeight },
680
+ children
681
+ }), canCopy ? /* @__PURE__ */ jsxs("div", {
682
+ className: "flex items-center gap-0.5 px-2 pb-1.5",
683
+ children: [/* @__PURE__ */ jsx(ToolResultAction, {
684
+ label: copied ? "Copied" : "Copy result",
685
+ onClick: handleCopy,
686
+ children: copied ? /* @__PURE__ */ jsx(Check, { className: "size-3.5" }) : /* @__PURE__ */ jsx(Copy, { className: "size-3.5" })
687
+ }), /* @__PURE__ */ jsx("span", {
688
+ className: "ml-auto text-caption text-muted-foreground/55",
689
+ children: /* @__PURE__ */ jsx(ActionSwapRollText, {
690
+ value: status,
691
+ children: statusLabel
582
692
  })
583
- }), canCopy ? /* @__PURE__ */ jsxs("div", {
584
- className: "flex items-center gap-0.5 px-2 pb-1.5",
585
- children: [/* @__PURE__ */ jsx(ToolResultAction, {
586
- label: copied ? "Copied" : "Copy result",
587
- onClick: handleCopy,
588
- children: copied ? /* @__PURE__ */ jsx(Check, { className: "size-3.5" }) : /* @__PURE__ */ jsx(Copy, { className: "size-3.5" })
589
- }), /* @__PURE__ */ jsx("span", {
590
- className: "ml-auto text-caption text-muted-foreground/55",
591
- children: /* @__PURE__ */ jsx(ActionSwapRollText, {
592
- value: status,
593
- children: statusLabel
594
- })
595
- })]
596
- }) : null]
597
- })
693
+ })]
694
+ }) : null] })
598
695
  })
599
696
  })]
600
697
  });
601
698
  }
602
699
 
603
700
  export {
604
- CodeBlock,
701
+ AgentDisclosure,
605
702
  FileDiff,
703
+ CodeBlock2 as CodeBlock,
704
+ ActionSwapRollText,
606
705
  ToolResultOutput,
607
706
  ToolResult
608
707
  };