@nextclaw/ui 0.15.24 → 0.15.26

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 (312) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/assets/{abnfDiagram-VRR7QNED-DvTjgVMf.js → abnfDiagram-VRR7QNED-BcFJp_1X.js} +1 -1
  3. package/dist/assets/{aiden0z-pptx-renderer.es-C1nfBAXR.js → aiden0z-pptx-renderer.es-Dp2ezlQn.js} +1 -1
  4. package/dist/assets/{api-BxPNDp30.js → api-CK3Fro7z.js} +6 -6
  5. package/dist/assets/appearance-settings-page-zqwWO8Dy.js +1 -0
  6. package/dist/assets/{arc-BvhODBXv.js → arc-CkgyPMyW.js} +1 -1
  7. package/dist/assets/architecture-TIHT7OUA-DO2x53FK.js +1 -0
  8. package/dist/assets/{architectureDiagram-ZJ3FMSHR-BKO9RgNS.js → architectureDiagram-ZJ3FMSHR-CMd4cIjI.js} +1 -1
  9. package/dist/assets/{blockDiagram-677ZJIJ3-DHpDXy7D.js → blockDiagram-677ZJIJ3-Bz3tbhet.js} +1 -1
  10. package/dist/assets/{c4Diagram-LMCZKHZV-BG_iQnDr.js → c4Diagram-LMCZKHZV-D9hFNAGv.js} +1 -1
  11. package/dist/assets/channel-nBvMaVyP.js +1 -0
  12. package/dist/assets/{channels-list-page-DRaNWAxC.js → channels-list-page-CVCZBlCL.js} +2 -2
  13. package/dist/assets/chat-page-D4wehRTz.js +1 -0
  14. package/dist/assets/chunk-2Q5K7J3B-CJgqFDS4.js +1 -0
  15. package/dist/assets/{chunk-32BRIVSS-DR9M0LLx.js → chunk-32BRIVSS-7NrjEITq.js} +1 -1
  16. package/dist/assets/{chunk-52WLFC77-698iC3BB.js → chunk-52WLFC77-viIcqj9q.js} +1 -1
  17. package/dist/assets/{chunk-5FCAYU7R-DikTj9Ey.js → chunk-5FCAYU7R-Vsu4J-VM.js} +1 -1
  18. package/dist/assets/{chunk-5HE753X5-ko0o7_q0.js → chunk-5HE753X5-C-w6CQZK.js} +1 -1
  19. package/dist/assets/{chunk-5JV3BV7I-CEHufhgo.js → chunk-5JV3BV7I-CuKgJQ4W.js} +1 -1
  20. package/dist/assets/{chunk-5TONJI2A-CGgno1cu.js → chunk-5TONJI2A-CYeiWZKb.js} +1 -1
  21. package/dist/assets/{chunk-5VM5RSS4-DkiB4cUQ.js → chunk-5VM5RSS4-DRCbfwIn.js} +1 -1
  22. package/dist/assets/{chunk-7BUUIJ7U-DzptcytQ.js → chunk-7BUUIJ7U-BvydOcm3.js} +1 -1
  23. package/dist/assets/{chunk-BIQX33UG-DMRSQJvT.js → chunk-BIQX33UG-RlppOXKo.js} +1 -1
  24. package/dist/assets/{chunk-C7G6YPKG-Bw1BwwuY.js → chunk-C7G6YPKG-DAizzYwr.js} +1 -1
  25. package/dist/assets/{chunk-CQNSW5MT-C0z6eHBk.js → chunk-CQNSW5MT-5eChJHca.js} +1 -1
  26. package/dist/assets/{chunk-CYSBUYHQ-ByPyAouO.js → chunk-CYSBUYHQ-YHPr53fv.js} +1 -1
  27. package/dist/assets/{chunk-EMLP6XTP-CJlAXWZg.js → chunk-EMLP6XTP-CK4D7Hz5.js} +1 -1
  28. package/dist/assets/{chunk-EX3LRPZG-Dqq4zKJu.js → chunk-EX3LRPZG-BmlDFIRW.js} +1 -1
  29. package/dist/assets/{chunk-FWX5IMBZ-B0SNoCmi.js → chunk-FWX5IMBZ-D0ksHZZ9.js} +2 -2
  30. package/dist/assets/{chunk-HOUHSVGY-DG_GJih_.js → chunk-HOUHSVGY-DPkq8FCm.js} +1 -1
  31. package/dist/assets/{chunk-ICXQ74PX-Drxk_6bE.js → chunk-ICXQ74PX-FAatv5fC.js} +1 -1
  32. package/dist/assets/{chunk-JG7HCLWE-DdLFPpnd.js → chunk-JG7HCLWE-DLkIi4F7.js} +1 -1
  33. package/dist/assets/{chunk-JWPE2WC7-B8M4G76F.js → chunk-JWPE2WC7-DawOjNE3.js} +1 -1
  34. package/dist/assets/{chunk-MOJQB5TN-XP6FJHY_.js → chunk-MOJQB5TN-Di52TorW.js} +1 -1
  35. package/dist/assets/{chunk-MOZMSUNE-C_6x18Qw.js → chunk-MOZMSUNE-PfyK9w1-.js} +1 -1
  36. package/dist/assets/{chunk-OGEWGWER-N25BzCmG.js → chunk-OGEWGWER-C3jdH3Ty.js} +1 -1
  37. package/dist/assets/{chunk-OSBZ3O6U-ASDEm7y0.js → chunk-OSBZ3O6U-CecHo-f0.js} +1 -1
  38. package/dist/assets/{chunk-PUDLZKDR-CTlvAcn7.js → chunk-PUDLZKDR-f3IJh3sN.js} +1 -1
  39. package/dist/assets/{chunk-Q4XR5HBZ-Da9BWfB6.js → chunk-Q4XR5HBZ-DQFeUPxZ.js} +1 -1
  40. package/dist/assets/{chunk-QBLGF6JB-Bi6RpTJO.js → chunk-QBLGF6JB-BhUeG0y2.js} +1 -1
  41. package/dist/assets/{chunk-R7FJI6CG-DkMsSPvK.js → chunk-R7FJI6CG-C3XpZ-2u.js} +1 -1
  42. package/dist/assets/{chunk-RYQCIY6F-DZp0eU-j.js → chunk-RYQCIY6F-CAqa5klQ.js} +1 -1
  43. package/dist/assets/{chunk-U6XO7XAA-vfinDSrj.js → chunk-U6XO7XAA-D_WXezeD.js} +1 -1
  44. package/dist/assets/{chunk-V7JOEXUC-C9Nksccs.js → chunk-V7JOEXUC-CZ70oOtp.js} +1 -1
  45. package/dist/assets/chunk-VAUOI2AC-BGvh3yIx.js +1 -0
  46. package/dist/assets/{chunk-VR4S4FIN-Xv6zfwXs.js → chunk-VR4S4FIN-B7AHEYYk.js} +1 -1
  47. package/dist/assets/{chunk-WYO6CB5R-mOJNzbWl.js → chunk-WYO6CB5R-Dn9To_OI.js} +2 -2
  48. package/dist/assets/chunk-XXDRQBXY-DaBxG5gs.js +1 -0
  49. package/dist/assets/{chunk-YOTPTUD7-1-aKSu4o.js → chunk-YOTPTUD7-BYEgRBk3.js} +1 -1
  50. package/dist/assets/{chunk-ZGVPDNZ5-OJ8veMpK.js → chunk-ZGVPDNZ5-C6YtZDU0.js} +1 -1
  51. package/dist/assets/{chunk-ZIRB5QZD-SR_Nq_PP.js → chunk-ZIRB5QZD-DMuYtnHF.js} +1 -1
  52. package/dist/assets/classDiagram-OUVF2IWQ-P6N03G2R.js +1 -0
  53. package/dist/assets/classDiagram-v2-EOCWNBFH-B1_uLvMv.js +1 -0
  54. package/dist/assets/config-split-page-CceNFvlY.js +1 -0
  55. package/dist/assets/confirm-dialog-CWeNYWZY.js +5 -0
  56. package/dist/assets/{cose-bilkent-JH36ORCC-NjVgz2Bw.js → cose-bilkent-JH36ORCC-Bc2Ex5Y3.js} +1 -1
  57. package/dist/assets/cynefin-VYW2F7L2-B-H8Qp-n.js +1 -0
  58. package/dist/assets/{cynefinDiagram-TSTJHNR4-B_17LDqD.js → cynefinDiagram-TSTJHNR4-DVysQoGz.js} +1 -1
  59. package/dist/assets/{dagre-CMe101gk.js → dagre-CMhQ1cAG.js} +1 -1
  60. package/dist/assets/{dagre-VKFMJZFB-qo8nLb3B.js → dagre-VKFMJZFB-RYyWpPJZ.js} +1 -1
  61. package/dist/assets/desktop-update-config-Dirc3bpt.js +1 -0
  62. package/dist/assets/{diagram-FQU43EPY-Ba3XIklC.js → diagram-FQU43EPY-BD6KONdF.js} +1 -1
  63. package/dist/assets/{diagram-G47NLZAW-CG45TcUx.js → diagram-G47NLZAW-CGB2ptRR.js} +1 -1
  64. package/dist/assets/{diagram-NH7WQ7WH-2F2HrwV-.js → diagram-NH7WQ7WH-DnkOI6cU.js} +1 -1
  65. package/dist/assets/{diagram-OA4YK3LP-CXfWH9NZ.js → diagram-OA4YK3LP-DF82RZ7P.js} +1 -1
  66. package/dist/assets/{diagram-WEI45ONY-CH_4yepc.js → diagram-WEI45ONY-Be2v7Ck9.js} +1 -1
  67. package/dist/assets/{dist-B4Pf5X3Q.js → dist-AYxkFx2B.js} +1 -1
  68. package/dist/assets/{dist-DHEWkGWX.js → dist-D9xtGgdL.js} +1 -1
  69. package/dist/assets/doc-browser-4Sud6dWw.js +1 -0
  70. package/dist/assets/doc-browser-D4x_yH5F.js +1 -0
  71. package/dist/assets/doc-browser-context-Cb7Z0j90.js +1 -0
  72. package/dist/assets/{docx-preview-CoM4JK7_.js → docx-preview-BqwAjrj3.js} +1 -1
  73. package/dist/assets/{ebnfDiagram-CCIWWBDH-BwiG4Ea1.js → ebnfDiagram-CCIWWBDH-CP98OYk8.js} +1 -1
  74. package/dist/assets/{erDiagram-Q63AITRT-BML3hpnQ.js → erDiagram-Q63AITRT-ZLlx8xfs.js} +1 -1
  75. package/dist/assets/eventmodeling-45OFAUF4-YVtShyFA.js +1 -0
  76. package/dist/assets/flowDiagram-23GEKE2U-BeKXabVO.js +1 -0
  77. package/dist/assets/form-actions-B2q4jgjE.js +1 -0
  78. package/dist/assets/{ganttDiagram-NO4QXBWP-80enfWbD.js → ganttDiagram-NO4QXBWP-DXCDjHR2.js} +1 -1
  79. package/dist/assets/gitGraph-TEB2WS4Q-jTSiBj-p.js +1 -0
  80. package/dist/assets/{gitGraphDiagram-IHSO6WYX-CVLqXr-b.js → gitGraphDiagram-IHSO6WYX-l2HWrTJp.js} +1 -1
  81. package/dist/assets/index-CdyTsSBu.css +1 -0
  82. package/dist/assets/index-Das_bw2h.js +107 -0
  83. package/dist/assets/info-DKCQHKI2-BIporNWb.js +1 -0
  84. package/dist/assets/{infoDiagram-FWYZ7A6U-Dyvs2t0i.js → infoDiagram-FWYZ7A6U-D-DjX-bn.js} +1 -1
  85. package/dist/assets/{ishikawaDiagram-FXEZZL3T-sSnxDKfh.js → ishikawaDiagram-FXEZZL3T-y_Xy128F.js} +1 -1
  86. package/dist/assets/{journeyDiagram-5HDEW3XC-D22V71Mf.js → journeyDiagram-5HDEW3XC-DJn5xYcQ.js} +1 -1
  87. package/dist/assets/{kanban-definition-HUTT4EX6-D3ds0p-g.js → kanban-definition-HUTT4EX6-DJVIOR21.js} +1 -1
  88. package/dist/assets/{line-CbyFs065.js → line-Cos7PIOj.js} +1 -1
  89. package/dist/assets/{linear-4DKtnZBS.js → linear-BtDLqtzF.js} +1 -1
  90. package/dist/assets/loader-circle-CpmBdaon.js +1 -0
  91. package/dist/assets/{map-CcZzEoz6.js → map-BKnQyvd0.js} +1 -1
  92. package/dist/assets/mcp-marketplace-page-CdOY3Sop.js +1 -0
  93. package/dist/assets/mcp-marketplace-page-DvjrfqEt.js +9 -0
  94. package/dist/assets/{mermaid-parser.core-DPmMOjXD.js → mermaid-parser.core-XUNZhr2W.js} +2 -2
  95. package/dist/assets/{mermaid.core-BSf-ddRa.js → mermaid.core-ySrvolIe.js} +3 -3
  96. package/dist/assets/{mindmap-definition-LN4V7U3C-BUTwWPyx.js → mindmap-definition-LN4V7U3C-BypL9tei.js} +1 -1
  97. package/dist/assets/model-config-page-DfOLyQqR.js +1 -0
  98. package/dist/assets/{navigation-link-CAFOcXNg.js → navigation-link-MiiyoIjH.js} +2 -2
  99. package/dist/assets/{ordinal-BgLYtOZE.js → ordinal-CxxVWxYU.js} +1 -1
  100. package/dist/assets/packet-7NZHBO7P-CuFMADV0.js +1 -0
  101. package/dist/assets/{pegDiagram-2B236MQR-BEu_ZBjc.js → pegDiagram-2B236MQR-D-U2KBGv.js} +1 -1
  102. package/dist/assets/pie-RZYD4A2V-XUeIXhM9.js +1 -0
  103. package/dist/assets/{pieDiagram-ENE6RG2P-CAwAwuBd.js → pieDiagram-ENE6RG2P-CBi3GusJ.js} +1 -1
  104. package/dist/assets/plus-C8FkjpSZ.js +1 -0
  105. package/dist/assets/provider-scoped-model-input-DXzjr5l0.js +1 -0
  106. package/dist/assets/providers-config-page-CaO8WfZH.js +1 -0
  107. package/dist/assets/{quadrantDiagram-ABIIQ3AL-CwE6F-_2.js → quadrantDiagram-ABIIQ3AL-H0ZuvnZL.js} +1 -1
  108. package/dist/assets/radar-I7S5WNFK-D-NNGh1k.js +1 -0
  109. package/dist/assets/railroad-3IZDKUUU-C67_uDaM.js +1 -0
  110. package/dist/assets/railroad-abnf-AHOZXSZD-BZ8Yflnd.js +1 -0
  111. package/dist/assets/railroad-ebnf-EBAXGLYW-B7zO7RoK.js +1 -0
  112. package/dist/assets/railroad-peg-LSFZ7HO6-R63PTgLz.js +1 -0
  113. package/dist/assets/{railroadDiagram-RFXS5EU6-xgLekU3B.js → railroadDiagram-RFXS5EU6-D7Y2EqSd.js} +1 -1
  114. package/dist/assets/react-C8XFFvuz.js +8 -0
  115. package/dist/assets/{refresh-cw-CWDp_JnN.js → refresh-cw-a2VVeeAF.js} +1 -1
  116. package/dist/assets/remote-BJHXa4mB.js +1 -0
  117. package/dist/assets/{requirementDiagram-TGXJPOKE-CyVUzEX5.js → requirementDiagram-TGXJPOKE-BiXNX1NN.js} +1 -1
  118. package/dist/assets/rotate-cw-DJ7UF3F2.js +1 -0
  119. package/dist/assets/runtime-config-page-BuA4A02z.js +1 -0
  120. package/dist/assets/{sankeyDiagram-HTMAVEWB-JK6bFmYB.js → sankeyDiagram-HTMAVEWB-qzDeLztW.js} +1 -1
  121. package/dist/assets/{save-Cnr71JON.js → save-CGm23Yww.js} +1 -1
  122. package/dist/assets/{search-CCX11X2m.js → search-CH2t--sH.js} +1 -1
  123. package/dist/assets/search-config-page-BAmYqoAz.js +1 -0
  124. package/dist/assets/secrets-config-page-BlPOuql_.js +3 -0
  125. package/dist/assets/security-config-CbDiY2xr.js +1 -0
  126. package/dist/assets/{select-DvwBu99K.js → select-DnxxDpcV.js} +2 -2
  127. package/dist/assets/{sequenceDiagram-DBY2YBRQ-BR5IokXV.js → sequenceDiagram-DBY2YBRQ-BtRbPQtL.js} +1 -1
  128. package/dist/assets/{settings-2-Dmv6zMne.js → settings-2-agnMYc8a.js} +1 -1
  129. package/dist/assets/{sizeCapture-X5ZJPWSS-SxG_YnMA.js → sizeCapture-X5ZJPWSS-CMYvM3SL.js} +1 -1
  130. package/dist/assets/skeleton-XpqeWL62.js +1 -0
  131. package/dist/assets/{src-vgz8E_-O.js → src-Bw-mzbQb.js} +1 -1
  132. package/dist/assets/{stateDiagram-2N3HPSRC-DD4OoYhn.js → stateDiagram-2N3HPSRC-BJ-mFeOz.js} +1 -1
  133. package/dist/assets/stateDiagram-v2-6OUMAXLB-BE-HqxOK.js +1 -0
  134. package/dist/assets/{swimlanes-5IMT3BWC-BWkFeyCT.js → swimlanes-5IMT3BWC-BsucVOO2.js} +2 -2
  135. package/dist/assets/swimlanesDiagram-G3AALYLV-Dr1H9LJH.js +8 -0
  136. package/dist/assets/{tag-chip-gMPvx7n_.js → tag-chip-CPOc8b2N.js} +1 -1
  137. package/dist/assets/{timeline-definition-FHXFAJF6-VTRPy6KA.js → timeline-definition-FHXFAJF6-Bicewlzo.js} +1 -1
  138. package/dist/assets/treeView-QDETBFTQ-npJ5dbqS.js +1 -0
  139. package/dist/assets/treemap-6X3UGDF4-pYrBx6oa.js +1 -0
  140. package/dist/assets/{vennDiagram-L72KCM5P-Bvk42Pek.js → vennDiagram-L72KCM5P-BxOOnO9x.js} +1 -1
  141. package/dist/assets/wardley-OPB4EBWU-CmSRKLR8.js +1 -0
  142. package/dist/assets/{wardleyDiagram-EHGQE667-DOFjx2s3.js → wardleyDiagram-EHGQE667-Cl7NltMv.js} +1 -1
  143. package/dist/assets/x-odTHAtLZ.js +1 -0
  144. package/dist/assets/{xychartDiagram-FW5EYKEG-DY5yRTUc.js → xychartDiagram-FW5EYKEG-DiMIxQ7N.js} +1 -1
  145. package/dist/index.html +21 -22
  146. package/package.json +8 -8
  147. package/src/features/apps/components/__tests__/app-packages-panel.test.tsx +234 -0
  148. package/src/features/apps/components/app-marketplace-dialog.tsx +262 -0
  149. package/src/features/apps/components/app-package-card.tsx +268 -0
  150. package/src/features/apps/components/app-packages-panel.tsx +301 -0
  151. package/src/features/apps/components/apps-panel.tsx +11 -4
  152. package/src/features/apps/hooks/use-app-marketplace.ts +95 -0
  153. package/src/features/apps/hooks/use-app-packages.ts +59 -0
  154. package/src/features/chat/components/chat-sidebar-list-mode-switch.tsx +27 -4
  155. package/src/features/chat/components/layout/__tests__/chat-sidebar-session-area.test.tsx +36 -5
  156. package/src/features/chat/components/layout/chat-sidebar-desktop-layout.tsx +12 -13
  157. package/src/features/chat/features/conversation/components/__tests__/session-conversation-area.test.tsx +79 -2
  158. package/src/features/chat/features/conversation/components/__tests__/session-conversation-input.streaming.test.tsx +4 -4
  159. package/src/features/chat/features/conversation/components/session-conversation-area.tsx +26 -5
  160. package/src/features/chat/features/conversation/components/session-conversation-input.tsx +3 -0
  161. package/src/features/chat/features/conversation/hooks/use-system-object-reference-select.ts +27 -0
  162. package/src/features/chat/features/conversation/utils/session-message-composer.utils.ts +5 -0
  163. package/src/features/chat/features/input/hooks/__tests__/use-chat-input-surface-state.test.tsx +102 -0
  164. package/src/features/chat/features/input/hooks/use-chat-input-surface-state.ts +71 -120
  165. package/src/features/chat/features/input/input-surface-plugins/__tests__/context-reference-plugin.test.ts +265 -18
  166. package/src/features/chat/features/input/input-surface-plugins/chat-input-product-plugin-adapters.types.ts +7 -2
  167. package/src/features/chat/features/input/input-surface-plugins/chat-input-product-plugin-adapters.utils.ts +124 -0
  168. package/src/features/chat/features/input/input-surface-plugins/context-reference-items.utils.ts +99 -15
  169. package/src/features/chat/features/input/input-surface-plugins/context-reference-plugin.utils.ts +143 -139
  170. package/src/features/chat/features/input/input-surface-plugins/panel-app-input-surface-items.utils.ts +116 -0
  171. package/src/features/chat/features/input/input-surface-plugins/slash-command-plugin.utils.ts +1 -1
  172. package/src/features/chat/features/input/utils/__tests__/chat-inline-token.utils.test.ts +53 -1
  173. package/src/features/chat/features/input/utils/chat-composer-token-protocol.utils.ts +5 -0
  174. package/src/features/chat/features/input/utils/chat-inline-token-composer.utils.ts +134 -0
  175. package/src/features/chat/features/input/utils/chat-inline-token.utils.ts +30 -101
  176. package/src/features/chat/features/input/utils/chat-system-object-reference.utils.test.ts +44 -0
  177. package/src/features/chat/features/input/utils/chat-system-object-reference.utils.ts +46 -0
  178. package/src/features/chat/features/ncp/hooks/__tests__/use-hydrated-ncp-agent.test.tsx +40 -3
  179. package/src/features/chat/features/workspace/components/__tests__/chat-session-workspace-file-preview.selection.test.tsx +66 -0
  180. package/src/features/chat/features/workspace/components/__tests__/chat-session-workspace-file-preview.test.tsx +13 -1
  181. package/src/features/chat/features/workspace/components/__tests__/chat-session-workspace-panel-content.test.tsx +653 -90
  182. package/src/features/chat/features/workspace/components/__tests__/chat-session-workspace-text-selection.test.tsx +12 -8
  183. package/src/features/chat/features/workspace/components/chat-session-workspace-directory-browser.tsx +401 -288
  184. package/src/features/chat/features/workspace/components/chat-session-workspace-file-breadcrumbs.tsx +54 -35
  185. package/src/features/chat/features/workspace/components/chat-session-workspace-file-preview.tsx +79 -148
  186. package/src/features/chat/features/workspace/components/chat-session-workspace-panel-content.tsx +156 -94
  187. package/src/features/chat/features/workspace/components/project-files/__tests__/workspace-directory-entry-menu.test.tsx +50 -0
  188. package/src/features/chat/features/workspace/components/project-files/workspace-directory-entry-menu.tsx +209 -0
  189. package/src/features/chat/features/workspace/components/project-files/workspace-directory-tree.tsx +459 -0
  190. package/src/features/chat/features/workspace/components/project-files/workspace-new-folder-tree-item.tsx +112 -0
  191. package/src/features/chat/features/workspace/components/project-files/workspace-project-files-toolbar.tsx +64 -0
  192. package/src/features/chat/features/workspace/hooks/use-workspace-explorer-layout.ts +85 -0
  193. package/src/features/chat/features/workspace/hooks/use-workspace-file-actions.ts +357 -0
  194. package/src/features/chat/features/workspace/utils/chat-workspace-file-path-mutation.utils.ts +58 -0
  195. package/src/features/chat/features/workspace/utils/chat-workspace-file-tab.utils.ts +23 -22
  196. package/src/features/chat/features/workspace/utils/chat-workspace-panel-layout.utils.ts +13 -4
  197. package/src/features/chat/index.ts +1 -1
  198. package/src/features/chat/managers/__tests__/chat-composer-intent.manager.test.ts +86 -60
  199. package/src/features/chat/managers/__tests__/chat-thread.manager.test.ts +103 -99
  200. package/src/features/chat/managers/chat-composer-intent.manager.ts +37 -33
  201. package/src/features/chat/managers/chat-draft-intent.manager.ts +18 -2
  202. package/src/features/chat/managers/chat-thread.manager.ts +132 -128
  203. package/src/features/chat/stores/__tests__/chat-thread.store.test.ts +26 -40
  204. package/src/features/chat/stores/chat-thread.store.ts +53 -74
  205. package/src/features/inbox/components/inbox-reader-dialog.test.tsx +38 -5
  206. package/src/features/inbox/components/inbox-reader-dialog.tsx +5 -3
  207. package/src/features/inbox/managers/inbox.manager.test.ts +28 -3
  208. package/src/features/inbox/managers/inbox.manager.ts +14 -4
  209. package/src/features/inbox/pages/inbox-page.test.ts +121 -2
  210. package/src/features/inbox/pages/inbox-page.tsx +5 -3
  211. package/src/features/marketplace/components/__tests__/marketplace-page.test.tsx +85 -1
  212. package/src/features/marketplace/hooks/__tests__/use-marketplace.test.tsx +44 -1
  213. package/src/features/marketplace/hooks/use-marketplace-item-actions.ts +23 -2
  214. package/src/features/marketplace/hooks/use-marketplace.ts +10 -0
  215. package/src/features/marketplace/index.ts +4 -0
  216. package/src/features/panel-apps/index.ts +5 -1
  217. package/src/features/panel-apps/utils/__tests__/panel-app-doc-browser.utils.test.ts +13 -6
  218. package/src/features/panel-apps/utils/panel-app-doc-browser.utils.tsx +6 -3
  219. package/src/features/right-panel-resources/index.ts +1 -0
  220. package/src/features/right-panel-resources/utils/right-panel-resource-uri.utils.ts +7 -4
  221. package/src/features/system-status/components/__tests__/desktop-update-config.test.tsx +20 -1
  222. package/src/features/system-status/components/desktop-update-config.tsx +14 -13
  223. package/src/features/system-status/managers/__tests__/runtime-update.manager.test.ts +99 -0
  224. package/src/features/system-status/managers/runtime-update.manager.ts +22 -0
  225. package/src/features/system-status/stores/runtime-update.store.ts +1 -0
  226. package/src/shared/components/resizable-right-panel/__tests__/resizable-right-panel.test.tsx +35 -38
  227. package/src/shared/components/resizable-right-panel/resizable-right-panel.tsx +25 -19
  228. package/src/shared/components/ui/actions/__tests__/icon-action-button.test.tsx +15 -0
  229. package/src/shared/components/ui/actions/icon-action-button.tsx +4 -2
  230. package/src/shared/components/ui/context-menu/__tests__/context-menu.test.tsx +60 -34
  231. package/src/shared/components/ui/context-menu/context-menu.tsx +95 -68
  232. package/src/shared/hooks/use-system-object-references.ts +22 -0
  233. package/src/shared/lib/api/managers/client.manager.ts +31 -17
  234. package/src/shared/lib/api/server-path/server-path.types.ts +66 -0
  235. package/src/shared/lib/api/types.ts +155 -116
  236. package/src/shared/lib/api/utils/server-path.utils.ts +35 -11
  237. package/src/shared/lib/i18n/locales/en-US/chat.json +58 -9
  238. package/src/shared/lib/i18n/locales/en-US/desktop-update.json +7 -4
  239. package/src/shared/lib/i18n/locales/en-US/doc-browser.json +40 -0
  240. package/src/shared/lib/i18n/locales/en-US/marketplace.json +3 -0
  241. package/src/shared/lib/i18n/locales/zh-CN/chat.json +60 -11
  242. package/src/shared/lib/i18n/locales/zh-CN/desktop-update.json +7 -4
  243. package/src/shared/lib/i18n/locales/zh-CN/doc-browser.json +40 -0
  244. package/src/shared/lib/i18n/locales/zh-CN/marketplace.json +3 -0
  245. package/dist/assets/appearance-settings-page-DpVJjvkB.js +0 -1
  246. package/dist/assets/architecture-TIHT7OUA-Bjp9jf0h.js +0 -1
  247. package/dist/assets/channel-5T3pdR-s.js +0 -1
  248. package/dist/assets/chat-page-BuFDmG5_.js +0 -1
  249. package/dist/assets/chunk-2Q5K7J3B-DTZ3tGfE.js +0 -1
  250. package/dist/assets/chunk-VAUOI2AC-HLGIHQ6k.js +0 -1
  251. package/dist/assets/chunk-XXDRQBXY-Dl0m6Ni-.js +0 -1
  252. package/dist/assets/classDiagram-OUVF2IWQ-DcDnzGNX.js +0 -1
  253. package/dist/assets/classDiagram-v2-EOCWNBFH-BKXKMzKM.js +0 -1
  254. package/dist/assets/config-split-page-BVWVDbvG.js +0 -1
  255. package/dist/assets/confirm-dialog-mA2iVzxh.js +0 -5
  256. package/dist/assets/cynefin-VYW2F7L2-BWg7U2UD.js +0 -1
  257. package/dist/assets/desktop-update-config-DyQb1LXr.js +0 -1
  258. package/dist/assets/doc-browser-CtO_HtRy.js +0 -1
  259. package/dist/assets/doc-browser-context-CuGI6PQc.js +0 -1
  260. package/dist/assets/doc-browser-eMUagyBV.js +0 -1
  261. package/dist/assets/eventmodeling-45OFAUF4-SB-J4tpq.js +0 -1
  262. package/dist/assets/flowDiagram-23GEKE2U-BQ_u-eLM.js +0 -1
  263. package/dist/assets/form-actions-BOfIyG3O.js +0 -1
  264. package/dist/assets/gitGraph-TEB2WS4Q-DPxNwsFd.js +0 -1
  265. package/dist/assets/index-BjBdWHV1.js +0 -107
  266. package/dist/assets/index-DmpmjAGQ.css +0 -1
  267. package/dist/assets/info-DKCQHKI2-DNlNGH90.js +0 -1
  268. package/dist/assets/loader-circle-Df8wF2Pr.js +0 -1
  269. package/dist/assets/mcp-marketplace-page-DI49IKxp.js +0 -1
  270. package/dist/assets/mcp-marketplace-page-ofDqbOIF.js +0 -9
  271. package/dist/assets/model-config-page-D73Tu3jW.js +0 -1
  272. package/dist/assets/packet-7NZHBO7P-BpeiqkBZ.js +0 -1
  273. package/dist/assets/pie-RZYD4A2V-Cy1yxsPd.js +0 -1
  274. package/dist/assets/plus-DVU5RLCS.js +0 -1
  275. package/dist/assets/provider-scoped-model-input-BaJJJYMX.js +0 -1
  276. package/dist/assets/providers-config-page-BL6IRVBm.js +0 -1
  277. package/dist/assets/radar-I7S5WNFK-CEcPKCj8.js +0 -1
  278. package/dist/assets/railroad-3IZDKUUU-CW38eNDs.js +0 -1
  279. package/dist/assets/railroad-abnf-AHOZXSZD-ByrylcXf.js +0 -1
  280. package/dist/assets/railroad-ebnf-EBAXGLYW-CNB6GwP-.js +0 -1
  281. package/dist/assets/railroad-peg-LSFZ7HO6-x6hnqlBG.js +0 -1
  282. package/dist/assets/react-BC_orpAj.js +0 -8
  283. package/dist/assets/remote-T24O58lH.js +0 -1
  284. package/dist/assets/rotate-cw-BqhwSV5p.js +0 -1
  285. package/dist/assets/runtime-config-page-CXUx017t.js +0 -1
  286. package/dist/assets/search-config-page-BB6d5gT7.js +0 -1
  287. package/dist/assets/secrets-config-page-DYsDeT9K.js +0 -3
  288. package/dist/assets/security-config-CVPgqL7G.js +0 -1
  289. package/dist/assets/skeleton-C5tWata3.js +0 -1
  290. package/dist/assets/stateDiagram-v2-6OUMAXLB-ZC6dFORv.js +0 -1
  291. package/dist/assets/swimlanesDiagram-G3AALYLV-CRkh51Im.js +0 -8
  292. package/dist/assets/treeView-QDETBFTQ-Bw0DSCH7.js +0 -1
  293. package/dist/assets/treemap-6X3UGDF4-DFWBFcfh.js +0 -1
  294. package/dist/assets/use-confirm-dialog-D_3-QpZU.js +0 -1
  295. package/dist/assets/wardley-OPB4EBWU-CoWturk0.js +0 -1
  296. package/dist/assets/x-BEWSqeux.js +0 -1
  297. /package/dist/assets/{array-NADKd9aU.js → array-BQVzeGRt.js} +0 -0
  298. /package/dist/assets/{chunk-KEIR6QF5-BuyuzJJL.js → chunk-KEIR6QF5-f9psyCXK.js} +0 -0
  299. /package/dist/assets/{chunk-Y2CYZVJY-D_B2ZRNt.js → chunk-Y2CYZVJY-D1mAU_Po.js} +0 -0
  300. /package/dist/assets/{config-hints-BcfVUMij.js → config-hints-nV5HPOvq.js} +0 -0
  301. /package/dist/assets/{cytoscape.esm-BANTlgza.js → cytoscape.esm-0uDtdD0l.js} +0 -0
  302. /package/dist/assets/{defaultLocale-C4_L0aEs.js → defaultLocale-DSWXGgt0.js} +0 -0
  303. /package/dist/assets/{dist-DAPEIJbz.js → dist--ta5rX12.js} +0 -0
  304. /package/dist/assets/{graphlib-ChqXg0dI.js → graphlib-CQ6QV4yP.js} +0 -0
  305. /package/dist/assets/{host-capabilities-D9C4CBK5.js → host-capabilities-Tk038i04.js} +0 -0
  306. /package/dist/assets/{init-D8wZg9xq.js → init-Y6h9jGtZ.js} +0 -0
  307. /package/dist/assets/{jszip.min-CkbBfwAQ.js → jszip.min-8hyJpgpx.js} +0 -0
  308. /package/dist/assets/{katex-TZJFa0J_.js → katex-ARhY9PS1.js} +0 -0
  309. /package/dist/assets/{middleware-B3k-TSmZ.js → middleware-DXsbf9xI.js} +0 -0
  310. /package/dist/assets/{path-DodfxcX7.js → path-10BjdyLh.js} +0 -0
  311. /package/dist/assets/{rough.esm-CUaa1Rbe.js → rough.esm-DxgC_14r.js} +0 -0
  312. /package/dist/assets/{xlsx-CxByi7bR.js → xlsx-DrDuDNAa.js} +0 -0
@@ -1,7 +1,31 @@
1
1
  import type { NcpSessionStatus } from '@nextclaw/ncp';
2
2
  import type { RuntimeEntryView, NcpSessionSummaryView } from './ncp-session.types';
3
- export type { ProjectAddExistingRequest, ProjectCreateRequest, ProjectListView, ProjectTemplateView, ProjectView } from '@nextclaw/client-sdk';
4
- export type { SessionEntryView, RuntimeEntryView, SessionTypeIconView, SessionMessageView, SessionEventView, NcpSessionSummaryView, NcpSessionsListView, NcpMessageView, NcpSessionMessagesView, SessionContextWindowView } from './ncp-session.types';
3
+ export type {
4
+ ProjectAddExistingRequest,
5
+ ProjectCreateRequest,
6
+ ProjectListView,
7
+ ProjectTemplateView,
8
+ ProjectView,
9
+ SystemObjectReferenceDisplayText,
10
+ SystemObjectReferenceGroupDescriptor,
11
+ SystemObjectReferenceGroupIcon,
12
+ SystemObjectReferenceGroupView,
13
+ SystemObjectReferenceItem,
14
+ SystemObjectReferenceListView,
15
+ SystemObjectResolvedReference,
16
+ } from '@nextclaw/client-sdk';
17
+ export type {
18
+ SessionEntryView,
19
+ RuntimeEntryView,
20
+ SessionTypeIconView,
21
+ SessionMessageView,
22
+ SessionEventView,
23
+ NcpSessionSummaryView,
24
+ NcpSessionsListView,
25
+ NcpMessageView,
26
+ NcpSessionMessagesView,
27
+ SessionContextWindowView,
28
+ } from './ncp-session.types';
5
29
 
6
30
  // API Types - matching backend response format
7
31
  export type ApiError = {
@@ -10,18 +34,11 @@ export type ApiError = {
10
34
  details?: Record<string, unknown>;
11
35
  };
12
36
 
13
- export type ApiResponse<T> =
14
- | { ok: true; data: T }
15
- | { ok: false; error: ApiError };
37
+ export type ApiResponse<T> = { ok: true; data: T } | { ok: false; error: ApiError };
16
38
 
17
39
  export type AppMetaView = { name: string; productVersion: string };
18
40
 
19
- export type BootstrapPhase =
20
- | 'kernel-starting'
21
- | 'shell-ready'
22
- | 'hydrating-capabilities'
23
- | 'ready'
24
- | 'error';
41
+ export type BootstrapPhase = 'kernel-starting' | 'shell-ready' | 'hydrating-capabilities' | 'ready' | 'error';
25
42
 
26
43
  export type BootstrapStageState = 'pending' | 'running' | 'ready' | 'error';
27
44
 
@@ -56,10 +73,13 @@ export type BootstrapStatusView = {
56
73
  lastError?: string;
57
74
  };
58
75
 
59
- export type ThinkingLevel = "off" | "minimal" | "low" | "medium" | "high" | "adaptive" | "xhigh";
60
- export type AgentModelsView = Record<string, {
61
- params: Record<string, unknown>;
62
- } & Record<string, unknown>>;
76
+ export type ThinkingLevel = 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'adaptive' | 'xhigh';
77
+ export type AgentModelsView = Record<
78
+ string,
79
+ {
80
+ params: Record<string, unknown>;
81
+ } & Record<string, unknown>
82
+ >;
63
83
 
64
84
  export type ProviderInstanceView = {
65
85
  providerId: string;
@@ -73,12 +93,15 @@ export type ProviderInstanceView = {
73
93
  apiKeyMasked?: string;
74
94
  apiBase?: string | null;
75
95
  extraHeaders?: Record<string, string> | null;
76
- wireApi?: "auto" | "chat" | "responses" | null;
96
+ wireApi?: 'auto' | 'chat' | 'responses' | null;
77
97
  models?: string[];
78
- modelConfig?: Record<string, {
79
- thinking?: { supported: ThinkingLevel[]; default?: ThinkingLevel | null };
80
- vision?: boolean;
81
- }>;
98
+ modelConfig?: Record<
99
+ string,
100
+ {
101
+ thinking?: { supported: ThinkingLevel[]; default?: ThinkingLevel | null };
102
+ vision?: boolean;
103
+ }
104
+ >;
82
105
  };
83
106
 
84
107
  export type ProviderConfigView = ProviderInstanceView;
@@ -90,28 +113,34 @@ export type ProviderConfigUpdate = {
90
113
  apiKey?: string | null;
91
114
  apiBase?: string | null;
92
115
  extraHeaders?: Record<string, string> | null;
93
- wireApi?: "auto" | "chat" | "responses" | null;
116
+ wireApi?: 'auto' | 'chat' | 'responses' | null;
94
117
  models?: string[] | null;
95
- modelConfig?: Record<string, {
96
- thinking?: { supported?: ThinkingLevel[]; default?: ThinkingLevel | null };
97
- vision?: boolean;
98
- }> | null;
118
+ modelConfig?: Record<
119
+ string,
120
+ {
121
+ thinking?: {
122
+ supported?: ThinkingLevel[];
123
+ default?: ThinkingLevel | null;
124
+ };
125
+ vision?: boolean;
126
+ }
127
+ > | null;
99
128
  };
100
129
 
101
130
  export type ProviderConnectionTestRequest = ProviderConfigUpdate & {
102
131
  model?: string | null;
103
132
  };
104
133
 
105
- export type ProviderModelDiscoveryRequest = Pick<
106
- ProviderConfigUpdate,
107
- 'apiKey' | 'apiBase' | 'extraHeaders'
108
- >;
134
+ export type ProviderModelDiscoveryRequest = Pick<ProviderConfigUpdate, 'apiKey' | 'apiBase' | 'extraHeaders'>;
109
135
 
110
136
  export type ProviderCreateRequest = ProviderConfigUpdate & {
111
137
  providerId?: string | null;
112
138
  };
113
139
 
114
- export type ProviderCreateResult = { providerId: string; provider: ProviderInstanceView };
140
+ export type ProviderCreateResult = {
141
+ providerId: string;
142
+ provider: ProviderInstanceView;
143
+ };
115
144
  export type ProviderDeleteResult = { deleted: boolean; providerId: string };
116
145
  export type ProvidersView = { providers: Record<string, ProviderInstanceView> };
117
146
 
@@ -152,21 +181,24 @@ export type ProviderModelCatalogView = {
152
181
  refreshing: boolean;
153
182
  lastRefreshStartedAt: string | null;
154
183
  lastRefreshCompletedAt: string | null;
155
- providers: Record<string, {
156
- providerId: string;
157
- models: string[];
158
- source: 'provider' | 'catalog' | null;
159
- fetchedAt: string | null;
160
- lastError: {
161
- message: string;
162
- occurredAt: string;
163
- } | null;
164
- }>;
165
- };
166
-
167
- export type SearchProviderName = "bocha" | "tavily" | "brave" | "exa";
168
- export type BochaFreshnessValue = "noLimit" | "oneDay" | "oneWeek" | "oneMonth" | "oneYear" | string;
169
- export type TavilySearchDepthValue = "basic" | "advanced";
184
+ providers: Record<
185
+ string,
186
+ {
187
+ providerId: string;
188
+ models: string[];
189
+ source: 'provider' | 'catalog' | null;
190
+ fetchedAt: string | null;
191
+ lastError: {
192
+ message: string;
193
+ occurredAt: string;
194
+ } | null;
195
+ }
196
+ >;
197
+ };
198
+
199
+ export type SearchProviderName = 'bocha' | 'tavily' | 'brave' | 'exa';
200
+ export type BochaFreshnessValue = 'noLimit' | 'oneDay' | 'oneWeek' | 'oneMonth' | 'oneYear' | string;
201
+ export type TavilySearchDepthValue = 'basic' | 'advanced';
170
202
 
171
203
  export type SearchProviderConfigView = {
172
204
  enabled: boolean;
@@ -227,7 +259,7 @@ export type SearchConfigUpdate = {
227
259
 
228
260
  export type ProviderAuthStartResult = {
229
261
  provider: string;
230
- kind: "device_code";
262
+ kind: 'device_code';
231
263
  methodId?: string;
232
264
  sessionId: string;
233
265
  verificationUri: string;
@@ -242,21 +274,31 @@ export type ProviderAuthPollRequest = { sessionId: string };
242
274
 
243
275
  export type ProviderAuthPollResult = {
244
276
  provider: string;
245
- status: "pending" | "authorized" | "denied" | "expired" | "error";
277
+ status: 'pending' | 'authorized' | 'denied' | 'expired' | 'error';
246
278
  message?: string;
247
279
  nextPollMs?: number;
248
280
  };
249
281
 
250
- export type ProviderAuthImportResult = { provider: string; status: "imported"; source: "cli"; expiresAt?: string };
282
+ export type ProviderAuthImportResult = {
283
+ provider: string;
284
+ status: 'imported';
285
+ source: 'cli';
286
+ expiresAt?: string;
287
+ };
251
288
 
252
289
  export type {
253
290
  AuthEnabledUpdateRequest,
254
291
  AuthLoginRequest,
255
292
  AuthPasswordUpdateRequest,
256
293
  AuthSetupRequest,
257
- AuthStatusView
294
+ AuthStatusView,
258
295
  } from './auth.types';
259
- export type { ChannelAuthPollRequest, ChannelAuthPollResult, ChannelAuthStartRequest, ChannelAuthStartResult } from './channel-auth.types';
296
+ export type {
297
+ ChannelAuthPollRequest,
298
+ ChannelAuthPollResult,
299
+ ChannelAuthStartRequest,
300
+ ChannelAuthStartResult,
301
+ } from './channel-auth.types';
260
302
 
261
303
  export type {
262
304
  RemoteAccessView,
@@ -269,7 +311,7 @@ export type {
269
311
  RemoteServiceActionResult,
270
312
  RemoteServiceView,
271
313
  RemoteSettingsUpdateRequest,
272
- RemoteSettingsView
314
+ RemoteSettingsView,
273
315
  } from './remote.types';
274
316
  export type {
275
317
  RuntimeActionCapability,
@@ -279,7 +321,7 @@ export type {
279
321
  RuntimeControlView,
280
322
  RuntimeLifecycleState,
281
323
  RuntimeServiceState,
282
- RuntimeControlActionResult
324
+ RuntimeControlActionResult,
283
325
  } from './runtime-control.types';
284
326
 
285
327
  export type AgentProfileView = {
@@ -331,7 +373,7 @@ export type AgentDeleteResult = {
331
373
  };
332
374
 
333
375
  export type BindingPeerView = {
334
- kind: "direct" | "group" | "channel";
376
+ kind: 'direct' | 'group' | 'channel';
335
377
  id: string;
336
378
  };
337
379
 
@@ -345,7 +387,7 @@ export type AgentBindingView = {
345
387
  };
346
388
 
347
389
  export type SessionConfigView = {
348
- dmScope?: "main" | "per-peer" | "per-channel-peer" | "per-account-channel-peer";
390
+ dmScope?: 'main' | 'per-peer' | 'per-channel-peer' | 'per-account-channel-peer';
349
391
  };
350
392
 
351
393
  export type SessionSkillEntryView = {
@@ -391,51 +433,29 @@ export type SessionPatchUpdate = {
391
433
  clearHistory?: boolean;
392
434
  };
393
435
 
394
- export type ServerPathEntryView = { name: string; path: string; kind: "directory" | "file"; hidden: boolean };
395
-
396
- export type ServerPathBreadcrumbView = { label: string; path: string };
397
-
398
- export type ServerPathLocationView = {
399
- kind: "desktop" | "documents" | "downloads" | "icloud-drive" | "applications" | "volumes";
400
- path: string;
401
- };
402
-
403
- export type ServerPathBrowseView = {
404
- currentPath: string;
405
- parentPath: string | null;
406
- homePath: string;
407
- breadcrumbs: ServerPathBreadcrumbView[];
408
- entries: ServerPathEntryView[];
409
- locations: ServerPathLocationView[];
410
- };
411
-
412
- export type ServerPathSearchEntryView = {
413
- name: string;
414
- path: string;
415
- relativePath: string;
416
- parentRelativePath: string;
417
- kind: "directory" | "file";
418
- hidden: boolean;
419
- };
420
-
421
- export type ServerPathSearchView = {
422
- basePath: string;
423
- query: string;
424
- entries: ServerPathSearchEntryView[];
425
- truncated: boolean;
426
- };
427
-
428
- export type ServerPathDirectoryCreateRequest = { parentPath: string; name: string };
429
-
430
- export type ServerPathDirectoryCreateView = { path: string };
431
-
432
- export type ServerPathReadView = { requestedPath: string; resolvedPath: string; kind: "text" | "markdown" | "binary"; sizeBytes: number; startLine?: number; truncated: boolean; text?: string; languageHint?: string | null };
436
+ export type {
437
+ ServerPathBreadcrumbView,
438
+ ServerPathBrowseView,
439
+ ServerPathDirectoryCreateRequest,
440
+ ServerPathDirectoryCreateView,
441
+ ServerPathEntryDeleteView,
442
+ ServerPathEntryRenameRequest,
443
+ ServerPathEntryRenameView,
444
+ ServerPathEntryView,
445
+ ServerPathFileCreateRequest,
446
+ ServerPathFileCreateView,
447
+ ServerPathFilesUploadView,
448
+ ServerPathLocationView,
449
+ ServerPathReadView,
450
+ ServerPathSearchEntryView,
451
+ ServerPathSearchView,
452
+ } from './server-path/server-path.types';
433
453
 
434
454
  export type PanelAppEntryView = {
435
455
  id: string;
436
456
  appId: string;
437
457
  fileName: string;
438
- kind: "single-file" | "folder";
458
+ kind: 'single-file' | 'folder';
439
459
  title: string;
440
460
  description?: string;
441
461
  icon?: string;
@@ -448,6 +468,9 @@ export type PanelAppEntryView = {
448
468
  clientGranted: boolean;
449
469
  lastOpenedAt?: string;
450
470
  openCount: number;
471
+ sourceKind?: 'workspace' | 'package';
472
+ packageId?: string;
473
+ packageVersion?: string;
451
474
  };
452
475
 
453
476
  export type PanelAppListView = {
@@ -467,12 +490,12 @@ export type {
467
490
  } from './chat-session-type.types';
468
491
 
469
492
  export type CronScheduleView =
470
- | { kind: "at"; atMs?: number | null }
471
- | { kind: "every"; everyMs?: number | null }
472
- | { kind: "cron"; expr?: string | null; tz?: string | null };
493
+ | { kind: 'at'; atMs?: number | null }
494
+ | { kind: 'every'; everyMs?: number | null }
495
+ | { kind: 'cron'; expr?: string | null; tz?: string | null };
473
496
 
474
497
  export type CronPayloadView = {
475
- kind?: "system_event" | "agent_turn";
498
+ kind?: 'system_event' | 'agent_turn';
476
499
  message: string;
477
500
  agentId?: string | null;
478
501
  sessionId?: string | null;
@@ -481,7 +504,7 @@ export type CronPayloadView = {
481
504
  export type CronJobStateView = {
482
505
  nextRunAt?: string | null;
483
506
  lastRunAt?: string | null;
484
- lastStatus?: "ok" | "error" | "skipped" | null;
507
+ lastStatus?: 'ok' | 'error' | 'skipped' | null;
485
508
  lastError?: string | null;
486
509
  };
487
510
 
@@ -497,7 +520,7 @@ export type CronJobView = {
497
520
  deleteAfterRun: boolean;
498
521
  };
499
522
 
500
- export type CronListStatus = "all" | "enabled" | "disabled" | "attention";
523
+ export type CronListStatus = 'all' | 'enabled' | 'disabled' | 'attention';
501
524
 
502
525
  export type CronListQuery = {
503
526
  all?: boolean;
@@ -549,7 +572,7 @@ export type RuntimeConfigUpdate = {
549
572
  session?: SessionConfigView;
550
573
  };
551
574
 
552
- export type SecretSourceView = "env" | "file" | "exec";
575
+ export type SecretSourceView = 'env' | 'file' | 'exec';
553
576
 
554
577
  export type SecretRefView = {
555
578
  source: SecretSourceView;
@@ -558,18 +581,18 @@ export type SecretRefView = {
558
581
  };
559
582
 
560
583
  export type SecretProviderEnvView = {
561
- source: "env";
584
+ source: 'env';
562
585
  prefix?: string;
563
586
  };
564
587
 
565
588
  export type SecretProviderFileView = {
566
- source: "file";
589
+ source: 'file';
567
590
  path: string;
568
- format?: "json";
591
+ format?: 'json';
569
592
  };
570
593
 
571
594
  export type SecretProviderExecView = {
572
- source: "exec";
595
+ source: 'exec';
573
596
  command: string;
574
597
  args?: string[];
575
598
  cwd?: string;
@@ -650,7 +673,7 @@ export type ProviderTemplateView = {
650
673
  id: string;
651
674
  providerType: string;
652
675
  displayName?: string;
653
- apiProtocol?: "openai-compatible" | "anthropic-messages";
676
+ apiProtocol?: 'openai-compatible' | 'anthropic-messages';
654
677
  modelPrefix?: string;
655
678
  keywords: string[];
656
679
  envKey: string;
@@ -664,7 +687,7 @@ export type ProviderTemplateView = {
664
687
  zh?: string;
665
688
  };
666
689
  auth?: {
667
- kind: "device_code";
690
+ kind: 'device_code';
668
691
  displayName?: string;
669
692
  note?: {
670
693
  en?: string;
@@ -686,13 +709,16 @@ export type ProviderTemplateView = {
686
709
  };
687
710
  defaultModels?: string[];
688
711
  supportsModelDiscovery?: boolean;
689
- modelConfig?: Record<string, {
690
- thinking?: { supported: ThinkingLevel[]; default?: ThinkingLevel | null };
691
- vision?: boolean;
692
- }>;
712
+ modelConfig?: Record<
713
+ string,
714
+ {
715
+ thinking?: { supported: ThinkingLevel[]; default?: ThinkingLevel | null };
716
+ vision?: boolean;
717
+ }
718
+ >;
693
719
  supportsWireApi?: boolean;
694
- wireApiOptions?: Array<"auto" | "chat" | "responses">;
695
- defaultWireApi?: "auto" | "chat" | "responses";
720
+ wireApiOptions?: Array<'auto' | 'chat' | 'responses'>;
721
+ defaultWireApi?: 'auto' | 'chat' | 'responses';
696
722
  };
697
723
 
698
724
  export type ProviderTemplatesView = {
@@ -800,10 +826,23 @@ export type ConfigActionExecuteResult = {
800
826
  // WebSocket events
801
827
  export type WsEvent =
802
828
  | { type: 'config.updated'; payload: { path: string } }
803
- | { type: 'channel.config.apply-status'; payload: { channel: string; status: 'started' | 'succeeded' | 'failed'; message?: string } }
829
+ | {
830
+ type: 'channel.config.apply-status';
831
+ payload: {
832
+ channel: string;
833
+ status: 'started' | 'succeeded' | 'failed';
834
+ message?: string;
835
+ };
836
+ }
804
837
  | { type: 'session.updated'; payload: { sessionKey: string } }
805
- | { type: 'session.run-status'; payload: { sessionKey: string; status: 'running' | 'idle' } }
806
- | { type: 'session.summary.upsert'; payload: { summary: NcpSessionSummaryView } }
838
+ | {
839
+ type: 'session.run-status';
840
+ payload: { sessionKey: string; status: 'running' | 'idle' };
841
+ }
842
+ | {
843
+ type: 'session.summary.upsert';
844
+ payload: { summary: NcpSessionSummaryView };
845
+ }
807
846
  | { type: 'session.summary.delete'; payload: { sessionKey: string } }
808
847
  | { type: 'config.reload.started'; payload?: Record<string, unknown> }
809
848
  | { type: 'config.reload.finished'; payload?: Record<string, unknown> }
@@ -4,6 +4,12 @@ import type {
4
4
  ServerPathBrowseView,
5
5
  ServerPathDirectoryCreateRequest,
6
6
  ServerPathDirectoryCreateView,
7
+ ServerPathEntryDeleteView,
8
+ ServerPathEntryRenameRequest,
9
+ ServerPathEntryRenameView,
10
+ ServerPathFileCreateRequest,
11
+ ServerPathFileCreateView,
12
+ ServerPathFilesUploadView,
7
13
  ServerPathReadView,
8
14
  ServerPathSearchView,
9
15
  } from '@/shared/lib/api/types';
@@ -24,6 +30,30 @@ export async function createServerPathDirectory(
24
30
  return await nextclawClient.serverPaths.createDirectory(input);
25
31
  }
26
32
 
33
+ export async function createServerPathFile(input: ServerPathFileCreateRequest): Promise<ServerPathFileCreateView> {
34
+ return await nextclawClient.serverPaths.createFile(input);
35
+ }
36
+
37
+ export async function renameServerPathEntry(input: ServerPathEntryRenameRequest): Promise<ServerPathEntryRenameView> {
38
+ return await nextclawClient.serverPaths.renameEntry(input);
39
+ }
40
+
41
+ export async function deleteServerPathEntry(params: {
42
+ basePath: string;
43
+ path: string;
44
+ }): Promise<ServerPathEntryDeleteView> {
45
+ return await nextclawClient.serverPaths.deleteEntry(params);
46
+ }
47
+
48
+ export async function uploadServerPathFiles(params: {
49
+ basePath: string;
50
+ targetPath: string;
51
+ files: readonly File[];
52
+ overwrite?: boolean;
53
+ }): Promise<ServerPathFilesUploadView> {
54
+ return await nextclawClient.serverPaths.uploadFiles(params);
55
+ }
56
+
27
57
  export async function fetchServerPathRead(params: {
28
58
  path: string;
29
59
  basePath?: string | null;
@@ -41,23 +71,17 @@ export async function fetchServerPathSearch(params: {
41
71
  }
42
72
 
43
73
  export function buildServerPathContentUrl(path: string): string;
44
- export function buildServerPathContentUrl(
45
- path: string,
46
- basePath: string | null,
47
- ): string | null;
48
- export function buildServerPathContentUrl(
49
- path: string,
50
- basePath?: string | null,
51
- ): string | null {
74
+ export function buildServerPathContentUrl(path: string, basePath: string | null): string | null;
75
+ export function buildServerPathContentUrl(path: string, basePath?: string | null): string | null {
52
76
  const normalizedPath = path.trim();
53
- const isAbsolute = normalizedPath.startsWith("/") || /^[a-z]:[\\/]/i.test(normalizedPath);
54
- const normalizedBasePath = basePath?.trim() ?? "";
77
+ const isAbsolute = normalizedPath.startsWith('/') || /^[a-z]:[\\/]/i.test(normalizedPath);
78
+ const normalizedBasePath = basePath?.trim() ?? '';
55
79
  if (!isAbsolute && !normalizedBasePath) {
56
80
  return null;
57
81
  }
58
82
  const query = new URLSearchParams({ path: normalizedPath });
59
83
  if (normalizedBasePath) {
60
- query.set("basePath", normalizedBasePath);
84
+ query.set('basePath', normalizedBasePath);
61
85
  }
62
86
  return `${API_BASE}${SERVER_PATH_CONTENT_BASE_PATH}?${query.toString()}`;
63
87
  }
@@ -53,11 +53,15 @@
53
53
  "chatWorkspaceChildSessionsEmpty": "No child sessions yet.",
54
54
  "chatWorkspaceSessionCronJobsDescription": "Review scheduled tasks associated with this session.",
55
55
  "chatWorkspaceProjectFiles": "Project files",
56
+ "chatWorkspaceShowProjectFiles": "Show project files",
57
+ "chatWorkspaceHideProjectFiles": "Hide project files",
58
+ "chatWorkspaceResizeProjectFiles": "Resize project files",
56
59
  "chatWorkspaceProjectFilesDescription": "Browse files from the selected project directory.",
57
60
  "chatWorkspaceProjectFilesUnavailable": "Select a project directory to browse its files.",
58
61
  "chatWorkspaceSideChatDraftTitle": "Side chat",
59
62
  "chatWorkspaceSideChatDraftSubtitle": "This draft will inherit the parent session context when you send the first message.",
60
63
  "chatWorkspaceChildSessions": "Child sessions",
64
+ "chatWorkspaceOpen": "Open",
61
65
  "chatWorkspaceOpenFiles": "Open files",
62
66
  "chatWorkspacePreview": "Preview",
63
67
  "chatWorkspaceOpenPreview": "Open preview",
@@ -74,7 +78,45 @@
74
78
  "chatWorkspaceDirectoryEmpty": "This directory is empty.",
75
79
  "chatWorkspaceDirectoryLoadFailed": "Failed to load directory",
76
80
  "chatWorkspaceFileContextMenu": "Project file actions",
81
+ "chatWorkspaceRootContextMenu": "Project root actions",
77
82
  "chatWorkspaceAddToChat": "Add to chat",
83
+ "chatWorkspaceMoreActionsFor": "More actions for {name}",
84
+ "chatWorkspaceNewFolder": "New folder",
85
+ "chatWorkspaceNewFile": "New file",
86
+ "chatWorkspaceRefreshExplorer": "Refresh project files",
87
+ "chatWorkspaceCollapseAll": "Collapse all",
88
+ "chatWorkspaceRootMoreActions": "More project file actions",
89
+ "chatWorkspaceFileName": "File name",
90
+ "chatWorkspaceFileNamePlaceholder": "untitled",
91
+ "chatWorkspaceFileCreated": "File created.",
92
+ "chatWorkspaceFileCreateFailed": "Failed to create file",
93
+ "chatWorkspaceCreateFolder": "Create",
94
+ "chatWorkspaceCreateFolderIn": "Create in {name}",
95
+ "chatWorkspaceFolderName": "Folder name",
96
+ "chatWorkspaceFolderNamePlaceholder": "Untitled folder",
97
+ "chatWorkspaceFolderCreated": "Folder created.",
98
+ "chatWorkspaceFolderCreateFailed": "Could not create the folder",
99
+ "chatWorkspaceUploadFiles": "Upload files",
100
+ "chatWorkspaceUploadingFiles": "Uploading…",
101
+ "chatWorkspaceUploadFilesHere": "Upload files here",
102
+ "chatWorkspaceUploadSucceeded": "Uploaded {count} file(s).",
103
+ "chatWorkspaceUploadFailed": "Could not upload the files",
104
+ "chatWorkspaceUploadConflictTitle": "Replace existing files?",
105
+ "chatWorkspaceUploadConflictDescription": "{count} file(s) already exist in this folder. Replacing them cannot be undone.",
106
+ "chatWorkspaceReplaceFiles": "Replace files",
107
+ "chatWorkspaceDownloadFile": "Download",
108
+ "chatWorkspaceDelete": "Delete",
109
+ "chatWorkspaceRename": "Rename",
110
+ "chatWorkspaceRenameSucceeded": "Renamed to {name}.",
111
+ "chatWorkspaceRenameFailed": "Failed to rename",
112
+ "chatWorkspaceRenameName": "New name",
113
+ "chatWorkspaceDeleting": "Deleting {name}…",
114
+ "chatWorkspaceDeleteFileTitle": "Delete {name}?",
115
+ "chatWorkspaceDeleteFolderTitle": "Delete folder {name}?",
116
+ "chatWorkspaceDeleteFileDescription": "This file will be permanently deleted from the project workspace.",
117
+ "chatWorkspaceDeleteFolderDescription": "This folder and everything inside it will be permanently deleted from the project workspace.",
118
+ "chatWorkspaceDeleteSucceeded": "Deleted {name}.",
119
+ "chatWorkspaceDeleteFailed": "Could not delete {name}",
78
120
  "chatWorkspaceExcerptSelectionTooLong": "Selection is too long",
79
121
  "chatWorkspaceRevealInFileManager": "Reveal in file manager",
80
122
  "chatWorkspaceCopyPath": "Copy path",
@@ -248,20 +290,27 @@
248
290
  "chatPanelAppReferenceNoDescription": "No panel app description",
249
291
  "chatContextReferenceLoading": "Searching references...",
250
292
  "chatContextReferenceSection": "References",
251
- "chatContextReferenceNoResult": "No matching files, folders, projects, or panel apps",
252
- "chatContextReferenceHint": "Type @ to reference a file, folder, project, or panel app",
293
+ "chatContextReferenceNoResult": "No matching system objects, files, folders, projects, or panel apps",
294
+ "chatContextReferenceHint": "Type @ to reference a system object, file, folder, project, or panel app",
253
295
  "chatContextReferenceItemHint": "Press Enter to add this reference.",
254
- "chatContextReferenceFilesLabel": "Files & Folders",
255
- "chatContextReferenceFilesType": "Project Context",
256
- "chatContextReferenceFilesDescription": "Search and reference files or folders in the current project.",
257
- "chatContextReferenceFilesHint": "Press Enter to browse files and folders.",
296
+ "chatContextReferenceFilesLabel": "Files",
297
+ "chatContextReferenceFilesType": "Project Files",
298
+ "chatContextReferenceFilesDescription": "Browse and reference files in the current project.",
299
+ "chatContextReferenceFilesHint": "Press Enter to browse files.",
300
+ "chatContextReferenceFoldersLabel": "Folders",
301
+ "chatContextReferenceFoldersType": "Project Folders",
302
+ "chatContextReferenceFoldersDescription": "Browse and reference folders in the current project.",
303
+ "chatContextReferenceFoldersHint": "Press Enter to browse folders.",
258
304
  "chatContextReferenceBack": "Back to all references",
259
- "chatContextReferenceBackDescription": "Return to the unified file, folder, project, and panel app reference menu.",
305
+ "chatContextReferenceBackDescription": "Return to the unified system object, file, folder, project, and panel app reference menu.",
260
306
  "chatContextReferenceBackHint": "Press Enter to go back.",
261
307
  "chatContextReferenceParent": "Up one folder",
262
308
  "chatContextReferenceParentDescription": "Browse the parent folder without closing the reference menu.",
263
309
  "chatContextReferenceParentHint": "Press Enter to open the parent folder.",
264
310
  "chatContextReferenceCurrentDirectory": "Reference current folder",
311
+ "chatSystemObjectSection": "System Objects",
312
+ "chatSystemObjectGroupHint": "Press Enter to browse this category.",
313
+ "chatSystemObjectResolveFailed": "Could not reference system object",
265
314
  "chatContextReferenceFileDescription": "Use this file as explicit context for the current message.",
266
315
  "chatContextReferenceDirectoryDescription": "Use this folder as a context scope for the current message.",
267
316
  "chatContextReferenceProjectsLabel": "Projects",
@@ -274,8 +323,7 @@
274
323
  "chatContextReferenceProjectSection": "Projects",
275
324
  "chatContextReferenceProjectsLoadFailed": "Failed to load projects",
276
325
  "chatContextReferenceProjectRoot": "Project directory",
277
- "chatContextReferenceWorkspaceSection": "Files & Folders",
278
- "chatContextReferenceSearchFailed": "File search failed",
326
+ "chatContextReferenceSearchFailed": "Reference search failed",
279
327
  "chatSkillScopeBuiltin": "Built-in",
280
328
  "chatSkillScopeGlobal": "Global",
281
329
  "chatSkillScopeProject": "Project",
@@ -442,6 +490,7 @@
442
490
  "chatSidebarTaskRecords": "Sessions",
443
491
  "chatSidebarViewTime": "Time",
444
492
  "chatSidebarViewProject": "Project",
493
+ "chatSidebarViewMode": "Session list view",
445
494
  "chatSidebarToday": "Today",
446
495
  "chatSidebarYesterday": "Yesterday",
447
496
  "chatSidebarPrevious7Days": "Previous 7 Days",