@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
@@ -2,31 +2,202 @@ import {
2
2
  useBaseUiId,
3
3
  useControlled,
4
4
  useTransitionStatus
5
- } from "./chunk-SIJVVYQT.js";
5
+ } from "./chunk-TXZDDJCT.js";
6
6
  import {
7
7
  AnimationFrame,
8
8
  TransitionStatusDataAttributes_exports,
9
9
  addEventListener,
10
10
  createChangeEventDetails,
11
- formatErrorMessage_default,
12
- getWindow,
13
11
  reason_parts_exports,
14
- resolveStyle,
15
12
  transitionStatusMapping,
16
13
  useAnimationsFinished,
14
+ useOpenChangeComplete,
15
+ useValueAsRef
16
+ } from "./chunk-APOS34PW.js";
17
+ import {
18
+ formatErrorMessage_default,
19
+ getWindow,
20
+ resolveStyle,
17
21
  useButton,
18
22
  useIsoLayoutEffect,
19
23
  useMergedRefs,
20
- useOpenChangeComplete,
21
24
  useRenderElement,
22
25
  useStableCallback,
23
- useValueAsRef,
24
26
  warn
25
- } from "./chunk-GLSR4ZI2.js";
27
+ } from "./chunk-FSQWWR2M.js";
26
28
  import {
27
29
  __export
28
30
  } from "./chunk-CZ7CSFO4.js";
29
31
 
32
+ // web/app/dist/server/assets/prime-agent-artifacts-CJUvqPu2.js
33
+ function stablePresentationId(seed) {
34
+ let hash = 2166136261;
35
+ for (let index = 0; index < seed.length; index += 1) {
36
+ hash ^= seed.charCodeAt(index);
37
+ hash = Math.imul(hash, 16777619);
38
+ }
39
+ return `${seed.replace(/[^a-zA-Z0-9:_-]+/g, "-").slice(0, 96)}-${(hash >>> 0).toString(36)}`;
40
+ }
41
+ function timestampFor(message) {
42
+ if (typeof message.createdAt === "number") return message.createdAt;
43
+ if (message.createdAt instanceof Date) return message.createdAt.getTime();
44
+ if (typeof message.createdAt === "string") {
45
+ const parsed = Date.parse(message.createdAt);
46
+ if (Number.isFinite(parsed)) return parsed;
47
+ }
48
+ return 0;
49
+ }
50
+ function record(value) {
51
+ return typeof value === "object" && value !== null && !Array.isArray(value) ? value : void 0;
52
+ }
53
+ function stringField(source, ...keys) {
54
+ for (const key of keys) if (typeof source?.[key] === "string") return source[key];
55
+ }
56
+ function textContent(value) {
57
+ if (typeof value === "string") return value;
58
+ if (!Array.isArray(value)) return void 0;
59
+ return value.flatMap((part) => {
60
+ const source = record(part);
61
+ return typeof source?.text === "string" ? [source.text] : [];
62
+ }).join("") || void 0;
63
+ }
64
+ function splitLines(artifactId, index, content, type) {
65
+ return content.split("\n").map((line, lineIndex) => ({
66
+ id: `${artifactId}-${index}-${type}-${lineIndex}`,
67
+ type,
68
+ content: line
69
+ }));
70
+ }
71
+ function filePathFor(artifact) {
72
+ const input = record(artifact.input);
73
+ const output = record(artifact.output);
74
+ return stringField(input, "path", "file_path", "filePath") ?? stringField(output, "path", "file_path", "filePath") ?? artifact.title;
75
+ }
76
+ function unifiedDiffFor(artifact) {
77
+ const input = record(artifact.input);
78
+ const output = record(artifact.output);
79
+ const details = record(output?.details);
80
+ return stringField(output, "diff", "patch") ?? stringField(details, "diff", "patch") ?? stringField(input, "diff", "patch");
81
+ }
82
+ function editDiffFor(artifact) {
83
+ const input = record(artifact.input);
84
+ const output = record(artifact.output);
85
+ return (Array.isArray(input?.edits) ? input.edits : Array.isArray(output?.edits) ? output.edits : []).flatMap((edit, index) => {
86
+ const source = record(edit);
87
+ if (!source) return [];
88
+ const before = stringField(source, "oldText", "old_string", "before");
89
+ const after = stringField(source, "newText", "new_string", "after", "content");
90
+ return [...before === void 0 ? [] : splitLines(artifact.id, index, before, "removed"), ...after === void 0 ? [] : splitLines(artifact.id, index, after, "added")];
91
+ });
92
+ }
93
+ function primeAgentArtifactDiff(artifact) {
94
+ const unifiedDiff = unifiedDiffFor(artifact);
95
+ if (unifiedDiff?.trim()) {
96
+ const lines2 = unifiedDiff.split("\n").map((content2, index) => ({
97
+ id: `${artifact.id}-${index}`,
98
+ type: content2.startsWith("+") && !content2.startsWith("+++") ? "added" : content2.startsWith("-") && !content2.startsWith("---") ? "removed" : "context",
99
+ content: content2
100
+ }));
101
+ return {
102
+ file: filePathFor(artifact),
103
+ lines: lines2,
104
+ copyText: unifiedDiff
105
+ };
106
+ }
107
+ const editLines = editDiffFor(artifact);
108
+ if (editLines.length > 0) return {
109
+ file: filePathFor(artifact),
110
+ lines: editLines,
111
+ copyText: editLines.map((line) => `${line.type === "added" ? "+" : line.type === "removed" ? "-" : " "}${line.content}`).join("\n")
112
+ };
113
+ const input = record(artifact.input);
114
+ const output = record(artifact.output);
115
+ if (!(artifact.title.toLowerCase().includes("write") || input?.content !== void 0)) return void 0;
116
+ const content = textContent(input?.content) ?? textContent(output?.content);
117
+ if (content === void 0) return void 0;
118
+ const lines = splitLines(artifact.id, 0, content, "added");
119
+ return {
120
+ file: filePathFor(artifact),
121
+ lines,
122
+ copyText: lines.map((line) => `+${line.content}`).join("\n")
123
+ };
124
+ }
125
+ function artifactKind(name) {
126
+ const lower = name.toLowerCase();
127
+ if (lower.includes("thinking") || lower.includes("reasoning") || lower.includes("question")) return void 0;
128
+ if (lower.includes("bash") || lower.includes("shell")) return "bash";
129
+ if (lower.includes("ipython") || lower.includes("python")) return "ipython";
130
+ if (lower.includes("mcp")) return "mcp";
131
+ if (lower.includes("edit") || lower.includes("write") || lower.includes("patch")) return "diff";
132
+ return "generic";
133
+ }
134
+ function statusFor(part, chatStatus) {
135
+ const state = typeof part.state === "string" ? part.state : void 0;
136
+ if (state === "output-error" || state === "error") return "error";
137
+ if (state === "output-available" || state === "complete" || state === "success") return "success";
138
+ if (state === "cancelled" || state === "canceled" || state === "aborted" || state === "interrupted") return "cancelled";
139
+ if (part.error !== void 0) return "error";
140
+ if (part.output !== void 0 || part.result !== void 0) return "success";
141
+ return chatStatus === "streaming" ? "running" : "cancelled";
142
+ }
143
+ function upsertRun(runs, artifact) {
144
+ const run = runs.find((candidate) => candidate.runId === artifact.runId);
145
+ if (!run) {
146
+ runs.push({
147
+ id: stablePresentationId(`artifact-run:${artifact.runId}`),
148
+ runId: artifact.runId,
149
+ artifacts: [artifact],
150
+ startedAt: artifact.timestamp,
151
+ ...artifact.status !== "running" ? { endedAt: artifact.timestamp } : {}
152
+ });
153
+ return;
154
+ }
155
+ const existing = run.artifacts.findIndex((candidate) => candidate.id === artifact.id);
156
+ if (existing < 0) run.artifacts.push(artifact);
157
+ else run.artifacts[existing] = artifact;
158
+ if (artifact.status !== "running") run.endedAt = artifact.timestamp;
159
+ }
160
+ function artifactsFromMessages(messages, chatStatus) {
161
+ const runs = [];
162
+ for (const message of messages) for (const [partIndex, part] of message.parts.entries()) {
163
+ const source = record(part);
164
+ if (!source) continue;
165
+ const type = source?.type;
166
+ if (typeof type !== "string" || !type.startsWith("tool-")) continue;
167
+ const name = type.slice(5);
168
+ const kind = artifactKind(name);
169
+ if (!kind) continue;
170
+ const input = source.input ?? source.args;
171
+ const output = source.output ?? source.result;
172
+ if (input === void 0 && output === void 0) continue;
173
+ const sourceId = typeof source.toolCallId === "string" && source.toolCallId ? source.toolCallId : `${message.id}:${partIndex}`;
174
+ const runId = typeof source.runId === "string" && source.runId ? source.runId : message.id;
175
+ const timestamp = timestampFor(message);
176
+ upsertRun(runs, {
177
+ id: stablePresentationId(`${runId}:${sourceId}:${kind}`),
178
+ runId,
179
+ sourceMessageId: message.id,
180
+ ...typeof source.toolCallId === "string" ? { sourceToolCallId: source.toolCallId } : {},
181
+ kind,
182
+ title: name,
183
+ status: statusFor(source, chatStatus),
184
+ ...input !== void 0 ? { input } : {},
185
+ ...output !== void 0 ? { output } : {},
186
+ ...typeof source.backgroundOutput === "string" ? { backgroundOutput: source.backgroundOutput } : {},
187
+ timestamp
188
+ });
189
+ }
190
+ return runs;
191
+ }
192
+ function derivePrimeAgentArtifactRuns(messages, presentation, chatStatus) {
193
+ const runs = (presentation?.artifactRuns ?? []).map((run) => ({
194
+ ...run,
195
+ artifacts: run.artifacts.map((artifact) => ({ ...artifact }))
196
+ }));
197
+ for (const run of artifactsFromMessages(messages, chatStatus)) for (const artifact of run.artifacts) upsertRun(runs, artifact);
198
+ return runs;
199
+ }
200
+
30
201
  // web/app/dist/server/assets/collapsible-BJWsiuIc.js
31
202
  import { jsx } from "react/jsx-runtime";
32
203
 
@@ -647,6 +818,8 @@ function CollapsibleContent({ ...props }) {
647
818
  }
648
819
 
649
820
  export {
821
+ primeAgentArtifactDiff,
822
+ derivePrimeAgentArtifactRuns,
650
823
  Collapsible$1,
651
824
  CollapsibleTrigger3 as CollapsibleTrigger,
652
825
  CollapsibleContent
@@ -1,9 +1,9 @@
1
- import {
2
- SessionToolRenderer
3
- } from "./chunk-WCKKN5BR.js";
4
1
  import {
5
2
  ToolTimeline
6
- } from "./chunk-UQV2NU63.js";
3
+ } from "./chunk-5IE54MRG.js";
4
+ import {
5
+ SessionToolRenderer
6
+ } from "./chunk-B5FKCW75.js";
7
7
  import {
8
8
  Message,
9
9
  MessageBubble,
@@ -11,32 +11,39 @@ import {
11
11
  MessageContent,
12
12
  MessageScroller,
13
13
  SessionGenerativeTextRenderer,
14
+ Trace,
15
+ TraceCollapsible,
16
+ TraceCollapsibleContent,
17
+ TraceCollapsibleTrigger,
18
+ TraceDescription,
19
+ TraceIcon,
20
+ TraceLine,
21
+ TraceTitle,
14
22
  UserMessage,
15
23
  VirtualizedTurnList,
16
24
  buildAssistantElements,
17
- derivePrimeAgentArtifactRuns,
18
25
  groupMessages,
19
26
  normalizeAssistantToolParts,
20
27
  orderedRlmChildren,
21
28
  rlmStatusIcon,
22
29
  transcriptStatus
23
- } from "./chunk-EBC7QORX.js";
30
+ } from "./chunk-V2GCVTDP.js";
31
+ import {
32
+ derivePrimeAgentArtifactRuns
33
+ } from "./chunk-5MOXRFX6.js";
24
34
  import {
25
35
  Button$1
26
- } from "./chunk-ZUZPJNLY.js";
36
+ } from "./chunk-FSQWWR2M.js";
27
37
  import {
28
38
  Bot,
29
- ChevronDown,
30
39
  CircleAlert,
31
40
  CircleCheck,
32
41
  LoaderCircle,
33
- RefreshCw
34
- } from "./chunk-GLH2GWMG.js";
35
- import {
42
+ RefreshCw,
36
43
  cn
37
- } from "./chunk-TMQ3MT3D.js";
44
+ } from "./chunk-VDEUVEWL.js";
38
45
 
39
- // web/app/dist/server/assets/subagent-transcript-CShZljH2.js
46
+ // web/app/dist/server/assets/subagent-transcript-DELYb-YR.js
40
47
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
41
48
  import { jsx, jsxs } from "react/jsx-runtime";
42
49
  function SubagentList({ children, tree, className }) {
@@ -44,66 +51,49 @@ function SubagentList({ children, tree, className }) {
44
51
  const active = agents.some((child) => child.status === "queued" || child.status === "running" || child.status === "recovering");
45
52
  const [open, setOpen] = useState(active);
46
53
  if (agents.length === 0) return null;
47
- return /* @__PURE__ */ jsxs("section", {
48
- className: cn("mt-2 rounded-xl border border-border/60 bg-muted/20", className),
49
- children: [/* @__PURE__ */ jsxs("button", {
50
- type: "button",
51
- "aria-expanded": open || active,
52
- onClick: () => setOpen((current) => !current),
53
- className: "flex w-full items-center gap-2 px-3 py-2 text-left text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
54
- children: [
55
- active ? /* @__PURE__ */ jsx(LoaderCircle, { className: "size-3.5 animate-spin text-primary" }) : /* @__PURE__ */ jsx(CircleCheck, { className: "size-3.5 text-success" }),
56
- /* @__PURE__ */ jsx("span", {
57
- className: "flex-1 font-medium",
58
- children: active ? "Subagents working" : "Subagents completed"
59
- }),
60
- /* @__PURE__ */ jsx("span", {
61
- className: "text-xs tabular-nums text-muted-foreground",
62
- children: agents.length
63
- }),
64
- /* @__PURE__ */ jsx(ChevronDown, { className: cn("size-3.5 text-muted-foreground transition-transform", (open || active) && "rotate-180") })
65
- ]
66
- }), open || active ? /* @__PURE__ */ jsx("div", {
67
- className: "space-y-1 border-t border-border/50 px-3 py-2",
68
- children: agents.map((child) => /* @__PURE__ */ jsxs("div", {
69
- className: "flex min-w-0 items-start gap-2",
70
- style: { paddingLeft: `${Math.max(0, child.depth ?? 0) * 12}px` },
71
- children: [
72
- /* @__PURE__ */ jsx("span", {
73
- className: "mt-0.5 shrink-0",
74
- children: rlmStatusIcon(child.status)
75
- }),
76
- /* @__PURE__ */ jsxs("div", {
77
- className: "min-w-0 flex-1",
78
- children: [/* @__PURE__ */ jsxs("div", {
79
- className: "flex min-w-0 items-baseline gap-2",
80
- children: [/* @__PURE__ */ jsx("span", {
81
- className: "truncate text-sm text-foreground/85",
82
- children: child.label
83
- }), child.model ? /* @__PURE__ */ jsx("span", {
84
- className: "truncate font-mono text-micro text-muted-foreground",
85
- children: child.model
86
- }) : null]
87
- }), child.answerPreview || child.progressNote || child.activity?.toolName || child.error ? /* @__PURE__ */ jsx("p", {
88
- className: "truncate text-xs text-muted-foreground",
89
- children: child.error ?? child.answerPreview ?? child.progressNote ?? child.activity?.toolName
90
- }) : null]
91
- }),
92
- /* @__PURE__ */ jsx("span", {
93
- className: "shrink-0 text-micro capitalize text-muted-foreground",
94
- children: child.status
95
- })
96
- ]
97
- }, child.id))
98
- }) : null]
54
+ return /* @__PURE__ */ jsx(Trace, {
55
+ className: cn("mt-2", className),
56
+ "data-testid": "subagent-trace",
57
+ children: /* @__PURE__ */ jsxs(TraceCollapsible, {
58
+ open: open || active,
59
+ onOpenChange: setOpen,
60
+ children: [/* @__PURE__ */ jsx(TraceCollapsibleTrigger, {
61
+ "aria-label": active ? "Subagents working" : "Subagents completed",
62
+ children: /* @__PURE__ */ jsxs(TraceLine, {
63
+ status: active ? "running" : void 0,
64
+ children: [
65
+ /* @__PURE__ */ jsx(TraceIcon, { children: active ? /* @__PURE__ */ jsx(LoaderCircle, { className: "animate-spin" }) : /* @__PURE__ */ jsx(CircleCheck, {}) }),
66
+ /* @__PURE__ */ jsx(TraceTitle, { children: active ? "Subagents working" : "Subagents completed" }),
67
+ /* @__PURE__ */ jsx(TraceDescription, { children: agents.length })
68
+ ]
69
+ })
70
+ }), /* @__PURE__ */ jsx(TraceCollapsibleContent, { children: /* @__PURE__ */ jsx(Trace, {
71
+ className: "gap-1",
72
+ children: agents.map((child) => /* @__PURE__ */ jsxs(TraceLine, {
73
+ style: { paddingLeft: `${Math.max(0, child.depth ?? 0) * 12}px` },
74
+ children: [
75
+ /* @__PURE__ */ jsx(TraceIcon, { children: rlmStatusIcon(child.status) }),
76
+ /* @__PURE__ */ jsx(TraceTitle, { children: child.label }),
77
+ child.model ? /* @__PURE__ */ jsx(TraceDescription, { children: child.model }) : null,
78
+ /* @__PURE__ */ jsx(TraceDescription, {
79
+ className: "capitalize",
80
+ children: child.status
81
+ }),
82
+ child.error || child.answerPreview || child.progressNote || child.activity?.toolName ? /* @__PURE__ */ jsx(TraceDescription, {
83
+ className: "max-w-56 truncate",
84
+ children: child.error || child.answerPreview || child.progressNote || child.activity?.toolName
85
+ }) : null
86
+ ]
87
+ }, child.id))
88
+ }) })]
89
+ })
99
90
  });
100
91
  }
101
- function SubagentTurnView({ turn, isLast, isStreaming, artifacts, presentation }) {
102
- const assistantElements = useMemo(() => turn.assistants.flatMap((message, index) => buildAssistantElements(normalizeAssistantToolParts(message.parts ?? []), {
92
+ function SubagentTurnView({ turn, isLast, isStreaming, presentation, artifacts }) {
93
+ const assistantElements = useMemo(() => turn.assistants.flatMap((message, index) => buildAssistantElements(normalizeAssistantToolParts((message.parts ?? []).filter((part) => part.type !== "tool-FleetReasoning" && part.type !== "tool-Thinking")), {
103
94
  messageId: message.id,
104
95
  isLast: isLast && index === turn.assistants.length - 1,
105
96
  isStreaming,
106
- suppressQuestionTool: true,
107
97
  ToolRendererComponent: SessionToolRenderer,
108
98
  TextRendererComponent: SessionGenerativeTextRenderer
109
99
  })), [
@@ -124,15 +114,15 @@ function SubagentTurnView({ turn, isLast, isStreaming, artifacts, presentation }
124
114
  children: /* @__PURE__ */ jsx(MessageContent, { children: /* @__PURE__ */ jsx(MessageBubble, {
125
115
  variant: "ghost",
126
116
  children: /* @__PURE__ */ jsxs(MessageBubbleContent, { children: [
127
- isLast ? /* @__PURE__ */ jsx(ToolTimeline, {
128
- messages: turn.assistants,
129
- artifacts,
130
- streaming: isStreaming
131
- }) : null,
132
117
  /* @__PURE__ */ jsx("div", {
133
118
  className: "flex flex-col gap-3",
134
119
  children: assistantElements
135
120
  }),
121
+ isLast && artifacts.length > 0 ? /* @__PURE__ */ jsx(ToolTimeline, {
122
+ messages: [],
123
+ artifacts,
124
+ streaming: isStreaming
125
+ }) : null,
136
126
  isLast && presentation ? /* @__PURE__ */ jsx(SubagentList, {
137
127
  tree: presentation.rlmTree,
138
128
  children: presentation.rlmChildren
@@ -149,7 +139,10 @@ function SubagentTranscriptView({ child, parentSessionId, transcript, onRefresh,
149
139
  const turns = useMemo(() => transcript?.status !== "loading" ? groupMessages(transcript?.messages ?? []) : [], [transcript]);
150
140
  const childStatus = statusOverride ?? transcriptStatus(child);
151
141
  const artifactRuns = useMemo(() => transcript?.status !== "loading" ? derivePrimeAgentArtifactRuns(transcript?.messages ?? [], transcript?.presentation, childStatus) : [], [childStatus, transcript]);
152
- const artifacts = useMemo(() => artifactRuns.flatMap((run) => run.artifacts), [artifactRuns]);
142
+ const artifactOnlyEvents = useMemo(() => {
143
+ const toolIds = new Set((transcript?.messages ?? []).flatMap((message) => message.parts.flatMap((part) => "toolCallId" in part && part.toolCallId ? [part.toolCallId] : [])));
144
+ return artifactRuns.flatMap((run) => run.artifacts).filter((artifact) => !artifact.sourceToolCallId || !toolIds.has(artifact.sourceToolCallId));
145
+ }, [artifactRuns, transcript]);
153
146
  const presentation = transcript?.presentation;
154
147
  const renderSubagentTurn = useCallback((turn, index) => {
155
148
  const isLast = index === turns.length - 1;
@@ -157,11 +150,11 @@ function SubagentTranscriptView({ child, parentSessionId, transcript, onRefresh,
157
150
  turn,
158
151
  isLast,
159
152
  isStreaming: isLast && childStatus === "streaming",
160
- artifacts: isLast ? artifacts : [],
161
- presentation: isLast ? presentation : void 0
153
+ presentation: isLast ? presentation : void 0,
154
+ artifacts: isLast ? artifactOnlyEvents : []
162
155
  });
163
156
  }, [
164
- artifacts,
157
+ artifactOnlyEvents,
165
158
  childStatus,
166
159
  presentation,
167
160
  turns.length
@@ -206,9 +199,9 @@ function SubagentTranscriptView({ child, parentSessionId, transcript, onRefresh,
206
199
  title: child.progressNote,
207
200
  children: ["Progress: ", child.progressNote]
208
201
  }) : null,
209
- child.answerPreview || child.recap ? /* @__PURE__ */ jsx("p", {
202
+ child.answerPreview ? /* @__PURE__ */ jsx("p", {
210
203
  className: "mt-1 line-clamp-3 whitespace-pre-wrap text-caption leading-4 text-foreground/55",
211
- children: child.answerPreview ?? child.recap
204
+ children: child.answerPreview
212
205
  }) : null
213
206
  ]
214
207
  }),