@nextclaw/ui 0.25.4 → 0.26.1

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 (492) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/dist/.vite/manifest.json +1158 -1392
  3. package/dist/assets/{abnfDiagram-VRR7QNED-DX_u5BBX.js → abnfDiagram-VRR7QNED-Dcw10Yt1.js} +1 -1
  4. package/dist/assets/account-panel-ZM2qzKF4.js +1 -0
  5. package/dist/assets/{aiden0z-pptx-renderer.es-C-E9e5yB.js → aiden0z-pptx-renderer.es--oNqetPA.js} +1 -1
  6. package/dist/assets/api-Cjq-o1VN.js +20 -0
  7. package/dist/assets/app-presenter-provider-C02YPoMr.js +124 -0
  8. package/dist/assets/appearance-settings-page-B4zouKzg.js +1 -0
  9. package/dist/assets/{arc-Cxwa624o.js → arc-DBRedCax.js} +1 -1
  10. package/dist/assets/architecture-TIHT7OUA-CvnC-LeA.js +1 -0
  11. package/dist/assets/{architectureDiagram-ZJ3FMSHR-D8mCj0H1.js → architectureDiagram-ZJ3FMSHR-Dufhtuv-.js} +1 -1
  12. package/dist/assets/{blockDiagram-677ZJIJ3-CbGC1IHl.js → blockDiagram-677ZJIJ3-BUk0vtJ7.js} +1 -1
  13. package/dist/assets/{book-open-xqEj1OLE.js → book-open-AteA89HX.js} +1 -1
  14. package/dist/assets/{c4Diagram-LMCZKHZV-BQhGC1Vc.js → c4Diagram-LMCZKHZV-CxDcVE9p.js} +1 -1
  15. package/dist/assets/card-BLXvBstA.js +1 -0
  16. package/dist/assets/channel-CpMstUPF.js +1 -0
  17. package/dist/assets/channels-list-page-fj8kMo-T.js +8 -0
  18. package/dist/assets/chunk-2Q5K7J3B-Djp3VF0s.js +1 -0
  19. package/dist/assets/{chunk-32BRIVSS-B74ZZwYG.js → chunk-32BRIVSS-DSF3KElA.js} +1 -1
  20. package/dist/assets/{chunk-52WLFC77-BvmxW_f_.js → chunk-52WLFC77-Costxzr3.js} +1 -1
  21. package/dist/assets/{chunk-5FCAYU7R-DQvBRnwL.js → chunk-5FCAYU7R-rhqzGGZo.js} +1 -1
  22. package/dist/assets/{chunk-5HE753X5-CDIH0_y3.js → chunk-5HE753X5-BsEsmIao.js} +1 -1
  23. package/dist/assets/{chunk-5JV3BV7I-CcevlKd-.js → chunk-5JV3BV7I-Dqw_DCoN.js} +1 -1
  24. package/dist/assets/{chunk-5TONJI2A-_3dxVdnY.js → chunk-5TONJI2A-Cft82fp8.js} +1 -1
  25. package/dist/assets/{chunk-5VM5RSS4-pGO5vvo-.js → chunk-5VM5RSS4-DqNHn9Dl.js} +1 -1
  26. package/dist/assets/{chunk-7BUUIJ7U-DEKF5uAN.js → chunk-7BUUIJ7U-A5SBEMYY.js} +1 -1
  27. package/dist/assets/{chunk-BIQX33UG-CjBFgq2r.js → chunk-BIQX33UG-1Ng3mTrH.js} +1 -1
  28. package/dist/assets/{chunk-C7G6YPKG-e_K9OGTz.js → chunk-C7G6YPKG-DRJEy8ZI.js} +1 -1
  29. package/dist/assets/{chunk-CQNSW5MT-C2IiHyHz.js → chunk-CQNSW5MT-Bydv_J3J.js} +1 -1
  30. package/dist/assets/{chunk-CYSBUYHQ-DCC6KmGp.js → chunk-CYSBUYHQ-HkMIg12u.js} +1 -1
  31. package/dist/assets/{chunk-EMLP6XTP-BYGgekQ0.js → chunk-EMLP6XTP-C5ndDvm3.js} +1 -1
  32. package/dist/assets/{chunk-EX3LRPZG-FGcwuVsA.js → chunk-EX3LRPZG-DzeloZRo.js} +1 -1
  33. package/dist/assets/{chunk-FWX5IMBZ-CV3Ih_Os.js → chunk-FWX5IMBZ-n_2_CLTQ.js} +2 -2
  34. package/dist/assets/{chunk-HOUHSVGY-CXpq_hfV.js → chunk-HOUHSVGY-kx_slvu3.js} +1 -1
  35. package/dist/assets/{chunk-ICXQ74PX-CZIpjupq.js → chunk-ICXQ74PX-sQLMURqL.js} +1 -1
  36. package/dist/assets/{chunk-JG7HCLWE-CdgwBpW7.js → chunk-JG7HCLWE-CMUn5Elc.js} +1 -1
  37. package/dist/assets/{chunk-JWPE2WC7-BPjAZpOQ.js → chunk-JWPE2WC7-Cra3s-Uk.js} +1 -1
  38. package/dist/assets/{chunk-MOJQB5TN-DbJDm8to.js → chunk-MOJQB5TN-umcrg5Bi.js} +1 -1
  39. package/dist/assets/{chunk-MOZMSUNE-BUa1fqKn.js → chunk-MOZMSUNE-BnljD1ig.js} +1 -1
  40. package/dist/assets/{chunk-OGEWGWER-CtnzLgRu.js → chunk-OGEWGWER-BXx5pQjU.js} +1 -1
  41. package/dist/assets/{chunk-OSBZ3O6U-fUgdpTUM.js → chunk-OSBZ3O6U-D-1qfdWu.js} +1 -1
  42. package/dist/assets/{chunk-PUDLZKDR-CtDWZT9-.js → chunk-PUDLZKDR-DLzX78LC.js} +1 -1
  43. package/dist/assets/{chunk-Q4XR5HBZ-BxnK2qxr.js → chunk-Q4XR5HBZ-DTK-rtW6.js} +1 -1
  44. package/dist/assets/{chunk-QBLGF6JB-CH4UKoCF.js → chunk-QBLGF6JB-CsFeIGfr.js} +1 -1
  45. package/dist/assets/{chunk-R7FJI6CG-BxwFoF1v.js → chunk-R7FJI6CG-4xNYUeng.js} +1 -1
  46. package/dist/assets/{chunk-RYQCIY6F-DpHAmq7O.js → chunk-RYQCIY6F-DJiHiTE5.js} +1 -1
  47. package/dist/assets/{chunk-U6XO7XAA-BjH2VUHU.js → chunk-U6XO7XAA-BVYkauHz.js} +1 -1
  48. package/dist/assets/{chunk-V7JOEXUC-DKJZ3HGj.js → chunk-V7JOEXUC-BsazE8cS.js} +1 -1
  49. package/dist/assets/chunk-VAUOI2AC-BrbiIC1Q.js +1 -0
  50. package/dist/assets/{chunk-VR4S4FIN-Cf-o2GtI.js → chunk-VR4S4FIN-7RoZQffO.js} +1 -1
  51. package/dist/assets/{chunk-WYO6CB5R-zeNXGm20.js → chunk-WYO6CB5R-DEuS6N1R.js} +3 -3
  52. package/dist/assets/chunk-XXDRQBXY-Cx9N40wF.js +1 -0
  53. package/dist/assets/{chunk-YOTPTUD7-Ck87Kqxe.js → chunk-YOTPTUD7-9KBrosZL.js} +1 -1
  54. package/dist/assets/{chunk-ZGVPDNZ5-BbfK6Bfd.js → chunk-ZGVPDNZ5-IYgN9f5A.js} +1 -1
  55. package/dist/assets/{chunk-ZIRB5QZD-BDpzh4Yl.js → chunk-ZIRB5QZD-BUo0-zcp.js} +1 -1
  56. package/dist/assets/{circle-dashed-CU3yApvP.js → circle-dashed-LSYZTzM7.js} +1 -1
  57. package/dist/assets/classDiagram-OUVF2IWQ-DFN1v3PQ.js +1 -0
  58. package/dist/assets/classDiagram-v2-EOCWNBFH-DRvglADa.js +1 -0
  59. package/dist/assets/client-DudCRJw4.js +1 -0
  60. package/dist/assets/config-split-page-G7Kt2BnV.js +1 -0
  61. package/dist/assets/confirm-dialog-DShT64F6.js +1 -0
  62. package/dist/assets/context-menu-rd7b_kVD.js +1 -0
  63. package/dist/assets/{cose-bilkent-JH36ORCC-CQfMxKCT.js → cose-bilkent-JH36ORCC-DhqbC1fR.js} +1 -1
  64. package/dist/assets/createLucideIcon-D7hvIHV-.js +1 -0
  65. package/dist/assets/cynefin-VYW2F7L2-DXUGnpJH.js +1 -0
  66. package/dist/assets/{cynefinDiagram-TSTJHNR4-CxFTiC-p.js → cynefinDiagram-TSTJHNR4-C-TBRi5V.js} +1 -1
  67. package/dist/assets/{dagre-CaBNMcB1.js → dagre-CrgsRasE.js} +1 -1
  68. package/dist/assets/{dagre-VKFMJZFB-S_7Hc7bI.js → dagre-VKFMJZFB-BmafJymp.js} +1 -1
  69. package/dist/assets/desktop-capabilities-page-CzqzFZUY.js +1 -0
  70. package/dist/assets/desktop-update-config-CgeQ0Ffo.js +1 -0
  71. package/dist/assets/{diagram-FQU43EPY-C7zENvFb.js → diagram-FQU43EPY-BoOMwa6D.js} +1 -1
  72. package/dist/assets/{diagram-G47NLZAW-DqYTCqZA.js → diagram-G47NLZAW-Le7N6Uym.js} +1 -1
  73. package/dist/assets/{diagram-NH7WQ7WH-BfSJtXRc.js → diagram-NH7WQ7WH-Fbpj3-MO.js} +1 -1
  74. package/dist/assets/{diagram-OA4YK3LP-CFO-j67H.js → diagram-OA4YK3LP-D3QuGGuu.js} +1 -1
  75. package/dist/assets/{diagram-WEI45ONY-DBQDbTaJ.js → diagram-WEI45ONY-Cxu1uiN6.js} +1 -1
  76. package/dist/assets/dialog-C7glmAQJ.js +5 -0
  77. package/dist/assets/doc-browser-context-BlhBAOLH.js +1 -0
  78. package/dist/assets/doc-browser-dBiR9Qi0.js +1 -0
  79. package/dist/assets/{docx-preview-B4-aDfvO.js → docx-preview-CkU2psnd.js} +1 -1
  80. package/dist/assets/download-BYgECE0n.js +1 -0
  81. package/dist/assets/{ebnfDiagram-CCIWWBDH-CfDNIXFN.js → ebnfDiagram-CCIWWBDH-CCAjuQM6.js} +1 -1
  82. package/dist/assets/{erDiagram-Q63AITRT-D95rFXMM.js → erDiagram-Q63AITRT-BuzUAq-d.js} +1 -1
  83. package/dist/assets/es2015-CsjAAQ6X.js +41 -0
  84. package/dist/assets/eventmodeling-45OFAUF4-ZBfVS3ZC.js +1 -0
  85. package/dist/assets/extensions-qYL-NpL3.js +1 -0
  86. package/dist/assets/{eye-C84inPcV.js → eye-BBuTzJ53.js} +1 -1
  87. package/dist/assets/flowDiagram-23GEKE2U-CqdsKk6x.js +1 -0
  88. package/dist/assets/form-actions-CLGWO52v.js +1 -0
  89. package/dist/assets/{ganttDiagram-NO4QXBWP-Bawg0P0r.js → ganttDiagram-NO4QXBWP-cJmWVY8F.js} +1 -1
  90. package/dist/assets/gitGraph-TEB2WS4Q-fHYFd9Es.js +1 -0
  91. package/dist/assets/{gitGraphDiagram-IHSO6WYX-BbKh9nbL.js → gitGraphDiagram-IHSO6WYX-F58o-vtP.js} +1 -1
  92. package/dist/assets/{i18n-20rSH40D.js → i18n-qBGEbcW6.js} +2 -2
  93. package/dist/assets/info-DKCQHKI2-CSaOL_bb.js +1 -0
  94. package/dist/assets/{infoDiagram-FWYZ7A6U-DPffZXYh.js → infoDiagram-FWYZ7A6U-Gt59b83C.js} +1 -1
  95. package/dist/assets/{ishikawaDiagram-FXEZZL3T-CBMsLwZ2.js → ishikawaDiagram-FXEZZL3T-1u4IAj1I.js} +1 -1
  96. package/dist/assets/{journeyDiagram-5HDEW3XC-Mz5U4OzU.js → journeyDiagram-5HDEW3XC-CCQsfV-5.js} +1 -1
  97. package/dist/assets/{kanban-definition-HUTT4EX6-FXZq2k19.js → kanban-definition-HUTT4EX6-vlB6O_Zn.js} +1 -1
  98. package/dist/assets/katex-B4FQSo9k.js +1 -0
  99. package/dist/assets/keyboard-shortcuts-settings-page-B-wK_6zG.js +1 -0
  100. package/dist/assets/{line-BZwCgT9K.js → line-D_bHubTL.js} +1 -1
  101. package/dist/assets/{linear-CTe9mKUw.js → linear-ChlwuS5y.js} +1 -1
  102. package/dist/assets/loader-circle-BA7EMkih.js +1 -0
  103. package/dist/assets/login-page-Cd84lpVV.js +1 -0
  104. package/dist/assets/login-page-VdMyNkFf.js +1 -0
  105. package/dist/assets/main-CR0SrTBf.js +2 -0
  106. package/dist/assets/main-DXH6EdXI.css +1 -0
  107. package/dist/assets/main-i18n-catalog.config-Btp_OowF.js +1 -0
  108. package/dist/assets/{map-Ci48ZwAp.js → map-oGHTsIu8.js} +1 -1
  109. package/dist/assets/mcp-marketplace-page-jacRwiI-.js +1 -0
  110. package/dist/assets/{mermaid-parser.core-CzPD3U_z.js → mermaid-parser.core-CuRe1ZG4.js} +2 -2
  111. package/dist/assets/{mermaid.core-geIMNPbV.js → mermaid.core-u4YCFKRf.js} +3 -3
  112. package/dist/assets/{mindmap-definition-LN4V7U3C-xqlKxsr_.js → mindmap-definition-LN4V7U3C-DeJAQYTu.js} +1 -1
  113. package/dist/assets/model-config-page-D0DQlSDa.js +1 -0
  114. package/dist/assets/navigation-history-CzErJuPG.js +1 -0
  115. package/dist/assets/navigation-link-32iM1-e6.js +3 -0
  116. package/dist/assets/{ordinal-MxnX8yhv.js → ordinal-C6JFfkKN.js} +1 -1
  117. package/dist/assets/packet-7NZHBO7P-D-YFTczs.js +1 -0
  118. package/dist/assets/panel-app-CC0bVSu4.js +1 -0
  119. package/dist/assets/panel-app-i18n-catalog.config-LUSBp5Ce.js +1 -0
  120. package/dist/assets/panelStandalone-C9EKaApN.js +2 -0
  121. package/dist/assets/{pegDiagram-2B236MQR-D50MFTN1.js → pegDiagram-2B236MQR-nVMkxShH.js} +1 -1
  122. package/dist/assets/pie-RZYD4A2V-VEnYu9s5.js +1 -0
  123. package/dist/assets/{pieDiagram-ENE6RG2P-CpA13oiC.js → pieDiagram-ENE6RG2P-8aUH44QZ.js} +1 -1
  124. package/dist/assets/privacy-settings-page-Bxxx12OO.js +1 -0
  125. package/dist/assets/projects-D56yAPNT.js +1 -0
  126. package/dist/assets/provider-models-C3frdXeW.js +1 -0
  127. package/dist/assets/provider-scoped-model-input-CYetrPYZ.js +1 -0
  128. package/dist/assets/providers-config-page-DESB1h8g.js +1 -0
  129. package/dist/assets/{puzzle-D6gulz7u.js → puzzle-CWHfFyYN.js} +1 -1
  130. package/dist/assets/pwa-CiGUjpcd.js +1 -0
  131. package/dist/assets/{quadrantDiagram-ABIIQ3AL-CYCgaj4l.js → quadrantDiagram-ABIIQ3AL-EY8hpFv8.js} +1 -1
  132. package/dist/assets/radar-I7S5WNFK-BFNIekC1.js +1 -0
  133. package/dist/assets/railroad-3IZDKUUU-lVqJ3Hak.js +1 -0
  134. package/dist/assets/railroad-abnf-AHOZXSZD-DYaefdFC.js +1 -0
  135. package/dist/assets/railroad-ebnf-EBAXGLYW-CTAk6lVq.js +1 -0
  136. package/dist/assets/railroad-peg-LSFZ7HO6-Cob294tg.js +1 -0
  137. package/dist/assets/{railroadDiagram-RFXS5EU6-4LKDGlXN.js → railroadDiagram-RFXS5EU6-CNhcIeji.js} +1 -1
  138. package/dist/assets/{refresh-cw-h9Xq3LY3.js → refresh-cw-y3L6PyLt.js} +1 -1
  139. package/dist/assets/remote-DiGFV8nP.js +1 -0
  140. package/dist/assets/{requirementDiagram-TGXJPOKE-CxNOU0JH.js → requirementDiagram-TGXJPOKE-D8Dcs-Rt.js} +1 -1
  141. package/dist/assets/{rotate-cw-B6xm41Wn.js → rotate-cw-CNE9qSHi.js} +1 -1
  142. package/dist/assets/runtime-config-page-5o98T-TD.js +1 -0
  143. package/dist/assets/{sankeyDiagram-HTMAVEWB-DbCBDe2S.js → sankeyDiagram-HTMAVEWB-HTrb6aa-.js} +1 -1
  144. package/dist/assets/{save-fff_WpY2.js → save-B0p5a0ET.js} +1 -1
  145. package/dist/assets/search-config-page-CpGcnIzi.js +1 -0
  146. package/dist/assets/secrets-config-page-C4VTiW3r.js +3 -0
  147. package/dist/assets/security-config-C5-RQVpS.js +1 -0
  148. package/dist/assets/select-CctTN205.js +1 -0
  149. package/dist/assets/{sequenceDiagram-DBY2YBRQ-DA6W2BS_.js → sequenceDiagram-DBY2YBRQ-6f_4X16Y.js} +1 -1
  150. package/dist/assets/service-apps-panel-CKE5HKNY.js +1 -0
  151. package/dist/assets/{settings-2-CE3ELQyk.js → settings-2-EPflrNk6.js} +1 -1
  152. package/dist/assets/{sizeCapture-X5ZJPWSS-T_q_d_VW.js → sizeCapture-X5ZJPWSS-Ck9rsuwL.js} +1 -1
  153. package/dist/assets/{src-CYpUlx-4.js → src-C8AUg09O.js} +1 -1
  154. package/dist/assets/{stateDiagram-2N3HPSRC-mi8z2G0a.js → stateDiagram-2N3HPSRC-Cm33MLHu.js} +1 -1
  155. package/dist/assets/stateDiagram-v2-6OUMAXLB-BrNv-raG.js +1 -0
  156. package/dist/assets/status-dot-CensgJZC.js +1 -0
  157. package/dist/assets/{swimlanes-5IMT3BWC-DkBEhWE4.js → swimlanes-5IMT3BWC-B107vmvM.js} +2 -2
  158. package/dist/assets/swimlanesDiagram-G3AALYLV-ntcxaPXp.js +8 -0
  159. package/dist/assets/tag-chip-Bjzb4-qW.js +1 -0
  160. package/dist/assets/theme-provider-hlle7Skk.js +1 -0
  161. package/dist/assets/{timeline-definition-FHXFAJF6-BoFmqBw1.js → timeline-definition-FHXFAJF6-CJEoAj33.js} +1 -1
  162. package/dist/assets/trash-2-C5KH5Rw9.js +1 -0
  163. package/dist/assets/treeView-QDETBFTQ-DbFmr-gw.js +1 -0
  164. package/dist/assets/treemap-6X3UGDF4-C8aY96pi.js +1 -0
  165. package/dist/assets/use-config-CPl_F79t.js +1 -0
  166. package/dist/assets/use-desktop-capabilities-CEg9-DrQ.js +1 -0
  167. package/dist/assets/use-viewport-layout-CPZUmTPi.js +1 -0
  168. package/dist/assets/{vennDiagram-L72KCM5P-BlZ3Or5U.js → vennDiagram-L72KCM5P-DzsUHk5I.js} +1 -1
  169. package/dist/assets/wardley-OPB4EBWU-D8d6DbbJ.js +1 -0
  170. package/dist/assets/{wardleyDiagram-EHGQE667-yDfr33i3.js → wardleyDiagram-EHGQE667-1NfFs5ua.js} +1 -1
  171. package/dist/assets/x--xxUvHKW.js +1 -0
  172. package/dist/assets/{xychartDiagram-FW5EYKEG-mIXwIGAQ.js → xychartDiagram-FW5EYKEG-Ci8AI3Qo.js} +1 -1
  173. package/dist/index.html +38 -54
  174. package/dist/panel-standalone.html +11 -15
  175. package/package.json +8 -8
  176. package/src/app/components/layout/__tests__/app-layout.test.tsx +7 -0
  177. package/src/app/components/layout/__tests__/sidebar.layout.test.tsx +36 -16
  178. package/src/app/components/layout/app-layout.tsx +18 -46
  179. package/src/app/components/layout/sidebar-items.tsx +27 -18
  180. package/src/app/components/layout/sidebar-rail.styles.ts +11 -2
  181. package/src/app/components/layout/sidebar.tsx +3 -2
  182. package/src/app/configs/__tests__/app-navigation.config.test.ts +4 -0
  183. package/src/app/configs/app-navigation.config.ts +41 -86
  184. package/src/app/configs/page-resource-renderers.config.ts +13 -0
  185. package/src/app/index.tsx +4 -0
  186. package/src/app/presenters/app.presenter.ts +13 -2
  187. package/src/features/agents/components/__tests__/agents-page.test.tsx +4 -0
  188. package/src/features/agents/components/agent-details-dialog.tsx +5 -2
  189. package/src/features/agents/components/agents-page.tsx +9 -4
  190. package/src/features/apps/components/app-package-card.tsx +2 -2
  191. package/src/features/chat/components/conversation/chat-conversation-content.tsx +32 -19
  192. package/src/features/chat/components/conversation/chat-conversation-header-section.tsx +1 -0
  193. package/src/features/chat/components/conversation/chat-conversation-header.tsx +1 -1
  194. package/src/features/chat/components/conversation/chat-conversation-panel.tsx +2 -2
  195. package/src/features/chat/components/conversation/chat-conversation-workspace-section.tsx +1 -0
  196. package/src/features/chat/components/layout/__tests__/chat-page-shell.test.tsx +5 -6
  197. package/src/features/chat/components/layout/__tests__/chat-sidebar-toolbar.test.tsx +14 -12
  198. package/src/features/chat/components/layout/chat-page-shell.tsx +31 -64
  199. package/src/features/chat/components/layout/chat-sidebar-desktop-layout.tsx +8 -5
  200. package/src/features/chat/components/layout/chat-sidebar-toolbar.tsx +64 -256
  201. package/src/features/chat/components/layout/chat-sidebar.tsx +8 -30
  202. package/src/features/chat/components/providers/chat-runtime.provider.tsx +62 -0
  203. package/src/features/chat/features/conversation/components/__tests__/floating-session-conversation.test.tsx +70 -0
  204. package/src/features/chat/features/conversation/components/chat-voice-input-panel.tsx +3 -2
  205. package/src/features/chat/features/conversation/components/floating-session-conversation.tsx +27 -0
  206. package/src/features/chat/features/conversation/components/session-conversation-area.tsx +1 -0
  207. package/src/features/chat/features/conversation/components/session-conversation-panel-tab.tsx +25 -0
  208. package/src/features/chat/features/conversation/hooks/__tests__/use-chat-voice-input.test.tsx +4 -0
  209. package/src/features/chat/features/conversation/hooks/use-chat-composer-reference-intent.ts +2 -1
  210. package/src/features/chat/features/message/components/__tests__/chat-inline-panel-app-card.test.tsx +2 -1
  211. package/src/features/chat/features/message/components/__tests__/chat-message-assistant-header.container.test.tsx +3 -0
  212. package/src/features/chat/features/message/components/__tests__/chat-message-list-skill-preview.container.test.tsx +3 -0
  213. package/src/features/chat/features/message/components/__tests__/chat-message-list.container.test.tsx +35 -47
  214. package/src/features/chat/features/message/components/chat-message-list.container.tsx +6 -10
  215. package/src/features/chat/features/message/hooks/use-chat-inline-token-actions.ts +7 -3
  216. package/src/features/chat/features/message/utils/__tests__/chat-message-process-summary.utils.test.ts +52 -6
  217. package/src/features/chat/features/message/utils/chat-message-process-summary.utils.ts +22 -37
  218. package/src/features/chat/features/session/components/__tests__/chat-sidebar-project-groups.test.tsx +1 -1
  219. package/src/features/chat/features/session/components/__tests__/chat-sidebar-session-item.test.tsx +21 -0
  220. package/src/features/chat/features/session/components/chat-mobile-session-row.tsx +61 -0
  221. package/src/features/chat/features/session/components/chat-sidebar-project-groups.tsx +4 -37
  222. package/src/features/chat/features/session/components/chat-sidebar-session-entry.tsx +2 -0
  223. package/src/features/chat/features/session/components/chat-sidebar-session-item.tsx +18 -7
  224. package/src/features/chat/features/session/components/chat-sidebar-session-list.tsx +5 -3
  225. package/src/features/chat/features/session/components/session-header/__tests__/chat-session-header-actions.test.tsx +10 -2
  226. package/src/features/chat/features/session/components/session-header/chat-session-header-actions.tsx +20 -17
  227. package/src/features/chat/features/session/components/session-header/chat-session-header-menu-item.tsx +4 -4
  228. package/src/features/chat/features/session/components/session-header/chat-session-more-actions-menu.tsx +18 -5
  229. package/src/features/chat/features/session/utils/chat-session-route.utils.ts +12 -0
  230. package/src/features/chat/features/workspace/components/__tests__/chat-session-child-sessions.test.tsx +28 -0
  231. package/src/features/chat/features/workspace/components/__tests__/chat-session-workspace-file-preview.test.tsx +9 -0
  232. package/src/features/chat/features/workspace/components/__tests__/chat-session-workspace-panel-content.test.tsx +6 -2
  233. package/src/features/chat/features/workspace/components/__tests__/chat-session-workspace-panel.test.tsx +49 -12
  234. package/src/features/chat/features/workspace/components/chat-session-workspace-file-preview.tsx +13 -6
  235. package/src/features/chat/features/workspace/components/chat-session-workspace-panel-content.tsx +6 -0
  236. package/src/features/chat/features/workspace/components/chat-session-workspace-panel-nav.tsx +21 -36
  237. package/src/features/chat/features/workspace/components/chat-session-workspace-panel.tsx +40 -31
  238. package/src/features/chat/features/workspace/components/child-sessions/chat-session-child-sessions.tsx +6 -1
  239. package/src/features/chat/features/workspace/components/project-files/workspace-directory-tree.tsx +2 -2
  240. package/src/features/chat/features/workspace/components/project-files/workspace-project-files-toolbar.tsx +2 -2
  241. package/src/features/chat/features/workspace/utils/__tests__/chat-workspace-panel-view-model.utils.test.ts +27 -0
  242. package/src/features/chat/features/workspace/utils/__tests__/workspace-file-panel-route.utils.test.ts +94 -0
  243. package/src/features/chat/features/workspace/utils/chat-workspace-file-tab-persistence.utils.ts +2 -0
  244. package/src/features/chat/features/workspace/utils/chat-workspace-file-tab.utils.ts +15 -0
  245. package/src/features/chat/features/workspace/utils/chat-workspace-panel-view-model.utils.ts +11 -0
  246. package/src/features/chat/features/workspace/utils/workspace-file-panel-route.utils.ts +147 -0
  247. package/src/features/chat/index.ts +20 -4
  248. package/src/features/chat/managers/__tests__/chat-completion-notification.manager.test.ts +8 -0
  249. package/src/features/chat/managers/__tests__/chat-thread-workspace.manager.test.ts +7 -2
  250. package/src/features/chat/managers/__tests__/session-surface.manager.test.ts +45 -0
  251. package/src/features/chat/managers/chat-completion-notification.manager.ts +5 -0
  252. package/src/features/chat/managers/chat-composer-intent.manager.ts +16 -0
  253. package/src/features/chat/managers/chat-thread.manager.ts +18 -27
  254. package/src/features/chat/managers/chat-voice-input.manager.ts +5 -3
  255. package/src/features/chat/managers/session-surface.manager.ts +46 -0
  256. package/src/features/chat/pages/__tests__/ncp-chat-page.test.tsx +23 -5
  257. package/src/features/chat/pages/ncp-chat-page.tsx +6 -86
  258. package/src/features/chat/presenters/chat.presenter.ts +2 -1
  259. package/src/features/chat/stores/__tests__/chat-thread.store.test.ts +2 -2
  260. package/src/features/chat/stores/chat-thread.store.ts +7 -1
  261. package/src/features/chat/stores/floating-session.store.ts +11 -0
  262. package/src/features/chat/utils/chat-voice-permissions.utils.test.ts +12 -1
  263. package/src/features/chat/utils/chat-voice-permissions.utils.ts +6 -1
  264. package/src/features/cron/components/__tests__/cron-config.test.tsx +4 -0
  265. package/src/features/cron/components/cron-job-detail-dialog.tsx +3 -1
  266. package/src/features/cron/components/cron-job-row.tsx +14 -8
  267. package/src/features/inbox/components/inbox-reader-dialog.test.tsx +3 -0
  268. package/src/features/inbox/components/inbox-reader-dialog.tsx +6 -1
  269. package/src/features/inbox/pages/inbox-page.test.ts +3 -0
  270. package/src/features/inbox/pages/inbox-page.tsx +12 -4
  271. package/src/features/marketplace/components/__tests__/marketplace-page-detail.test.tsx +5 -1
  272. package/src/features/marketplace/components/__tests__/marketplace-page.test.tsx +3 -0
  273. package/src/features/marketplace/components/curated-shelves/__tests__/marketplace-curated-scene-route.test.tsx +2 -0
  274. package/src/features/marketplace/components/marketplace-list-card.tsx +4 -0
  275. package/src/features/marketplace/components/mcp/__tests__/mcp-marketplace-page.test.tsx +2 -0
  276. package/src/features/marketplace/components/mcp/mcp-marketplace-card.tsx +3 -0
  277. package/src/features/notifications/components/__tests__/app-notification-toast.test.tsx +19 -0
  278. package/src/features/notifications/components/app-notification-toast.tsx +33 -15
  279. package/src/features/notifications/managers/app-notification.manager.ts +2 -0
  280. package/src/features/panel-apps/components/__tests__/panel-app-list-item.test.tsx +13 -4
  281. package/src/features/panel-apps/components/__tests__/panel-app-toolbar.test.tsx +13 -5
  282. package/src/features/panel-apps/components/panel-app-list-item.tsx +1 -1
  283. package/src/features/panel-apps/components/panel-app-main-sidebar-menu-item.tsx +5 -38
  284. package/src/features/panel-apps/components/panel-app-toolbar.tsx +7 -7
  285. package/src/features/panel-apps/index.ts +1 -1
  286. package/src/features/projects/components/project-materials.test.tsx +2 -0
  287. package/src/features/projects/components/project-skills.tsx +7 -3
  288. package/src/features/projects/components/work/project-work-item-drawer.test.tsx +2 -0
  289. package/src/features/projects/components/work/project-work-item-drawer.tsx +3 -1
  290. package/src/features/right-panel-resources/components/__tests__/page-resource-icon.test.tsx +67 -0
  291. package/src/features/right-panel-resources/components/__tests__/page-resource-sidebar-nav.test.tsx +183 -0
  292. package/src/features/right-panel-resources/components/__tests__/system-object-resource.test.tsx +42 -0
  293. package/src/features/right-panel-resources/components/page-resource-actions-menu.tsx +53 -0
  294. package/src/features/right-panel-resources/components/page-resource-icon.tsx +245 -0
  295. package/src/features/right-panel-resources/components/page-resource-sidebar-nav.tsx +119 -0
  296. package/src/features/right-panel-resources/components/system-object-resource.tsx +100 -0
  297. package/src/features/right-panel-resources/components/workspace-file-resource.tsx +56 -0
  298. package/src/features/right-panel-resources/configs/right-panel-resource-routes.config.ts +46 -3
  299. package/src/features/right-panel-resources/hooks/use-page-resource-actions.ts +190 -0
  300. package/src/features/right-panel-resources/index.ts +21 -8
  301. package/src/features/right-panel-resources/managers/__tests__/page-resource.manager.test.ts +149 -0
  302. package/src/features/right-panel-resources/managers/page-resource.manager.ts +342 -0
  303. package/src/features/right-panel-resources/pages/resource-page.tsx +114 -0
  304. package/src/features/right-panel-resources/stores/page-navigation.store.ts +55 -0
  305. package/src/features/right-panel-resources/types/page-resource.types.ts +11 -0
  306. package/src/features/right-panel-resources/utils/__tests__/right-panel-resource-route-resolver.utils.test.ts +10 -0
  307. package/src/features/right-panel-resources/utils/page-resource-identity.utils.ts +61 -0
  308. package/src/features/right-panel-resources/utils/right-panel-resource-uri.utils.ts +2 -6
  309. package/src/features/service-apps/components/__tests__/service-apps-panel.test.tsx +2 -0
  310. package/src/features/service-apps/components/service-app-list-item.tsx +6 -1
  311. package/src/features/settings/pages/providers-config-page.tsx +2 -2
  312. package/src/features/side-dock/components/__tests__/side-dock.test.tsx +9 -8
  313. package/src/features/side-dock/components/side-dock.tsx +14 -47
  314. package/src/features/side-dock/managers/side-dock.manager.ts +2 -0
  315. package/src/features/system-status/components/__tests__/desktop-update-config.test.tsx +40 -0
  316. package/src/features/system-status/components/desktop-update-config.tsx +19 -1
  317. package/src/platforms/desktop/components/__tests__/desktop-app-shell.test.tsx +2 -0
  318. package/src/platforms/desktop/components/desktop-app-shell.tsx +3 -14
  319. package/src/platforms/mobile/components/__tests__/mobile-app-shell.test.tsx +1 -0
  320. package/src/platforms/mobile/components/__tests__/mobile-bottom-nav.test.tsx +3 -2
  321. package/src/platforms/mobile/components/mobile-app-shell.tsx +3 -4
  322. package/src/platforms/mobile/components/mobile-bottom-nav.tsx +7 -7
  323. package/src/platforms/mobile/components/mobile-settings-shell.tsx +8 -3
  324. package/src/platforms/mobile/components/mobile-topbar.tsx +4 -4
  325. package/src/shared/components/doc-browser/__tests__/doc-browser-context.test.tsx +4 -3
  326. package/src/shared/components/doc-browser/__tests__/doc-browser-tab-strip.test.tsx +0 -5
  327. package/src/shared/components/doc-browser/__tests__/doc-browser.test.tsx +57 -73
  328. package/src/shared/components/doc-browser/__tests__/resource-link-interceptor.test.tsx +104 -0
  329. package/src/shared/components/doc-browser/doc-browser-context.tsx +5 -1
  330. package/src/shared/components/doc-browser/doc-browser-panel-parts.tsx +1 -1
  331. package/src/shared/components/doc-browser/doc-browser-tab-strip.tsx +6 -118
  332. package/src/shared/components/doc-browser/doc-browser.tsx +30 -194
  333. package/src/shared/components/doc-browser/hooks/use-doc-browser-scroll-restoration.ts +1 -1
  334. package/src/shared/components/doc-browser/managers/doc-browser.manager.ts +11 -1
  335. package/src/shared/components/doc-browser/stores/doc-browser.store.ts +3 -7
  336. package/src/shared/components/doc-browser/types/doc-browser.types.ts +8 -1
  337. package/src/shared/components/doc-browser/use-doc-link-interceptor.ts +30 -32
  338. package/src/shared/components/doc-browser/utils/doc-browser-state.utils.ts +6 -6
  339. package/src/shared/components/ui/context-menu/__tests__/context-menu.test.tsx +105 -1
  340. package/src/shared/components/ui/context-menu/context-menu-items.tsx +173 -0
  341. package/src/shared/components/ui/context-menu/context-menu.tsx +99 -112
  342. package/src/shared/components/ui/dialog.tsx +4 -0
  343. package/src/shared/components/ui/overlays/sheet.tsx +4 -0
  344. package/src/shared/components/ui/popover.tsx +10 -4
  345. package/src/shared/components/workbench/__tests__/workbench-surface.manager.test.ts +70 -0
  346. package/src/shared/components/workbench/__tests__/workbench-surface.test.tsx +111 -0
  347. package/src/shared/components/workbench/managers/workbench-surface.manager.ts +120 -0
  348. package/src/shared/components/workbench/stores/workbench-surface.store.ts +83 -0
  349. package/src/shared/components/workbench/types/workbench-surface.types.ts +32 -0
  350. package/src/shared/components/workbench/utils/workbench-surface-geometry.utils.ts +46 -0
  351. package/src/shared/components/workbench/workbench-surface-toolbar.tsx +102 -0
  352. package/src/shared/components/workbench/workbench-surface.tsx +401 -0
  353. package/src/shared/hooks/use-panel-app-scroll-restoration.test.tsx +19 -0
  354. package/src/shared/hooks/use-panel-app-scroll-restoration.ts +8 -6
  355. package/src/shared/hooks/use-scroll-restoration.test.tsx +39 -2
  356. package/src/shared/hooks/use-scroll-restoration.ts +33 -33
  357. package/src/shared/lib/api/marketplace.types.ts +1 -0
  358. package/src/shared/lib/i18n/locales/en-US/chat.json +46 -1
  359. package/src/shared/lib/i18n/locales/en-US/core.json +3 -1
  360. package/src/shared/lib/i18n/locales/en-US/desktop-update.json +1 -0
  361. package/src/shared/lib/i18n/locales/en-US/doc-browser.json +1 -1
  362. package/src/shared/lib/i18n/locales/zh-CN/chat.json +46 -1
  363. package/src/shared/lib/i18n/locales/zh-CN/core.json +11 -9
  364. package/src/shared/lib/i18n/locales/zh-CN/desktop-update.json +1 -0
  365. package/src/shared/lib/navigation-history/index.ts +1 -0
  366. package/src/shared/lib/navigation-history/navigation-history.utils.ts +1 -1
  367. package/src/shared/lib/navigation-history/scroll-restoration.manager.test.ts +11 -0
  368. package/src/shared/lib/navigation-history/scroll-restoration.manager.ts +36 -7
  369. package/src/shared/lib/navigation-history/view-memory-storage.store.test.ts +37 -0
  370. package/src/shared/lib/navigation-history/view-memory-storage.store.ts +21 -0
  371. package/src/shared/lib/transport/__tests__/browser-realtime-recovery.service.test.ts +27 -2
  372. package/src/shared/lib/transport/__tests__/local-transport.service.test.ts +20 -0
  373. package/src/shared/lib/transport/__tests__/remote.transport.test.ts +26 -0
  374. package/src/shared/lib/transport/browser-realtime-recovery.service.ts +32 -5
  375. package/src/shared/lib/transport/local-transport.service.ts +1 -6
  376. package/src/shared/lib/transport/remote-transport.service.ts +22 -1
  377. package/src/shared/lib/ui-document-title/index.ts +1 -0
  378. package/dist/assets/account-panel-BW4GbzQd.js +0 -1
  379. package/dist/assets/api-DqzQ-_3w.js +0 -13
  380. package/dist/assets/app-data-C54N2p8b.js +0 -1
  381. package/dist/assets/app-presenter-provider-CBZ_-ewx.js +0 -115
  382. package/dist/assets/appearance-settings-page-C-uZ2Wkf.js +0 -1
  383. package/dist/assets/architecture-TIHT7OUA-DEt0Abz9.js +0 -1
  384. package/dist/assets/boxes-D6uPnkGo.js +0 -1
  385. package/dist/assets/card-BhfAZv5L.js +0 -1
  386. package/dist/assets/channel-CxQkbwRD.js +0 -1
  387. package/dist/assets/channels-list-page-Bv7CVSqV.js +0 -8
  388. package/dist/assets/chevron-down-BL-yMYcX.js +0 -1
  389. package/dist/assets/chunk-2Q5K7J3B-ClVhziok.js +0 -1
  390. package/dist/assets/chunk-VAUOI2AC-DZQxkIsv.js +0 -1
  391. package/dist/assets/chunk-XXDRQBXY-BkExtw5C.js +0 -1
  392. package/dist/assets/circle-alert-lSa3LRvS.js +0 -1
  393. package/dist/assets/classDiagram-OUVF2IWQ-Bd6apBb-.js +0 -1
  394. package/dist/assets/classDiagram-v2-EOCWNBFH-CYxUZGCI.js +0 -1
  395. package/dist/assets/client-BtGBwLTs.js +0 -1
  396. package/dist/assets/config-split-page-DqAXKLmG.js +0 -1
  397. package/dist/assets/confirm-dialog-BTKCWMn6.js +0 -1
  398. package/dist/assets/createLucideIcon-BNKf0_kc.js +0 -1
  399. package/dist/assets/cynefin-VYW2F7L2-CV0bFLH9.js +0 -1
  400. package/dist/assets/desktop-capabilities-page-zLzCSB7A.js +0 -1
  401. package/dist/assets/desktop-update-config-PmofcFf6.js +0 -1
  402. package/dist/assets/dialog-Xe73hpQz.js +0 -5
  403. package/dist/assets/dist-BiIcnf9j.js +0 -1
  404. package/dist/assets/dist-C5I0v8Qn.js +0 -1
  405. package/dist/assets/dist-czPa8xFO.js +0 -1
  406. package/dist/assets/doc-browser-BJrre2S_.js +0 -1
  407. package/dist/assets/doc-browser-BPqA-zQx.js +0 -1
  408. package/dist/assets/doc-browser-context-TILuCY5c.js +0 -1
  409. package/dist/assets/ellipsis-C5YXdOUx.js +0 -1
  410. package/dist/assets/es2015-cuwbYI-l.js +0 -41
  411. package/dist/assets/eventmodeling-45OFAUF4-BzkLWWdP.js +0 -1
  412. package/dist/assets/extensions-CVUFK6Jj.js +0 -1
  413. package/dist/assets/flowDiagram-23GEKE2U-ukkCsB0j.js +0 -1
  414. package/dist/assets/form-actions-BRESe-m_.js +0 -1
  415. package/dist/assets/gitGraph-TEB2WS4Q-BYFhT0Q5.js +0 -1
  416. package/dist/assets/i18n-provider-BPRq6S7O.js +0 -1
  417. package/dist/assets/info-DKCQHKI2-CTmlJdcH.js +0 -1
  418. package/dist/assets/katex-DbZC06Q5.js +0 -1
  419. package/dist/assets/keyboard-shortcuts-settings-page-CScSXYS4.js +0 -1
  420. package/dist/assets/loader-circle-K1BDdHR5.js +0 -1
  421. package/dist/assets/login-page-Dlyvp-81.js +0 -1
  422. package/dist/assets/login-page-f8qQ4xKY.js +0 -1
  423. package/dist/assets/logo-badge-C-5-zim6.js +0 -1
  424. package/dist/assets/main-D2dWy8fM.css +0 -1
  425. package/dist/assets/main-DMNmwcJE.js +0 -2
  426. package/dist/assets/main-i18n-catalog.config-DZ-5ollN.js +0 -1
  427. package/dist/assets/mcp-marketplace-page-FfIfEo6w.js +0 -10
  428. package/dist/assets/mcp-marketplace-page-sH7VptN_.js +0 -1
  429. package/dist/assets/model-config-page-Bcm6-pCX.js +0 -1
  430. package/dist/assets/navigation-link-BAQjgx2F.js +0 -3
  431. package/dist/assets/packet-7NZHBO7P-BbrI0ZlN.js +0 -1
  432. package/dist/assets/panel-app-B39rJPj8.js +0 -1
  433. package/dist/assets/panel-app-i18n-catalog.config-p3qAY_Eq.js +0 -1
  434. package/dist/assets/panelStandalone-By-6dDXS.js +0 -2
  435. package/dist/assets/pie-RZYD4A2V-B7zE1ZIr.js +0 -1
  436. package/dist/assets/plus-LA8-jpxP.js +0 -1
  437. package/dist/assets/popover-NkrFlWHp.js +0 -1
  438. package/dist/assets/privacy-settings-page-B1sHLAc1.js +0 -1
  439. package/dist/assets/projects-Voql-cvx.js +0 -1
  440. package/dist/assets/provider-models-hrHMcHqg.js +0 -1
  441. package/dist/assets/provider-scoped-model-input-BQsugx1v.js +0 -1
  442. package/dist/assets/providers-config-page-BDEdHJbw.js +0 -1
  443. package/dist/assets/pwa-CzqfYjFx.js +0 -1
  444. package/dist/assets/radar-I7S5WNFK-1X_q11Ed.js +0 -1
  445. package/dist/assets/railroad-3IZDKUUU-CIXnuFyE.js +0 -1
  446. package/dist/assets/railroad-abnf-AHOZXSZD-D6ImKl2r.js +0 -1
  447. package/dist/assets/railroad-ebnf-EBAXGLYW-2j9d3twU.js +0 -1
  448. package/dist/assets/railroad-peg-LSFZ7HO6-DMVaJGbm.js +0 -1
  449. package/dist/assets/remote-BekqL5nA.js +0 -1
  450. package/dist/assets/runtime-config-page-BH9uF4u_.js +0 -1
  451. package/dist/assets/search-CUe41wjm.js +0 -1
  452. package/dist/assets/search-config-page-DWKlMHgH.js +0 -1
  453. package/dist/assets/secrets-config-page-DiQL088Y.js +0 -3
  454. package/dist/assets/security-config-DmTDKKY4.js +0 -1
  455. package/dist/assets/select-CG5YWnwe.js +0 -1
  456. package/dist/assets/service-apps-panel-CEnyYsQp.js +0 -1
  457. package/dist/assets/skeleton-Drvn83YW.js +0 -1
  458. package/dist/assets/stateDiagram-v2-6OUMAXLB-OlIMT57r.js +0 -1
  459. package/dist/assets/swimlanesDiagram-G3AALYLV-sLThrh07.js +0 -8
  460. package/dist/assets/tabs-BuE0qKMh.js +0 -1
  461. package/dist/assets/tag-chip-B1AYPOKL.js +0 -1
  462. package/dist/assets/theme-provider-DzvAi3pe.js +0 -1
  463. package/dist/assets/tooltip-DYcuWhuP.js +0 -1
  464. package/dist/assets/trash-2-BPPYt2NV.js +0 -1
  465. package/dist/assets/treeView-QDETBFTQ-CCFyazDE.js +0 -1
  466. package/dist/assets/treemap-6X3UGDF4-D6wvq1Hz.js +0 -1
  467. package/dist/assets/use-config-BEdbtpD4.js +0 -1
  468. package/dist/assets/use-desktop-capabilities-BkuRd2cY.js +0 -1
  469. package/dist/assets/use-panel-app-scroll-restoration-ZnicIfo3.js +0 -1
  470. package/dist/assets/use-viewport-layout-BS18drMT.js +0 -1
  471. package/dist/assets/utils-CBZPzC_b.js +0 -8
  472. package/dist/assets/wardley-OPB4EBWU-BRzaRyFf.js +0 -1
  473. package/dist/assets/x-DdXOqLnX.js +0 -1
  474. package/src/features/panel-apps/components/__tests__/panel-app-main-sidebar-nav.test.tsx +0 -219
  475. package/src/features/panel-apps/components/panel-app-main-sidebar-nav.tsx +0 -258
  476. package/src/shared/components/doc-browser/utils/doc-browser-floating-panel.utils.ts +0 -83
  477. /package/dist/assets/{array-D0DyKZdT.js → array-BV9OtnO8.js} +0 -0
  478. /package/dist/assets/{chunk-KEIR6QF5-CuZFOa6q.js → chunk-KEIR6QF5-Cx-8EJ4_.js} +0 -0
  479. /package/dist/assets/{chunk-Y2CYZVJY-Frut-1TF.js → chunk-Y2CYZVJY-Dy1ufvjf.js} +0 -0
  480. /package/dist/assets/{config-hints-B_C9DAp5.js → config-hints-DbmiyTKg.js} +0 -0
  481. /package/dist/assets/{cytoscape.esm-BibuhnZD.js → cytoscape.esm-CSCjuT4Z.js} +0 -0
  482. /package/dist/assets/{defaultLocale-q7sRUXPc.js → defaultLocale-DWTiNsbT.js} +0 -0
  483. /package/dist/assets/{dist-DhMddrrH.js → dist-BVCSkfWY.js} +0 -0
  484. /package/dist/assets/{graphlib-BM63WsW3.js → graphlib-B1yb1Wl8.js} +0 -0
  485. /package/dist/assets/{host-capabilities-B107nwS3.js → host-capabilities-DuIFVsvM.js} +0 -0
  486. /package/dist/assets/{init-CRMkf9sL.js → init-BF6GH5oe.js} +0 -0
  487. /package/dist/assets/{jszip.min-6thm2J_a.js → jszip.min-D12teKzP.js} +0 -0
  488. /package/dist/assets/{katex-B26hhTOT.js → katex-CsAM73R9.js} +0 -0
  489. /package/dist/assets/{middleware-0o3JF3tS.js → middleware-B--6mAUM.js} +0 -0
  490. /package/dist/assets/{path-BFMmafCM.js → path-C56XkznJ.js} +0 -0
  491. /package/dist/assets/{rough.esm-5Tjchx1D.js → rough.esm-CGfeEbtE.js} +0 -0
  492. /package/dist/assets/{xlsx-BC8ibjXK.js → xlsx-sds5nUpL.js} +0 -0
@@ -469,3 +469,7 @@ describe("AgentsPage", () => {
469
469
  expect(useChatThreadStore.getState().snapshot.sessionKey).toBeNull();
470
470
  });
471
471
  });
472
+
473
+ vi.mock("@/features/right-panel-resources/hooks/use-page-resource-actions", () => ({ usePageResourceActions: () => () => [] }));
474
+
475
+ vi.mock("@/features/right-panel-resources", () => ({ PageResourceActionsMenu: () => null, PageResourceActionItems: () => null, pageResourceFromSystemObject: vi.fn() }));
@@ -1,3 +1,5 @@
1
+ import { PageResourceActionsMenu } from '@/features/right-panel-resources';
2
+ import { pageResourceFromSystemObject } from '@/features/right-panel-resources';
1
3
  import type { ReactNode } from "react";
2
4
  import type { AgentProfileView, ConfigView } from "@/shared/lib/api";
3
5
  import { normalizeSessionType, resolveSessionTypeLabel } from "@/features/chat";
@@ -73,14 +75,14 @@ export function AgentDetailsDialog({
73
75
  <DialogContent className="flex max-h-[calc(100vh-2rem)] flex-col overflow-hidden border-none bg-popover p-0 sm:max-h-[720px] sm:max-w-2xl">
74
76
  <div className="shrink-0 px-5 pb-3 pt-5">
75
77
  <DialogHeader className="text-left">
76
- <div className="flex min-w-0 items-center gap-3">
78
+ <div className="flex min-w-0 items-center gap-3 pr-7">
77
79
  <AgentAvatar
78
80
  agentId={agent.id}
79
81
  displayName={agent.displayName}
80
82
  avatarUrl={agent.avatarUrl}
81
83
  className="h-10 w-10 shrink-0"
82
84
  />
83
- <div className="min-w-0">
85
+ <div className="min-w-0 flex-1">
84
86
  <DialogTitle className="truncate text-base">
85
87
  {agent.displayName?.trim() || agent.id}
86
88
  </DialogTitle>
@@ -88,6 +90,7 @@ export function AgentDetailsDialog({
88
90
  @{agent.id}
89
91
  </DialogDescription>
90
92
  </div>
93
+ <PageResourceActionsMenu page={pageResourceFromSystemObject('agent', agent.id, agent.displayName || agent.id)} />
91
94
  </div>
92
95
  </DialogHeader>
93
96
  </div>
@@ -1,3 +1,5 @@
1
+ import { PageResourceActionItems } from '@/features/right-panel-resources';
2
+ import { pageResourceFromSystemObject } from '@/features/right-panel-resources';
1
3
  import { useMemo, useState } from "react";
2
4
  import {
3
5
  useDeleteAgent,
@@ -37,7 +39,7 @@ import {
37
39
  Eye,
38
40
  House,
39
41
  MessageCircle,
40
- MoreHorizontal,
42
+ MoreVertical,
41
43
  Pencil,
42
44
  Plus,
43
45
  ShieldCheck,
@@ -131,6 +133,7 @@ function AgentListCard(props: {
131
133
  onEdit,
132
134
  onDelete,
133
135
  } = props;
136
+ const [menuOpen, setMenuOpen] = useState(false);
134
137
  const runtimeValue = agent.runtime?.trim() || agent.engine?.trim() || "";
135
138
  const runtimeLabel = runtimeValue
136
139
  ? (runtimeOptions.find(
@@ -179,7 +182,7 @@ function AgentListCard(props: {
179
182
  >
180
183
  <MessageCircle className="h-4 w-4" />
181
184
  </Button>
182
- <Popover>
185
+ <Popover open={menuOpen} onOpenChange={setMenuOpen}>
183
186
  <PopoverTrigger asChild>
184
187
  <Button
185
188
  type="button"
@@ -189,10 +192,10 @@ function AgentListCard(props: {
189
192
  aria-label={t("chatSessionMoreActions")}
190
193
  title={t("chatSessionMoreActions")}
191
194
  >
192
- <MoreHorizontal className="h-4 w-4" />
195
+ <MoreVertical className="h-4 w-4" />
193
196
  </Button>
194
197
  </PopoverTrigger>
195
- <PopoverContent align="end" className="w-44 p-1.5">
198
+ <PopoverContent align="end" variant="menu">
196
199
  <AgentActionMenuItem
197
200
  icon={Eye}
198
201
  label={t("agentsViewDetailsAction")}
@@ -213,6 +216,8 @@ function AgentListCard(props: {
213
216
  destructive
214
217
  />
215
218
  ) : null}
219
+ <div className="my-1 h-px bg-border" />
220
+ <PageResourceActionItems page={pageResourceFromSystemObject('agent', agent.id, agent.displayName || agent.id)} onSelect={() => setMenuOpen(false)} />
216
221
  </PopoverContent>
217
222
  </Popover>
218
223
  </div>
@@ -7,7 +7,7 @@ import {
7
7
  CalendarDays,
8
8
  CheckSquare2,
9
9
  ChevronRight,
10
- MoreHorizontal,
10
+ MoreVertical,
11
11
  NotebookText,
12
12
  RefreshCw,
13
13
  RotateCcw,
@@ -150,7 +150,7 @@ export function AppPackageCard({
150
150
  disabled={pending}
151
151
  className="rounded-full p-2 text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:opacity-50"
152
152
  >
153
- <MoreHorizontal className="h-4 w-4" />
153
+ <MoreVertical className="h-4 w-4" />
154
154
  </button>
155
155
  </PopoverTrigger>
156
156
  <PopoverContent
@@ -1,5 +1,7 @@
1
+ import { scrollRestorationManager } from '@/shared/lib/navigation-history';
1
2
  import {
2
3
  useCallback,
4
+ useMemo,
3
5
  useRef,
4
6
  type ReactNode,
5
7
  type UIEvent,
@@ -31,6 +33,7 @@ type ChatConversationContentProps = {
31
33
  messages: readonly NcpMessage[];
32
34
  messageDetailStates?: Readonly<Record<string, SessionMessageToolPayloadState>>;
33
35
  sessionKey: string | null;
36
+ resourceWorkingDir?: string | null;
34
37
  showWelcome: boolean;
35
38
  onLoadPreviousMessages: () => Promise<void>;
36
39
  onLoadMessageDetails?: (messageId: string) => Promise<void>;
@@ -49,6 +52,26 @@ function createConversationScrollRestorationKey(
49
52
  return sessionKey && !showWelcome ? `chat-conversation:${sessionKey}` : null;
50
53
  }
51
54
 
55
+ function ConversationHistoryStatus({ historyError, isLoadingPreviousMessages, onLoadPreviousMessages }: Pick<ChatConversationContentProps, 'historyError' | 'isLoadingPreviousMessages' | 'onLoadPreviousMessages'>) {
56
+ return <>{historyError ? (
57
+ <div role="alert" className="flex h-8 justify-center">
58
+ <button
59
+ type="button"
60
+ aria-label={t("chatHistoryRetry")}
61
+ className="rounded px-1.5 text-xs text-foreground underline-offset-2 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
62
+ onClick={() => void onLoadPreviousMessages()}
63
+ >
64
+ {t("chatHistoryLoadFailed")} · {t("chatHistoryRetry")}
65
+ </button>
66
+ </div>
67
+ ) : isLoadingPreviousMessages ? (
68
+ <span
69
+ aria-hidden="true"
70
+ className="pointer-events-none absolute left-1/2 top-[13px] block h-1.5 w-1.5 -translate-x-1/2 animate-pulse rounded-full bg-muted-foreground/50 sm:top-[17px]"
71
+ />
72
+ ) : null}</>;
73
+ }
74
+
52
75
  export function ChatConversationContent({
53
76
  bottomSlot,
54
77
  canContinue = false,
@@ -62,6 +85,7 @@ export function ChatConversationContent({
62
85
  messages,
63
86
  messageDetailStates,
64
87
  sessionKey,
88
+ resourceWorkingDir,
65
89
  showWelcome,
66
90
  onLoadPreviousMessages,
67
91
  onLoadMessageDetails,
@@ -72,16 +96,19 @@ export function ChatConversationContent({
72
96
  const threadRef = useRef<HTMLDivElement>(null);
73
97
  const contentRef = useRef<HTMLDivElement>(null);
74
98
  const hasConversationContent = messages.length > 0 || isSending;
99
+ const readingKey = createConversationScrollRestorationKey(sessionKey, showWelcome);
100
+ const initialReadingPosition = useMemo(() => readingKey ? scrollRestorationManager.read(readingKey) : null, [readingKey]);
75
101
  const scrollRestoration = useScrollRestoration({
76
- restorationKey: createConversationScrollRestorationKey(sessionKey, showWelcome),
102
+ restorationKey: readingKey,
77
103
  scrollRef: threadRef,
78
- isEnabled: !showWelcome,
104
+ isEnabled: !showWelcome && !isHistoryLoading,
79
105
  });
80
106
  const { onScroll: onScrollPositionSave } = scrollRestoration;
81
107
  const { isAtBottom, onScroll, scrollToBottom } = useStickyBottomScroll({
82
108
  contentRef,
83
109
  scrollRef: threadRef,
84
110
  resetKey: sessionKey,
111
+ initialScrollTop: initialReadingPosition?.y,
85
112
  isLoading: isHistoryLoading,
86
113
  hasContent: hasConversationContent,
87
114
  contentVersion: messages[messages.length - 1] ?? isSending,
@@ -113,6 +140,8 @@ export function ChatConversationContent({
113
140
  ref={threadRef}
114
141
  onScroll={handleScroll}
115
142
  data-chat-scroll-container="true"
143
+ data-resource-session={sessionKey ?? undefined}
144
+ data-resource-working-dir={resourceWorkingDir ?? undefined}
116
145
  className={showWelcome ? "h-full overflow-y-auto custom-scrollbar" : `h-full overflow-y-auto custom-scrollbar ${SCROLL_BOTTOM_EDGE_FADE_CLASS}`}
117
146
  style={{ overflowAnchor: "none" }}
118
147
  >
@@ -122,23 +151,7 @@ export function ChatConversationContent({
122
151
  <div ref={contentRef} className="pb-7">
123
152
  {hasConversationContent ? (
124
153
  <ChatConversationTrack className="relative py-4 sm:py-5">
125
- {historyError ? (
126
- <div role="alert" className="flex h-8 justify-center">
127
- <button
128
- type="button"
129
- aria-label={t("chatHistoryRetry")}
130
- className="rounded px-1.5 text-xs text-foreground underline-offset-2 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
131
- onClick={() => void onLoadPreviousMessages()}
132
- >
133
- {t("chatHistoryLoadFailed")} · {t("chatHistoryRetry")}
134
- </button>
135
- </div>
136
- ) : isLoadingPreviousMessages ? (
137
- <span
138
- aria-hidden="true"
139
- className="pointer-events-none absolute left-1/2 top-[13px] block h-1.5 w-1.5 -translate-x-1/2 animate-pulse rounded-full bg-muted-foreground/50 sm:top-[17px]"
140
- />
141
- ) : null}
154
+ <ConversationHistoryStatus historyError={historyError} isLoadingPreviousMessages={isLoadingPreviousMessages} onLoadPreviousMessages={onLoadPreviousMessages} />
142
155
  <ChatMessageListContainer
143
156
  canContinue={canContinue}
144
157
  messages={messages}
@@ -165,6 +165,7 @@ export function ChatConversationHeaderSection({
165
165
  ) : null}
166
166
  <ChatSessionHeaderActions
167
167
  sessionKey={sessionKey}
168
+ sessionTitle={sessionHeaderTitle}
168
169
  canDeleteSession={canDeleteSession}
169
170
  isDeletePending={snapshot.isDeletePending}
170
171
  currentPath={
@@ -80,7 +80,7 @@ export function ChatConversationHeader({
80
80
  icon={<ArrowLeft className="h-4 w-4" />}
81
81
  label={t("chat")}
82
82
  onClick={onBackToList}
83
- className="inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] hover:text-accent-foreground"
83
+ className="inline-flex h-11 w-11 shrink-0 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] hover:text-accent-foreground"
84
84
  />
85
85
  ) : null}
86
86
  {leading}
@@ -22,9 +22,9 @@ export function ChatConversationPanel({
22
22
  return (
23
23
  <section
24
24
  data-theme-surface="workspace"
25
- className="relative flex-1 min-h-0 flex overflow-hidden bg-background"
25
+ className="relative flex-1 min-h-0 min-w-0 flex overflow-hidden bg-background"
26
26
  >
27
- <div className="flex min-h-0 flex-1 flex-col overflow-hidden">
27
+ <div className="flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden">
28
28
  <ChatConversationParentBanner />
29
29
  <ChatConversationHeaderSection
30
30
  layoutMode={layoutMode}
@@ -44,6 +44,7 @@ export function ChatConversationWorkspaceSection({
44
44
  return (
45
45
  <ChatSessionWorkspacePanel
46
46
  sessionKey={sessionKey}
47
+ hidden={snapshot.workspacePanelHidden === true}
47
48
  childSessionTabs={sessionKey ? childSessionTabs : []}
48
49
  activeChildSessionKey={snapshot.activeChildSessionKey ?? null}
49
50
  activeSideChatDraft={activeSideChatDraft}
@@ -36,6 +36,7 @@ vi.mock("@/features/cron", () => ({
36
36
 
37
37
  vi.mock("@/features/marketplace", () => ({
38
38
  MarketplacePage: () => <div>Marketplace</div>,
39
+ MARKETPLACE_DETAIL_DOC_BROWSER_RENDERERS: {},
39
40
  }));
40
41
 
41
42
  vi.mock("@/features/projects", () => ({
@@ -45,7 +46,7 @@ vi.mock("@/features/projects", () => ({
45
46
  describe("ChatPageLayout", () => {
46
47
  it("uses the same canvas width for management pages", () => {
47
48
  const agentsView = render(
48
- <ChatPageLayout view="agents" confirmDialog={<div />} />,
49
+ <ChatPageLayout view="agents" />,
49
50
  );
50
51
  const agentsCanvas = screen.getByText("Agents").parentElement;
51
52
 
@@ -53,14 +54,14 @@ describe("ChatPageLayout", () => {
53
54
  agentsView.unmount();
54
55
 
55
56
  const cronView = render(
56
- <ChatPageLayout view="cron" confirmDialog={<div />} />,
57
+ <ChatPageLayout view="cron" />,
57
58
  );
58
59
  const cronCanvas = screen.getByText("Cron").parentElement;
59
60
 
60
61
  expect(cronCanvas?.className).toContain("max-w-[min(1180px,100%)]");
61
62
  cronView.unmount();
62
63
 
63
- render(<ChatPageLayout view="skills" confirmDialog={<div />} />);
64
+ render(<ChatPageLayout view="skills" />);
64
65
  const skillsCanvas = screen.getByText("Marketplace").parentElement;
65
66
 
66
67
  expect(skillsCanvas?.className).toContain("max-w-[min(1180px,100%)]");
@@ -76,14 +77,12 @@ describe("ChatPageLayout", () => {
76
77
  render(
77
78
  <ChatPageLayout
78
79
  view="chat"
79
- confirmDialog={<div data-testid="confirm-dialog">Confirm</div>}
80
80
  />,
81
81
  );
82
82
 
83
83
  expect(screen.getByTestId("chat-mobile-shell")).toBeTruthy();
84
84
  expect(screen.queryByTestId("desktop-chat-sidebar")).toBeNull();
85
85
  expect(screen.queryByTestId("chat-conversation-panel")).toBeNull();
86
- expect(screen.getByTestId("confirm-dialog")).toBeTruthy();
87
86
  });
88
87
 
89
88
  it("keeps the chat sidebar while rendering the project home in the workspace", async () => {
@@ -93,7 +92,7 @@ describe("ChatPageLayout", () => {
93
92
  isDesktop: true,
94
93
  });
95
94
 
96
- render(<ChatPageLayout view="projects" confirmDialog={<div />} />);
95
+ render(<ChatPageLayout view="projects" />);
97
96
 
98
97
  expect(screen.getByTestId("desktop-chat-sidebar")).toBeTruthy();
99
98
  const projectHome = await screen.findByText("Project Home");
@@ -1,4 +1,5 @@
1
1
  import { render, screen } from "@testing-library/react";
2
+ import userEvent from '@testing-library/user-event';
2
3
  import { describe, expect, it, vi } from "vitest";
3
4
  import {
4
5
  ChatSidebarDesktopToolbar,
@@ -47,17 +48,18 @@ describe("ChatSidebarToolbar", () => {
47
48
  ).toBe("chat-search");
48
49
  });
49
50
 
50
- it("keeps mobile search icon transparent to pointer input", () => {
51
- render(<ChatSidebarMobileToolbar {...toolbarProps} />);
52
-
53
- expect(searchIconClassName()).toContain("pointer-events-none");
54
- expect(
55
- screen.getByPlaceholderText("Search conversations...").className,
56
- ).toContain("border-0");
57
- expect(
58
- screen
59
- .getByPlaceholderText("Search conversations...")
60
- .getAttribute("data-theme-control"),
61
- ).toBe("chat-search");
51
+ it('reveals mobile search on demand and clears the filter when closed', async () => {
52
+ const user = userEvent.setup();
53
+ const onQueryChange = vi.fn();
54
+ render(<ChatSidebarMobileToolbar {...toolbarProps} onQueryChange={onQueryChange} isProjectFirstView={false} onSelectMode={vi.fn()} onAddProject={vi.fn()} />);
55
+ expect(screen.queryByRole('textbox')).toBeNull();
56
+ await user.click(screen.getByRole('button', { name: 'Search conversations...' }));
57
+ const search = screen.getByRole('textbox');
58
+ expect(document.activeElement).toBe(search);
59
+ await user.type(search, 'a');
60
+ expect(onQueryChange).toHaveBeenLastCalledWith('a');
61
+ await user.click(screen.getByRole('button', { name: 'Close search' }));
62
+ expect(onQueryChange).toHaveBeenLastCalledWith('');
63
+ expect(screen.queryByRole('textbox')).toBeNull();
62
64
  });
63
65
  });
@@ -1,3 +1,4 @@
1
+ import { ResourcePage } from '@/features/right-panel-resources';
1
2
  import { lazy, Suspense, useLayoutEffect } from "react";
2
3
  import { ChatSidebar } from "@/features/chat/components/layout/chat-sidebar";
3
4
  import { ChatConversationPanel } from "@/features/chat/components/conversation/chat-conversation-panel";
@@ -13,7 +14,7 @@ const ProjectsPage = lazy(async () => ({
13
14
  default: (await import("@/features/projects")).ProjectsPage,
14
15
  }));
15
16
 
16
- export type MainPanelView = "chat" | "cron" | "skills" | "agents" | "inbox" | "panel-app" | "projects";
17
+ export type MainPanelView = "resource" | "chat" | "cron" | "skills" | "agents" | "inbox" | "panel-app" | "projects";
17
18
  export type ChatPageProps = {
18
19
  view: MainPanelView;
19
20
  };
@@ -44,70 +45,36 @@ export function useChatSessionSync(params: UseChatSessionSyncParams): void {
44
45
  }
45
46
  type ChatPageLayoutProps = {
46
47
  view: MainPanelView;
47
- confirmDialog: JSX.Element;
48
+ confirmDialog?: JSX.Element;
48
49
  };
49
- export function ChatPageLayout({ view, confirmDialog }: ChatPageLayoutProps) {
50
- const { isMobile } = useViewportLayout();
51
- const cronScroll = useScrollRestoration<HTMLDivElement>({
52
- restorationKey: "main-page:cron",
50
+ function ManagementPageContent({ view }: ChatPageProps) {
51
+ const { onScroll, scrollRef } = useScrollRestoration<HTMLDivElement>({
52
+ restorationKey: view === 'cron' || view === 'agents' ? `main-page:${view}` : null,
53
53
  });
54
- const agentsScroll = useScrollRestoration<HTMLDivElement>({
55
- restorationKey: "main-page:agents",
56
- });
57
- const { onScroll: onCronScroll, scrollRef: cronScrollRef } = cronScroll;
58
- const { onScroll: onAgentsScroll, scrollRef: agentsScrollRef } = agentsScroll;
59
-
60
- return (
61
- <div className="h-full flex">
62
- {!isMobile ? <ChatSidebar /> : null}
54
+ switch (view) {
55
+ case 'resource': return <ResourcePage />;
56
+ case 'projects': return <Suspense fallback={<div className="h-full animate-pulse bg-card/30" />}><ProjectsPage /></Suspense>;
57
+ case 'panel-app': return <PanelAppMainPage />;
58
+ case 'inbox': return <div className={`mx-auto flex h-full min-h-0 w-full flex-col py-4 sm:px-6 sm:py-5 ${MANAGEMENT_PAGE_CANVAS_WIDTH_CLASS}`}><InboxPage /></div>;
59
+ case 'cron':
60
+ case 'agents': return <div ref={scrollRef} onScroll={onScroll} className="h-full overflow-auto custom-scrollbar">
61
+ <div className={`mx-auto w-full px-4 py-4 sm:px-6 sm:py-5 ${MANAGEMENT_PAGE_CANVAS_WIDTH_CLASS}`}>
62
+ {view === 'cron' ? <CronConfig /> : <AgentsPage />}
63
+ </div>
64
+ </div>;
65
+ default: return <div className={`mx-auto flex h-full min-h-0 w-full flex-col px-4 py-4 sm:px-6 sm:py-5 ${MANAGEMENT_PAGE_CANVAS_WIDTH_CLASS}`}><MarketplacePage forcedType="skills" /></div>;
66
+ }
67
+ }
63
68
 
64
- {view === "chat" ? (
65
- isMobile ? <ChatMobileShell /> : <ChatConversationPanel />
66
- ) : (
67
- <section
68
- data-theme-surface="workspace"
69
- className={resolveManagementWorkspaceClass(view)}
70
- >
71
- {view === "projects" ? (
72
- <Suspense fallback={<div className="h-full animate-pulse bg-card/30" />}>
73
- <ProjectsPage />
74
- </Suspense>
75
- ) : view === "inbox" ? (
76
- <div className={`mx-auto flex h-full min-h-0 w-full flex-col py-4 sm:px-6 sm:py-5 ${MANAGEMENT_PAGE_CANVAS_WIDTH_CLASS}`}>
77
- <InboxPage />
78
- </div>
79
- ) : view === "panel-app" ? (
80
- <PanelAppMainPage />
81
- ) : view === "cron" ? (
82
- <div
83
- ref={cronScrollRef}
84
- onScroll={onCronScroll}
85
- className="h-full overflow-auto custom-scrollbar"
86
- >
87
- <div className={`mx-auto w-full px-4 py-4 sm:px-6 sm:py-5 ${MANAGEMENT_PAGE_CANVAS_WIDTH_CLASS}`}>
88
- <CronConfig />
89
- </div>
90
- </div>
91
- ) : view === "agents" ? (
92
- <div
93
- ref={agentsScrollRef}
94
- onScroll={onAgentsScroll}
95
- className="h-full overflow-auto custom-scrollbar"
96
- >
97
- <div className={`mx-auto w-full px-4 py-4 sm:px-6 sm:py-5 ${MANAGEMENT_PAGE_CANVAS_WIDTH_CLASS}`}>
98
- <AgentsPage />
99
- </div>
100
- </div>
101
- ) : (
102
- <div className="h-full overflow-hidden">
103
- <div className={`mx-auto flex h-full min-h-0 w-full flex-col px-4 py-4 sm:px-6 sm:py-5 ${MANAGEMENT_PAGE_CANVAS_WIDTH_CLASS}`}>
104
- <MarketplacePage forcedType="skills" />
105
- </div>
106
- </div>
107
- )}
108
- </section>
109
- )}
110
- {confirmDialog}
111
- </div>
112
- );
69
+ export function ChatPageLayout({ view, confirmDialog }: ChatPageLayoutProps) {
70
+ const { isMobile } = useViewportLayout();
71
+ return <div className="h-full flex">
72
+ {!isMobile ? <ChatSidebar /> : null}
73
+ {view === 'chat' ? (isMobile ? <ChatMobileShell /> : <ChatConversationPanel />) : (
74
+ <section data-theme-surface="workspace" className={`${resolveManagementWorkspaceClass(view)} flex flex-col`}>
75
+ <div className="min-h-0 flex-1 overflow-hidden"><ManagementPageContent view={view} /></div>
76
+ </section>
77
+ )}
78
+ {confirmDialog}
79
+ </div>;
113
80
  }
@@ -25,7 +25,7 @@ import {
25
25
  import { useInboxUnreadCount } from "@/features/inbox";
26
26
  import { ChatSidebarSessionList } from "@/features/chat/features/session/components/chat-sidebar-session-list";
27
27
  import { ChatSidebarUtilityMenu } from "@/features/chat/components/layout/chat-sidebar-utility-menu";
28
- import { PanelAppMainSidebarNav } from "@/features/panel-apps";
28
+ import { PageResourceSidebarNav } from "@/features/right-panel-resources";
29
29
  import { isWindowsDesktopHost } from "@/platforms/desktop";
30
30
  import { viewportLayoutManager } from "@/app/managers/viewport-layout.manager";
31
31
  import { useScrollRestoration } from "@/shared/hooks/use-scroll-restoration";
@@ -137,18 +137,18 @@ export function ChatSidebarDesktopNav({
137
137
  : unreadCount
138
138
  : undefined
139
139
  }
140
- className={isCollapsed ? undefined : "rounded-lg px-2.5 py-1.5"}
141
140
  />
142
141
  </li>
143
142
  ))}
144
143
  </ul>
145
144
  </div>
146
- <PanelAppMainSidebarNav isCollapsed={isCollapsed} />
145
+ <PageResourceSidebarNav isCollapsed={isCollapsed} />
147
146
  </div>
148
147
  );
149
148
  }
150
149
 
151
150
  export function ChatSidebarSessionArea({
151
+ variant = 'desktop',
152
152
  defaultSessionType,
153
153
  groups,
154
154
  isCollapsed,
@@ -162,6 +162,7 @@ export function ChatSidebarSessionArea({
162
162
  renderSessionItem,
163
163
  sessionTypeOptions,
164
164
  }: {
165
+ variant?: 'desktop' | 'mobile';
165
166
  defaultSessionType: string;
166
167
  groups: ReturnType<typeof groupSessionsByDate>;
167
168
  isCollapsed: boolean;
@@ -188,7 +189,7 @@ export function ChatSidebarSessionArea({
188
189
 
189
190
  return (
190
191
  <>
191
- <div className="flex h-8 items-center justify-end gap-1 px-3">
192
+ <div className={variant === 'mobile' ? 'hidden' : 'flex h-8 items-center justify-end gap-1 px-3'}>
192
193
  {isProjectFirstView ? (
193
194
  <IconActionButton
194
195
  icon={<FolderPlus className="h-3.5 w-3.5" />}
@@ -213,11 +214,13 @@ export function ChatSidebarSessionArea({
213
214
  }
214
215
  }}
215
216
  className={cn(
216
- "custom-scrollbar min-h-0 flex-1 overflow-y-auto px-3 pb-4 pt-1",
217
+ 'custom-scrollbar min-h-0 flex-1 overflow-y-auto overflow-x-hidden overscroll-contain',
218
+ variant === 'mobile' ? 'bg-background' : 'px-3 pb-4 pt-1',
217
219
  SCROLL_BOTTOM_EDGE_FADE_CLASS,
218
220
  )}
219
221
  >
220
222
  <ChatSidebarSessionList
223
+ variant={variant}
221
224
  isLoading={isLoading}
222
225
  isProjectFirstView={isProjectFirstView}
223
226
  groups={groups}