@qredence/fleet 0.6.1 → 0.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/web/client/assets/DialogTitle-DiAm7YNe.js +1 -0
  3. package/dist/web/client/assets/agent-disclosure-CMrxF7L-.js +1 -0
  4. package/dist/web/client/assets/alert-dialog-CYE37KMM.js +1 -0
  5. package/dist/web/client/assets/analytics-stub-C2vgmGm_.js +1 -0
  6. package/dist/web/client/assets/artifacts-panel-ClDpGWOU.js +1 -0
  7. package/dist/web/client/assets/{bot-Bs7QWJ2q.js → bot-DbB9BKL0.js} +1 -1
  8. package/dist/web/client/assets/bundle-mjs-cJTHqqzI.js +1 -0
  9. package/dist/web/client/assets/button-Dl0ce3Y5.js +1 -0
  10. package/dist/web/client/assets/{card-DA3Vnqay.js → card-DCEnYd2G.js} +1 -1
  11. package/dist/web/client/assets/chat-BVMnC5Qh.js +52 -0
  12. package/dist/web/client/assets/chat-command-palette-YuyaJNbi.js +1 -0
  13. package/dist/web/client/assets/check-B3LlvM65.js +1 -0
  14. package/dist/web/client/assets/{chevron-down-BEVGmnSb.js → chevron-down-DUUprRP5.js} +1 -1
  15. package/dist/web/client/assets/chevron-right-NVqQIoiO.js +1 -0
  16. package/dist/web/client/assets/{chunk-YOKDWASO-BAf618wr.js → chunk-YOKDWASO-Bte3iwlH.js} +6 -6
  17. package/dist/web/client/assets/citations-DXqV2NLy.js +1 -0
  18. package/dist/web/client/assets/collapsible-CUxOjhDJ.js +1 -0
  19. package/dist/web/client/assets/command-Cw4X8Bpk.js +1 -0
  20. package/dist/web/client/assets/createBaseUIEventDetails-B58Jldei.js +1 -0
  21. package/dist/web/client/assets/createLucideIcon-_dfI7Arx.js +1 -0
  22. package/dist/web/client/assets/dialog-BzcIOvFC.js +1 -0
  23. package/dist/web/client/assets/dist-52wg4XPY.js +1 -0
  24. package/dist/web/client/assets/dist-DbHxXSgQ.js +41 -0
  25. package/dist/web/client/assets/ease-CMumuPlX.js +1 -0
  26. package/dist/web/client/assets/{eye-B0DFz5hL.js → eye-CDHqtVoE.js} +1 -1
  27. package/dist/web/client/assets/file-text-TmalmYrb.js +1 -0
  28. package/dist/web/client/assets/{folder-BC5p7qK7.js → folder-vuNT4shY.js} +1 -1
  29. package/dist/web/client/assets/{fork-picker-dialog-B7NNpVmW.js → fork-picker-dialog-BYRr-xTy.js} +1 -1
  30. package/dist/web/client/assets/gauge-BsDqNM1A.js +1 -0
  31. package/dist/web/client/assets/git-branch-CTq9aACS.js +1 -0
  32. package/dist/web/client/assets/globals-BtCXZXL_.css +2 -0
  33. package/dist/web/client/assets/{hard-drive-CHqgr7VQ.js → hard-drive-BT7UxHQu.js} +1 -1
  34. package/dist/web/client/assets/highlighted-body-KPVGNVTW-CgT7gqvs.js +1 -0
  35. package/dist/web/client/assets/horizontal-resize-VLjLByUV.js +1 -0
  36. package/dist/web/client/assets/index-B9aXxpOv.js +12 -0
  37. package/dist/web/client/assets/input-CxZp56Im.js +1 -0
  38. package/dist/web/client/assets/input-group-D7lAfKHR.js +1 -0
  39. package/dist/web/client/assets/ipython-tool-CkHaO3PW.js +3 -0
  40. package/dist/web/client/assets/is-ref-object-BcRWZ4l7.js +1 -0
  41. package/dist/web/client/assets/{loader-circle-DjfHXUPB.js → loader-circle-B5GIZGxd.js} +1 -1
  42. package/dist/web/client/assets/markdown-BHkByC9K.js +2 -0
  43. package/dist/web/client/assets/{markdown-code-xNyjdZ4g.js → markdown-code-CDTRq-HZ.js} +1 -1
  44. package/dist/web/client/assets/mermaid-HWGCJPDP-CY3N5ECk.js +1 -0
  45. package/dist/web/client/assets/message-queue-Dl8wbCOu.js +1 -0
  46. package/dist/web/client/assets/model-selector-list-CHD8lMAl.js +1 -0
  47. package/dist/web/client/assets/{notify-DxL0VD7Z.js → notify-DjVixft7.js} +1 -1
  48. package/dist/web/client/assets/{openui-renderer-TLNe5e_Q.js → openui-renderer-C4e9FOVR.js} +38 -38
  49. package/dist/web/client/assets/{package-CdcJFPf2.js → package-BKBPgwMP.js} +1 -1
  50. package/dist/web/client/assets/{pencil-DcUwsKLn.js → pencil-CdO6qfv3.js} +1 -1
  51. package/dist/web/client/assets/{plug-Dt6VN0zF.js → plug-BRROUIw-.js} +1 -1
  52. package/dist/web/client/assets/prompt-input-WaGSKZCU.js +1 -0
  53. package/dist/web/client/assets/prompt-suggestions-BNyTcyWg.js +1 -0
  54. package/dist/web/client/assets/provider-catalog-ClVvphe0.js +1 -0
  55. package/dist/web/client/assets/provider-label-CwZ-KDxk.js +1 -0
  56. package/dist/web/client/assets/react-CwJFpaho.js +1 -0
  57. package/dist/web/client/assets/react-dom-DX3XddaT.js +1 -0
  58. package/dist/web/client/assets/{refresh-cw-IThTJ3j-.js → refresh-cw-l9WPHRkq.js} +1 -1
  59. package/dist/web/client/assets/repl-panel-L9dmPqio.js +1 -0
  60. package/dist/web/client/assets/{resource-helpers-Q2T0YCMO.js → resource-helpers-BuWybA8l.js} +1 -1
  61. package/dist/web/client/assets/resources-panel-mT-aMCvV.js +1 -0
  62. package/dist/web/client/assets/right-panel-context-CS8tJMzE.js +1 -0
  63. package/dist/web/client/assets/right-panel-registry-BnYCffmM.js +2 -0
  64. package/dist/web/client/assets/{rotate-ccw-WNFNkKQD.js → rotate-ccw-CfGhzOv7.js} +1 -1
  65. package/dist/web/client/assets/routes-DUontXSG.js +16 -0
  66. package/dist/web/client/assets/safe-external-url-BbAom7Bm.js +1 -0
  67. package/dist/web/client/assets/search-BjcXAUrI.js +1 -0
  68. package/dist/web/client/assets/session-insights-panel-B0rl37lo.js +1 -0
  69. package/dist/web/client/assets/session-reasoning-panel-8D2P7iaJ.js +1 -0
  70. package/dist/web/client/assets/session-tool-renderer-Bd3dsE2D.js +1395 -0
  71. package/dist/web/client/assets/session-tree-panel-CM4_wwrM.js +1 -0
  72. package/dist/web/client/assets/settings-dialog-DMTD9m6z.js +2 -0
  73. package/dist/web/client/assets/{skeleton-CkR2VmWc.js → skeleton-C3mo31Qu.js} +1 -1
  74. package/dist/web/client/assets/skeleton-loaders-BMa_G4yX.js +1 -0
  75. package/dist/web/client/assets/sparkles-BY5MFyk6.js +1 -0
  76. package/dist/web/client/assets/square-DQaQu9bp.js +1 -0
  77. package/dist/web/client/assets/{square-terminal-BYTN_I86.js → square-terminal-BsopiuN7.js} +1 -1
  78. package/dist/web/client/assets/{subagent-chat-panel-oeLDPDAK.js → subagent-chat-panel-BESrXxAR.js} +1 -1
  79. package/dist/web/client/assets/subagent-transcript-CAqFJfMj.js +1 -0
  80. package/dist/web/client/assets/subagents-panel-8aKOwWLs.js +1 -0
  81. package/dist/web/client/assets/{sun-BWiZFty0.js → sun-D0llhiMU.js} +1 -1
  82. package/dist/web/client/assets/surfaces-CpfsGAIA.js +1 -0
  83. package/dist/web/client/assets/switch-D3FhZU-S.js +1 -0
  84. package/dist/web/client/assets/terminal-BQAKkBY6.js +1 -0
  85. package/dist/web/client/assets/toast-lnCWGgSE.js +1 -0
  86. package/dist/web/client/assets/tokens-Ch5WqXC_.js +1 -0
  87. package/dist/web/client/assets/tool-result-B_yb2JoE.js +4 -0
  88. package/dist/web/client/assets/tool-timeline-VnMRQoLS.js +1 -0
  89. package/dist/web/client/assets/{triangle-alert-CU-gd7ui.js → triangle-alert-GAYh_5d3.js} +1 -1
  90. package/dist/web/client/assets/ui-preferences-aG2U2jjW.js +1 -0
  91. package/dist/web/client/assets/use-presence-7I2qv4qI.js +1 -0
  92. package/dist/web/client/assets/use-reduced-motion-BOcG709U.js +9 -0
  93. package/dist/web/client/assets/useBaseUiId-D9ZGPZ6f.js +1 -0
  94. package/dist/web/client/assets/useControlled-CgAAWIy9.js +1 -0
  95. package/dist/web/client/assets/utils-Brtgag-m.js +1 -0
  96. package/dist/web/client/assets/virtualized-turn-list-mL3ONUUA.js +6 -0
  97. package/dist/web/client/assets/workspace-panel-CKF5JQl2.js +1 -0
  98. package/dist/web/client/assets/workspace-path-nav-DqPbETfJ.js +2 -0
  99. package/dist/web/client/assets/{wrench-BJNNe07k.js → wrench-Myc12BTA.js} +1 -1
  100. package/dist/web/client/assets/x-BGsDD848.js +1 -0
  101. package/dist/web/client/bundle-budget.json +6 -6
  102. package/dist/web/server/_tanstack-start-manifest_v-Cm8xE-Rb-TMLYN3GY.js +93 -0
  103. package/dist/web/server/{artifacts-panel-D3ySO--V-XSL53CXL.js → artifacts-panel-CwLVBqyi-CDORJY75.js} +37 -41
  104. package/dist/web/server/{chat-command-palette-kAbXhWVg-TJWXH2WW.js → chat-command-palette-DUha04ia-5OV7WVJZ.js} +20 -18
  105. package/dist/web/server/{chunk-SALXCFVO.js → chunk-33QA7BQJ.js} +19 -1
  106. package/dist/web/server/chunk-3Q3QKLHC.js +386 -0
  107. package/dist/web/server/chunk-4EBSM4JR.js +74 -0
  108. package/dist/web/server/{chunk-5UCAJBAH.js → chunk-5RTGRTPD.js} +82 -49
  109. package/dist/web/server/chunk-7E76R7MB.js +2138 -0
  110. package/dist/web/server/{chunk-EBG3XFGQ.js → chunk-7FK6YEMA.js} +49 -44
  111. package/dist/web/server/chunk-7HXCGBUP.js +56 -0
  112. package/dist/web/server/{chunk-P66QQWUM.js → chunk-7NZ3FJDA.js} +14 -1
  113. package/dist/web/server/{chunk-HF7DG7PC.js → chunk-7UTDOTOU.js} +80 -78
  114. package/dist/web/server/{chunk-NNKJTKOQ.js → chunk-ADYZWC5L.js} +311 -281
  115. package/dist/web/server/{chunk-NJ4QEZHK.js → chunk-B2LF64HM.js} +7 -5
  116. package/dist/web/server/{chunk-OZO5ARFA.js → chunk-BQROC4PL.js} +11 -2
  117. package/dist/web/server/{chunk-NIZBFVJF.js → chunk-CAPTFJOC.js} +9 -7
  118. package/dist/web/server/{chunk-DJMHPJBP.js → chunk-CHEC7TWB.js} +3 -1
  119. package/dist/web/server/chunk-DLA5TLKX.js +164 -0
  120. package/dist/web/server/{chunk-PLYZ7P2Y.js → chunk-DP26GVWH.js} +43 -5
  121. package/dist/web/server/{chunk-MNBGB2SP.js → chunk-E5HALE4M.js} +4 -4
  122. package/dist/web/server/chunk-ETCO5KZK.js +113 -0
  123. package/dist/web/server/{chunk-NGCQJ33Y.js → chunk-FMAYMBRS.js} +1492 -1640
  124. package/dist/web/server/{chunk-KP2PNDGL.js → chunk-FTLJ66KU.js} +30 -33
  125. package/dist/web/server/{chunk-BLSX7WHW.js → chunk-H5D5DX3K.js} +23 -21
  126. package/dist/web/server/chunk-HGVJEUV4.js +102 -0
  127. package/dist/web/server/{chunk-WNCAL4HN.js → chunk-HQ5TEXHT.js} +132 -152
  128. package/dist/web/server/{chunk-YOM42BKD.js → chunk-IPV4GLJL.js} +16 -16
  129. package/dist/web/server/chunk-K6PTNSCW.js +31 -0
  130. package/dist/web/server/{chunk-AR7O7JXD.js → chunk-KBWUBWVJ.js} +24 -1
  131. package/dist/web/server/{chunk-O3HDELZ2.js → chunk-KZ35W5M7.js} +667 -661
  132. package/dist/web/server/{chunk-QIULBRTU.js → chunk-MJXXVQNA.js} +79 -84
  133. package/dist/web/server/{chunk-EAJTWMK5.js → chunk-NZ6KQT2X.js} +2 -2
  134. package/dist/web/server/{chunk-YGYOBX7G.js → chunk-O2IC376F.js} +1811 -53
  135. package/dist/web/server/chunk-OMPXUTMX.js +33 -0
  136. package/dist/web/server/{chunk-S3PQ6HKH.js → chunk-OVJYUWSQ.js} +2 -2
  137. package/dist/web/server/{chunk-JTCCQZLN.js → chunk-RJNGEU6C.js} +2 -2
  138. package/dist/web/server/{chunk-UCUFC553.js → chunk-RXUMFFUV.js} +3 -3
  139. package/dist/web/server/{chunk-DLUZFOG3.js → chunk-S2IBIJIG.js} +18 -22
  140. package/dist/web/server/{chunk-DO2O27B2.js → chunk-SDV3P3IW.js} +2 -2
  141. package/dist/web/server/{chunk-2DDWXTVG.js → chunk-T2UTBHJ4.js} +55 -11
  142. package/dist/web/server/chunk-TLNZNR7C.js +46 -0
  143. package/dist/web/server/{chunk-UL2725KQ.js → chunk-TR2GA5OF.js} +57 -49
  144. package/dist/web/server/{chunk-QFRCJWQQ.js → chunk-TU2WNRAL.js} +93 -32
  145. package/dist/web/server/{chunk-FYDQK6UX.js → chunk-UDD5W4CR.js} +32 -10
  146. package/dist/web/server/{chunk-MNPHMZU7.js → chunk-UE32PAV2.js} +47 -57
  147. package/dist/web/server/{chunk-3TIMGWWI.js → chunk-UM3RHJNZ.js} +2 -2
  148. package/dist/web/server/{chunk-ZIFSJ3HQ.js → chunk-V5IFFLZQ.js} +185 -109
  149. package/dist/web/server/{chunk-ETTDO4UO.js → chunk-WTYNN6EV.js} +1 -26
  150. package/dist/web/server/{chunk-EJEPDVK6.js → chunk-WU6X3GPJ.js} +48 -5
  151. package/dist/web/server/{chunk-D27LRYVT.js → chunk-XEG4JTND.js} +10 -9
  152. package/dist/web/server/{chunk-XIB6XNUX.js → chunk-XJ6TGSUB.js} +425 -404
  153. package/dist/web/server/{chunk-NWDI3OWB.js → chunk-XSOUURPF.js} +30 -26
  154. package/dist/web/server/{chunk-RIP3PBWT.js → chunk-YCCF676T.js} +4 -4
  155. package/dist/web/server/{chunk-4WBFCB4O.js → chunk-YDDDSVNB.js} +178 -269
  156. package/dist/web/server/{chunk-GETSIVNU.js → chunk-YVGCPUAW.js} +7 -7
  157. package/dist/web/server/{chunk-4UBOIY2S.js → chunk-ZNFXBGLK.js} +1 -1
  158. package/dist/web/server/{fork-picker-dialog-Ds6Tgtu3-DIBWN7MV.js → fork-picker-dialog-DeMiLZtS-WTRTTP64.js} +10 -8
  159. package/dist/web/server/{markdown-DTnMbD87-FXGGAPJD.js → markdown-BzNejPoZ-6ITTDAV6.js} +2 -3
  160. package/dist/web/server/{markdown-code-BStjFfsy-SSLWUT4S.js → markdown-code-DAwXuW6m-HHVELO6I.js} +3 -4
  161. package/dist/web/server/{fleet-message-queue-D_w8lSeY-T3HB7HVQ.js → message-queue-Demph1x4-GGXJUUKO.js} +14 -10
  162. package/dist/web/server/{model-selector-list-DxeGZoD2-P6S6FSJH.js → model-selector-list-BeGQHwKV-UJYFO4KX.js} +21 -19
  163. package/dist/web/server/{openui-renderer-MKFv6LlH-MDRSVFEY.js → openui-renderer-B4z18Brm-HSMKJ47D.js} +17 -17
  164. package/dist/web/server/{prompt-suggestions-BOItmGnD-YQA7RHLG.js → prompt-suggestions-yPZqX__K-3VGJC4IF.js} +7 -6
  165. package/dist/web/server/{repl-panel-CuyF8wt5-CHDT2Q3N.js → repl-panel-CgUF1qUw-3DFD2V53.js} +10 -11
  166. package/dist/web/server/{resources-panel-CE5pD4vy-V5FXBTYC.js → resources-panel-ChUliWV--JITAGS6Q.js} +6 -7
  167. package/dist/web/server/{router-Dg72SESP-PCWKLFRG.js → router-DfG45nTQ-3VXEUYG5.js} +3336 -238
  168. package/dist/web/server/{routes-BGrVtPYF-SURPAJN6.js → routes-B9F9UfF1-UN2IVBMJ.js} +5156 -4242
  169. package/dist/web/server/server.js +2 -2
  170. package/dist/web/server/{session-insights-panel-CUhdgvRt-VB2HUCQP.js → session-insights-panel-xgrkX1Rp-FDNURBXZ.js} +9 -9
  171. package/dist/web/server/{fleet-reasoning-panel-DG_vuvv0-NCZWEEIT.js → session-reasoning-panel-m1RgcIph-NUXGXVKE.js} +21 -22
  172. package/dist/web/server/session-tool-renderer-CT65wuet-RQBMXHEZ.js +46 -0
  173. package/dist/web/server/session-tree-panel-rS0t1wbf-HNA6AJBY.js +229 -0
  174. package/dist/web/server/{settings-dialog-CK0FJlTg-HZRBAXDZ.js → settings-dialog-CqkrDSnm-LFEKSS7Y.js} +186 -1380
  175. package/dist/web/server/{subagent-chat-panel-gzamnTgK-PQ2TLLJF.js → subagent-chat-panel-Cf7QdDqH-DPPSVLSY.js} +31 -39
  176. package/dist/web/server/{subagents-panel-Berjd7HJ-EI5ZKC6V.js → subagents-panel-_JsUw-6t-MZWM5P45.js} +38 -45
  177. package/dist/web/server/{fleet-tool-timeline-D6yM4ZMz-ZSFVRRRI.js → tool-timeline-QL9k5dzA-RLU26HXT.js} +6 -6
  178. package/dist/web/server/{workspace-panel-CBBa_3UO-B4PPFPMA.js → workspace-panel-BHEB9nRM-Y6KGIVGP.js} +23 -30
  179. package/package.json +1 -1
  180. package/dist/web/client/assets/action-swap-roll-COzQ86wm.js +0 -1
  181. package/dist/web/client/assets/agent-activity-svETLf_5.js +0 -1
  182. package/dist/web/client/assets/agent-disclosure-DAMuuGcM.js +0 -1
  183. package/dist/web/client/assets/analytics-stub-B6zGMuSV.js +0 -1
  184. package/dist/web/client/assets/artifacts-panel-HVjqBMyx.js +0 -1
  185. package/dist/web/client/assets/artifacts-utils-N_kUFbz2.js +0 -1
  186. package/dist/web/client/assets/bundle-mjs-DKHVkVWu.js +0 -1
  187. package/dist/web/client/assets/button-C5wFDY5_.js +0 -1
  188. package/dist/web/client/assets/chat-BhYseKd6.js +0 -52
  189. package/dist/web/client/assets/chat-command-palette-LILDO_vG.js +0 -1
  190. package/dist/web/client/assets/check-JjHKAZas.js +0 -1
  191. package/dist/web/client/assets/chevron-right-DrJxToLs.js +0 -1
  192. package/dist/web/client/assets/chevron-up-CnSvySGH.js +0 -1
  193. package/dist/web/client/assets/circle-alert-CONlFReH.js +0 -1
  194. package/dist/web/client/assets/circle-x-CkKCB__4.js +0 -1
  195. package/dist/web/client/assets/citations-BPv8HIpf.js +0 -2
  196. package/dist/web/client/assets/cn-C8c0S2mI.js +0 -1
  197. package/dist/web/client/assets/collapsible-BoXtZZWN.js +0 -1
  198. package/dist/web/client/assets/command-PhicLCoO.js +0 -1
  199. package/dist/web/client/assets/createBaseUIEventDetails-DV0dQrBX.js +0 -1
  200. package/dist/web/client/assets/createLucideIcon-DwxZHm0M.js +0 -1
  201. package/dist/web/client/assets/dialog-pBGUjAQ7.js +0 -1
  202. package/dist/web/client/assets/dist-BPaFisIZ.js +0 -41
  203. package/dist/web/client/assets/earth-DGZXAN5r.js +0 -1
  204. package/dist/web/client/assets/ease-u56MhKYS.js +0 -1
  205. package/dist/web/client/assets/file-text-T-NcAlZs.js +0 -1
  206. package/dist/web/client/assets/fleet-message-queue-fbYYwMj0.js +0 -1
  207. package/dist/web/client/assets/fleet-pi-tool-renderer-BRgNnmaJ.js +0 -1395
  208. package/dist/web/client/assets/fleet-reasoning-panel-CjA2dwUJ.js +0 -1
  209. package/dist/web/client/assets/fleet-subagent-list-iKUtLJKZ.js +0 -1
  210. package/dist/web/client/assets/fleet-tool-timeline-C8heL7ae.js +0 -1
  211. package/dist/web/client/assets/gauge-DNpstbBn.js +0 -1
  212. package/dist/web/client/assets/globals-CuIiqOTg.css +0 -2
  213. package/dist/web/client/assets/highlighted-body-KPVGNVTW-sUCZ1fHv.js +0 -1
  214. package/dist/web/client/assets/horizontal-resize-Cp3iHMH7.js +0 -1
  215. package/dist/web/client/assets/image-BbPmlw-n.js +0 -1
  216. package/dist/web/client/assets/index-CSGplyr_.js +0 -12
  217. package/dist/web/client/assets/input-PcdubeKn.js +0 -1
  218. package/dist/web/client/assets/input-group-C2HJEZvl.js +0 -1
  219. package/dist/web/client/assets/ipython-tool-CyuMOxz1.js +0 -3
  220. package/dist/web/client/assets/layout-gyLzPvVv.js +0 -1
  221. package/dist/web/client/assets/markdown-lvexwooo.js +0 -2
  222. package/dist/web/client/assets/mermaid-HWGCJPDP-Bm7CuruA.js +0 -1
  223. package/dist/web/client/assets/message-square-hbDao-A1.js +0 -1
  224. package/dist/web/client/assets/model-selector-list-CoXX358G.js +0 -1
  225. package/dist/web/client/assets/plus-DXN1Bg_z.js +0 -1
  226. package/dist/web/client/assets/prompt-input-fwP8TsgQ.js +0 -1
  227. package/dist/web/client/assets/prompt-suggestions-BlGXmWS7.js +0 -1
  228. package/dist/web/client/assets/provider-catalog-DYMFdbKc.js +0 -1
  229. package/dist/web/client/assets/provider-label-B4q5mI65.js +0 -1
  230. package/dist/web/client/assets/react-dom-Bwxum3ti.js +0 -1
  231. package/dist/web/client/assets/repl-panel-C5om8MGU.js +0 -1
  232. package/dist/web/client/assets/resources-panel-D867-goy.js +0 -1
  233. package/dist/web/client/assets/right-panel-context-DHlNWJsF.js +0 -1
  234. package/dist/web/client/assets/right-panel-registry-BBlxLxnx.js +0 -2
  235. package/dist/web/client/assets/routes-XGsAIqBJ.js +0 -16
  236. package/dist/web/client/assets/safe-external-url-D3PJJIcM.js +0 -1
  237. package/dist/web/client/assets/search-eWVnAJsb.js +0 -1
  238. package/dist/web/client/assets/session-insights-panel-YnaXvTpi.js +0 -1
  239. package/dist/web/client/assets/settings-dialog-BSBasR3o.js +0 -2
  240. package/dist/web/client/assets/shield-check-CkA2viVW.js +0 -1
  241. package/dist/web/client/assets/skeleton-loaders-C9vHwAYV.js +0 -1
  242. package/dist/web/client/assets/sparkles-DuclzqlE.js +0 -1
  243. package/dist/web/client/assets/square-Bhn8gjr0.js +0 -1
  244. package/dist/web/client/assets/subagent-transcript-DaVHjNUH.js +0 -1
  245. package/dist/web/client/assets/subagent-utils-DDH5qm9Z.js +0 -1
  246. package/dist/web/client/assets/subagents-panel-D_aVgSCi.js +0 -1
  247. package/dist/web/client/assets/surfaces-BhAXz9So.js +0 -1
  248. package/dist/web/client/assets/switch-WhXeJNNY.js +0 -1
  249. package/dist/web/client/assets/terminal-DOS1s1gm.js +0 -1
  250. package/dist/web/client/assets/toast-D3c9XeGe.js +0 -1
  251. package/dist/web/client/assets/tool-result-Cki8WUNc.js +0 -4
  252. package/dist/web/client/assets/ui-preferences-CImQGZm_.js +0 -1
  253. package/dist/web/client/assets/use-reduced-motion-eORd7fqW.js +0 -9
  254. package/dist/web/client/assets/useBaseUiId-CHqXB2UQ.js +0 -1
  255. package/dist/web/client/assets/useControlled-CJJ9BOQB.js +0 -1
  256. package/dist/web/client/assets/utils-Eg7xtNmV.js +0 -1
  257. package/dist/web/client/assets/virtualized-turn-list-CdMa-ydT.js +0 -6
  258. package/dist/web/client/assets/workspace-panel-77bDbprs.js +0 -1
  259. package/dist/web/client/assets/workspace-path-nav-C0AQNZyy.js +0 -1
  260. package/dist/web/client/assets/x-CsRC_tCI.js +0 -1
  261. package/dist/web/server/_tanstack-start-manifest_v-0L7fqnH4-KMVGUFE4.js +0 -95
  262. package/dist/web/server/agent-activity-BuEE6iVw-CDZLK4D2.js +0 -514
  263. package/dist/web/server/chunk-2JHTYWD5.js +0 -1196
  264. package/dist/web/server/chunk-3JMESBAT.js +0 -35
  265. package/dist/web/server/chunk-42XU6WV7.js +0 -56
  266. package/dist/web/server/chunk-AQ66E5OW.js +0 -33
  267. package/dist/web/server/chunk-BYXBJQAS.js +0 -0
  268. package/dist/web/server/chunk-FAGDMGLK.js +0 -6589
  269. package/dist/web/server/chunk-FJV6EQDW.js +0 -36
  270. package/dist/web/server/chunk-GL6HWDJB.js +0 -19
  271. package/dist/web/server/chunk-L46H6IDX.js +0 -13
  272. package/dist/web/server/chunk-NIDBN7BQ.js +0 -86
  273. package/dist/web/server/chunk-ON33WDZX.js +0 -31
  274. package/dist/web/server/chunk-PVJCTQFK.js +0 -22
  275. package/dist/web/server/chunk-QPNUGF3V.js +0 -35
  276. package/dist/web/server/chunk-S5LFXXDY.js +0 -1265
  277. package/dist/web/server/chunk-VPKX7QRU.js +0 -42
  278. package/dist/web/server/chunk-ZCVWADNW.js +0 -37
  279. package/dist/web/server/fleet-pi-tool-renderer-qwc-qZFq-4U556N5Q.js +0 -51
  280. package/dist/web/server/fleet-subagent-list-BGb0PjhF-2X67FMUV.js +0 -18
@@ -2024,7 +2024,7 @@ function getResponse() {
2024
2024
  }
2025
2025
  var HEADERS = { TSS_SHELL: "X-TSS_SHELL" };
2026
2026
  async function getStartManifest(matchedRoutes) {
2027
- const { tsrStartManifest } = await import("./_tanstack-start-manifest_v-0L7fqnH4-KMVGUFE4.js");
2027
+ const { tsrStartManifest } = await import("./_tanstack-start-manifest_v-Cm8xE-Rb-TMLYN3GY.js");
2028
2028
  const startManifest = tsrStartManifest();
2029
2029
  let routes = startManifest.routes;
2030
2030
  routes[rootRouteId];
@@ -4982,7 +4982,7 @@ var getBaseManifest = getProdBaseManifest;
4982
4982
  var createEarlyHintsForRequest = createEarlyHintsCollector;
4983
4983
  async function loadEntries() {
4984
4984
  const [routerEntry, startEntry, pluginAdapters] = await Promise.all([
4985
- import("./router-Dg72SESP-PCWKLFRG.js"),
4985
+ import("./router-DfG45nTQ-3VXEUYG5.js"),
4986
4986
  import("./start-DVUbMfrb-ELVIFRUY.js"),
4987
4987
  import("./empty-plugin-adapters-Cqtvkauv-6XWFDBYT.js")
4988
4988
  ]);
@@ -1,6 +1,6 @@
1
1
  import "./chunk-MLKGABMK.js";
2
2
 
3
- // web/app/dist/server/assets/session-insights-panel-CUhdgvRt.js
3
+ // web/app/dist/server/assets/session-insights-panel-xgrkX1Rp.js
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  var RLM_CHILD_STATUSES = [
6
6
  "queued",
@@ -11,7 +11,7 @@ var RLM_CHILD_STATUSES = [
11
11
  "recovering",
12
12
  "failed"
13
13
  ];
14
- function deriveSessionInsights({ activityLabel, artifactRuns, messages, planLabel, presentation, queue }) {
14
+ function deriveSessionInsights({ activityLabel, artifactRuns, transcriptSummary, planLabel, presentation, queue }) {
15
15
  const rlmChildren = Object.fromEntries(RLM_CHILD_STATUSES.map((status) => [status, 0]));
16
16
  for (const child of presentation.rlmChildren) rlmChildren[child.status] += 1;
17
17
  const refinements = presentation.refinements.reduce((counts, refinement) => ({
@@ -27,7 +27,7 @@ function deriveSessionInsights({ activityLabel, artifactRuns, messages, planLabe
27
27
  return {
28
28
  activity: activityLabel || planLabel || "Waiting for input",
29
29
  artifactCount: artifacts.length,
30
- assistantMessages: messages.filter((message) => message.role === "assistant").length,
30
+ assistantMessages: transcriptSummary.assistantMessageCount,
31
31
  bashCommands: presentation.userBash.length,
32
32
  goal: presentation.goal,
33
33
  ipythonCells: artifacts.filter((artifact) => artifact.kind === "ipython").length,
@@ -35,7 +35,7 @@ function deriveSessionInsights({ activityLabel, artifactRuns, messages, planLabe
35
35
  queuedSteering: queue.steering.length,
36
36
  refinements,
37
37
  rlmChildren,
38
- userMessages: messages.filter((message) => message.role === "user").length
38
+ userMessages: transcriptSummary.userMessageCount
39
39
  };
40
40
  }
41
41
  function humanize(value) {
@@ -55,10 +55,10 @@ function DetailList({ children, label }) {
55
55
  "aria-label": label,
56
56
  className: "rounded-md border border-border/60 bg-background px-3 py-2.5 shadow-[0_1px_4px_-1px_rgba(0,0,0,0.06)]",
57
57
  children: [/* @__PURE__ */ jsx("h3", {
58
- className: "mb-2 text-[0.6875rem] font-medium uppercase tracking-wide text-foreground/45",
58
+ className: "mb-2 text-caption font-medium uppercase tracking-wide text-foreground/45",
59
59
  children: label
60
60
  }), /* @__PURE__ */ jsx("dl", {
61
- className: "space-y-1.5 text-[0.75rem]",
61
+ className: "space-y-1.5 text-label",
62
62
  children
63
63
  })]
64
64
  });
@@ -109,16 +109,16 @@ function GoalDetails({ goal }) {
109
109
  ]
110
110
  });
111
111
  }
112
- function SessionInsightsPanel({ activityLabel, artifactRuns, chatMode, messages, planLabel, presentation, queue, selectedModelKey, sessionId, status, thinkingLevel }) {
112
+ function SessionInsightsPanel({ activityLabel, artifactRuns, chatMode, transcriptSummary, planLabel, presentation, queue, selectedModelKey, sessionId, status, thinkingLevel }) {
113
113
  if (!sessionId) return /* @__PURE__ */ jsx("section", {
114
114
  "aria-label": "Session insights",
115
- className: "flex min-h-36 items-center rounded-md border border-dashed border-border/70 px-4 text-center text-[0.75rem] leading-5 text-foreground/45",
115
+ className: "flex min-h-36 items-center rounded-md border border-dashed border-border/70 px-4 text-center text-label leading-5 text-foreground/45",
116
116
  children: "Start or open a session to view its live insights."
117
117
  });
118
118
  const insights = deriveSessionInsights({
119
119
  activityLabel,
120
120
  artifactRuns,
121
- messages,
121
+ transcriptSummary,
122
122
  planLabel,
123
123
  presentation,
124
124
  queue
@@ -5,26 +5,26 @@ import {
5
5
  ShimmerLabel,
6
6
  SwapLabel,
7
7
  collapsePanel
8
- } from "./chunk-UCUFC553.js";
8
+ } from "./chunk-RXUMFFUV.js";
9
9
  import {
10
10
  Collapsible,
11
11
  CollapsibleContent,
12
12
  CollapsibleTrigger
13
- } from "./chunk-MNPHMZU7.js";
13
+ } from "./chunk-UE32PAV2.js";
14
14
  import {
15
15
  ChevronDown
16
16
  } from "./chunk-WWJF4RO2.js";
17
- import "./chunk-S3PQ6HKH.js";
18
- import "./chunk-MNBGB2SP.js";
19
- import "./chunk-XIB6XNUX.js";
17
+ import "./chunk-OVJYUWSQ.js";
18
+ import "./chunk-E5HALE4M.js";
19
+ import "./chunk-XJ6TGSUB.js";
20
20
  import "./chunk-4ZIEVI5O.js";
21
21
  import {
22
22
  cn
23
- } from "./chunk-DJMHPJBP.js";
23
+ } from "./chunk-CHEC7TWB.js";
24
24
  import "./chunk-JDCCC7A7.js";
25
25
  import "./chunk-MLKGABMK.js";
26
26
 
27
- // web/app/dist/server/assets/fleet-reasoning-panel-DG_vuvv0.js
27
+ // web/app/dist/server/assets/session-reasoning-panel-m1RgcIph.js
28
28
  import { useMemo, useState } from "react";
29
29
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
30
30
  var CELL_SHAPES = {
@@ -46,7 +46,7 @@ function GenerationLoader({ label, tick, variant = "dots", className, ...props }
46
46
  return /* @__PURE__ */ jsx("span", { className: cn("bg-foreground size-2 transition-opacity duration-300 motion-reduce:transition-none", CELL_SHAPES[variant], active ? "opacity-90" : "opacity-15") }, index);
47
47
  })
48
48
  }), /* @__PURE__ */ jsx(ShimmerLabel, {
49
- className: "text-foreground/55 relative inline-block text-sm",
49
+ className: "relative inline-block text-sm text-muted-foreground",
50
50
  children: label
51
51
  })]
52
52
  });
@@ -59,7 +59,7 @@ function ReasoningPanel({ steps, visibleSteps, streaming, streamingLabel = "Thin
59
59
  onOpenChange,
60
60
  className: cn("w-full max-w-sm", className),
61
61
  children: [/* @__PURE__ */ jsxs(CollapsibleTrigger, {
62
- className: "group/trigger text-foreground/55 hover:text-foreground/90 flex items-center gap-1.5 py-1 text-[0.84375rem] transition-[color,scale] outline-none active:scale-[0.98]",
62
+ className: "group/trigger flex items-center gap-1.5 py-1 text-sm text-muted-foreground outline-none transition-[color,scale] hover:text-foreground/90 focus-visible:ring-2 focus-visible:ring-ring active:scale-[0.98]",
63
63
  children: [/* @__PURE__ */ jsxs(SwapLabel, {
64
64
  active: streaming ? 0 : 1,
65
65
  className: "text-start",
@@ -68,7 +68,7 @@ function ReasoningPanel({ steps, visibleSteps, streaming, streamingLabel = "Thin
68
68
  className: "relative inline-block leading-none",
69
69
  children: streamingLabel
70
70
  }), elapsed !== void 0 && /* @__PURE__ */ jsx("span", {
71
- className: cn("font-mono text-[0.6875rem] tracking-tight", "text-foreground/30 tabular-nums"),
71
+ className: cn("font-mono text-caption tracking-tight", "tabular-nums text-muted-foreground/70"),
72
72
  children: elapsed
73
73
  })] }), /* @__PURE__ */ jsx(Fragment$1, { children: restingLabel })]
74
74
  }), /* @__PURE__ */ jsx(ChevronDown, { className: "size-3.5 shrink-0 opacity-60 transition-transform duration-200 ease-[cubic-bezier(0.32,0.72,0,1)] group-data-open/trigger:rotate-180 group-data-panel-open/trigger:rotate-180 motion-reduce:transition-none" })]
@@ -82,14 +82,14 @@ function ReasoningPanel({ steps, visibleSteps, streaming, streamingLabel = "Thin
82
82
  className: "fade-in slide-in-from-bottom-1 animate-in fill-mode-both flex gap-3 duration-300",
83
83
  children: [/* @__PURE__ */ jsx("span", {
84
84
  "aria-hidden": true,
85
- className: cn("mt-[7px] size-[5px] shrink-0 rounded-full transition-colors duration-300", active ? "animate-pulse bg-blue-500 dark:bg-blue-400" : "bg-foreground/20")
85
+ className: cn("mt-[7px] size-[5px] shrink-0 rounded-full transition-colors duration-300", active ? "animate-pulse bg-primary" : "bg-foreground/20")
86
86
  }), /* @__PURE__ */ jsxs("span", {
87
87
  className: "flex min-w-0 flex-1 flex-col",
88
88
  children: [/* @__PURE__ */ jsx("p", {
89
- className: "text-foreground/90 text-[0.84375rem] font-medium",
89
+ className: "text-foreground/90 text-body font-medium",
90
90
  children: step.title
91
91
  }), /* @__PURE__ */ jsx("p", {
92
- className: "text-foreground/50 mt-0.5 text-[0.8125rem] leading-relaxed break-words",
92
+ className: "text-foreground/50 mt-0.5 text-body leading-relaxed break-words",
93
93
  children: step.body
94
94
  })]
95
95
  })]
@@ -102,25 +102,25 @@ function ReasoningPanel({ steps, visibleSteps, streaming, streamingLabel = "Thin
102
102
  function ThinkingIndicator({ label, elapsed, className, ...props }) {
103
103
  return /* @__PURE__ */ jsxs("div", {
104
104
  "data-slot": "thinking-indicator",
105
- className: cn("text-foreground/55 flex items-center gap-2.5 text-sm", className),
105
+ className: cn("flex items-center gap-2.5 text-sm text-muted-foreground", className),
106
106
  ...props,
107
107
  children: [
108
108
  /* @__PURE__ */ jsx("span", {
109
109
  "aria-hidden": true,
110
- className: "size-1.5 shrink-0 animate-pulse rounded-full bg-blue-500 motion-reduce:animate-none dark:bg-blue-400"
110
+ className: "size-1.5 shrink-0 animate-pulse rounded-full bg-primary motion-reduce:animate-none"
111
111
  }),
112
112
  /* @__PURE__ */ jsx(ShimmerLabel, {
113
113
  className: "fade-in slide-in-from-bottom-1 animate-in relative inline-block leading-none duration-300",
114
114
  children: label
115
115
  }, label),
116
116
  elapsed !== void 0 && /* @__PURE__ */ jsx("span", {
117
- className: cn("font-mono text-[0.6875rem] tracking-tight", "text-foreground/30 tabular-nums"),
117
+ className: cn("font-mono text-caption tracking-tight", "tabular-nums text-muted-foreground/70"),
118
118
  children: elapsed
119
119
  })
120
120
  ]
121
121
  });
122
122
  }
123
- function FleetReasoningPanel({ presentation, className, streamingOverride }) {
123
+ function SessionReasoningPanel({ presentation, className, streamingOverride }) {
124
124
  const [userOpen, setUserOpen] = useState(void 0);
125
125
  const streaming = streamingOverride ?? presentation.streaming;
126
126
  const open = userOpen ?? streaming;
@@ -135,17 +135,16 @@ function FleetReasoningPanel({ presentation, className, streamingOverride }) {
135
135
  const activeLabel = activeStep?.title ?? phaseLabel(presentation.phase);
136
136
  const elapsed = formatElapsed(presentation.elapsedMs);
137
137
  return /* @__PURE__ */ jsxs("section", {
138
- "data-slot": "fleet-reasoning-presentation",
138
+ "data-slot": "reasoning-presentation",
139
139
  "aria-label": "Safe reasoning progress",
140
140
  className: cn("w-full max-w-xl rounded-xl border border-border/60 bg-muted/30 px-3 py-2.5 shadow-sm shadow-black/[0.02] dark:shadow-black/15", className),
141
141
  children: [streaming ? /* @__PURE__ */ jsx("div", {
142
142
  className: "mb-1.5 flex flex-col gap-1.5 border-b border-border/45 pb-2.5",
143
143
  children: activeStep?.body ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(ThinkingIndicator, {
144
144
  label: activeLabel,
145
- elapsed,
146
- className: "text-[0.8125rem]"
145
+ elapsed
147
146
  }), /* @__PURE__ */ jsx("p", {
148
- className: "pl-4 text-xs font-normal text-muted-foreground",
147
+ className: "pl-4 text-pretty text-caption font-normal text-muted-foreground",
149
148
  children: activeStep.body
150
149
  })] }) : /* @__PURE__ */ jsx(GenerationLoader, {
151
150
  label: activeLabel,
@@ -195,5 +194,5 @@ function formatElapsed(elapsedMs) {
195
194
  return String(Math.floor(seconds / 60)) + "m " + String(seconds % 60) + "s";
196
195
  }
197
196
  export {
198
- FleetReasoningPanel
197
+ SessionReasoningPanel
199
198
  };
@@ -0,0 +1,46 @@
1
+ import {
2
+ SessionToolRenderer,
3
+ session_tool_renderer_exports
4
+ } from "./chunk-FMAYMBRS.js";
5
+ import "./chunk-V3S6BVXO.js";
6
+ import "./chunk-2ST2ULW7.js";
7
+ import "./chunk-XSOUURPF.js";
8
+ import "./chunk-RXUMFFUV.js";
9
+ import "./chunk-H5D5DX3K.js";
10
+ import "./chunk-XA42CHF2.js";
11
+ import "./chunk-7NZ3FJDA.js";
12
+ import "./chunk-OMPXUTMX.js";
13
+ import "./chunk-JIULUYHT.js";
14
+ import "./chunk-LY5XOHHU.js";
15
+ import "./chunk-S2IBIJIG.js";
16
+ import "./chunk-UE32PAV2.js";
17
+ import "./chunk-WU6X3GPJ.js";
18
+ import "./chunk-OOXWPL22.js";
19
+ import "./chunk-TNL4YV63.js";
20
+ import "./chunk-O2DUZJYK.js";
21
+ import "./chunk-CAPTFJOC.js";
22
+ import "./chunk-K6PTNSCW.js";
23
+ import "./chunk-3C4CFCIS.js";
24
+ import "./chunk-7FK6YEMA.js";
25
+ import "./chunk-7E76R7MB.js";
26
+ import "./chunk-BQROC4PL.js";
27
+ import "./chunk-WWJF4RO2.js";
28
+ import "./chunk-4QD4PCVP.js";
29
+ import "./chunk-OVJYUWSQ.js";
30
+ import "./chunk-JBLHIEVG.js";
31
+ import "./chunk-E5HALE4M.js";
32
+ import "./chunk-XJ6TGSUB.js";
33
+ import "./chunk-ST5I2PLN.js";
34
+ import "./chunk-KBWUBWVJ.js";
35
+ import "./chunk-MJXXVQNA.js";
36
+ import "./chunk-X7D6GFQU.js";
37
+ import "./chunk-4ZIEVI5O.js";
38
+ import "./chunk-CHEC7TWB.js";
39
+ import "./chunk-UQVZJSZZ.js";
40
+ import "./chunk-JDCCC7A7.js";
41
+ import "./chunk-L547YHC4.js";
42
+ import "./chunk-MLKGABMK.js";
43
+ export {
44
+ session_tool_renderer_exports as n,
45
+ SessionToolRenderer as t
46
+ };
@@ -0,0 +1,229 @@
1
+ import {
2
+ AlertDialog,
3
+ AlertDialogCancel,
4
+ AlertDialogContent,
5
+ AlertDialogDescription,
6
+ AlertDialogFooter,
7
+ AlertDialogTitle
8
+ } from "./chunk-HGVJEUV4.js";
9
+ import {
10
+ GitBranch
11
+ } from "./chunk-OMPXUTMX.js";
12
+ import "./chunk-YDDDSVNB.js";
13
+ import {
14
+ Button
15
+ } from "./chunk-HQ5TEXHT.js";
16
+ import "./chunk-TLNZNR7C.js";
17
+ import "./chunk-E5HALE4M.js";
18
+ import "./chunk-XJ6TGSUB.js";
19
+ import "./chunk-4ZIEVI5O.js";
20
+ import {
21
+ cn
22
+ } from "./chunk-CHEC7TWB.js";
23
+ import "./chunk-JDCCC7A7.js";
24
+ import "./chunk-L547YHC4.js";
25
+ import "./chunk-MLKGABMK.js";
26
+
27
+ // web/app/dist/server/assets/session-tree-panel-rS0t1wbf.js
28
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
29
+ import { jsx, jsxs } from "react/jsx-runtime";
30
+ function flattenVisibleNodes(nodes, depth = 0) {
31
+ const rows = [];
32
+ for (const node of nodes) {
33
+ rows.push({
34
+ node,
35
+ depth
36
+ });
37
+ rows.push(...flattenVisibleNodes(node.children, depth + 1));
38
+ }
39
+ return rows;
40
+ }
41
+ function SessionTreeRow({ depth, isSelected, node, onSelect }) {
42
+ return /* @__PURE__ */ jsxs(Button, {
43
+ type: "button",
44
+ variant: "ghost",
45
+ "data-testid": `session-tree-node-${node.id}`,
46
+ onClick: onSelect,
47
+ className: cn("h-auto w-full flex-col items-start gap-0.5 rounded-md px-2 py-1.5 text-left font-normal", isSelected ? "bg-foreground/10 ring-1 ring-foreground/15" : "hover:bg-foreground/6", node.isOnActiveBranch ? "text-foreground/90" : "text-foreground/55"),
48
+ style: {
49
+ marginLeft: `${depth * 12}px`,
50
+ width: `calc(100% - ${depth * 12}px)`
51
+ },
52
+ children: [/* @__PURE__ */ jsxs("span", {
53
+ className: "flex items-center gap-1.5 text-label leading-5",
54
+ children: [node.isLeaf ? /* @__PURE__ */ jsx("span", {
55
+ "aria-hidden": "true",
56
+ className: "font-semibold text-foreground",
57
+ children: "*"
58
+ }) : null, /* @__PURE__ */ jsx("span", {
59
+ className: "truncate font-medium",
60
+ children: node.preview
61
+ })]
62
+ }), /* @__PURE__ */ jsx("span", {
63
+ className: "truncate font-mono text-caption text-foreground/40",
64
+ children: node.id
65
+ })]
66
+ });
67
+ }
68
+ function SessionTreePanel({ sessionId, snapshot, loading, error, isStreaming, selectedEntryId, onSelectEntry, onRefresh, onRewind }) {
69
+ const [confirmEntryId, setConfirmEntryId] = useState(null);
70
+ const [confirmExpectedLeafId, setConfirmExpectedLeafId] = useState(null);
71
+ const [confirming, setConfirming] = useState(false);
72
+ const [confirmError, setConfirmError] = useState(null);
73
+ const confirmGenerationRef = useRef(0);
74
+ const rows = useMemo(() => snapshot ? flattenVisibleNodes(snapshot.nodes) : [], [snapshot]);
75
+ const selectedNode = useMemo(() => rows.find((row) => row.node.id === selectedEntryId)?.node, [rows, selectedEntryId]);
76
+ const canRewind = Boolean(selectedNode && snapshot && selectedEntryId && selectedEntryId !== snapshot.leafId && !isStreaming);
77
+ useEffect(() => {
78
+ if (confirmEntryId === null || confirming || confirmError === null) return;
79
+ const nextLeaf = snapshot?.leafId ?? null;
80
+ if (nextLeaf === confirmExpectedLeafId) return;
81
+ setConfirmExpectedLeafId(nextLeaf);
82
+ }, [
83
+ confirmEntryId,
84
+ confirming,
85
+ confirmError,
86
+ confirmExpectedLeafId,
87
+ snapshot?.leafId
88
+ ]);
89
+ const resolveMessageId = useCallback((node) => {
90
+ if (!sessionId || node.messageIndex === void 0) return void 0;
91
+ return `${sessionId}-m${node.messageIndex}`;
92
+ }, [sessionId]);
93
+ const clearConfirm = useCallback(() => {
94
+ confirmGenerationRef.current += 1;
95
+ setConfirmEntryId(null);
96
+ setConfirmExpectedLeafId(null);
97
+ setConfirmError(null);
98
+ setConfirming(false);
99
+ }, []);
100
+ useEffect(() => {
101
+ clearConfirm();
102
+ }, [sessionId, clearConfirm]);
103
+ const handleConfirmRewind = useCallback(async () => {
104
+ const entryId = confirmEntryId;
105
+ const leafId = confirmExpectedLeafId;
106
+ if (!entryId) return;
107
+ const generation = ++confirmGenerationRef.current;
108
+ const isCurrent = () => confirmGenerationRef.current === generation;
109
+ setConfirming(true);
110
+ setConfirmError(null);
111
+ try {
112
+ await onRewind(entryId, leafId);
113
+ if (isCurrent()) clearConfirm();
114
+ } catch (caught) {
115
+ if (isCurrent()) setConfirmError(caught instanceof Error ? caught.message : String(caught));
116
+ } finally {
117
+ if (isCurrent()) setConfirming(false);
118
+ }
119
+ }, [
120
+ clearConfirm,
121
+ confirmEntryId,
122
+ confirmExpectedLeafId,
123
+ onRewind
124
+ ]);
125
+ const openConfirm = useCallback((entryId) => {
126
+ setConfirmError(null);
127
+ setConfirmEntryId(entryId);
128
+ setConfirmExpectedLeafId(snapshot?.leafId ?? null);
129
+ }, [snapshot?.leafId]);
130
+ if (!sessionId) return /* @__PURE__ */ jsx("section", {
131
+ "aria-label": "Session tree",
132
+ className: "flex min-h-36 items-center rounded-md border border-dashed border-border/70 px-4 text-center text-label leading-5 text-foreground/45",
133
+ children: "Start or open a session to browse its branch history."
134
+ });
135
+ return /* @__PURE__ */ jsxs("section", {
136
+ "aria-label": "Session tree",
137
+ className: "flex min-h-0 flex-1 flex-col gap-3",
138
+ children: [
139
+ /* @__PURE__ */ jsxs("div", {
140
+ className: "flex items-center justify-between gap-2",
141
+ children: [/* @__PURE__ */ jsxs("div", {
142
+ className: "flex items-center gap-2 text-label text-foreground/70",
143
+ children: [/* @__PURE__ */ jsx(GitBranch, {
144
+ className: "size-4",
145
+ "aria-hidden": "true"
146
+ }), /* @__PURE__ */ jsx("span", { children: "Branch history" })]
147
+ }), /* @__PURE__ */ jsx(Button, {
148
+ type: "button",
149
+ size: "sm",
150
+ variant: "outline",
151
+ onClick: onRefresh,
152
+ disabled: loading,
153
+ children: "Refresh"
154
+ })]
155
+ }),
156
+ error ? /* @__PURE__ */ jsx("p", {
157
+ className: "rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-label text-destructive",
158
+ children: error
159
+ }) : null,
160
+ isStreaming ? /* @__PURE__ */ jsx("p", {
161
+ className: "rounded-md border border-border/60 bg-background px-3 py-2 text-label text-foreground/60",
162
+ children: "Finish or stop the current turn before rewinding."
163
+ }) : null,
164
+ /* @__PURE__ */ jsxs("div", {
165
+ "data-testid": "session-tree-list",
166
+ className: "flex min-h-0 flex-1 flex-col gap-1 overflow-y-auto rounded-md border border-border/60 bg-background p-2",
167
+ children: [
168
+ loading && rows.length === 0 ? /* @__PURE__ */ jsx("p", {
169
+ className: "px-2 py-3 text-label text-foreground/45",
170
+ children: "Loading session tree\u2026"
171
+ }) : null,
172
+ !loading && rows.length === 0 ? /* @__PURE__ */ jsx("p", {
173
+ className: "px-2 py-3 text-label text-foreground/45",
174
+ children: "No branch entries yet."
175
+ }) : null,
176
+ rows.map(({ node, depth }) => /* @__PURE__ */ jsx(SessionTreeRow, {
177
+ depth,
178
+ node,
179
+ isSelected: node.id === selectedEntryId,
180
+ onSelect: () => onSelectEntry(node.id, resolveMessageId(node))
181
+ }, node.id))
182
+ ]
183
+ }),
184
+ /* @__PURE__ */ jsxs("div", {
185
+ className: "flex items-center justify-between gap-2",
186
+ children: [/* @__PURE__ */ jsxs("p", {
187
+ className: "text-caption text-foreground/45",
188
+ children: [/* @__PURE__ */ jsx("span", {
189
+ "aria-hidden": "true",
190
+ children: "*"
191
+ }), " marks the current leaf on the active branch."]
192
+ }), /* @__PURE__ */ jsx(Button, {
193
+ type: "button",
194
+ size: "sm",
195
+ disabled: !canRewind,
196
+ onClick: () => selectedEntryId && openConfirm(selectedEntryId),
197
+ children: "Rewind here"
198
+ })]
199
+ }),
200
+ /* @__PURE__ */ jsx(AlertDialog, {
201
+ open: confirmEntryId !== null,
202
+ onOpenChange: (open) => {
203
+ if (!open && !confirming) clearConfirm();
204
+ },
205
+ children: /* @__PURE__ */ jsxs(AlertDialogContent, { children: [
206
+ /* @__PURE__ */ jsx(AlertDialogTitle, { children: "Rewind session?" }),
207
+ /* @__PURE__ */ jsx(AlertDialogDescription, { children: "Later turns on the current branch leave the active session. Rewinding to a user turn follows Prime Agent edit-from-here semantics: the leaf moves to that message's parent so you can resend from there." }),
208
+ confirmError ? /* @__PURE__ */ jsx("p", {
209
+ className: "rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-label text-destructive",
210
+ children: confirmError
211
+ }) : null,
212
+ /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [/* @__PURE__ */ jsx(AlertDialogCancel, {
213
+ disabled: confirming,
214
+ children: "Cancel"
215
+ }), /* @__PURE__ */ jsx(Button, {
216
+ type: "button",
217
+ variant: "destructive",
218
+ disabled: confirming,
219
+ onClick: () => void handleConfirmRewind(),
220
+ children: confirming ? "Rewinding\u2026" : "Rewind"
221
+ })] })
222
+ ] })
223
+ })
224
+ ]
225
+ });
226
+ }
227
+ export {
228
+ SessionTreePanel
229
+ };